1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-30 04:23:11 +03:00

Started migration of attachment manager from vue

- Created new dropzone component.
- Added standard component event system using custom DOM events.
- Added tabs component.
- Added ajax-delete-row component.
This commit is contained in:
Dan Brown
2020-06-30 22:12:45 +01:00
parent 8dc9689c6d
commit 14b6cd1091
15 changed files with 315 additions and 72 deletions

View File

@ -152,7 +152,9 @@ class AttachmentController extends Controller
{
$page = $this->pageRepo->getById($pageId);
$this->checkOwnablePermission('page-view', $page);
return response()->json($page->attachments);
return view('pages.attachment-list', [
'attachments' => $page->attachments->all(),
]);
}
/**
@ -163,14 +165,13 @@ class AttachmentController extends Controller
public function sortForPage(Request $request, int $pageId)
{
$this->validate($request, [
'files' => 'required|array',
'files.*.id' => 'required|integer',
'order' => 'required|array',
]);
$page = $this->pageRepo->getById($pageId);
$this->checkOwnablePermission('page-update', $page);
$attachments = $request->get('files');
$this->attachmentService->updateFileOrderWithinPage($attachments, $pageId);
$attachmentOrder = $request->get('order');
$this->attachmentService->updateFileOrderWithinPage($attachmentOrder, $pageId);
return response()->json(['message' => trans('entities.attachments_order_updated')]);
}

View File

@ -30,9 +30,8 @@ class Attachment extends Ownable
/**
* Get the url of this file.
* @return string
*/
public function getUrl()
public function getUrl(): string
{
if ($this->external && strpos($this->path, 'http') !== 0) {
return $this->path;

View File

@ -109,14 +109,14 @@ class AttachmentService extends UploadService
}
/**
* Updates the file ordering for a listing of attached files.
* @param array $attachmentList
* @param $pageId
* Updates the ordering for a listing of attached files.
*/
public function updateFileOrderWithinPage($attachmentList, $pageId)
public function updateFileOrderWithinPage(array $attachmentOrder, string $pageId)
{
foreach ($attachmentList as $index => $attachment) {
Attachment::where('uploaded_to', '=', $pageId)->where('id', '=', $attachment['id'])->update(['order' => $index]);
foreach ($attachmentOrder as $index => $attachmentId) {
Attachment::query()->where('uploaded_to', '=', $pageId)
->where('id', '=', $attachmentId)
->update(['order' => $index]);
}
}