+ $page->save();
+ $page->refresh()->rebuildPermissions();
+ return $page;
+ }
+
+ /**
+ * Publish a draft page to make it a live, non-draft page.
+ */
+ 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');
+ }
+
+ $pageContent = new PageContent($draft);
+ $pageContent->setNewHTML($input['html']);
+ $draft->draft = false;
+ $draft->revision_count = 1;
+ $draft->priority = $this->getNewPriority($draft);
+ $draft->refreshSlug();
+ $draft->save();
+
+ $this->savePageRevision($draft, trans('entities.pages_initial_revision'));
+ $draft->indexForSearch();
+ return $draft->refresh();
+ }
+
+ /**
+ * Update a page in the system.
+ */
+ public function update(Page $page, array $input): Page
+ {
+ // Hold the old details to compare later
+ $oldHtml = $page->html;
+ $oldName = $page->name;
+