mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-02-21 11:01:12 +08:00
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
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:
parent
8f6f81948e
commit
14578c2257
@ -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
|
||||
}
|
||||
|
@ -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.',
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -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">
|
||||
|
@ -1,3 +1,6 @@
|
||||
{{--
|
||||
$name - string
|
||||
--}}
|
||||
@if($errors->has($name))
|
||||
<div class="text-neg text-small">{{ $errors->first($name) }}</div>
|
||||
@endif
|
Loading…
x
Reference in New Issue
Block a user