From: Dan Brown Date: Sat, 2 Jan 2021 16:25:59 +0000 (+0000) Subject: Merge branch 'master' of git://github.com/rondaa/BookStack into rondaa-master X-Git-Tag: v0.31.0~3^2~6 X-Git-Url: http://source.bookstackapp.com/bookstack/commitdiff_plain/83d77d516665c41ca445a93119dfd97311bfb498?hp=-c Merge branch 'master' of git://github.com/rondaa/BookStack into rondaa-master --- 83d77d516665c41ca445a93119dfd97311bfb498 diff --combined app/Entities/Repos/PageRepo.php index 8840c06db,1467feff5..60ae85510 --- a/app/Entities/Repos/PageRepo.php +++ b/app/Entities/Repos/PageRepo.php @@@ -1,19 -1,17 +1,19 @@@ with(['book'])->find($id); + $page = Page::visible()->with($relations)->find($id); if (!$page) { throw new NotFoundException(trans('errors.page_not_found')); @@@ -130,7 -128,6 +130,7 @@@ $page = (new Page())->forceFill([ 'name' => trans('entities.pages_initial_name'), 'created_by' => user()->id, + 'owned_by' => user()->id, 'updated_by' => user()->id, 'draft' => true, ]); @@@ -153,8 -150,12 +153,8 @@@ public function publishDraft(Page $draft, array $input): Page { $this->baseRepo->update($draft, $input); - if (isset($input['template']) && userCan('templates-manage')) { - $draft->template = ($input['template'] === 'true'); - } + $this->updateTemplateStatusAndContentFromInput($draft, $input); - $pageContent = new PageContent($draft); - $pageContent->setNewHTML($input['html']); $draft->draft = false; $draft->revision_count = 1; $draft->priority = $this->getNewPriority($draft); @@@ -163,10 -164,7 +163,10 @@@ $this->savePageRevision($draft, trans('entities.pages_initial_revision')); $draft->indexForSearch(); - return $draft->refresh(); + $draft->refresh(); + + Activity::addForEntity($draft, ActivityType::PAGE_CREATE); + return $draft; } /** @@@ -178,7 -176,12 +178,7 @@@ $oldHtml = $page->html; $oldName = $page->name; - if (isset($input['template']) && userCan('templates-manage')) { - $page->template = ($input['template'] === 'true'); - } - - $pageContent = new PageContent($page); - $pageContent->setNewHTML($input['html']); + $this->updateTemplateStatusAndContentFromInput($page, $input); $this->baseRepo->update($page, $input); // Update with new details @@@ -199,24 -202,9 +199,24 @@@ $this->savePageRevision($page, $summary); } + Activity::addForEntity($page, ActivityType::PAGE_UPDATE); return $page; } + protected function updateTemplateStatusAndContentFromInput(Page $page, array $input) + { + if (isset($input['template']) && userCan('templates-manage')) { + $page->template = ($input['template'] === 'true'); + } + + $pageContent = new PageContent($page); + if (isset($input['html'])) { + $pageContent->setNewHTML($input['html']); + } else { + $pageContent->setNewMarkdown($input['markdown']); + } + } + /** * Saves a page revision into the system. */ @@@ -249,10 -237,11 +249,10 @@@ { // If the page itself is a draft simply update that if ($page->draft) { - $page->fill($input); if (isset($input['html'])) { - $content = new PageContent($page); - $content->setNewHTML($input['html']); + (new PageContent($page))->setNewHTML($input['html']); } + $page->fill($input); $page->save(); return $page; } @@@ -270,14 -259,12 +270,14 @@@ /** * Destroy a page from the system. - * @throws NotifyException + * @throws Exception */ public function destroy(Page $page) { $trashCan = new TrashCan(); - $trashCan->destroyPage($page); + $trashCan->softDestroyPage($page); + Activity::addForEntity($page, ActivityType::PAGE_DELETE); + $trashCan->autoClearOld(); } /** @@@ -286,9 -273,10 +286,10 @@@ public function restoreRevision(Page $page, int $revisionId): Page { $page->revision_count++; - $this->savePageRevision($page); - $revision = $page->revisions()->where('id', '=', $revisionId)->first(); + $summary = trans('entities.pages_revision_restored_from', ['id' => strval($revisionId), 'summary' => $revision->summary]); + $this->savePageRevision($page, $summary); + $page->fill($revision->toArray()); $content = new PageContent($page); $content->setNewHTML($revision->html); @@@ -297,7 -285,6 +298,7 @@@ $page->save(); $page->indexForSearch(); + Activity::addForEntity($page, ActivityType::PAGE_RESTORE); return $page; } @@@ -308,7 -295,7 +309,7 @@@ * @throws MoveOperationException * @throws PermissionsException */ - public function move(Page $page, string $parentIdentifier): Book + public function move(Page $page, string $parentIdentifier): Entity { $parent = $this->findParentByIdentifier($parentIdentifier); if ($parent === null) { @@@ -323,8 -310,7 +324,8 @@@ $page->changeBook($parent instanceof Book ? $parent->id : $parent->book->id); $page->rebuildPermissions(); - return ($parent instanceof Book ? $parent : $parent->book); + Activity::addForEntity($page, ActivityType::PAGE_MOVE); + return $parent; } /** @@@ -335,7 -321,7 +336,7 @@@ */ public function copy(Page $page, string $parentIdentifier = null, string $newName = null): Page { - $parent = $parentIdentifier ? $this->findParentByIdentifier($parentIdentifier) : $page->parent(); + $parent = $parentIdentifier ? $this->findParentByIdentifier($parentIdentifier) : $page->getParent(); if ($parent === null) { throw new MoveOperationException('Book or chapter to move page into not found'); } @@@ -383,6 -369,14 +384,6 @@@ return $parentClass::visible()->where('id', '=', $entityId)->first(); } - /** - * Update the permissions of a page. - */ - public function updatePermissions(Page $page, bool $restricted, Collection $permissions = null) - { - $this->baseRepo->updatePermissions($page, $restricted, $permissions); - } - /** * Change the page's parent to the given entity. */ @@@ -446,9 -440,8 +447,9 @@@ */ protected function getNewPriority(Page $page): int { - if ($page->parent() instanceof Chapter) { - $lastPage = $page->parent()->pages('desc')->first(); + $parent = $page->getParent(); + if ($parent instanceof Chapter) { + $lastPage = $parent->pages('desc')->first(); return $lastPage ? $lastPage->priority + 1 : 0; } diff --combined resources/lang/en/entities.php index 6b0153844,6de8328af..f668c6181 --- a/resources/lang/en/entities.php +++ b/resources/lang/en/entities.php @@@ -22,7 -22,6 +22,7 @@@ return 'meta_created_name' => 'Created :timeLength by :user', 'meta_updated' => 'Updated :timeLength', 'meta_updated_name' => 'Updated :timeLength by :user', + 'meta_owned_name' => 'Owned by :user', 'entity_select' => 'Entity Select', 'images' => 'Images', 'my_recent_drafts' => 'My Recent Drafts', @@@ -40,7 -39,6 +40,7 @@@ 'permissions_intro' => 'Once enabled, These permissions will take priority over any set role permissions.', 'permissions_enable' => 'Enable Custom Permissions', 'permissions_save' => 'Save Permissions', + 'permissions_owner' => 'Owner', // Search 'search_results' => 'Search Results', @@@ -148,7 -146,7 +148,7 @@@ 'chapters_create' => 'Create New Chapter', 'chapters_delete' => 'Delete Chapter', 'chapters_delete_named' => 'Delete Chapter :chapterName', - 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages will be removed and added directly to the parent book.', + 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.', 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?', 'chapters_edit' => 'Edit Chapter', 'chapters_edit_named' => 'Edit Chapter :chapterName', @@@ -210,6 -208,7 +210,7 @@@ 'pages_revisions' => 'Page Revisions', 'pages_revisions_named' => 'Page Revisions for :pageName', 'pages_revision_named' => 'Page Revision for :pageName', + 'pages_revision_restored_from' => 'Restored from #:id ":summary"', 'pages_revisions_created_by' => 'Created By', 'pages_revisions_date' => 'Revision Date', 'pages_revisions_number' => '#',