]);
}
- public function run(int $id)
+ public function run(int $id, Request $request)
{
// TODO - Test access/visibility
-
$import = $this->imports->findVisible($id);
+ $parent = null;
+
+ if ($import->getType() === 'page' || $import->getType() === 'chapter') {
+ $data = $this->validate($request, [
+ 'parent' => ['required', 'string']
+ ]);
+ $parent = $data['parent'];
+ }
// TODO - Run import
- // Validate again before
+ // TODO - Validate again before
+ // TODO - Check permissions before (create for main item, create for children, create for related items [image, attachments])
// TODO - Redirect to result
// TOOD - Or redirect back with errors
}
'import_size' => 'Import ZIP Size:',
'import_uploaded_at' => 'Uploaded:',
'import_uploaded_by' => 'Uploaded by:',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
'import_delete_confirm' => 'Are you sure you want to delete this import?',
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
font-size: 16px;
padding: $-s $-m;
}
+ input[type="text"]:focus {
+ outline: 1px solid var(--color-primary);
+ border-radius: 3px 3px 0 0;
+ outline-offset: -1px;
+ }
.entity-list {
overflow-y: scroll;
height: 400px;
font-size: 14px;
}
}
+ &.small {
+ .entity-list-item {
+ padding: $-xs $-m;
+ }
+ .entity-list, .loading {
+ height: 300px;
+ }
+ input[type="text"] {
+ font-size: 13px;
+ padding: $-xs $-m;
+ height: auto;
+ }
+ }
}
.fullscreen {
+{{--
+$name - string
+$autofocus - boolean, optional
+$entityTypes - string, optional
+$entityPermission - string, optional
+$selectorEndpoint - string, optional
+$selectorSize - string, optional (compact)
+--}}
<div class="form-group entity-selector-container">
<div component="entity-selector"
refs="entity-selector-popup@selector"
@section('body')
+ @php
+ $type = $import->getType();
+ @endphp
+
<div class="container small">
<main class="card content-wrap auto-height mt-xxl">
<p class="text-muted">{{ trans('entities.import_continue_desc') }}</p>
<div class="mb-m">
- @php
- $type = $import->getType();
- @endphp
+ <label class="setting-list-label">Import Details</label>
<div class="flex-container-row items-center justify-space-between wrap">
- <div class="py-s">
+ <div>
<p class="text-{{ $type }} mb-xs bold">@icon($type) {{ $import->name }}</p>
@if($type === 'book')
<p class="text-chapter mb-xs ml-l">@icon('chapter') {{ trans_choice('entities.x_chapters', $import->chapter_count) }}</p>
<p class="text-page mb-xs ml-l">@icon('page') {{ trans_choice('entities.x_pages', $import->page_count) }}</p>
@endif
</div>
- <div class="py-s">
+ <div>
<div class="opacity-80">
<strong>{{ trans('entities.import_size') }}</strong>
<span>{{ $import->getSizeString() }}</span>
action="{{ $import->getUrl() }}"
method="POST">
{{ csrf_field() }}
+
+ @if($type === 'page' || $type === 'chapter')
+ <hr>
+ <label class="setting-list-label">{{ trans('entities.import_location') }}</label>
+ <p class="small mb-m">{{ trans('entities.import_location_desc') }}</p>
+ @include('entities.selector', [
+ 'name' => 'parent',
+ 'entityTypes' => $type === 'page' ? 'chapter,book' : 'book',
+ 'entityPermission' => "{$type}-create",
+ 'selectorSize' => 'compact small',
+ ])
+ @include('form.errors', ['name' => 'parent'])
+ @endif
</form>
<div class="text-right">
+{{--
+$name - string
+--}}
@if($errors->has($name))
<div class="text-neg text-small">{{ $errors->first($name) }}</div>
@endif
\ No newline at end of file