mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-03-11 16:35:38 +00:00
new implementation of folder hierachy
This commit is contained in:
parent
a404dfd03f
commit
aae4b76907
|
@ -42,13 +42,15 @@ class SeedDMS_Bootstrap_Style extends SeedDMS_View_Common {
|
|||
echo '<link href="../styles/'.$this->theme.'/font-awesome/css/font-awesome.css" rel="stylesheet">'."\n";
|
||||
echo '<link href="../styles/'.$this->theme.'/datepicker/css/datepicker.css" rel="stylesheet">'."\n";
|
||||
echo '<link href="../styles/'.$this->theme.'/chosen/css/chosen.css" rel="stylesheet">'."\n";
|
||||
echo '<link href="../styles/'.$this->theme.'/jqtree/jqtree.css" rel="stylesheet">'."\n";
|
||||
if($this->extraheader)
|
||||
echo $this->extraheader;
|
||||
echo '<script type="text/javascript" src="../styles/bootstrap/jquery/jquery.min.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../styles/'.$this->theme.'/jquery/jquery.min.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../js/jquery.passwordstrength.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../styles/bootstrap/noty/jquery.noty.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../styles/bootstrap/noty/layouts/topRight.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../styles/bootstrap/noty/themes/default.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../styles/'.$this->theme.'/noty/jquery.noty.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../styles/'.$this->theme.'/noty/layouts/topRight.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../styles/'.$this->theme.'/noty/themes/default.js"></script>'."\n";
|
||||
echo '<script type="text/javascript" src="../styles/'.$this->theme.'/jqtree/tree.jquery.js"></script>'."\n";
|
||||
|
||||
echo '<link rel="shortcut icon" href="../styles/'.$this->theme.'/favicon.ico" type="image/x-icon"/>'."\n";
|
||||
if($this->params['session'] && $this->params['session']->getSu()) {
|
||||
|
@ -703,22 +705,13 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
} /* }}} */
|
||||
|
||||
function printDocumentChooser($formName) { /* {{{ */
|
||||
?>
|
||||
<script language="JavaScript">
|
||||
var openDlg;
|
||||
function chooseDoc<?php print $formName ?>() {
|
||||
openDlg = open("../out/out.DocumentChooser.php?folderid=<?php echo $this->params['rootfolderid']?>&form=<?php echo urlencode($formName)?>", "openDlg", "width=480,height=480,scrollbars=yes,resizable=yes,status=yes");
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
print "<input type=\"hidden\" id=\"docid".$formName."\" name=\"docid".$formName."\">";
|
||||
print "<div class=\"input-append\">\n";
|
||||
print "<input type=\"text\" id=\"choosedocsearch\" data-provide=\"typeahead\" name=\"docname".$formName."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" />";
|
||||
// print "<button type=\"button\" onclick=\"chooseDoc".$formName."();\">".getMLText("document")."...</button>";
|
||||
print "<a data-target=\"#docChooser\" href=\"out.DocumentChooser.php?form=".$formName."&folderid=".$this->params['rootfolderid']."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("document")."…</a>\n";
|
||||
print "<a data-target=\"#docChooser".$formName."\" href=\"out.DocumentChooser.php?form=".$formName."&folderid=".$this->params['rootfolderid']."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("document")."…</a>\n";
|
||||
print "</div>\n";
|
||||
?>
|
||||
<div class="modal hide" id="docChooser" tabindex="-1" role="dialog" aria-labelledby="docChooserLabel" aria-hidden="true">
|
||||
<div class="modal hide" id="docChooser<?= $formName ?>" tabindex="-1" role="dialog" aria-labelledby="docChooserLabel" aria-hidden="true">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 id="docChooserLabel"><?php printMLText("choose_target_document") ?></h3>
|
||||
|
@ -730,6 +723,14 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true"><?php printMLText("close") ?></button>
|
||||
</div>
|
||||
</div>
|
||||
<script language="JavaScript">
|
||||
modalDocChooser<?= $formName ?> = $('#docChooser<?= $formName ?>');
|
||||
function documentSelected(id, name) {
|
||||
$('#docid<?= $formName ?>').val(id);
|
||||
$('#choosedocsearch').val(name);
|
||||
modalDocChooser<?= $formName ?>.modal('hide');
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
} /* }}} */
|
||||
|
||||
|
@ -756,7 +757,9 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
<script language="JavaScript">
|
||||
/* Set up a callback which is called when a folder in the tree is selected */
|
||||
modalFolderChooser<?= $formName ?> = $('#folderChooser<?= $formName ?>');
|
||||
function folderSelectedCallback<?= $formName ?>(id, name) {
|
||||
function folderSelected(id, name) {
|
||||
$('#targetid<?= $formName ?>').val(id);
|
||||
$('#choosefoldersearch').val(name);
|
||||
modalFolderChooser<?= $formName ?>.modal('hide');
|
||||
}
|
||||
</script>
|
||||
|
@ -1031,43 +1034,98 @@ function folderSelectedCallback<?= $formName ?>(id, name) {
|
|||
if ($folderID == $this->params['rootfolderid']) print "</ul>\n";
|
||||
} /* }}} */
|
||||
|
||||
function printTreeNavigation($folderid, $showtree){ /* {{{ */
|
||||
?>
|
||||
<script language="JavaScript">
|
||||
function toggleTree(id){
|
||||
|
||||
obj = document.getElementById("tree" + id);
|
||||
|
||||
if ( obj.style.display == "none" ){
|
||||
obj.style.display = "";
|
||||
$("i[name='treeimg" +id+ "']").removeClass("icon-folder-close");
|
||||
$("i[name='treeimg" +id+ "']").addClass("icon-folder-open");
|
||||
$("i[name='treedot" +id+ "']").removeClass("icon-plus-sign");
|
||||
$("i[name='treedot" +id+ "']").addClass("icon-minus-sign");
|
||||
}else{
|
||||
obj.style.display = "none";
|
||||
$("i[name='treeimg" +id+ "']").removeClass("icon-folder-open");
|
||||
$("i[name='treeimg" +id+ "']").addClass("icon-folder-close");
|
||||
$("i[name='treedot" +id+ "']").removeClass("icon-minus-sign");
|
||||
$("i[name='treedot" +id+ "']").addClass("icon-plus-sign");
|
||||
}
|
||||
|
||||
function printNewTreeNavigation($folderid, $showtree, $showdocs=0) { /* {{{ */
|
||||
function jqtree($path, $folder, $user, $showdocs=1) {
|
||||
if($path) {
|
||||
$pathfolder = array_shift($path);
|
||||
$subfolders = $folder->getSubFolders();
|
||||
$subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, M_READ);
|
||||
$children = array();
|
||||
foreach($subfolders as $subfolder) {
|
||||
$node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>$subfolder->hasSubFolders() ? true : false, 'is_folder'=>true);
|
||||
if($pathfolder->getID() == $subfolder->getID()) {
|
||||
if($showdocs) {
|
||||
$documents = $folder->getDocuments();
|
||||
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
|
||||
foreach($documents as $document) {
|
||||
$node2 = array('label'=>$document->getName(), 'id'=>$document->getID(), 'load_on_demand'=>false, 'is_folder'=>false);
|
||||
$children[] = $node2;
|
||||
}
|
||||
}
|
||||
$node['children'] = jqtree($path, $subfolder, $user, $showdocs);
|
||||
}
|
||||
$children[] = $node;
|
||||
}
|
||||
return $children;
|
||||
} else
|
||||
return array();
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
|
||||
if ($showtree==1){
|
||||
|
||||
if($folderid) {
|
||||
$folder = $this->params['dms']->getFolder($folderid);
|
||||
$path = $folder->getPath();
|
||||
$folder = array_shift($path);
|
||||
$node = array('label'=>$folder->getName(), 'id'=>$folder->getID(), 'load_on_demand'=>true, 'is_folder'=>true);
|
||||
if(!$folder->hasSubFolders()) {
|
||||
$node['load_on_demand'] = false;
|
||||
$node['children'] = array();
|
||||
} else {
|
||||
$node['children'] = jqtree($path, $folder, $this->params['user'], $showdocs);
|
||||
}
|
||||
$tree[] = $node;
|
||||
|
||||
} 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));
|
||||
}
|
||||
|
||||
echo "<div id=\"jqtree\" style=\"margin-left: 20px;\" data-url=\"../op/op.Ajax.php?command=subtree&showdocs=".$showdocs."\"></div>\n";
|
||||
?>
|
||||
<script language="JavaScript">
|
||||
var data = <?php echo json_encode($tree); ?>;
|
||||
$(function() {
|
||||
$('#jqtree').tree({
|
||||
data: data,
|
||||
openedIcon: '<i class="icon-minus-sign"></i>',
|
||||
closedIcon: '<i class="icon-plus-sign"></i>',
|
||||
onCanSelectNode: function(node) {
|
||||
if(node.is_folder)
|
||||
folderSelected(node.id, node.name);
|
||||
else
|
||||
documentSelected(node.id, node.name);
|
||||
console.log(node);
|
||||
},
|
||||
autoOpen: true,
|
||||
drapAndDrop: true,
|
||||
onCreateLi: function(node, $li) {
|
||||
// Add 'icon' span before title
|
||||
if(node.is_folder)
|
||||
$li.find('.jqtree-title').before('<i class="icon-folder-close-alt" rel="folder_' + node.id + '" ondragover="allowDrop(event)" ondrop="onDrop(event)"></i> ').attr('rel', 'folder_' + node.id).attr('ondragover', 'allowDrop(event)').attr('ondrop', 'onDrop(event)');
|
||||
else
|
||||
$li.find('.jqtree-title').before('<i class="icon-file"></i> ');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
} /* }}} */
|
||||
|
||||
function printTreeNavigation($folderid, $showtree){ /* {{{ */
|
||||
if ($showtree==1){
|
||||
$this->contentHeading("<a href=\"../out/out.ViewFolder.php?folderid=". $folderid."&showtree=0\"><i class=\"icon-minus-sign\"></i></a>", true);
|
||||
$this->contentContainerStart();
|
||||
$this->printFoldersTree(M_READ, -1, $this->params['rootfolderid'], $folderid, true);
|
||||
?>
|
||||
<script language="JavaScript">
|
||||
function folderSelected(id, name) {
|
||||
window.location = '../out/out.ViewFolder.php?folderid=' + id;
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
$this->printNewTreeNavigation($folderid, $showtree, 0);
|
||||
$this->contentContainerEnd();
|
||||
|
||||
}else{
|
||||
|
||||
} else {
|
||||
$this->contentHeading("<a href=\"../out/out.ViewFolder.php?folderid=". $folderid."&showtree=1\"><i class=\"icon-plus-sign\"></i></a>", true);
|
||||
}
|
||||
|
||||
} /* }}} */
|
||||
|
||||
function printClipboard($clipboard){ /* {{{ */
|
||||
|
|
|
@ -47,16 +47,15 @@ class SeedDMS_View_DocumentChooser extends SeedDMS_Bootstrap_Style {
|
|||
print "<ul style='list-style-type: none;'>\n";
|
||||
}
|
||||
print " <li>\n";
|
||||
print "<img class='treeicon' src=\"";
|
||||
if ($level == 0) $this->printImgPath("minus.png");
|
||||
else if (count($subFolders) + count($documents) > 0) $this->printImgPath("minus.png");
|
||||
print "<i class=\"";
|
||||
if ($level == 0) echo "icon-minus-sign";
|
||||
else if (count($subFolders) + count($documents) > 0) echo "icon-minus-sign";
|
||||
else $this->printImgPath("blank.png");
|
||||
print "\" border=0>\n";
|
||||
print "\"></i>\n";
|
||||
if ($folder->getAccessMode($this->user) >= M_READ) {
|
||||
print "<img src=\"".$this->getImgPath("folder_opened.gif")."\" border=0>".htmlspecialchars($folder->getName())."\n";
|
||||
}
|
||||
else
|
||||
print "<img src=\"".$this->getImgPath("folder_opened.gif")."\" width=18 height=18 border=0>".htmlspecialchars($folder->getName())."\n";
|
||||
print "<i class=\"icon-folder-open\"></i> ".htmlspecialchars($folder->getName())."\n";
|
||||
} else
|
||||
print "<i class=\"icon-folder-open\"></i> ".htmlspecialchars($folder->getName())."\n";
|
||||
print " </li>\n";
|
||||
|
||||
print "<ul style='list-style-type: none;'>";
|
||||
|
@ -70,17 +69,17 @@ class SeedDMS_View_DocumentChooser extends SeedDMS_Bootstrap_Style {
|
|||
$documents_ = SeedDMS_Core_DMS::filterAccess($subFolders[$i]->getDocuments(), $this->user, M_READ);
|
||||
|
||||
if (count($subFolders_) + count($documents_) > 0)
|
||||
print "<a href=\"out.DocumentChooser.php?form=".$this->form."&folderid=".$subFolders[$i]->getID()."\"><img class='treeicon' src=\"".$this->getImgPath("plus.png")."\" border=0></a>";
|
||||
print "<a href=\"out.DocumentChooser.php?form=".$this->form."&folderid=".$subFolders[$i]->getID()."\"><i class='icon-plus-sign'></i></a> ";
|
||||
else
|
||||
print "<img class='treeicon' src=\"".$this->getImgPath("blank.png")."\">";
|
||||
print "<img src=\"".$this->getImgPath("folder_closed.gif")."\" border=0>".htmlspecialchars($subFolders[$i]->getName())."\n";
|
||||
print "<i class='icon-circle'></i> ";
|
||||
print "<i class=\"icon-folder-close\"></i> ".htmlspecialchars($subFolders[$i]->getName())."\n";
|
||||
print "</li>";
|
||||
}
|
||||
}
|
||||
for ($i = 0; $i < count($documents); $i++) {
|
||||
print "<li>\n";
|
||||
print "<img class='treeicon' src=\"images/blank.png\">";
|
||||
print "<a class=\"foldertree_selectable\" href=\"javascript:documentSelected(".$documents[$i]->getID().",'".str_replace("'", "\\'", htmlspecialchars($documents[$i]->getName()))."');\"><img src=\"images/file.gif\" border=0>".htmlspecialchars($documents[$i]->getName())."</a>";
|
||||
print "<i class='icon-circle'></i> ";
|
||||
print "<i class=\"icon-file\"></i> <a class=\"foldertree_selectable\" href=\"javascript:documentSelected(".$documents[$i]->getID().",'".str_replace("'", "\\'", htmlspecialchars($documents[$i]->getName()))."');\">".htmlspecialchars($documents[$i]->getName())."</a>";
|
||||
print "</li>";
|
||||
}
|
||||
|
||||
|
@ -98,36 +97,11 @@ class SeedDMS_View_DocumentChooser extends SeedDMS_Bootstrap_Style {
|
|||
$this->form = $this->params['form'];
|
||||
|
||||
$this->htmlStartPage(getMLText("choose_target_document"));
|
||||
// $this->globalBanner();
|
||||
// $this->pageNavigation(getMLText("choose_target_document"));
|
||||
?>
|
||||
|
||||
<script language="JavaScript">
|
||||
var targetName;
|
||||
var targetID;
|
||||
|
||||
function documentSelected(id, name) {
|
||||
targetName.value = name;
|
||||
targetID.value = id;
|
||||
// window.close();
|
||||
// return true;
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
$this->contentContainerStart();
|
||||
$this->printNewTreeNavigation($folderid, $showtree, 1);
|
||||
$this->printTree($folder->getPath());
|
||||
$this->contentContainerEnd();
|
||||
?>
|
||||
|
||||
<script language="JavaScript">
|
||||
targetName = document.<?php echo $this->form?>.docname<?php print $this->form ?>;
|
||||
targetID = document.<?php echo $this->form?>.docid<?php print $this->form ?>;
|
||||
</script>
|
||||
|
||||
<?php
|
||||
echo "</body>\n</html>\n";
|
||||
// $this->htmlEndPage();
|
||||
} /* }}} */
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -40,40 +40,11 @@ class SeedDMS_View_FolderChooser extends SeedDMS_Bootstrap_Style {
|
|||
$rootfolderid = $this->params['rootfolderid'];
|
||||
|
||||
$this->htmlStartPage(getMLText("choose_target_folder"));
|
||||
// $this->globalBanner();
|
||||
?>
|
||||
|
||||
<script language="JavaScript">
|
||||
function toggleTree(id){
|
||||
obj = document.getElementById("tree" + id);
|
||||
if ( obj.style.display == "none" ) obj.style.display = "";
|
||||
else obj.style.display = "none";
|
||||
}
|
||||
|
||||
var targetName;
|
||||
var targetID;
|
||||
function folderSelected(id, name) {
|
||||
targetName.value = name;
|
||||
targetID.value = id;
|
||||
if(typeof(folderSelectedCallback<?= $form ?>) !== 'undefined')
|
||||
folderSelectedCallback<?= $form ?>(id, name);
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
$this->contentContainerStart();
|
||||
$this->printFoldersTree($mode, $exclude, $rootfolderid);
|
||||
$this->printNewTreeNavigation($folderid, $showtree, 0);
|
||||
// $this->printFoldersTree($mode, $exclude, $rootfolderid);
|
||||
$this->contentContainerEnd();
|
||||
?>
|
||||
|
||||
<script language="JavaScript">
|
||||
targetName = document.<?php echo $form?>.targetname<?php print $form ?>;
|
||||
targetID = document.<?php echo $form?>.targetid<?php print $form ?>;
|
||||
</script>
|
||||
|
||||
<?php
|
||||
echo "</body>\n</html>\n";
|
||||
// $this->htmlEndPage();
|
||||
} /* }}} */
|
||||
}
|
||||
?>
|
||||
|
|
Loading…
Reference in New Issue
Block a user