From 7215392784bcbb6eca45301ed89ea04965785d27 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 10 Jul 2016 12:12:52 +0100 Subject: [PATCH] Changed when revisions are saved and update changelog input Revisions are now saved when te page content is originally saved whereas before they were saved on the next update to the page. --- app/Repos/PageRepo.php | 19 ++++++---- resources/assets/js/directives.js | 15 +++++++- resources/assets/sass/_header.scss | 1 + resources/assets/sass/_lists.scss | 9 +++-- resources/assets/sass/_pages.scss | 3 -- resources/views/pages/form.blade.php | 17 +++++++-- resources/views/pages/restrictions.blade.php | 2 +- resources/views/pages/revisions.blade.php | 38 +++++++++++++------- 8 files changed, 73 insertions(+), 31 deletions(-) diff --git a/app/Repos/PageRepo.php b/app/Repos/PageRepo.php index 515d18bd9..d3a060363 100644 --- a/app/Repos/PageRepo.php +++ b/app/Repos/PageRepo.php @@ -147,7 +147,7 @@ class PageRepo extends EntityRepo $draftPage->fill($input); // Save page tags if present - if(isset($input['tags'])) { + if (isset($input['tags'])) { $this->tagRepo->saveTagsToEntity($draftPage, $input['tags']); } @@ -308,10 +308,9 @@ class PageRepo extends EntityRepo */ public function updatePage(Page $page, $book_id, $input) { - // Save a revision before updating - if ($page->html !== $input['html'] || $page->name !== $input['name']) { - $this->saveRevision($page, $input['summary']); - } + // Hold the old details to compare later + $oldHtml = $page->html; + $oldName = $page->name; // Prevent slug being updated if no name change if ($page->name !== $input['name']) { @@ -319,7 +318,7 @@ class PageRepo extends EntityRepo } // Save page tags if present - if(isset($input['tags'])) { + if (isset($input['tags'])) { $this->tagRepo->saveTagsToEntity($page, $input['tags']); } @@ -335,6 +334,11 @@ class PageRepo extends EntityRepo // Remove all update drafts for this user & page. $this->userUpdateDraftsQuery($page, $userId)->delete(); + // Save a revision after updating + if ($oldHtml !== $input['html'] || $oldName !== $input['name'] || $input['summary'] !== null) { + $this->saveRevision($page, $input['summary']); + } + return $page; } @@ -360,6 +364,7 @@ class PageRepo extends EntityRepo /** * Saves a page revision into the system. * @param Page $page + * @param null|string $summary * @return $this */ public function saveRevision(Page $page, $summary = null) @@ -406,7 +411,7 @@ class PageRepo extends EntityRepo $draft->fill($data); if (setting('app-editor') !== 'markdown') $draft->markdown = ''; - + $draft->save(); return $draft; } diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js index 0119ded42..e50f5c6dd 100644 --- a/resources/assets/js/directives.js +++ b/resources/assets/js/directives.js @@ -157,9 +157,22 @@ module.exports = function (ngApp, events) { return { restrict: 'A', link: function (scope, element, attrs) { - var menu = element.find('ul'); + const menu = element.find('ul'); element.find('[dropdown-toggle]').on('click', function () { menu.show().addClass('anim menuIn'); + let inputs = menu.find('input'); + let hasInput = inputs.length > 0; + if (hasInput) { + inputs.first().focus(); + element.on('keypress', 'input', event => { + if (event.keyCode === 13) { + event.preventDefault(); + menu.hide(); + menu.removeClass('anim menuIn'); + return false; + } + }); + } element.mouseleave(function () { menu.hide(); menu.removeClass('anim menuIn'); diff --git a/resources/assets/sass/_header.scss b/resources/assets/sass/_header.scss index e0b1a99cb..12bd17076 100644 --- a/resources/assets/sass/_header.scss +++ b/resources/assets/sass/_header.scss @@ -155,6 +155,7 @@ form.search-box { text-decoration: none; } } + } .faded span.faded-text { diff --git a/resources/assets/sass/_lists.scss b/resources/assets/sass/_lists.scss index 08f00677e..2658c4689 100644 --- a/resources/assets/sass/_lists.scss +++ b/resources/assets/sass/_lists.scss @@ -375,6 +375,9 @@ ul.pagination { .text-muted { color: #999; } + li.padded { + padding: $-xs $-m; + } a { display: block; padding: $-xs $-m; @@ -384,10 +387,10 @@ ul.pagination { background-color: #EEE; } i { - margin-right: $-m; + margin-right: $-s; padding-right: 0; - display: inline; - width: 22px; + display: inline-block; + width: 16px; } } li.border-bottom { diff --git a/resources/assets/sass/_pages.scss b/resources/assets/sass/_pages.scss index 1d203ef78..49b701dda 100644 --- a/resources/assets/sass/_pages.scss +++ b/resources/assets/sass/_pages.scss @@ -18,9 +18,6 @@ flex: 1; flex-direction: column; } - #summary-input { - width: 140px; - } } .page-style.editor { diff --git a/resources/views/pages/form.blade.php b/resources/views/pages/form.blade.php index c2bdc6692..a5558f8e4 100644 --- a/resources/views/pages/form.blade.php +++ b/resources/views/pages/form.blade.php @@ -22,14 +22,25 @@
  • Delete Draft
  • +
  • + Discard Draft +
  • - - - + + +
    diff --git a/resources/views/pages/restrictions.blade.php b/resources/views/pages/restrictions.blade.php index 09eb8a65b..8dccc021e 100644 --- a/resources/views/pages/restrictions.blade.php +++ b/resources/views/pages/restrictions.blade.php @@ -16,7 +16,7 @@ @endif » - {{ $page->getShortName() }} + {{ $page->getShortName() }} diff --git a/resources/views/pages/revisions.blade.php b/resources/views/pages/revisions.blade.php index 24e91b366..d92b97d62 100644 --- a/resources/views/pages/revisions.blade.php +++ b/resources/views/pages/revisions.blade.php @@ -5,32 +5,40 @@
    -
    + +

    Page Revisions For "{{ $page->name }}"

    @if(count($page->revisions) > 0) - + - + - @foreach($page->revisions as $revision) + @foreach($page->revisions as $index => $revision) - + @if ($index !== 0) + + @else + + @endif @endforeach
    NameName Created By Revision DateSummaryChangelog Actions
    {{$revision->name}} @@ -41,11 +49,15 @@ @if($revision->createdBy) {{$revision->createdBy->name}} @else Deleted User @endif {{$revision->created_at->format('jS F, Y H:i:s')}}
    ({{$revision->created_at->diffForHumans()}})
    {{$revision->summary}} - Preview -  |  - Restore - + Preview +  |  + Restore + Current Version