]> BookStack Code Mirror - bookstack/commitdiff
Revisions: Hid changes link for oldest revision
authorDan Brown <redacted>
Sun, 16 Mar 2025 11:59:42 +0000 (11:59 +0000)
committerDan Brown <redacted>
Sun, 16 Mar 2025 12:00:54 +0000 (12:00 +0000)
Just as a UX improvement to help avoid confusion, as the whole content
will be changes for this revision.

For #5454

app/Entities/Controllers/PageRevisionController.php
resources/views/pages/parts/revisions-index-row.blade.php
resources/views/pages/revisions.blade.php
tests/Entity/PageRevisionTest.php

index 232d40668f4200d02c11e2b96e32700099e23813..4985c39f351610a863c64c5e509fe730aa2b84ba 100644 (file)
@@ -43,7 +43,6 @@ class PageRevisionController extends Controller
             ->selectRaw("IF(markdown = '', false, true) as is_markdown")
             ->with(['page.book', 'createdBy'])
             ->reorder('id', $listOptions->getOrder())
-            ->reorder('created_at', $listOptions->getOrder())
             ->paginate(50);
 
         $this->setPageTitle(trans('entities.pages_revisions_named', ['pageName' => $page->getShortName()]));
@@ -52,6 +51,7 @@ class PageRevisionController extends Controller
             'revisions'   => $revisions,
             'page'        => $page,
             'listOptions' => $listOptions,
+            'oldestRevisionId' => $page->revisions()->min('id'),
         ]);
     }
 
index db89284bb473c0022d1117cceb76ebdf060bda65..48bea5b577c492a8b578fc62076e4656d72375e0 100644 (file)
         {{ $revision->summary }}
     </div>
     <div class="flex-2 px-m py-xs actions text-small text-l-right min-width-l">
-        <a href="{{ $revision->getUrl('changes') }}" target="_blank" rel="noopener">{{ trans('entities.pages_revisions_changes') }}</a>
-        <span class="text-muted opacity-70">&nbsp;|&nbsp;</span>
+        @if(!$oldest)
+            <a href="{{ $revision->getUrl('changes') }}" target="_blank" rel="noopener">{{ trans('entities.pages_revisions_changes') }}</a>
+            <span class="text-muted opacity-70">&nbsp;|&nbsp;</span>
+        @endif
 
 
         @if ($current)
index 9f462e930ebb6e7e054a303a2664f807ada4948a..e8eb8d68bf05ffce2e9c56763dad5c2ec5d6ce51 100644 (file)
                         <div class="flex-2 px-m py-xs text-right">{{ trans('common.actions') }}</div>
                     </div>
                     @foreach($revisions as $index => $revision)
-                        @include('pages.parts.revisions-index-row', ['revision' => $revision, 'current' => $page->revision_count === $revision->revision_number])
+                        @include('pages.parts.revisions-index-row', [
+                                'revision' => $revision,
+                                'current' => $page->revision_count === $revision->revision_number,
+                                'oldest' => $oldestRevisionId === $revision->id,
+                            ])
                     @endforeach
                 </div>
             @else
index a272dc38bdbd911cf302679bc668dd0f091be3e7..9040254f78fdaaa3add672531032548edb8e7e1c 100644 (file)
@@ -203,6 +203,18 @@ class PageRevisionTest extends TestCase
         $this->withHtml($resp)->assertElementContains('.item-list-row > div:nth-child(2)', 'Markdown)');
     }
 
+    public function test_revision_changes_link_not_shown_for_oldest_revision()
+    {
+        $page = $this->entities->page();
+        $this->createRevisions($page, 3, ['html' => 'new page html']);
+
+        $resp = $this->asAdmin()->get($page->refresh()->getUrl('/revisions'));
+        $html = $this->withHtml($resp);
+
+        $html->assertElementNotExists('.item-list > .item-list-row:last-child a[href*="/changes"]');
+        $html->assertElementContains('.item-list > .item-list-row:nth-child(2)', 'Changes');
+    }
+
     public function test_revision_restore_action_only_visible_with_permission()
     {
         $page = $this->entities->page();
Morty Proxy This is a proxified and sanitized view of the page, visit original site.