ZIP Imports: Added parent selector for page/chapter imports
Some checks failed
analyse-php / build (push) Has been cancelled
lint-php / build (push) Has been cancelled
test-migrations / build (8.1) (push) Has been cancelled
test-migrations / build (8.2) (push) Has been cancelled
test-migrations / build (8.3) (push) Has been cancelled
test-php / build (8.1) (push) Has been cancelled
test-php / build (8.2) (push) Has been cancelled
test-php / build (8.3) (push) Has been cancelled

This commit is contained in:
Dan Brown 2024-11-04 16:21:22 +00:00
parent 8f6f81948e
commit 14578c2257
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
6 changed files with 62 additions and 8 deletions

View File

@ -72,14 +72,22 @@ class ImportController extends Controller
]);
}
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
}

View File

@ -56,6 +56,8 @@ return [
'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.',

View File

@ -138,6 +138,11 @@ $loadingSize: 10px;
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;
@ -171,6 +176,19 @@ $loadingSize: 10px;
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 {

View File

@ -1,3 +1,11 @@
{{--
$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"

View File

@ -2,6 +2,10 @@
@section('body')
@php
$type = $import->getType();
@endphp
<div class="container small">
<main class="card content-wrap auto-height mt-xxl">
@ -9,11 +13,9 @@
<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>
@ -22,7 +24,7 @@
<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>
@ -45,6 +47,19 @@
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">

View File

@ -1,3 +1,6 @@
{{--
$name - string
--}}
@if($errors->has($name))
<div class="text-neg text-small">{{ $errors->first($name) }}</div>
@endif