From 3dcee65137d7c25129c93a2f197084e2e9c8ab2f Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Wed, 22 Mar 2023 11:56:11 +0000 Subject: [PATCH] use event bus to toggle display of gallery link and make sure the gallery link... Closes #2409 Merge request studip/studip!1604 --- app/controllers/course/files.php | 25 +++++++++---------- app/controllers/files.php | 24 ++++++++++-------- .../assets/javascripts/bootstrap/files.js | 9 +++---- resources/assets/javascripts/lib/files.js | 12 +++++++-- 4 files changed, 39 insertions(+), 31 deletions(-) diff --git a/app/controllers/course/files.php b/app/controllers/course/files.php index 2cb69a881d1..91d19184066 100644 --- a/app/controllers/course/files.php +++ b/app/controllers/course/files.php @@ -59,16 +59,6 @@ class Course_FilesController extends AuthenticatedController ); } - $actions->addLink( - _('Bildergalerie öffnen'), - '#g', - Icon::create('file-pic', 'clickable'), - [ - 'onClick' => "STUDIP.Files.openGallery(); return false;", - 'v-if' => "hasFilesOfType('image')" - ] - ); - if ($this->topFolder && $this->topFolder->isSubfolderAllowed($GLOBALS['user']->id)) { $actions->addLink( _('Neuer Ordner'), @@ -93,9 +83,18 @@ class Course_FilesController extends AuthenticatedController )->asDialog(); } - $sidebar->addWidget($actions); + $actions->addLink( + _('Bildergalerie öffnen'), + '#g', + Icon::create('file-pic'), + [ + 'onClick' => "STUDIP.Files.openGallery(); return false;", + 'style' => 'display: none', + ] + ); + $sidebar->addWidget($actions); if ($this->topFolder->isWritable($GLOBALS['user']->id)) { $uploadArea = new LinksWidget(); @@ -172,10 +171,10 @@ class Course_FilesController extends AuthenticatedController $actions->addLink( _('Bildergalerie öffnen'), '#g', - Icon::create('file-pic', 'clickable'), + Icon::create('file-pic'), [ 'onClick' => "STUDIP.Files.openGallery(); return false;", - 'v-if' => "hasFilesOfType('image')" + 'style' => 'display: none', ] ); if ($GLOBALS['user']->id !== 'nobody') { diff --git a/app/controllers/files.php b/app/controllers/files.php index 555e788f738..46a67e611b2 100644 --- a/app/controllers/files.php +++ b/app/controllers/files.php @@ -100,15 +100,6 @@ class FilesController extends AuthenticatedController ); } - $actions->addLink( - _('Bildergalerie öffnen'), - '#g', - Icon::create('file-pic', 'clickable'), - [ - 'onClick' => "STUDIP.Files.openGallery(); return false;" - ] - ); - if ($folder->isWritable($GLOBALS['user']->id)) { $actions->addLink( _('Dokument hinzufügen'), @@ -146,6 +137,17 @@ class FilesController extends AuthenticatedController )->asDialog(); } } + + $actions->addLink( + _('Bildergalerie öffnen'), + '#g', + Icon::create('file-pic'), + [ + 'onClick' => "STUDIP.Files.openGallery(); return false;", + 'style' => 'display: none', + ] + ); + $sidebar->addWidget($actions); if ($folder->isWritable($GLOBALS['user']->id)) { @@ -612,10 +614,10 @@ class FilesController extends AuthenticatedController $actions->addLink( _('Bildergalerie öffnen'), '#g', - Icon::create('file-pic', 'clickable'), + Icon::create('file-pic'), [ 'onClick' => "STUDIP.Files.openGallery(); return false;", - 'v-if' => "hasFilesOfType('image')" + 'style' => 'display: none', ] ); $sidebar->addWidget($actions); diff --git a/resources/assets/javascripts/bootstrap/files.js b/resources/assets/javascripts/bootstrap/files.js index 72a2a6e63e0..6caef6d1d76 100644 --- a/resources/assets/javascripts/bootstrap/files.js +++ b/resources/assets/javascripts/bootstrap/files.js @@ -17,6 +17,10 @@ function searchMoreFiles (button) { return false; } +STUDIP.eventBus.on('files-vue-app-updated', ({hasImages}) => { + $('#sidebar-actions a[onclick*="Files.openGallery"]').toggle(hasImages); +}); + STUDIP.domReady(() => { STUDIP.Files.init(); @@ -49,11 +53,6 @@ STUDIP.domReady(() => { }); }); -$(document).on('files-vue-app-loaded', () => { - const lightboxImages = $('.lightbox-image'); - $('#sidebar-actions a[onclick*="Files.openGallery"]').attr('disabled', lightboxImages.length === 0); -}); - jQuery(document).on('ajaxComplete', (event, xhr) => { if (!xhr.getResponseHeader('X-Filesystem-Changes')) { return; diff --git a/resources/assets/javascripts/lib/files.js b/resources/assets/javascripts/lib/files.js index d02486d4253..f806787d158 100644 --- a/resources/assets/javascripts/lib/files.js +++ b/resources/assets/javascripts/lib/files.js @@ -29,11 +29,19 @@ const Files = { }, removeFile(id) { this.files = this.files.filter(file => file.id != id) + }, + onUpdated() { + STUDIP.eventBus.emit('files-vue-app-updated', { + hasImages: this.hasFilesOfType('image'), + }); } }, components: { FilesTable, }, - mounted () { - $(document).trigger('files-vue-app-loaded'); + updated () { + this.onUpdated(); + }, + created () { + this.onUpdated(); } }); }); -- GitLab