diff --git a/CHANGELOG b/CHANGELOG index 816efe650..de32e5c41 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -329,6 +329,7 @@ - prevent malicious manipulation of referer when setting language - fix setting attributes of type user, group, document, folder when updating a document +- objects can be removed from clipboard -------------------------------------------------------------------------------- Changes in version 5.1.38 diff --git a/inc/inc.ClassSession.php b/inc/inc.ClassSession.php index a9940d938..e1f1c1b8e 100644 --- a/inc/inc.ClassSession.php +++ b/inc/inc.ClassSession.php @@ -286,6 +286,24 @@ class SeedDMS_Session { return (array) $this->data['clipboard']; } /* }}} */ + /** + * Check if object is on clipboard + * + * @param object $object Document or folder + */ + function isOnClipboard($object) { /* {{{ */ + /* id is only set if load() was called before */ + if($this->id) { + $dms = $object->getDMS(); + if($object->isType('document')) { + return in_array($object->getID(), $this->data['clipboard']['docs']); + } elseif($object->isType('folder')) { + return in_array($object->getID(), $this->data['clipboard']['folders']); + } + } + return false; + } /* }}} */ + /** * Add to clipboard of session * diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 43afb91dd..e99dd1070 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -768,6 +768,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; private function folderNavigationBar($folder) { /* {{{ */ $dms = $this->params['dms']; + $session = $this->params['session']; $enableClipboard = $this->params['enableclipboard']; $accessobject = $this->params['accessobject']; if (!is_object($folder) || !$folder->isType('folder')) { @@ -812,7 +813,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['edit_folder_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>getMLText('edit_folder_notify')); } if($enableClipboard) { - $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); + if($session->isOnClipboard($folder)) + $menuitems['remove_from_clipboard'] = array('class'=>'removefromclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_removed_from_clipboard')], ['title', getMLText("remove_from_clipboard")]), 'label'=>getMLText("remove_from_clipboard")); + else + $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); } if ($accessobject->check_view_access('Indexer') && $this->params['enablefullsearch']) { $menuitems['index_folder'] = array('link'=>$this->params['settings']->_httpRoot."out/out.Indexer.php?folderid=". $folderID."&showtree=".showtree(), 'label'=>getMLText('index_folder')); @@ -835,6 +839,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} */ private function documentNavigationBar($document) { /* {{{ */ + $session = $this->params['session']; $accessobject = $this->params['accessobject']; $enableClipboard = $this->params['enableclipboard']; $accessMode = $document->getAccessMode($this->params['user']); @@ -896,7 +901,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['edit_document_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.DocumentNotify". $docid, 'label'=>getMLText('edit_document_notify')); } if($enableClipboard) { - $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); + if($session->isOnClipboard($document)) + $menuitems['remove_from_clipboard'] = array('class'=>'removefromclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_removed_from_clipboard')], ['title', getMLText("remove_from_clipboard")]), 'label'=>getMLText("remove_from_clipboard")); + else + $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); } if ($accessobject->check_view_access('TransferDocument')) { $menuitems['transfer_document'] = array('link'=>$this->params['settings']->_httpRoot."out/out.TransferDocument". $docid, 'label'=>getMLText('transfer_document')); @@ -3304,6 +3312,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) function documentListRowAction($document, $previewer, $skipcont=false, $version=0, $extracontent=array()) { /* {{{ */ $user = $this->params['user']; + $session = $this->params['session']; $enableClipboard = $this->params['enableclipboard']; $accessop = $this->params['accessobject']; $onepage = $this->params['onepage']; @@ -3333,7 +3342,10 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) $actions['document_access'] = $this->printAccessButton($document, true); } if($enableClipboard) { - $actions['add_to_clipboard'] = ''; + if($session->isOnClipboard($document)) + $actions['remove_from_clipboard'] = ''; + else + $actions['add_to_clipboard'] = ''; } if($onepage) $actions['view_document'] = ''; @@ -3539,6 +3551,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) function folderListRowAction($subFolder, $skipcont=false, $extracontent=array()) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; + $session = $this->params['session']; // $folder = $this->params['folder']; $showtree = $this->params['showtree']; $enableRecursiveCount = $this->params['enableRecursiveCount']; @@ -3571,7 +3584,10 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) $actions['folder_access'] = $this->printAccessButton($subFolder, true); } if($enableClipboard) { - $actions['add_to_clipboard'] = ''; + if($session->isOnClipboard($subFolder)) + $actions['add_to_clipboard'] = ''; + else + $actions['add_to_clipboard'] = ''; } if($onepage) $actions['view_folder'] = ''; diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index a4911a4d8..1494912f2 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -407,6 +407,8 @@ $(document).ready( function() { if(data.success) { $("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard') $("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard') + $("div.ajax[data-action='navigation']").trigger('update', {}); + $("div.ajax[data-action='folderList']").trigger('update', {}); noty({ text: attr_msg, type: 'success', @@ -442,6 +444,8 @@ $(document).ready( function() { if(data.success) { $("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard') $("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard') + $("div.ajax[data-action='navigation']").trigger('update', {}); + $("div.ajax[data-action='folderList']").trigger('update', {}); noty({ text: attr_msg, type: 'success', @@ -753,6 +757,8 @@ function onAddClipboard(ev) { /* {{{ */ if(data.success) { $("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard') $("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard') + $("div.ajax[data-action='navigation']").trigger('update', {}); + $("div.ajax[data-action='folderList']").trigger('update', {}); noty({ text: data.message, type: 'success', diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 277210f87..0dfb89c9a 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -701,6 +701,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; private function folderNavigationBar($folder) { /* {{{ */ $dms = $this->params['dms']; + $session = $this->params['session']; $enableClipboard = $this->params['enableclipboard']; $accessobject = $this->params['accessobject']; if (!is_object($folder) || !$folder->isType('folder')) { @@ -743,7 +744,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['edit_folder_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>getMLText('edit_folder_notify')); } if($enableClipboard) { - $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); + if($session->isOnClipboard($folder)) + $menuitems['remove_from_clipboard'] = array('class'=>'removefromclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_removed_from_clipboard')], ['title', getMLText("remove_from_clipboard")]), 'label'=>getMLText("remove_from_clipboard")); + else + $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); } if ($this->params['user']->isAdmin() && $this->params['enablefullsearch']) { $menuitems['index_folder'] = array('link'=>$this->params['settings']->_httpRoot."out/out.Indexer.php?folderid=". $folderID."&showtree=".showtree(), 'label'=>getMLText('index_folder')); @@ -764,6 +768,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} */ private function documentNavigationBar($document) { /* {{{ */ + $session = $this->params['session']; $accessobject = $this->params['accessobject']; $enableClipboard = $this->params['enableclipboard']; $accessMode = $document->getAccessMode($this->params['user']); @@ -823,7 +828,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['edit_document_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.DocumentNotify". $docid, 'label'=>getMLText('edit_document_notify')); } if($enableClipboard) { - $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); + if($session->isOnClipboard($document)) + $menuitems['remove_from_clipboard'] = array('class'=>'removefromclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_removed_from_clipboard')], ['title', getMLText("remove_from_clipboard")]), 'label'=>getMLText("remove_from_clipboard")); + else + $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); } if ($accessobject->check_view_access('TransferDocument')) { $menuitems['transfer_document'] = array('link'=>$this->params['settings']->_httpRoot."out/out.TransferDocument". $docid, 'label'=>getMLText('transfer_document')); @@ -3278,6 +3286,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) function documentListRowAction($document, $previewer, $skipcont=false, $version=0, $extracontent=array()) { /* {{{ */ $user = $this->params['user']; + $session = $this->params['session']; $enableClipboard = $this->params['enableclipboard']; $accessop = $this->params['accessobject']; $onepage = $this->params['onepage']; @@ -3307,7 +3316,10 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) $actions['document_access'] = $this->printAccessButton($document, true); } if($enableClipboard) { - $actions['add_to_clipboard'] = ''; + if($session->isOnClipboard($document)) + $actions['remove_from_clipboard'] = ''; + else + $actions['add_to_clipboard'] = ''; } if($onepage) $actions['view_document'] = ''; @@ -3565,6 +3577,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) function folderListRowAction($subFolder, $skipcont=false, $extracontent=array()) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; + $session = $this->params['session']; // $folder = $this->params['folder']; $showtree = $this->params['showtree']; $enableRecursiveCount = $this->params['enableRecursiveCount']; @@ -3597,7 +3610,10 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) $actions['folder_access'] = $this->printAccessButton($subFolder, true); } if($enableClipboard) { - $actions['add_to_clipboard'] = ''; + if($session->isOnClipboard($subFolder)) + $actions['add_to_clipboard'] = ''; + else + $actions['add_to_clipboard'] = ''; } if($onepage) $actions['view_folder'] = ''; diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index b92184282..f617a091c 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -456,6 +456,8 @@ $(document).ready( function() { if(data.success) { $("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard') $("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard') + $("div.ajax[data-action='navigation']").trigger('update', {}); + $("div.ajax[data-action='folderList']").trigger('update', {}); noty({ text: attr_msg, type: 'success', @@ -491,6 +493,8 @@ $(document).ready( function() { if(data.success) { $("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard') $("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard') + $("div.ajax[data-action='navigation']").trigger('update', {}); + $("div.ajax[data-action='folderList']").trigger('update', {}); noty({ text: attr_msg, type: 'success', @@ -802,6 +806,8 @@ function onAddClipboard(ev) { /* {{{ */ if(data.success) { $("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard') $("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard') + $("div.ajax[data-action='navigation']").trigger('update', {}); + $("div.ajax[data-action='folderList']").trigger('update', {}); noty({ text: data.message, type: 'success',