From bd99b078ca9de620e2f948687ca21ec72d74ccf5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 27 Aug 2019 14:35:22 +0200 Subject: [PATCH] split page into seperate views, click in tree just updates the views a page reload isn't needed anymore --- views/bootstrap/class.Bootstrap.php | 20 +- views/bootstrap/class.ViewFolder.php | 413 +++++++++++++++------------ 2 files changed, 245 insertions(+), 188 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 526ee5ebc..2c6f85dd2 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1593,11 +1593,11 @@ $(document).ready(function() { if($path || $expandtree>=$level) { if($path) $pathfolder = array_shift($path); + $children = array(); $subfolders = $folder->getSubFolders(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); - $children = array(); foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? false : false, 'is_folder'=>true); if($expandtree>=$level || $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { @@ -1617,7 +1617,7 @@ $(document).ready(function() { $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? false : false, 'is_folder'=>true); $children[] = $node; } return $children; @@ -1636,7 +1636,7 @@ $(document).ready(function() { $node['load_on_demand'] = false; $node['children'] = array(); } else { - $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, $expandtree, $orderby, 0); + $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, 0 /*$expandtree*/, $orderby, 0); if($showdocs) { $documents = $folder->getDocuments(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $this->params['user'], $accessmode); @@ -1656,14 +1656,14 @@ $(document).ready(function() { } else { $root = $this->params['dms']->getFolder($this->params['rootfolderid']); - $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>true, 'is_folder'=>true)); + $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>false, 'is_folder'=>true)); } - ?> var data = ; $(function() { $('#jqtree').tree({ // saveState: true, + selectable: false, data: data, saveState: 'jqtree', openedIcon: $(''), @@ -1687,17 +1687,19 @@ $(function() { // Unfold node for currently selected folder $('#jqtree').tree('openNode', $('#jqtree').tree('getNodeById', ), false); $('#jqtree').on( - 'tree.select', + 'tree.click', function(event) { var node = event.node; + if(!node) + return; $('#jqtree').tree('openNode', node); // event.preventDefault(); if(node.is_folder) { if(typeof node.fetched == 'undefined') { node.fetched = true; $(this).tree('loadDataFromUrl', node, function () { - $(this).tree('openNode', node);} - ); + $(this).tree('openNode', node); + }); } folderSelected(node.id, node.name); } else diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 0909e7f87..27b8bf985 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -105,7 +105,9 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); ?> function folderSelected(id, name) { - window.location = '../out/out.ViewFolder.php?folderid=' + id; +// window.location = '../out/out.ViewFolder.php?folderid=' + id; +console.log(id); + $('div.ajax').trigger('update', {folderid: id}); } function loadMoreObjects(element, limit) { @@ -159,6 +161,221 @@ $('#loadmore').click(function(e) { $this->printDeleteDocumentButtonJs(); } /* }}} */ + function folderInfos() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + + $txt = $this->callHook('folderInfo', $folder); + if(is_string($txt)) + echo $txt; + else { + + $owner = $folder->getOwner(); + $this->contentHeading(getMLText("folder_infos")); + $this->contentContainerStart(); + echo "\n"; + if($user->isAdmin()) { + echo ""; + echo "\n"; + echo "\n"; + echo ""; + } + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + if($folder->getComment()) { + echo ""; + echo "\n"; + echo "\n"; + echo ""; + } + + if($user->isAdmin()) { + echo ""; + echo ""; + echo ""; + echo ""; + if($folder->inheritsAccess()) { + echo ""; + echo "\n"; + echo ""; + } else { + echo ""; + echo ""; + echo ""; + echo ""; + } + } + $attributes = $folder->getAttributes(); + if($attributes) { + foreach($attributes as $attribute) { + $arr = $this->callHook('showFolderAttribute', $folder, $attribute); + if(is_array($arr)) { + echo $txt; + echo ""; + echo ""; + echo ""; + echo ""; + } else { + $attrdef = $attribute->getAttributeDefinition(); + ?> + + + + +\n"; + $this->contentContainerEnd(); + } + } /* }}} */ + + function folderList() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + $folderid = $folder->getId(); + $orderby = $this->params['orderby']; + $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); + $cachedir = $this->params['cachedir']; + $maxItemsPerPage = $this->params['maxItemsPerPage']; + $incItemsPerPage = $this->params['incItemsPerPage']; + $previewwidth = $this->params['previewWidthList']; + $previewconverters = $this->params['previewConverters']; + $timeout = $this->params['timeout']; + $xsendfile = $this->params['xsendfile']; + + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); + $previewer->setConverters($previewconverters); + + $txt = $this->callHook('listHeader', $folder); + if(is_string($txt)) + echo $txt; + else + $this->contentHeading(getMLText("folder_contents")); + + $subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby[0], $orderdir); + if($subFolders === null) + $subFolders = $folder->getSubFolders($orderby[0], $orderdir); + $subFolders = SeedDMS_Core_DMS::filterAccess($subFolders, $user, M_READ); + $documents = $this->callHook('folderGetDocuments', $folder, $orderby[0], $orderdir); + if($documents === null) + $documents = $folder->getDocuments($orderby[0], $orderdir); + $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); + + $txt = $this->callHook('folderListPreContent', $folder, $subFolders, $documents); + if(is_string($txt)) + echo $txt; + $i = 0; + if ((count($subFolders) > 0)||(count($documents) > 0)){ + $txt = $this->callHook('folderListHeader', $folder, $orderby, $orderdir); + if(is_string($txt)) + echo $txt; + else { + print "
".getMLText("id").":".htmlspecialchars($folder->getID())."
".getMLText("owner").":getEmail())."\">".htmlspecialchars($owner->getFullName())."
".getMLText("creation_date").":".getLongReadableDate($folder->getDate())."
".getMLText("comment").":".htmlspecialchars($folder->getComment())."
".getMLText('default_access').":".$this->getAccessModeText($folder->getDefaultAccess())."
".getMLText("access_mode").":"; + echo getMLText("inherited")."
"; + $this->printAccessList($folder); + echo "
".getMLText('access_mode').":"; + $this->printAccessList($folder); + echo "
".$arr[0].":".$arr[1].":
getName()); ?>:getValueAsArray())); ?>
"; + print "\n\n"; + print "\n"; + print "\n"; + // print "\n"; + print "\n"; + // print "\n"; + print "\n"; + print "\n\n\n"; + } + + foreach($subFolders as $subFolder) { + if(!$maxItemsPerPage || $i < $maxItemsPerPage) { + $txt = $this->callHook('folderListItem', $subFolder, 'viewfolder'); + if(is_string($txt)) + echo $txt; + else { + echo $this->folderListRow($subFolder); + } + } + $i++; + } + + if($subFolders && $documents) { + if(!$maxItemsPerPage || $maxItemsPerPage > count($subFolders)) { + $txt = $this->callHook('folderListSeparator', $folder); + if(is_string($txt)) + echo $txt; + } + } + + foreach($documents as $document) { + if(!$maxItemsPerPage || $i < $maxItemsPerPage) { + $document->verifyLastestContentExpriry(); + $txt = $this->callHook('documentListItem', $document, $previewer, false, 'viewfolder'); + if(is_string($txt)) + echo $txt; + else { + echo $this->documentListRow($document, $previewer); + } + } + $i++; + } + + $txt = $this->callHook('folderListFooter', $folder); + if(is_string($txt)) + echo $txt; + else + echo "\n
".getMLText("name"); + print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; + print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; + print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; + print "".getMLText("owner")."".getMLText("status")."".getMLText("version")."".getMLText("action")."
\n"; + + if($maxItemsPerPage && $i > $maxItemsPerPage) + echo ""; + } + else printMLText("empty_folder_list"); + + $txt = $this->callHook('folderListPostContent', $folder, $subFolders, $documents); + if(is_string($txt)) + echo $txt; + + } /* }}} */ + + function navigation() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + + $txt = $this->callHook('folderMenu', $folder); + if(is_string($txt)) + echo $txt; + else { + $this->pageNavigation($this->getFolderPathHTML($folder), "view_folder", $folder); + } + + echo $this->callHook('preContent'); + } /* }}} */ + + function dropUpload() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + + $this->contentHeading(getMLText("dropupload"), true); +?> +
+params['dms']; $user = $this->params['user']; @@ -254,25 +471,20 @@ $('#loadmore').click(function(e) { $xsendfile = $this->params['xsendfile']; $folderid = $folder->getId(); + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); + $previewer->setConverters($previewconverters); $this->htmlAddHeader(''."\n", 'js'); echo $this->callHook('startPage'); $this->htmlStartPage(getMLText("folder_title", array("foldername" => htmlspecialchars($folder->getName())))); - $this->globalNavigation($folder); $this->contentStart(); - $txt = $this->callHook('folderMenu', $folder); - if(is_string($txt)) - echo $txt; - else { - $this->pageNavigation($this->getFolderPathHTML($folder), "view_folder", $folder); - } - $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); - $previewer->setConverters($previewconverters); - - echo $this->callHook('preContent'); +// $this->navigation(); +?> +
getID()."\"" : "") ?>>
+\n"; @@ -313,184 +525,27 @@ $('#loadmore').click(function(e) { echo "
"; echo "
"; } - $txt = $this->callHook('folderInfo', $folder); - if(is_string($txt)) - echo $txt; - else { - $owner = $folder->getOwner(); - $this->contentHeading(getMLText("folder_infos")); - $this->contentContainerStart(); - echo "\n"; - if($user->isAdmin()) { - echo ""; - echo "\n"; - echo "\n"; - echo ""; - } - echo ""; - echo "\n"; - echo "\n"; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - if($folder->getComment()) { - echo ""; - echo "\n"; - echo "\n"; - echo ""; - } - - if($user->isAdmin()) { - echo ""; - echo ""; - echo ""; - echo ""; - if($folder->inheritsAccess()) { - echo ""; - echo "\n"; - echo ""; - } else { - echo ""; - echo ""; - echo ""; - echo ""; - } - } - $attributes = $folder->getAttributes(); - if($attributes) { - foreach($attributes as $attribute) { - $arr = $this->callHook('showFolderAttribute', $folder, $attribute); - if(is_array($arr)) { - echo $txt; - echo ""; - echo ""; - echo ""; - echo ""; - } else { - $attrdef = $attribute->getAttributeDefinition(); - ?> - - - - +// $this->folderInfos(); +?> +
getID()."\"" : "") ?>>
\n"; - $this->contentContainerEnd(); - } if ($enableDropUpload && $folder->getAccessMode($user) >= M_READWRITE) { echo ""; echo "
"; - $this->contentHeading(getMLText("dropupload"), true); -// $this->addFooterJS("SeedDMSUpload.setUrl('../op/op.Ajax.php');"); -// $this->addFooterJS("SeedDMSUpload.setAbortBtnLabel('".getMLText("cancel")."');"); -// $this->addFooterJS("SeedDMSUpload.setEditBtnLabel('".getMLText("edit_document_props")."');"); -// $this->addFooterJS("SeedDMSUpload.setMaxFileSize(".SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize")).");"); -// $this->addFooterJS("SeedDMSUpload.setMaxFileSizeMsg('".getMLText("uploading_maxsize")."');"); +// $this->dropUpload(); ?> -
+
getID()."\"" : "") ?>>
"; echo "
"; } - $txt = $this->callHook('listHeader', $folder); - if(is_string($txt)) - echo $txt; - else - $this->contentHeading(getMLText("folder_contents")); - - $subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby[0], $orderdir); - if($subFolders === null) - $subFolders = $folder->getSubFolders($orderby[0], $orderdir); - $subFolders = SeedDMS_Core_DMS::filterAccess($subFolders, $user, M_READ); - $documents = $this->callHook('folderGetDocuments', $folder, $orderby[0], $orderdir); - if($documents === null) - $documents = $folder->getDocuments($orderby[0], $orderdir); - $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); - - $txt = $this->callHook('folderListPreContent', $folder, $subFolders, $documents); - if(is_string($txt)) - echo $txt; - $i = 0; - if ((count($subFolders) > 0)||(count($documents) > 0)){ - $txt = $this->callHook('folderListHeader', $folder, $orderby, $orderdir); - if(is_string($txt)) - echo $txt; - else { - print "
".getMLText("id").":".htmlspecialchars($folder->getID())."
".getMLText("owner").":getEmail())."\">".htmlspecialchars($owner->getFullName())."
".getMLText("creation_date").":".getLongReadableDate($folder->getDate())."
".getMLText("comment").":".htmlspecialchars($folder->getComment())."
".getMLText('default_access').":".$this->getAccessModeText($folder->getDefaultAccess())."
".getMLText("access_mode").":"; - echo getMLText("inherited")."
"; - $this->printAccessList($folder); - echo "
".getMLText('access_mode').":"; - $this->printAccessList($folder); - echo "
".$arr[0].":".$arr[1].":
getName()); ?>:getValueAsArray())); ?>
"; - print "\n\n"; - print "\n"; - print "\n"; - // print "\n"; - print "\n"; - // print "\n"; - print "\n"; - print "\n\n\n"; - } - - foreach($subFolders as $subFolder) { - if(!$maxItemsPerPage || $i < $maxItemsPerPage) { - $txt = $this->callHook('folderListItem', $subFolder, 'viewfolder'); - if(is_string($txt)) - echo $txt; - else { - echo $this->folderListRow($subFolder); - } - } - $i++; - } - - if($subFolders && $documents) { - if(!$maxItemsPerPage || $maxItemsPerPage > count($subFolders)) { - $txt = $this->callHook('folderListSeparator', $folder); - if(is_string($txt)) - echo $txt; - } - } - - foreach($documents as $document) { - if(!$maxItemsPerPage || $i < $maxItemsPerPage) { - $document->verifyLastestContentExpriry(); - $txt = $this->callHook('documentListItem', $document, $previewer, false, 'viewfolder'); - if(is_string($txt)) - echo $txt; - else { - echo $this->documentListRow($document, $previewer); - } - } - $i++; - } - - $txt = $this->callHook('folderListFooter', $folder); - if(is_string($txt)) - echo $txt; - else - echo "\n
".getMLText("name"); - print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; - print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; - print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; - print "".getMLText("owner")."".getMLText("status")."".getMLText("version")."".getMLText("action")."
\n"; - - if($maxItemsPerPage && $i > $maxItemsPerPage) - echo ""; - } - else printMLText("empty_folder_list"); - - $txt = $this->callHook('folderListPostContent', $folder, $subFolders, $documents); - if(is_string($txt)) - echo $txt; - +// $this->folderList(); +?> +
getID()."\"" : "") ?>>
+\n"; // End of right column div echo "
\n"; // End of div around left and right column