seeddms-code/views/bootstrap/class.Bootstrap.php

2183 lines
92 KiB
PHP
Raw Normal View History

2012-12-14 07:53:13 +00:00
<?php
// MyDMS. Document Management System
// Copyright (C) 2002-2005 Markus Westphal
// Copyright (C) 2006-2008 Malcolm Cowe
// Copyright (C) 2010 Matteo Lucarelli
// Copyright (C) 2009-2012 Uwe Steinmann
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
class SeedDMS_Bootstrap_Style extends SeedDMS_View_Common {
2012-12-14 07:53:13 +00:00
var $imgpath;
/**
* @var string $extraheader extra html code inserted in the html header
* of the page
*
* @access protected
*/
protected $extraheader;
2012-12-14 07:53:13 +00:00
function __construct($params, $theme='bootstrap') {
$this->theme = $theme;
$this->params = $params;
$this->imgpath = '../views/'.$theme.'/images/';
$this->extraheader = '';
$this->footerjs = array();
2012-12-14 07:53:13 +00:00
}
/**
* Add javascript to an internal array which is output at the
* end of the page within a document.ready() function.
*
* @param string $script javascript to be added
*/
function addFooterJS($script) { /* {{{ */
$this->footerjs[] = $script;
} /* }}} */
2012-12-14 07:53:13 +00:00
function htmlStartPage($title="", $bodyClass="") { /* {{{ */
echo "<!DOCTYPE html>\n";
echo "<html lang=\"en\">\n<head>\n";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0">'."\n";
echo '<link href="../styles/'.$this->theme.'/bootstrap/css/bootstrap.css" rel="stylesheet">'."\n";
echo '<link href="../styles/'.$this->theme.'/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">'."\n";
2013-04-19 12:30:57 +00:00
echo '<link href="../styles/'.$this->theme.'/font-awesome/css/font-awesome.css" rel="stylesheet">'."\n";
2012-12-14 07:53:13 +00:00
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";
2013-05-24 15:32:12 +00:00
echo '<link href="../styles/'.$this->theme.'/jqtree/jqtree.css" rel="stylesheet">'."\n";
echo '<link href="../styles/'.$this->theme.'/application.css" rel="stylesheet">'."\n";
2014-07-03 10:04:11 +00:00
// echo '<link href="../styles/'.$this->theme.'/jquery-ui-1.10.4.custom/css/ui-lightness/jquery-ui-1.10.4.custom.css" rel="stylesheet">'."\n";
2014-04-01 19:04:55 +00:00
echo '<script type="text/javascript" src="../styles/'.$this->theme.'/jquery/jquery.min.js"></script>'."\n";
if($this->extraheader)
echo $this->extraheader;
2012-12-14 07:53:13 +00:00
echo '<script type="text/javascript" src="../js/jquery.passwordstrength.js"></script>'."\n";
2013-05-24 15:32:12 +00:00
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 '<script type="text/javascript" src="../styles/'.$this->theme.'/jquery-cookie/jquery.cookie.js"></script>'."\n";
2012-12-14 07:53:13 +00:00
echo '<link rel="shortcut icon" href="../styles/'.$this->theme.'/favicon.ico" type="image/x-icon"/>'."\n";
if($this->params['session'] && $this->params['session']->getSu()) {
?>
<style type="text/css">
.navbar-inverse .navbar-inner {
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#882222), to(#111111));
background-image: webkit-linear-gradient(top, #882222, #111111);
background-image: linear-gradient(to bottom, #882222, #111111);;
}
</style>
<?php
}
$sitename = trim(strip_tags($this->params['sitename']));
echo "<title>".(strlen($sitename)>0 ? $sitename : "SeedDMS").(strlen($title)>0 ? ": " : "").htmlspecialchars($title)."</title>\n";
2012-12-14 07:53:13 +00:00
echo "</head>\n";
echo "<body".(strlen($bodyClass)>0 ? " class=\"".$bodyClass."\"" : "").">\n";
if($this->params['session'] && $flashmsg = $this->params['session']->getSplashMsg()) {
$this->params['session']->clearSplashMsg();
2013-05-18 20:29:45 +00:00
?>
<script>
noty({
2014-01-08 05:36:40 +00:00
text: '<?php echo $flashmsg['msg'] ?>',
type: '<?php echo $flashmsg['type'] ?>',
2013-05-18 20:29:45 +00:00
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: <?php echo isset($flashmsg['duration']) && is_numeric($flashmsg['duration']) ? $flashmsg['duration'] : ($flashmsg['type'] == "error" ? "3000" : "1500"); ?>,
2013-05-18 20:29:45 +00:00
_template: '<div class="noty_message alert alert-block alert-error"><span class="noty_text"></span><div class="noty_close"></div></div>'
});
</script>
<?php
}
2012-12-14 07:53:13 +00:00
} /* }}} */
function htmlAddHeader($head) { /* {{{ */
$this->extraheader .= $head;
} /* }}} */
2012-12-14 07:53:13 +00:00
function htmlEndPage() { /* {{{ */
$this->footNote();
if($this->params['showmissingtranslations']) {
$this->missingḺanguageKeys();
}
2012-12-14 07:53:13 +00:00
echo '<script src="../styles/'.$this->theme.'/bootstrap/js/bootstrap.min.js"></script>'."\n";
echo '<script src="../styles/'.$this->theme.'/datepicker/js/bootstrap-datepicker.js"></script>'."\n";
2013-04-11 17:15:03 +00:00
foreach(array('de', 'es', 'ca', 'nl', 'fi', 'cs', 'it', 'fr', 'sv', 'sl', 'pt-BR', 'zh-CN', 'zh-TW') as $lang)
echo '<script src="../styles/'.$this->theme.'/datepicker/js/locales/bootstrap-datepicker.'.$lang.'.js"></script>'."\n";
2012-12-14 07:53:13 +00:00
echo '<script src="../styles/'.$this->theme.'/chosen/js/chosen.jquery.min.js"></script>'."\n";
echo '<script src="../styles/'.$this->theme.'/application.js"></script>'."\n";
if($this->footerjs) {
echo "<script type=\"text/javascript\">
//<![CDATA[
$(document).ready(function () {
";
foreach($this->footerjs as $script) {
echo $script."\n";
}
echo "});
//]]>
</script>";
}
2012-12-14 07:53:13 +00:00
echo "</body>\n</html>\n";
} /* }}} */
function missingḺanguageKeys() { /* {{{ */
global $MISSING_LANG, $LANG;
if($MISSING_LANG) {
echo '<div class="alert alert-error">'."\n";
echo "<p><strong>This page contains missing translations in the selected language. Please help to improve SeedDMS and provide the translation.</strong></p>";
echo "</div>";
echo "<table class=\"table table-condensed\">";
echo "<tr><th>Key</th><th>engl. Text</th><th>Your translation</th></tr>\n";
foreach($MISSING_LANG as $key=>$lang) {
echo "<tr><td>".$key."</td><td>".$LANG['en_GB'][$key]."</td><td><div class=\"input-append send-missing-translation\"><input name=\"missing-lang-key\" type=\"hidden\" value=\"".$key."\" /><input name=\"missing-lang-lang\" type=\"hidden\" value=\"".$lang."\" /><input type=\"text\" class=\"input-xxlarge\" name=\"missing-lang-translation\" placeholder=\"Your translation in '".$lang."'\"/><a class=\"btn\">Submit</a></div></td></tr>";
}
echo "</table>";
?>
<script>
noty({
text: '<b>There are missing translations on this page!</b><br />Please check the bottom of the page.',
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 5500,
});
</script>
<?php
}
} /* }}} */
2012-12-14 07:53:13 +00:00
function footNote() { /* {{{ */
echo '<div class="row-fluid" style="padding-top: 20px;">'."\n";
echo '<div class="span12">'."\n";
echo '<div class="alert alert-info">'."\n";
if ($this->params['printdisclaimer']){
echo "<div class=\"disclaimer\">".getMLText("disclaimer")."</div>";
}
if (isset($this->params['footnote']) && strlen((string)$this->params['footnote'])>0) {
echo "<div class=\"footNote\">".(string)$this->params['footnote']."</div>";
}
echo "</div>\n";
echo "</div>\n";
echo "</div>\n";
return;
} /* }}} */
function contentStart() { /* {{{ */
echo "<div class=\"container-fluid\">\n";
echo " <div class=\"row-fluid\">\n";
} /* }}} */
function contentEnd() { /* {{{ */
echo " </div>\n";
echo "</div>\n";
} /* }}} */
function globalBanner() { /* {{{ */
echo "<div class=\"navbar navbar-inverse navbar-fixed-top\">\n";
echo " <div class=\"navbar-inner\">\n";
echo " <div class=\"container-fluid\">\n";
echo " <a class=\"brand\" href=\"../out/out.ViewFolder.php?folderid=".$this->params['rootfolderid']."\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</a>\n";
2012-12-14 07:53:13 +00:00
echo " </div>\n";
echo " </div>\n";
echo "</div>\n";
} /* }}} */
2014-06-05 13:02:19 +00:00
/**
* Returns the html needed for the clipboard list in the menu
*
* This function renders the clipboard in a way suitable to be
* used as a menu
*
* @param array $clipboard clipboard containing two arrays for both
* documents and folders.
* @return string html code
*/
function menuClipboard($clipboard) { /* {{{ */
2014-06-05 13:02:19 +00:00
if ($this->params['user']->isGuest() || (count($clipboard['docs']) + count($clipboard['folders'])) == 0) {
return '';
}
$content = '';
$content .= " <ul id=\"main-menu-clipboard\" class=\"nav pull-right\">\n";
$content .= " <li class=\"dropdown\">\n";
$content .= " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText('clipboard')." (".count($clipboard['folders'])."/".count($clipboard['docs']).") <i class=\"icon-caret-down\"></i></a>\n";
$content .= " <ul class=\"dropdown-menu\" role=\"menu\">\n";
foreach($clipboard['folders'] as $folderid) {
if($folder = $this->params['dms']->getFolder($folderid))
2014-03-20 07:37:47 +00:00
$content .= " <li><a href=\"../out/out.ViewFolder.php?folderid=".$folder->getID()."\"><i class=\"icon-folder-close-alt\"></i> ".htmlspecialchars($folder->getName())."</a></li>\n";
}
foreach($clipboard['docs'] as $docid) {
if($document = $this->params['dms']->getDocument($docid))
$content .= " <li><a href=\"../out/out.ViewDocument.php?documentid=".$document->getID()."\"><i class=\"icon-file\"></i> ".htmlspecialchars($document->getName())."</a></li>\n";
}
$content .= " <li class=\"divider\"></li>\n";
if(isset($this->params['folder']) && $this->params['folder']->getAccessMode($this->params['user']) >= M_READWRITE) {
$content .= " <li><a href=\"../op/op.MoveClipboard.php?targetid=".$this->params['folder']->getID()."&refferer=".urlencode($this->params['refferer'])."\">".getMLText("move_clipboard")."</a></li>\n";
}
$content .= " <li><a href=\"../op/op.ClearClipboard.php?refferer=".urlencode($this->params['refferer'])."\">".getMLText("clear_clipboard")."</a></li>\n";
$content .= " </ul>\n";
$content .= " </li>\n";
$content .= " </ul>\n";
return $content;
} /* }}} */
/**
* Returns the html needed for the clipboard list in the menu
*
* This function renders the clipboard in a way suitable to be
* used as a menu
*
* @param array $clipboard clipboard containing two arrays for both
* documents and folders.
* @return string html code
*/
function menuTasks($tasks) { /* {{{ */
$dms = $this->params['dms'];
$content = '';
// $content .= " <ul id=\"main-menu-tasks\" class=\"nav pull-right\">\n";
// $content .= " <li class=\"dropdown\">\n";
$content .= " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText('tasks')." (".count($tasks['review'])."/".count($tasks['approval'])."/".count($tasks['receipt'])."/".count($tasks['revision']).") <i class=\"icon-caret-down\"></i></a>\n";
$content .= " <ul class=\"dropdown-menu\" role=\"menu\">\n";
2015-07-08 17:48:18 +00:00
if($tasks['review']) {
$content .= " <li class=\"dropdown-submenu\">\n";
$content .= " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("documents_to_review")."</a>\n";
$content .= " <ul class=\"dropdown-menu\" role=\"menu\">\n";
foreach($tasks['review'] as $t) {
$doc = $dms->getDocument($t);
2015-07-08 17:48:18 +00:00
$content .= " <li><a href=\"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revapp\">".$doc->getName()."</a></li>";
}
$content .= " </ul>\n";
$content .= " </li>\n";
}
2015-07-08 17:48:18 +00:00
if($tasks['approval']) {
$content .= " <li class=\"dropdown-submenu\">\n";
$content .= " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("documents_to_approve")."</a>\n";
$content .= " <ul class=\"dropdown-menu\" role=\"menu\">\n";
foreach($tasks['approval'] as $t) {
$doc = $dms->getDocument($t);
$content .= " <li><a href=\"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revapp\">".$doc->getName()."</a></li>";
}
2015-07-08 17:48:18 +00:00
$content .= " </ul>\n";
$content .= " </li>\n";
}
if($tasks['receipt']) {
$content .= " <li class=\"dropdown-submenu\">\n";
$content .= " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("documents_to_receipt")."</a>\n";
$content .= " <ul class=\"dropdown-menu\" role=\"menu\">\n";
foreach($tasks['receipt'] as $t) {
$doc = $dms->getDocument($t);
$content .= " <li><a href=\"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=receipt\">".$doc->getName()."</a></li>";
}
$content .= " </ul>\n";
$content .= " </li>\n";
}
if($tasks['revision']) {
$content .= " <li class=\"dropdown-submenu\">\n";
$content .= " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("documents_to_revise")."</a>\n";
$content .= " <ul class=\"dropdown-menu\" role=\"menu\">\n";
foreach($tasks['revision'] as $t) {
$doc = $dms->getDocument($t);
$content .= " <li><a href=\"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revise\">".$doc->getName()."</a></li>";
}
$content .= " </ul>\n";
$content .= " </li>\n";
}
$content .= " <li class=\"divider\"></li>\n";
$content .= " <li><a href=\"../out/out.MyDocuments.php?inProcess=1\">".getMLText("my_documents")."</a></li>\n";
$content .= " </ul>\n";
// $content .= " </li>\n";
// $content .= " </ul>\n";
return $content;
} /* }}} */
2012-12-14 07:53:13 +00:00
function globalNavigation($folder=null) { /* {{{ */
$dms = $this->params['dms'];
2012-12-14 07:53:13 +00:00
echo "<div class=\"navbar navbar-inverse navbar-fixed-top\">\n";
echo " <div class=\"navbar-inner\">\n";
echo " <div class=\"container-fluid\">\n";
echo " <a class=\"btn btn-navbar\" data-toggle=\"collapse\" data-target=\".nav-col1\">\n";
echo " <span class=\"icon-bar\"></span>\n";
echo " <span class=\"icon-bar\"></span>\n";
echo " <span class=\"icon-bar\"></span>\n";
echo " </a>\n";
echo " <a class=\"brand\" href=\"../out/out.ViewFolder.php?folderid=".$this->params['rootfolderid']."\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</a>\n";
2013-02-07 17:02:23 +00:00
if(isset($this->params['user']) && $this->params['user']) {
echo " <div class=\"nav-collapse nav-col1\">\n";
echo " <ul id=\"main-menu-admin\" class=\"nav pull-right\">\n";
echo " <li class=\"dropdown\">\n";
2013-04-19 12:30:57 +00:00
echo " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".($this->params['session']->getSu() ? getMLText("switched_to") : getMLText("signed_in_as"))." '".htmlspecialchars($this->params['user']->getFullName())."' <i class=\"icon-caret-down\"></i></a>\n";
echo " <ul class=\"dropdown-menu\" role=\"menu\">\n";
if (!$this->params['user']->isGuest()) {
echo " <li><a href=\"../out/out.MyDocuments.php?inProcess=1\">".getMLText("my_documents")."</a></li>\n";
echo " <li><a href=\"../out/out.MyAccount.php\">".getMLText("my_account")."</a></li>\n";
echo " <li><a href=\"../out/out.TransmittalMgr.php\">".getMLText("my_transmittals")."</a></li>\n";
echo " <li class=\"divider\"></li>\n";
}
$showdivider = false;
if($this->params['enablelanguageselector']) {
$showdivider = true;
echo " <li class=\"dropdown-submenu\">\n";
echo " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("language")."</a>\n";
echo " <ul class=\"dropdown-menu\" role=\"menu\">\n";
$languages = getLanguages();
foreach ($languages as $currLang) {
if($this->params['session']->getLanguage() == $currLang)
echo "<li class=\"active\">";
else
echo "<li>";
echo "<a href=\"../op/op.SetLanguage.php?lang=".$currLang."&referer=".$_SERVER["REQUEST_URI"]."\">";
echo getMLText($currLang)."</a></li>\n";
}
echo " </ul>\n";
echo " </li>\n";
}
if(!$this->params['session']->getSu()) {
if($this->params['user']->isAdmin()) {
$showdivider = true;
echo " <li><a href=\"../out/out.SubstituteUser.php\">".getMLText("substitute_user")."</a></li>\n";
} elseif($substitutes = $this->params['user']->getReverseSubstitutes()) {
if(count($substitutes) == 1) {
echo " <li><a href=\"../op/op.SubstituteUser.php?userid=".$substitutes[0]->getID()."&formtoken=".createFormKey('substituteuser')."\">".getMLText("substitute_to_user", array('username'=>$substitutes[0]->getFullName()))."</a></li>\n";
} else {
echo " <li><a href=\"../out/out.SubstituteUser.php\">".getMLText("substitute_user")."</a></li>\n";
}
}
}
if($showdivider)
echo " <li class=\"divider\"></li>\n";
if($this->params['session']->getSu()) {
echo " <li><a href=\"../op/op.ResetSu.php\">".getMLText("sign_out_user")."</a></li>\n";
} else {
echo " <li><a href=\"../op/op.Logout.php\">".getMLText("sign_out")."</a></li>\n";
}
echo " </ul>\n";
echo " </li>\n";
echo " </ul>\n";
2012-12-14 07:53:13 +00:00
2015-07-09 05:59:54 +00:00
if($this->params['enablemenutasks']) {
echo " <div id=\"menu-tasks\">";
echo " <ul id=\"main-menu-tasks\" class=\"nav pull-right\">\n";
echo " <li class=\"dropdown\">\n";
echo $this->menuTasks(array('review'=>array(), 'approval'=>array(), 'receipt'=>array(), 'revision'=>array()));
2015-07-09 05:59:54 +00:00
echo " </li>\n";
echo " </ul>\n";
echo " </div>";
$this->addFooterJS('checkTasks();');
}
if($this->params['enableclipboard']) {
echo " <div id=\"menu-clipboard\">";
echo $this->menuClipboard($this->params['session']->getClipboard());
echo " </div>";
}
2013-06-13 21:16:46 +00:00
echo " <ul class=\"nav\">\n";
// echo " <li id=\"first\"><a href=\"../out/out.ViewFolder.php?folderid=".$this->params['rootfolderid']."\">".getMLText("content")."</a></li>\n";
// echo " <li><a href=\"../out/out.SearchForm.php?folderid=".$this->params['rootfolderid']."\">".getMLText("search")."</a></li>\n";
if ($this->params['enablecalendar']) echo " <li><a href=\"../out/out.Calendar.php?mode=".$this->params['calendardefaultview']."\">".getMLText("calendar")."</a></li>\n";
if ($this->params['user']->isAdmin()) echo " <li><a href=\"../out/out.AdminTools.php\">".getMLText("admin_tools")."</a></li>\n";
2015-06-11 04:41:49 +00:00
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
echo " <li><a href=\"../out/out.Help.php?context=".$tmp[1]."\">".getMLText("help")."</a></li>\n";
echo " </ul>\n";
echo " <form action=\"../op/op.Search.php\" class=\"form-inline navbar-search pull-left\" autocomplete=\"off\">";
if ($folder!=null && is_object($folder) && !strcasecmp(get_class($folder), $dms->getClassname('folder'))) {
echo " <input type=\"hidden\" name=\"folderid\" value=\"".$folder->getID()."\" />";
}
echo " <input type=\"hidden\" name=\"navBar\" value=\"1\" />";
echo " <input type=\"hidden\" name=\"searchin[]\" value=\"1\" />";
echo " <input type=\"hidden\" name=\"searchin[]\" value=\"2\" />";
echo " <input type=\"hidden\" name=\"searchin[]\" value=\"3\" />";
echo " <input type=\"hidden\" name=\"searchin[]\" value=\"4\" />";
echo " <input name=\"query\" class=\"search-query\" id=\"searchfield\" data-provide=\"typeahead\" type=\"text\" style=\"width: 150px;\" placeholder=\"".getMLText("search")."\"/>";
if($this->params['enablefullsearch']) {
echo " <label class=\"checkbox\" style=\"color: #999999;\"><input type=\"checkbox\" name=\"fullsearch\" value=\"1\" title=\"".getMLText('fullsearch_hint')."\"/> ".getMLText('fullsearch')."</label>";
}
// echo " <input type=\"submit\" value=\"".getMLText("search")."\" id=\"searchButton\" class=\"btn\"/>";
echo "</form>\n";
echo " </div>\n";
2012-12-14 07:53:13 +00:00
}
echo " </div>\n";
echo " </div>\n";
echo "</div>\n";
return;
} /* }}} */
function getFolderPathHTML($folder, $tagAll=false, $document=null) { /* {{{ */
$path = $folder->getPath();
$txtpath = "";
for ($i = 0; $i < count($path); $i++) {
$txtpath .= "<li>";
if ($i +1 < count($path)) {
$txtpath .= "<a href=\"../out/out.ViewFolder.php?folderid=".$path[$i]->getID()."&showtree=".showtree()."\" rel=\"folder_".$path[$i]->getID()."\" ondragover=\"allowDrop(event)\" ondrop=\"onDrop(event)\">".
2012-12-14 07:53:13 +00:00
htmlspecialchars($path[$i]->getName())."</a>";
}
else {
$txtpath .= ($tagAll ? "<a href=\"../out/out.ViewFolder.php?folderid=".$path[$i]->getID()."&showtree=".showtree()."\">".
htmlspecialchars($path[$i]->getName())."</a>" : htmlspecialchars($path[$i]->getName()));
}
$txtpath .= " <span class=\"divider\">/</span></li>";
}
if($document)
$txtpath .= "<li><a href=\"../out/out.ViewDocument.php?documentid=".$document->getId()."\">".htmlspecialchars($document->getName())."</a></li>";
return '<ul class="breadcrumb">'.$txtpath.'</ul>';
} /* }}} */
function pageNavigation($pageTitle, $pageType=null, $extra=null) { /* {{{ */
if ($pageType!=null && strcasecmp($pageType, "noNav")) {
if($pageType == "view_folder" || $pageType == "view_document")
echo $pageTitle."\n";
echo "<div class=\"navbar\">\n";
echo " <div class=\"navbar-inner\">\n";
echo " <div class=\"container\">\n";
echo " <a class=\"btn btn-navbar\" data-toggle=\"collapse\" data-target=\".col2\">\n";
echo " <span class=\"icon-bar\"></span>\n";
echo " <span class=\"icon-bar\"></span>\n";
echo " <span class=\"icon-bar\"></span>\n";
echo " </a>\n";
2012-12-14 07:53:13 +00:00
switch ($pageType) {
case "view_folder":
$this->folderNavigationBar($extra);
break;
case "view_document":
$this->documentNavigationBar($extra);
2012-12-14 07:53:13 +00:00
break;
case "my_documents":
$this->myDocumentsNavigationBar();
break;
case "my_account":
$this->accountNavigationBar();
break;
case "admin_tools":
$this->adminToolsNavigationBar();
break;
case "calendar";
$this->calendarNavigationBar($extra);
break;
}
echo " </div>\n";
2012-12-14 07:53:13 +00:00
echo " </div>\n";
echo "</div>\n";
} else {
echo "<legend>".$pageTitle."</legend>\n";
}
return;
} /* }}} */
private function folderNavigationBar($folder) { /* {{{ */
$dms = $this->params['dms'];
if (!is_object($folder) || strcasecmp(get_class($folder), $dms->getClassname('folder'))) {
2012-12-14 07:53:13 +00:00
echo "<ul class=\"nav\">\n";
echo "</ul>\n";
return;
}
$accessMode = $folder->getAccessMode($this->params['user']);
2012-12-14 07:53:13 +00:00
$folderID = $folder->getID();
echo "<id=\"first\"><a href=\"../out/out.ViewFolder.php?folderid=". $folderID ."&showtree=".showtree()."\" class=\"brand\">".getMLText("folder")."</a>\n";
echo "<div class=\"nav-collapse col2\">\n";
2012-12-14 07:53:13 +00:00
echo "<ul class=\"nav\">\n";
if ($accessMode == M_READ && !$this->params['user']->isGuest()) {
2012-12-14 07:53:13 +00:00
echo "<li id=\"first\"><a href=\"../out/out.FolderNotify.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("edit_folder_notify")."</a></li>\n";
}
else if ($accessMode >= M_READWRITE) {
echo "<li id=\"first\"><a href=\"../out/out.AddSubFolder.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("add_subfolder")."</a></li>\n";
echo "<li><a href=\"../out/out.AddDocument.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("add_document")."</a></li>\n";
if($this->params['enablelargefileupload'])
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.AddMultiDocument.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("add_multiple_documents")."</a></li>\n";
echo "<li><a href=\"../out/out.EditFolder.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("edit_folder_props")."</a></li>\n";
if ($folderID != $this->params['rootfolderid'] && $folder->getParent())
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.MoveFolder.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("move_folder")."</a></li>\n";
if ($accessMode == M_ALL) {
if ($folderID != $this->params['rootfolderid'] && $folder->getParent())
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.RemoveFolder.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("rm_folder")."</a></li>\n";
}
if ($accessMode == M_ALL) {
echo "<li><a href=\"../out/out.FolderAccess.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("edit_folder_access")."</a></li>\n";
}
echo "<li><a href=\"../out/out.FolderNotify.php?folderid=". $folderID ."&showtree=".showtree()."\">".getMLText("edit_existing_notify")."</a></li>\n";
}
if ($this->params['user']->isAdmin() && $this->params['enablefullsearch']) {
echo "<li><a href=\"../out/out.Indexer.php?folderid=". $folderID ."\">".getMLText("index_folder")."</a></li>\n";
}
2012-12-14 07:53:13 +00:00
echo "</ul>\n";
echo "</div>\n";
2012-12-14 07:53:13 +00:00
return;
} /* }}} */
private function documentNavigationBar($document) { /* {{{ */
$accessMode = $document->getAccessMode($this->params['user']);
2012-12-14 07:53:13 +00:00
$docid=".php?documentid=" . $document->getID();
echo "<id=\"first\"><a href=\"../out/out.ViewDocument". $docid ."\" class=\"brand\">".getMLText("document")."</a>\n";
echo "<div class=\"nav-collapse col2\">\n";
2012-12-14 07:53:13 +00:00
echo "<ul class=\"nav\">\n";
2012-12-14 07:53:13 +00:00
if ($accessMode >= M_READWRITE) {
if (!$document->isLocked()) {
echo "<li id=\"first\"><a href=\"../out/out.UpdateDocument". $docid ."\">".getMLText("update_document")."</a></li>";
echo "<li><a href=\"../op/op.LockDocument". $docid ."\">".getMLText("lock_document")."</a></li>";
2015-04-17 18:11:51 +00:00
if($document->isCheckedOut())
echo "<li><a href=\"../out/out.CheckInDocument". $docid ."\">".getMLText("checkin_document")."</a></li>";
else {
if($this->params['checkoutdir']) {
echo "<li><a href=\"../op/op.CheckOutDocument". $docid ."\">".getMLText("checkout_document")."</a></li>";
}
}
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.EditDocument". $docid ."\">".getMLText("edit_document_props")."</a></li>";
echo "<li><a href=\"../out/out.MoveDocument". $docid ."\">".getMLText("move_document")."</a></li>";
}
else {
$lockingUser = $document->getLockingUser();
if (($lockingUser->getID() == $this->params['user']->getID()) || ($document->getAccessMode($this->params['user']) == M_ALL)) {
2012-12-14 07:53:13 +00:00
echo "<li id=\"first\"><a href=\"../out/out.UpdateDocument". $docid ."\">".getMLText("update_document")."</a></li>";
echo "<li><a href=\"../op/op.UnlockDocument". $docid ."\">".getMLText("unlock_document")."</a></li>";
2015-04-17 18:11:51 +00:00
if($document->isCheckedOut())
echo "<li><a href=\"../out/out.CheckInDocument". $docid ."\">".getMLText("checkin_document")."</a></li>";
else {
if($this->params['checkoutdir']) {
echo "<li><a href=\"../op/op.CheckOutDocument". $docid ."\">".getMLText("checkout_document")."</a></li>";
}
}
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.EditDocument". $docid ."\">".getMLText("edit_document_props")."</a></li>";
echo "<li><a href=\"../out/out.MoveDocument". $docid ."\">".getMLText("move_document")."</a></li>";
}
}
2014-06-03 15:51:44 +00:00
if($this->params['accessobject']->maySetExpires()) {
echo "<li><a href=\"../out/out.SetExpires". $docid ."\">".getMLText("expires")."</a></li>";
}
2012-12-14 07:53:13 +00:00
}
if ($accessMode == M_ALL) {
echo "<li><a href=\"../out/out.RemoveDocument". $docid ."\">".getMLText("rm_document")."</a></li>";
echo "<li><a href=\"../out/out.DocumentAccess". $docid ."\">".getMLText("edit_document_access")."</a></li>";
}
if ($accessMode >= M_READ && !$this->params['user']->isGuest()) {
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.DocumentNotify". $docid ."\">".getMLText("edit_existing_notify")."</a></li>";
}
echo "</ul>\n";
echo "</div>\n";
2012-12-14 07:53:13 +00:00
return;
} /* }}} */
private function accountNavigationBar() { /* {{{ */
echo "<id=\"first\"><a href=\"../out/out.MyAccount.php\" class=\"brand\">".getMLText("my_account")."</a>\n";
echo "<div class=\"nav-collapse col2\">\n";
2012-12-14 07:53:13 +00:00
echo "<ul class=\"nav\">\n";
if ($this->params['user']->isAdmin() || !$this->params['disableselfedit'])
echo "<li id=\"first\"><a href=\"../out/out.EditUserData.php\">".getMLText("edit_user_details")."</a></li>\n";
2012-12-14 07:53:13 +00:00
if (!$this->params['user']->isAdmin())
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.UserDefaultKeywords.php\">".getMLText("edit_default_keywords")."</a></li>\n";
echo "<li><a href=\"../out/out.ManageNotify.php\">".getMLText("edit_existing_notify")."</a></li>\n";
if ($this->params['enableusersview']){
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.UsrView.php\">".getMLText("users")."</a></li>\n";
echo "<li><a href=\"../out/out.GroupView.php\">".getMLText("groups")."</a></li>\n";
}
echo "</ul>\n";
echo "</div>\n";
2012-12-14 07:53:13 +00:00
return;
} /* }}} */
private function myDocumentsNavigationBar() { /* {{{ */
2012-12-14 07:53:13 +00:00
echo "<id=\"first\"><a href=\"../out/out.MyDocuments.php?inProcess=1\" class=\"brand\">".getMLText("my_documents")."</a>\n";
echo "<div class=\"nav-collapse col2\">\n";
2012-12-14 07:53:13 +00:00
echo "<ul class=\"nav\">\n";
2013-02-22 20:56:18 +00:00
echo "<li><a href=\"../out/out.MyDocuments.php?inProcess=1\">".getMLText("documents_in_process")."</a></li>\n";
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.MyDocuments.php\">".getMLText("all_documents")."</a></li>\n";
if($this->params['workflowmode'] == 'traditional' || $this->params['workflowmode'] == 'traditional_only_approval') {
if($this->params['workflowmode'] == 'traditional')
echo "<li><a href=\"../out/out.ReviewSummary.php\">".getMLText("review_summary")."</a></li>\n";
2013-02-02 15:58:52 +00:00
echo "<li><a href=\"../out/out.ApprovalSummary.php\">".getMLText("approval_summary")."</a></li>\n";
} else {
echo "<li><a href=\"../out/out.WorkflowSummary.php\">".getMLText("workflow_summary")."</a></li>\n";
}
echo "<li><a href=\"../out/out.ReceiptSummary.php\">".getMLText("receipt_summary")."</a></li>\n";
2012-12-14 07:53:13 +00:00
echo "</ul>\n";
echo "</div>\n";
2012-12-14 07:53:13 +00:00
return;
} /* }}} */
private function adminToolsNavigationBar() { /* {{{ */
echo " <id=\"first\"><a href=\"../out/out.AdminTools.php\" class=\"brand\">".getMLText("admin_tools")."</a>\n";
echo "<div class=\"nav-collapse col2\">\n";
2012-12-17 08:44:28 +00:00
echo " <ul class=\"nav\">\n";
2012-12-17 08:44:28 +00:00
echo " <li class=\"dropdown\">\n";
2013-04-19 12:30:57 +00:00
echo " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("user_group_management")." <i class=\"icon-caret-down\"></i></a>\n";
2012-12-17 08:44:28 +00:00
echo " <ul class=\"dropdown-menu\" role=\"menu\">\n";
echo " <li><a href=\"../out/out.UsrMgr.php\">".getMLText("user_management")."</a></li>\n";
echo " <li><a href=\"../out/out.GroupMgr.php\">".getMLText("group_management")."</a></li>\n";
echo " <li><a href=\"../out/out.UserList.php\">".getMLText("user_list")."</a></li>\n";
2012-12-17 08:44:28 +00:00
echo " </ul>\n";
echo " </li>\n";
echo " </ul>\n";
echo " <ul class=\"nav\">\n";
echo " <li class=\"dropdown\">\n";
2013-04-19 12:30:57 +00:00
echo " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("definitions")." <i class=\"icon-caret-down\"></i></a>\n";
2012-12-17 08:44:28 +00:00
echo " <ul class=\"dropdown-menu\" role=\"menu\">\n";
echo " <li><a href=\"../out/out.DefaultKeywords.php\">".getMLText("global_default_keywords")."</a></li>\n";
echo " <li><a href=\"../out/out.Categories.php\">".getMLText("global_document_categories")."</a></li>\n";
echo " <li><a href=\"../out/out.AttributeMgr.php\">".getMLText("global_attributedefinitions")."</a></li>\n";
if($this->params['workflowmode'] == 'advanced') {
echo " <li><a href=\"../out/out.WorkflowMgr.php\">".getMLText("global_workflows")."</a></li>\n";
echo " <li><a href=\"../out/out.WorkflowStatesMgr.php\">".getMLText("global_workflow_states")."</a></li>\n";
echo " <li><a href=\"../out/out.WorkflowActionsMgr.php\">".getMLText("global_workflow_actions")."</a></li>\n";
}
2012-12-17 08:44:28 +00:00
echo " </ul>\n";
echo " </li>\n";
echo " </ul>\n";
if($this->params['enablefullsearch']) {
2012-12-17 08:44:28 +00:00
echo " <ul class=\"nav\">\n";
echo " <li class=\"dropdown\">\n";
2013-04-19 12:30:57 +00:00
echo " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("fullsearch")." <i class=\"icon-caret-down\"></i></a>\n";
2012-12-17 08:44:28 +00:00
echo " <ul class=\"dropdown-menu\" role=\"menu\">\n";
echo " <li><a href=\"../out/out.Indexer.php\">".getMLText("update_fulltext_index")."</a></li>\n";
echo " <li><a href=\"../out/out.CreateIndex.php\">".getMLText("create_fulltext_index")."</a></li>\n";
echo " <li><a href=\"../out/out.IndexInfo.php\">".getMLText("fulltext_info")."</a></li>\n";
echo " </ul>\n";
echo " </li>\n";
echo " </ul>\n";
}
echo " <ul class=\"nav\">\n";
echo " <li class=\"dropdown\">\n";
2013-04-19 12:30:57 +00:00
echo " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("backup_log_management")." <i class=\"icon-caret-down\"></i></a>\n";
2012-12-17 08:44:28 +00:00
echo " <ul class=\"dropdown-menu\" role=\"menu\">\n";
echo " <li><a href=\"../out/out.BackupTools.php\">".getMLText("backup_tools")."</a></li>\n";
if ($this->params['logfileenable'])
2012-12-17 08:44:28 +00:00
echo " <li><a href=\"../out/out.LogManagement.php\">".getMLText("log_management")."</a></li>\n";
echo " </ul>\n";
echo " </li>\n";
echo " </ul>\n";
echo " <ul class=\"nav\">\n";
echo " <li class=\"dropdown\">\n";
2013-04-19 12:30:57 +00:00
echo " <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">".getMLText("misc")." <i class=\"icon-caret-down\"></i></a>\n";
2012-12-17 08:44:28 +00:00
echo " <ul class=\"dropdown-menu\" role=\"menu\">\n";
echo " <li id=\"first\"><a href=\"../out/out.Statistic.php\">".getMLText("folders_and_documents_statistic")."</a></li>\n";
2014-04-02 06:50:57 +00:00
echo " <li id=\"first\"><a href=\"../out/out.Charts.php\">".getMLText("charts")."</a></li>\n";
2012-12-17 08:44:28 +00:00
echo " <li><a href=\"../out/out.ObjectCheck.php\">".getMLText("objectcheck")."</a></li>\n";
2013-05-03 07:52:15 +00:00
echo " <li><a href=\"../out/out.ExtensionMgr.php\">".getMLText("extension_manager")."</a></li>\n";
2012-12-17 08:44:28 +00:00
echo " <li><a href=\"../out/out.Info.php\">".getMLText("version_info")."</a></li>\n";
echo " </ul>\n";
echo " </li>\n";
echo " </ul>\n";
2012-12-14 07:53:13 +00:00
echo "<ul class=\"nav\">\n";
echo "</ul>\n";
echo "</div>\n";
2012-12-14 07:53:13 +00:00
return;
} /* }}} */
private function calendarNavigationBar($d){ /* {{{ */
2012-12-14 07:53:13 +00:00
$ds="&day=".$d[0]."&month=".$d[1]."&year=".$d[2];
echo "<id=\"first\"><a href=\"../out/out.Calendar.php?mode=y\" class=\"brand\">".getMLText("calendar")."</a>\n";
echo "<div class=\"nav-collapse col2\">\n";
2012-12-14 07:53:13 +00:00
echo "<ul class=\"nav\">\n";
2012-12-14 07:53:13 +00:00
echo "<li><a href=\"../out/out.Calendar.php?mode=w".$ds."\">".getMLText("week_view")."</a></li>\n";
echo "<li><a href=\"../out/out.Calendar.php?mode=m".$ds."\">".getMLText("month_view")."</a></li>\n";
echo "<li><a href=\"../out/out.Calendar.php?mode=y".$ds."\">".getMLText("year_view")."</a></li>\n";
if (!$this->params['user']->isGuest()) echo "<li><a href=\"../out/out.AddEvent.php\">".getMLText("add_event")."</a></li>\n";
2012-12-14 07:53:13 +00:00
echo "</ul>\n";
echo "</div>\n";
2012-12-14 07:53:13 +00:00
return;
} /* }}} */
function pageList($pageNumber, $totalPages, $baseURI, $params) { /* {{{ */
2014-04-01 07:20:58 +00:00
$maxpages = 25; // skip pages when more than this is shown
$range = 5; // pages left and right of current page
2012-12-14 07:53:13 +00:00
if (!is_numeric($pageNumber) || !is_numeric($totalPages) || $totalPages<2) {
return;
}
// Construct the basic URI based on the $_GET array. One could use a
// regular expression to strip out the pg (page number) variable to
// achieve the same effect. This seems to be less haphazard though...
$resultsURI = $baseURI;
$first=true;
foreach ($params as $key=>$value) {
// Don't include the page number in the basic URI. This is added in
// during the list display loop.
if (!strcasecmp($key, "pg")) {
continue;
}
if (is_array($value)) {
foreach ($value as $subkey=>$subvalue) {
$resultsURI .= ($first ? "?" : "&").$key."%5B".$subkey."%5D=".$subvalue;
2012-12-14 07:53:13 +00:00
$first = false;
}
}
else {
$resultsURI .= ($first ? "?" : "&").$key."=".$value;
}
$first = false;
}
echo "<div class=\"pagination pagination-small\">";
echo "<ul>";
if($totalPages <= $maxpages) {
for ($i = 1; $i <= $totalPages; $i++) {
echo "<li ".($i == $pageNumber ? 'class="active"' : "" )."><a href=\"".$resultsURI.($first ? "?" : "&")."pg=".$i."\">".$i."</a></li>";
}
} else {
if($pageNumber-$range > 1)
$start = $pageNumber-$range;
else
$start = 2;
if($pageNumber+$range < $totalPages)
$end = $pageNumber+$range;
else
2014-04-01 07:20:58 +00:00
$end = $totalPages-1;
/* Move start or end to always show 2*$range items */
$diff = $end-$start-2*$range;
if($diff < 0) {
if($start > 2)
$start += $diff;
if($end < $totalPages-1)
$end -= $diff;
}
if($pageNumber > 1)
echo "<li><a href=\"".$resultsURI.($first ? "?" : "&")."pg=".($pageNumber-1)."\">&laquo;</a></li>";
echo "<li ".(1 == $pageNumber ? 'class="active"' : "" )."><a href=\"".$resultsURI.($first ? "?" : "&")."pg=1\">1</a></li>";
if($start > 2)
2014-04-01 08:42:51 +00:00
echo "<li><span>...</span></li>";
for($j=$start; $j<=$end; $j++)
echo "<li ".($j == $pageNumber ? 'class="active"' : "" )."><a href=\"".$resultsURI.($first ? "?" : "&")."pg=".$j."\">".$j."</a></li>";
if($end < $totalPages-1)
2014-04-01 08:42:51 +00:00
echo "<li><span>...</span></li>";
if($end < $totalPages)
echo "<li ".($totalPages == $pageNumber ? 'class="active"' : "" )."><a href=\"".$resultsURI.($first ? "?" : "&")."pg=".$totalPages."\">".$totalPages."</a></li>";
2014-04-01 07:20:58 +00:00
if($pageNumber < $totalPages)
echo "<li><a href=\"".$resultsURI.($first ? "?" : "&")."pg=".($pageNumber+1)."\">&raquo;</a></li>";
2012-12-14 07:53:13 +00:00
}
if ($totalPages>1) {
echo "<li><a href=\"".$resultsURI.($first ? "?" : "&")."pg=all\">".getMLText("all_pages")."</a></li>";
}
echo "</ul>";
echo "</div>";
return;
} /* }}} */
function contentContainer($content) { /* {{{ */
echo "<div class=\"well\">\n";
echo $content;
echo "</div>\n";
return;
} /* }}} */
function contentContainerStart($class='') { /* {{{ */
echo "<div class=\"well".($class ? " ".$class : "")."\">\n";
2012-12-14 07:53:13 +00:00
return;
} /* }}} */
function contentContainerEnd() { /* {{{ */
echo "</div>\n";
return;
} /* }}} */
function contentHeading($heading, $noescape=false) { /* {{{ */
if($noescape)
echo "<legend>".$heading."</legend>\n";
else
echo "<legend>".htmlspecialchars($heading)."</legend>\n";
return;
} /* }}} */
function contentSubHeading($heading, $first=false) { /* {{{ */
// echo "<div class=\"contentSubHeading\"".($first ? " id=\"first\"" : "").">".htmlspecialchars($heading)."</div>\n";
echo "<h5>".$heading."</h5>";
return;
} /* }}} */
function getMimeIcon($fileType) { /* {{{ */
// for extension use LOWER CASE only
$icons = array();
$icons["txt"] = "txt.png";
$icons["text"] = "txt.png";
$icons["doc"] = "word.png";
$icons["dot"] = "word.png";
$icons["docx"] = "word.png";
$icons["dotx"] = "word.png";
$icons["rtf"] = "document.png";
$icons["xls"] = "excel.png";
$icons["xlt"] = "excel.png";
$icons["xlsx"] = "excel.png";
$icons["xltx"] = "excel.png";
$icons["ppt"] = "powerpoint.png";
$icons["pot"] = "powerpoint.png";
$icons["pptx"] = "powerpoint.png";
$icons["potx"] = "powerpoint.png";
$icons["exe"] = "binary.png";
$icons["html"] = "html.png";
$icons["htm"] = "html.png";
$icons["gif"] = "image.png";
$icons["jpg"] = "image.png";
$icons["jpeg"] = "image.png";
$icons["bmp"] = "image.png";
$icons["png"] = "image.png";
$icons["tif"] = "image.png";
$icons["tiff"] = "image.png";
$icons["log"] = "log.png";
$icons["midi"] = "midi.png";
$icons["pdf"] = "pdf.png";
$icons["wav"] = "sound.png";
$icons["mp3"] = "sound.png";
$icons["c"] = "source_c.png";
$icons["cpp"] = "source_cpp.png";
$icons["h"] = "source_h.png";
$icons["java"] = "source_java.png";
$icons["py"] = "source_py.png";
$icons["tar"] = "tar.png";
$icons["gz"] = "gz.png";
$icons["7z"] = "gz.png";
$icons["bz"] = "gz.png";
$icons["bz2"] = "gz.png";
$icons["tgz"] = "gz.png";
$icons["zip"] = "gz.png";
2013-09-05 20:59:45 +00:00
$icons["rar"] = "gz.png";
2012-12-14 07:53:13 +00:00
$icons["mpg"] = "video.png";
$icons["avi"] = "video.png";
$icons["tex"] = "tex.png";
$icons["ods"] = "x-office-spreadsheet.png";
$icons["ots"] = "x-office-spreadsheet.png";
$icons["sxc"] = "x-office-spreadsheet.png";
$icons["stc"] = "x-office-spreadsheet.png";
$icons["odt"] = "x-office-document.png";
$icons["ott"] = "x-office-document.png";
$icons["sxw"] = "x-office-document.png";
$icons["stw"] = "x-office-document.png";
2012-12-14 07:53:13 +00:00
$icons["odp"] = "ooo_presentation.png";
$icons["otp"] = "ooo_presentation.png";
$icons["sxi"] = "ooo_presentation.png";
$icons["sti"] = "ooo_presentation.png";
$icons["odg"] = "ooo_drawing.png";
$icons["otg"] = "ooo_drawing.png";
$icons["sxd"] = "ooo_drawing.png";
$icons["std"] = "ooo_drawing.png";
$icons["odf"] = "ooo_formula.png";
$icons["sxm"] = "ooo_formula.png";
$icons["smf"] = "ooo_formula.png";
$icons["mml"] = "ooo_formula.png";
$icons["default"] = "default.png";
$ext = strtolower(substr($fileType, 1));
if (isset($icons[$ext])) {
return $this->imgpath.$icons[$ext];
}
else {
return $this->imgpath.$icons["default"];
}
} /* }}} */
2014-05-16 07:17:43 +00:00
function printFileChooser($varname='userfile', $multiple=false, $accept='') { /* {{{ */
?>
<div id="upload-files">
<div id="upload-file">
<div class="input-append">
<input type="text" class="form-control" readonly>
<span class="btn btn-default btn-file">
2014-07-03 10:04:11 +00:00
<?php printMLText("browse");?>&hellip; <input id="<?php echo $varname; ?>" type="file" name="<?php echo $varname; ?>"<?php if($multiple) echo " multiple"; ?><?php if($accept) echo " accept=\"".$accept."\""; ?>>
2014-05-16 07:17:43 +00:00
</span>
</div>
</div>
</div>
<?php
} /* }}} */
2012-12-14 07:53:13 +00:00
function printDateChooser($defDate = -1, $varName) { /* {{{ */
if ($defDate == -1)
$defDate = mktime();
$day = date("d", $defDate);
$month = date("m", $defDate);
$year = date("Y", $defDate);
print "<select name=\"" . $varName . "day\">\n";
for ($i = 1; $i <= 31; $i++)
{
print "<option value=\"" . $i . "\"";
if (intval($day) == $i)
print " selected";
print ">" . $i . "</option>\n";
}
print "</select> \n";
print "<select name=\"" . $varName . "month\">\n";
for ($i = 1; $i <= 12; $i++)
{
print "<option value=\"" . $i . "\"";
if (intval($month) == $i)
print " selected";
print ">" . $i . "</option>\n";
}
print "</select> \n";
print "<select name=\"" . $varName . "year\">\n";
for ($i = $year-5 ; $i <= $year+5 ; $i++)
{
print "<option value=\"" . $i . "\"";
if (intval($year) == $i)
print " selected";
print ">" . $i . "</option>\n";
}
print "</select>";
} /* }}} */
function printSequenceChooser($objArr, $keepID = -1) { /* {{{ */
if (count($objArr) > 0) {
$max = $objArr[count($objArr)-1]->getSequence() + 1;
$min = $objArr[0]->getSequence() - 1;
}
else {
$max = 1.0;
}
print "<select name=\"sequence\">\n";
if ($keepID != -1) {
print " <option value=\"keep\">" . getMLText("seq_keep");
}
print " <option value=\"".$max."\">" . getMLText("seq_end");
if (count($objArr) > 0) {
print " <option value=\"".$min."\">" . getMLText("seq_start");
}
for ($i = 0; $i < count($objArr) - 1; $i++) {
if (($objArr[$i]->getID() == $keepID) || (($i + 1 < count($objArr)) && ($objArr[$i+1]->getID() == $keepID))) {
continue;
}
$index = ($objArr[$i]->getSequence() + $objArr[$i+1]->getSequence()) / 2;
print " <option value=\"".$index."\">" . getMLText("seq_after", array("prevname" => htmlspecialchars($objArr[$i]->getName())));
}
print "</select>";
} /* }}} */
function printDocumentChooser($form, $accessMode=M_READ, $exclude = -1, $default = false, $formname = '', $folder='', $partialtree=0) { /* {{{ */
$formid = "docid".$form;
if(!$formname)
$formname = "docid";
if(!$folder)
$folderid = $this->params['rootfolderid'];
else
$folderid = $folder->getID();
print "<input type=\"hidden\" id=\"".$formid."\" name=\"".$formname."\" value=\"". (($default) ? $default->getID() : "") ."\">";
2012-12-14 07:53:13 +00:00
print "<div class=\"input-append\">\n";
print "<input type=\"text\" id=\"choosedocsearch\" data-target=\"docid".$form."\" data-provide=\"typeahead\" name=\"docname".$form."\" value=\"". (($default) ? htmlspecialchars($default->getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" />";
print "<a data-target=\"#docChooser".$form."\" href=\"out.DocumentChooser.php?form=".$form."&folderid=".$folderid."&partialtree=".$partialtree."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("document")."…</a>\n";
2012-12-14 07:53:13 +00:00
print "</div>\n";
?>
<div class="modal hide" id="docChooser<?php echo $form ?>" tabindex="-1" role="dialog" aria-labelledby="docChooserLabel" aria-hidden="true">
2012-12-14 07:53:13 +00:00
<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>
</div>
<div class="modal-body">
<p>Please wait, until document tree is loaded </p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true"><?php printMLText("close") ?></button>
2012-12-14 07:53:13 +00:00
</div>
</div>
2013-05-24 15:32:12 +00:00
<script language="JavaScript">
modalDocChooser<?php echo $form ?> = $('#docChooser<?php echo $form ?>');
function documentSelected<?php echo $form ?>(id, name) {
$('#docid<?php echo $form ?>').val(id);
2013-05-24 15:32:12 +00:00
$('#choosedocsearch').val(name);
modalDocChooser<?php echo $form ?>.modal('hide');
}
function folderSelected<?php echo $form ?>(id, name) {
2013-05-24 15:32:12 +00:00
}
</script>
2012-12-14 07:53:13 +00:00
<?php
} /* }}} */
function printFolderChooser($form, $accessMode, $exclude = -1, $default = false, $formname = '') { /* {{{ */
$formid = "targetid".$form;
if(!$formname)
$formname = "targetid";
print "<input type=\"hidden\" id=\"".$formid."\" name=\"".$formname."\" value=\"". (($default) ? $default->getID() : "") ."\">";
2012-12-14 07:53:13 +00:00
print "<div class=\"input-append\">\n";
2014-07-08 07:21:47 +00:00
print "<input type=\"text\" id=\"choosefoldersearch".$form."\" data-target=\"".$formid."\" data-provide=\"typeahead\" name=\"targetname".$form."\" value=\"". (($default) ? htmlspecialchars($default->getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" target=\"".$formid."\"/>";
print "<a data-target=\"#folderChooser".$form."\" href=\"../out/out.FolderChooser.php?form=".$form."&mode=".$accessMode."&exclude=".$exclude."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("folder")."…</a>\n";
2012-12-14 07:53:13 +00:00
print "</div>\n";
?>
<div class="modal hide" id="folderChooser<?php echo $form ?>" tabindex="-1" role="dialog" aria-labelledby="folderChooser<?php echo $form ?>Label" aria-hidden="true">
2012-12-14 07:53:13 +00:00
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="folderChooser<?php echo $form ?>Label"><?php printMLText("choose_target_folder") ?></h3>
2012-12-14 07:53:13 +00:00
</div>
<div class="modal-body">
<p>Please wait, until document tree is loaded </p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true"><?php printMLText("close") ?></button>
2012-12-14 07:53:13 +00:00
</div>
</div>
<script language="JavaScript">
/* Set up a callback which is called when a folder in the tree is selected */
modalFolderChooser<?php echo $form ?> = $('#folderChooser<?php echo $form ?>');
function folderSelected<?php echo $form ?>(id, name) {
$('#<?php echo $formid ?>').val(id);
$('#choosefoldersearch<?php echo $form ?>').val(name);
modalFolderChooser<?php echo $form ?>.modal('hide');
}
</script>
2012-12-14 07:53:13 +00:00
<?php
} /* }}} */
function printCategoryChooser($formName, $categories=array()) { /* {{{ */
?>
<script language="JavaScript">
function clearCategory<?php print $formName ?>() {
document.<?php echo $formName ?>.categoryid<?php echo $formName ?>.value = '';
document.<?php echo $formName ?>.categoryname<?php echo $formName ?>.value = '';
}
function acceptCategories() {
var targetName = document.<?php echo $formName?>.categoryname<?php print $formName ?>;
var targetID = document.<?php echo $formName?>.categoryid<?php print $formName ?>;
var value = '';
$('#keywordta option:selected').each(function(){
value += ' ' + $(this).text();
});
targetName.value = value;
targetID.value = $('#keywordta').val();
return true;
}
</script>
<?php
$ids = $names = array();
if($categories) {
foreach($categories as $cat) {
$ids[] = $cat->getId();
$names[] = htmlspecialchars($cat->getName());
}
}
print "<input type=\"hidden\" name=\"categoryid".$formName."\" value=\"".implode(',', $ids)."\">";
print "<div class=\"input-append\">\n";
print "<input type=\"text\" disabled name=\"categoryname".$formName."\" value=\"".implode(' ', $names)."\">";
print "<button type=\"button\" class=\"btn\" onclick=\"javascript:clearCategory".$formName."();\"><i class=\"icon-remove\"></i></button>";
print "<a data-target=\"#categoryChooser\" href=\"out.CategoryChooser.php?form=form1&cats=".implode(',', $ids)."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("category")."…</a>\n";
print "</div>\n";
?>
<div class="modal hide" id="categoryChooser" tabindex="-1" role="dialog" aria-labelledby="categoryChooserLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="categoryChooserLabel"><?php printMLText("choose_target_category") ?></h3>
</div>
<div class="modal-body">
<p>Please wait, until category list is loaded </p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true"><?php printMLText("close") ?></button>
2013-04-19 13:22:25 +00:00
<button class="btn" data-dismiss="modal" aria-hidden="true" onClick="acceptCategories();"><i class="icon-save"></i> <?php printMLText("save") ?></button>
2012-12-14 07:53:13 +00:00
</div>
</div>
<?php
} /* }}} */
function printKeywordChooser($formName, $keywords='', $fieldname='keywords') { /* {{{ */
2012-12-14 07:53:13 +00:00
?>
<div class="input-append">
<input type="text" name="<?php echo $fieldname; ?>" value="<?php print htmlspecialchars($keywords);?>" />
<a data-target="#keywordChooser" role="button" class="btn" data-toggle="modal" href="out.KeywordChooser.php?target=<?php echo $formName; ?>"><?php printMLText("keywords");?>…</a>
2012-12-14 07:53:13 +00:00
</div>
<div class="modal hide" id="keywordChooser" tabindex="-1" role="dialog" aria-labelledby="keywordChooserLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="keywordChooserLabel"><?php printMLText("use_default_keywords") ?></h3>
</div>
<div class="modal-body">
<p>Please wait, until keyword list is loaded </p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true"><?php printMLText("close") ?></button>
2013-04-19 13:22:25 +00:00
<button class="btn" data-dismiss="modal" aria-hidden="true" onClick="acceptKeywords();"><i class="icon-save"></i> <?php printMLText("save") ?></button>
2012-12-14 07:53:13 +00:00
</div>
</div>
<?php
} /* }}} */
function printAttributeEditField($attrdef, $attribute, $fieldname='attributes') { /* {{{ */
2012-12-14 07:53:13 +00:00
if($valueset = $attrdef->getValueSetAsArray()) {
2014-02-20 20:05:22 +00:00
echo "<select name=\"".$fieldname."[".$attrdef->getId()."]";
if($attrdef->getMultipleValues()) {
echo "[]\" multiple";
} else {
echo "\"";
}
echo ">";
if(!$attrdef->getMultipleValues()) {
2012-12-14 07:53:13 +00:00
echo "<option value=\"\"></option>";
}
$objvalue = $attribute ? $attribute->getValueAsArray() : array();
2012-12-14 07:53:13 +00:00
foreach($valueset as $value) {
if($value) {
echo "<option value=\"".htmlspecialchars($value)."\"";
if(is_array($objvalue) && in_array($value, $objvalue))
echo " selected";
elseif($value == $objvalue)
echo " selected";
echo ">".htmlspecialchars($value)."</option>";
}
2012-12-14 07:53:13 +00:00
}
echo "</select>";
} else {
if($attribute && strlen($attribute->getValue()) > 30)
echo "<textarea name=\"".$fieldname."[".$attrdef->getId()."]\">".htmlspecialchars($attribute->getValue())."</textarea>";
else
echo "<input type=\"text\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".($attribute ? htmlspecialchars($attribute->getValue()) : '')."\" />";
2012-12-14 07:53:13 +00:00
}
} /* }}} */
function printDropFolderChooser($formName, $dropfolderfile="") { /* {{{ */
print "<div class=\"input-append\">\n";
print "<input readonly type=\"text\" id=\"dropfolderfile".$formName."\" name=\"dropfolderfile".$formName."\" value=\"".$dropfolderfile."\">";
2012-12-14 07:53:13 +00:00
print "<button type=\"button\" class=\"btn\" onclick=\"javascript:clearFilename".$formName."();\"><i class=\"icon-remove\"></i></button>";
print "<a data-target=\"#dropfolderChooser\" href=\"out.DropFolderChooser.php?form=form1&dropfolderfile=".$dropfolderfile."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("choose_target_file")."…</a>\n";
print "</div>\n";
?>
<div class="modal hide" id="dropfolderChooser" tabindex="-1" role="dialog" aria-labelledby="dropfolderChooserLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="dropfolderChooserLabel"><?php printMLText("choose_target_file") ?></h3>
</div>
<div class="modal-body">
<p>Please wait, until file list is loaded </p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true"><?php printMLText("close") ?></button>
<!-- <button class="btn" data-dismiss="modal" aria-hidden="true" onClick="acceptCategories();"><i class="icon-save"></i> <?php printMLText("save") ?></button> -->
2012-12-14 07:53:13 +00:00
</div>
</div>
<script language="JavaScript">
/* Set up a callback which is called when a folder in the tree is selected */
modalDropfolderChooser = $('#dropfolderChooser');
function fileSelected(name) {
2014-01-08 05:36:40 +00:00
$('#dropfolderfile<?php echo $formName ?>').val(name);
modalDropfolderChooser.modal('hide');
}
function clearFilename<?php print $formName ?>() {
2014-01-08 05:36:40 +00:00
$('#dropfolderfile<?php echo $formName ?>').val('');
}
</script>
2012-12-14 07:53:13 +00:00
<?php
} /* }}} */
function getImgPath($img) { /* {{{ */
if ( is_file($this->imgpath.$img) ) {
return $this->imgpath.$img;
}
return "../out/images/$img";
} /* }}} */
function getCountryFlag($lang) { /* {{{ */
switch($lang) {
case "en_GB":
return 'flags/gb.png';
break;
default:
return 'flags/'.substr($lang, 0, 2).'.png';
}
} /* }}} */
2012-12-14 07:53:13 +00:00
function printImgPath($img) { /* {{{ */
print $this->getImgPath($img);
} /* }}} */
function infoMsg($msg) { /* {{{ */
echo "<div class=\"alert alert-info\">\n";
echo $msg;
echo "</div>\n";
} /* }}} */
2012-12-19 10:17:38 +00:00
function warningMsg($msg) { /* {{{ */
echo "<div class=\"alert alert-warning\">\n";
echo $msg;
echo "</div>\n";
} /* }}} */
2013-02-05 10:08:26 +00:00
function errorMsg($msg) { /* {{{ */
echo "<div class=\"alert alert-error\">\n";
echo $msg;
echo "</div>\n";
} /* }}} */
function exitError($pagetitle, $error, $noexit=false) { /* {{{ */
2012-12-14 07:53:13 +00:00
$this->htmlStartPage($pagetitle);
$this->globalNavigation();
$this->contentStart();
print "<div class=\"alert alert-error\">";
2013-09-05 20:51:01 +00:00
print "<h4>".getMLText('error')."!</h4>";
2012-12-14 07:53:13 +00:00
print htmlspecialchars($error);
print "</div>";
2013-02-14 13:34:35 +00:00
print "<div><button class=\"btn\" onclick=\"window.history.back();\">".getMLText('back')."</button></div>";
2012-12-14 07:53:13 +00:00
$this->htmlEndPage();
2013-10-06 10:27:06 +00:00
add_log_line(" UI::exitError error=".$error." pagetitle=".$pagetitle, PEAR_LOG_ERR);
if($noexit)
return;
2012-12-14 07:53:13 +00:00
exit;
} /* }}} */
/**
* Create a tree of folders using jqtree.
*
* The tree can contain folders only or include documents.
*
* @param integer $folderid current folderid. If set the tree will be
* folded out and the all folders in the path will be visible
* @param integer $accessmode use this access mode when retrieving folders
* and documents shown in the tree
* @param boolean $showdocs set to true if tree shall contain documents
* as well.
*/
function printNewTreeNavigation($folderid=0, $accessmode=M_READ, $showdocs=0, $formid='form1', $expandtree=0, $orderby='', $partialtree=false) { /* {{{ */
function jqtree($path, $folder, $user, $accessmode, $showdocs=1, $expandtree=0, $orderby='') {
if($path || $expandtree) {
if($path)
$pathfolder = array_shift($path);
$subfolders = $folder->getSubFolders($orderby);
$subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode);
2013-05-24 15:32:12 +00:00
$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);
if($expandtree || $pathfolder->getID() == $subfolder->getID()) {
2013-05-24 15:32:12 +00:00
if($showdocs) {
$documents = $folder->getDocuments($orderby);
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, $accessmode);
2013-05-24 15:32:12 +00:00
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, $accessmode, $showdocs, $expandtree, $orderby);
2013-05-24 15:32:12 +00:00
}
$children[] = $node;
}
return $children;
} else {
$subfolders = $folder->getSubFolders($orderby);
$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);
$children[] = $node;
}
return $children;
}
return array();
2013-05-24 15:32:12 +00:00
}
2012-12-14 07:53:13 +00:00
2013-05-24 15:32:12 +00:00
if($folderid) {
$folder = $this->params['dms']->getFolder($folderid);
$path = $folder->getPath();
if(!$partialtree) {
$folder = array_shift($path);
}
2013-05-24 15:32:12 +00:00
$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();
if($showdocs) {
$documents = $folder->getDocuments($orderby);
$documents = SeedDMS_Core_DMS::filterAccess($documents, $this->params['user'], $accessmode);
foreach($documents as $document) {
$node2 = array('label'=>$document->getName(), 'id'=>$document->getID(), 'load_on_demand'=>false, 'is_folder'=>false);
$node['children'][] = $node2;
}
}
2013-05-24 15:32:12 +00:00
} else {
$node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, $expandtree, $orderby);
if($showdocs) {
$documents = $folder->getDocuments($orderby);
$documents = SeedDMS_Core_DMS::filterAccess($documents, $this->params['user'], $accessmode);
foreach($documents as $document) {
$node2 = array('label'=>$document->getName(), 'id'=>$document->getID(), 'load_on_demand'=>false, 'is_folder'=>false);
$node['children'][] = $node2;
}
}
2013-05-24 15:32:12 +00:00
}
/* Nasty hack to remove the highest folder */
if(isset($this->params['remove_root_from_tree']) && $this->params['remove_root_from_tree']) {
foreach($node['children'] as $n)
$tree[] = $n;
} else {
$tree[] = $node;
}
2013-05-24 15:32:12 +00:00
} 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));
2012-12-14 07:53:13 +00:00
}
2013-05-24 15:32:12 +00:00
echo "<div id=\"jqtree".$formid."\" style=\"margin-left: 10px;\" data-url=\"../op/op.Ajax.php?command=subtree&showdocs=".$showdocs."&orderby=".$orderby."\"></div>\n";
2013-05-24 15:32:12 +00:00
?>
<script language="JavaScript">
var data = <?php echo json_encode($tree); ?>;
$(function() {
2014-01-08 05:36:40 +00:00
$('#jqtree<?php echo $formid ?>').tree({
2013-05-24 15:32:12 +00:00
data: data,
saveState: 'jqtree<?= $formid; ?>',
2013-05-24 15:32:12 +00:00
openedIcon: '<i class="icon-minus-sign"></i>',
closedIcon: '<i class="icon-plus-sign"></i>',
_onCanSelectNode: function(node) {
if(node.is_folder) {
folderSelected<?= $formid ?>(node.id, node.name);
} else
documentSelected<?= $formid ?>(node.id, node.name);
2013-05-24 15:32:12 +00:00
},
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> ');
}
});
$('#jqtree<?= $formid ?>').bind(
'tree.click',
function(event) {
var node = event.node;
$('#jqtree<?= $formid ?>').tree('openNode', node);
// event.preventDefault();
if(node.is_folder) {
folderSelected<?= $formid ?>(node.id, node.name);
} else
documentSelected<?= $formid ?>(node.id, node.name);
}
);
2013-05-24 15:32:12 +00:00
});
</script>
2012-12-14 07:53:13 +00:00
<?php
2013-05-24 15:32:12 +00:00
} /* }}} */
2012-12-14 07:53:13 +00:00
2013-05-24 15:32:12 +00:00
function printTreeNavigation($folderid, $showtree){ /* {{{ */
if ($showtree==1){
2013-01-30 20:00:43 +00:00
$this->contentHeading("<a href=\"../out/out.ViewFolder.php?folderid=". $folderid."&showtree=0\"><i class=\"icon-minus-sign\"></i></a>", true);
2012-12-14 07:53:13 +00:00
$this->contentContainerStart();
2013-05-24 15:32:12 +00:00
?>
<script language="JavaScript">
function folderSelected(id, name) {
window.location = '../out/out.ViewFolder.php?folderid=' + id;
}
</script>
<?php
$this->printNewTreeNavigation($folderid, M_READ, 0, '');
2012-12-14 07:53:13 +00:00
$this->contentContainerEnd();
2013-05-24 15:32:12 +00:00
} else {
2013-01-30 20:00:43 +00:00
$this->contentHeading("<a href=\"../out/out.ViewFolder.php?folderid=". $folderid."&showtree=1\"><i class=\"icon-plus-sign\"></i></a>", true);
2012-12-14 07:53:13 +00:00
}
} /* }}} */
2014-06-05 13:02:19 +00:00
/**
* Return clipboard content rendered as html
*
* @param array clipboard
* @return string rendered html content
*/
function mainClipboard($clipboard, $previewer){ /* {{{ */
2013-01-30 20:00:43 +00:00
$dms = $this->params['dms'];
2014-06-05 13:02:19 +00:00
$content = '';
$foldercount = $doccount = 0;
if($clipboard['folders']) {
foreach($clipboard['folders'] as $folderid) {
/* FIXME: check for access rights, which could have changed after adding the folder to the clipboard */
if($folder = $dms->getFolder($folderid)) {
$comment = $folder->getComment();
if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "...";
$content .= "<tr rel=\"folder_".$folder->getID()."\" class=\"folder\" ondragover=\"allowDrop(event)\" ondrop=\"onDrop(event)\">";
$content .= "<td><a rel=\"folder_".$folder->getID()."\" draggable=\"true\" ondragstart=\"onDragStartFolder(event);\" href=\"out.ViewFolder.php?folderid=".$folder->getID()."&showtree=".showtree()."\"><img draggable=\"false\" src=\"".$this->imgpath."folder.png\" width=\"24\" height=\"24\" border=0></a></td>\n";
$content .= "<td><a href=\"out.ViewFolder.php?folderid=".$folder->getID()."&showtree=".showtree()."\">" . htmlspecialchars($folder->getName()) . "</a>";
if($comment) {
$content .= "<br /><span style=\"font-size: 85%;\">".htmlspecialchars($comment)."</span>";
}
$content .= "</td>\n";
$content .= "<td>\n";
$content .= "<div class=\"list-action\"><a class=\"removefromclipboard\" rel=\"F".$folderid."\" msg=\"".getMLText('splash_removed_from_clipboard')."\" _href=\"../op/op.RemoveFromClipboard.php?folderid=".(isset($this->params['folder']) ? $this->params['folder']->getID() : '')."&id=".$folderid."&type=folder\" title=\"".getMLText('rm_from_clipboard')."\"><i class=\"icon-remove\"></i></a></div>";
$content .= "</td>\n";
$content .= "</tr>\n";
$foldercount++;
}
}
}
if($clipboard['docs']) {
foreach($clipboard['docs'] as $docid) {
/* FIXME: check for access rights, which could have changed after adding the document to the clipboard */
if($document = $dms->getDocument($docid)) {
$comment = $document->getComment();
if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "...";
if($latestContent = $document->getLatestContent()) {
$previewer->createPreview($latestContent);
$version = $latestContent->getVersion();
$status = $latestContent->getStatus();
$content .= "<tr>";
if (file_exists($dms->contentDir . $latestContent->getPath())) {
$content .= "<td><a rel=\"document_".$docid."\" draggable=\"true\" ondragstart=\"onDragStartDocument(event);\" href=\"../op/op.Download.php?documentid=".$docid."&version=".$version."\">";
if($previewer->hasPreview($latestContent)) {
$content .= "<img draggable=\"false\" class=\"mimeicon\" width=\"40\"src=\"../op/op.Preview.php?documentid=".$document->getID()."&version=".$latestContent->getVersion()."&width=40\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
} else {
$content .= "<img draggable=\"false\" class=\"mimeicon\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
}
$content .= "</a></td>";
} else
$content .= "<td><img draggable=\"false\" class=\"mimeicon\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\"></td>";
$content .= "<td><a href=\"out.ViewDocument.php?documentid=".$docid."&showtree=".showtree()."\">" . htmlspecialchars($document->getName()) . "</a>";
2013-02-02 15:58:52 +00:00
if($comment) {
2014-06-05 13:02:19 +00:00
$content .= "<br /><span style=\"font-size: 85%;\">".htmlspecialchars($comment)."</span>";
2013-01-30 20:00:43 +00:00
}
2014-06-05 13:02:19 +00:00
$content .= "</td>\n";
$content .= "<td>\n";
$content .= "<div class=\"list-action\"><a class=\"removefromclipboard\" rel=\"D".$docid."\" msg=\"".getMLText('splash_removed_from_clipboard')."\" _href=\"../op/op.RemoveFromClipboard.php?folderid=".(isset($this->params['folder']) ? $this->params['folder']->getID() : '')."&id=".$docid."&type=document\" title=\"".getMLText('rm_from_clipboard')."\"><i class=\"icon-remove\"></i></a></div>";
2014-06-05 13:02:19 +00:00
$content .= "</td>\n";
$content .= "</tr>";
$doccount++;
2013-01-30 20:00:43 +00:00
}
}
}
}
/* $foldercount or $doccount will only count objects which are
* actually available
*/
if($foldercount || $doccount) {
$content = "<table class=\"table\">".$content;
2014-06-05 13:02:19 +00:00
$content .= "</table>";
} else {
2013-01-30 20:00:43 +00:00
}
$content .= "<div class=\"alert\">".getMLText("drag_icon_here")."</div>";
2014-06-05 13:02:19 +00:00
return $content;
} /* }}} */
/**
* Print clipboard in div container
*
* @param array clipboard
*/
function printClipboard($clipboard, $previewer){ /* {{{ */
2014-06-05 13:02:19 +00:00
$this->contentHeading(getMLText("clipboard"), true);
echo "<div id=\"main-clipboard\" _class=\"well\" ondragover=\"allowDrop(event)\" _ondrop=\"onAddClipboard(event)\">\n";
echo $this->mainClipboard($clipboard, $previewer);
2013-01-30 20:00:43 +00:00
echo "</div>\n";
} /* }}} */
/**
* Print button with link for deleting a document
*
* This button is used in document listings (e.g. on the ViewFolder page)
* for deleting a document. In seeddms version < 4.3.9 this was just a
* link to the out/out.RemoveDocument.php page which asks for confirmation
* an than calls op/op.RemoveDocument.php. Starting with version 4.3.9
* the button just opens a small popup asking for confirmation and than
* calls the ajax command 'deletedocument'. The ajax call is called
* in the click function of 'button.removedocument'. That button needs
* to have two attributes: 'rel' for the id of the document, and 'msg'
* for the message shown by notify if the document could be deleted.
*
* @param object $document document to be deleted
* @param string $msg message shown in case of successful deletion
* @param boolean $return return html instead of printing it
* @return string html content if $return is true, otherwise an empty string
*/
function printDeleteDocumentButton($document, $msg, $return=false){ /* {{{ */
$docid = $document->getID();
$content = '';
$content .= '<a id="delete-document-btn-'.$docid.'" rel="'.$docid.'" msg="'.getMLText($msg).'"><i class="icon-remove"></i></a>';
$this->addFooterJS("
$('#delete-document-btn-".$docid."').popover({
title: '".getMLText("rm_document")."',
placement: 'left',
html: true,
content: \"<div>".htmlspecialchars(getMLText("confirm_rm_document", array ("documentname" => $document->getName())), ENT_QUOTES)."</div><div><button class='btn btn-danger removedocument' style='float: right; margin:10px 0px;' rel='".$docid."' msg='".getMLText($msg)."' formtoken='".createFormKey('removedocument')."' id='confirm-delete-document-btn-".$docid."'><i class='icon-remove'></i> ".getMLText("rm_document")."</button> <button type='button' class='btn' style='float: right; margin:10px 10px;' onclick='$(&quot;#delete-document-btn-".$docid."&quot;).popover(&quot;hide&quot;);'>".getMLText('cancel')."</button></div>\"});
");
if($return)
return $content;
else
echo $content;
return '';
} /* }}} */
/**
* Print button with link for deleting a folder
*
* This button works like document delete button
* {@link SeedDMS_Bootstrap_Style::printDeleteDocumentButton()}
*
* @param object $folder folder to be deleted
* @param string $msg message shown in case of successful deletion
* @param boolean $return return html instead of printing it
* @return string html content if $return is true, otherwise an empty string
*/
function printDeleteFolderButton($folder, $msg, $return=false){ /* {{{ */
$folderid = $folder->getID();
$content = '';
$content .= '<a id="delete-folder-btn-'.$folderid.'" rel="'.$folderid.'" msg="'.getMLText($msg).'"><i class="icon-remove"></i></a>';
$this->addFooterJS("
$('#delete-folder-btn-".$folderid."').popover({
title: '".getMLText("rm_folder")."',
placement: 'left',
html: true,
content: \"<div>".htmlspecialchars(getMLText("confirm_rm_folder", array ("foldername" => $folder->getName())), ENT_QUOTES)."</div><div><button class='btn btn-danger removefolder' style='float: right; margin:10px 0px;' rel='".$folderid."' msg='".getMLText($msg)."' formtoken='".createFormKey('removefolder')."' id='confirm-delete-folder-btn-".$folderid."'><i class='icon-remove'></i> ".getMLText("rm_folder")."</button> <button type='button' class='btn' style='float: right; margin:10px 10px;' onclick='$(&quot;#delete-folder-btn-".$folderid."&quot;).popover(&quot;hide&quot;);'>".getMLText('cancel')."</button></div>\"});
");
if($return)
return $content;
else
echo $content;
return '';
} /* }}} */
function printLockButton($document, $msglock, $msgunlock, $return=false) { /* {{{ */
$docid = $document->getID();
if($document->isLocked()) {
$icon = 'unlock';
$msg = $msgunlock;
$title = 'unlock_document';
} else {
$icon = 'lock';
$msg = $msglock;
$title = 'lock_document';
}
$content = '';
$content .= '<a class="lock-document-btn" rel="'.$docid.'" msg="'.getMLText($msg).'" title="'.getMLText($title).'"><i class="icon-'.$icon.'"></i></a>';
if($return)
return $content;
else
echo $content;
return '';
} /* }}} */
/**
* Return HTML of a single row in the document list table
*
* @param object $document
* @param object $previewer
* @param boolean $skipcont set to true if embrasing tr shall be skipped
*/
function documentListRow($document, $previewer, $skipcont=false, $version=0) { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$showtree = $this->params['showtree'];
$workflowmode = $this->params['workflowmode'];
$previewwidth = $this->params['previewWidthList'];
$enableClipboard = $this->params['enableclipboard'];
$content = '';
$owner = $document->getOwner();
$comment = $document->getComment();
if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "...";
$docID = $document->getID();
if(!$skipcont)
$content .= "<tr id=\"table-row-document-".$docID."\">";
if($version)
$latestContent = $document->getContentByVersion($version);
else
$latestContent = $document->getLatestContent();
if($latestContent) {
$previewer->createPreview($latestContent);
$version = $latestContent->getVersion();
$status = $latestContent->getStatus();
$needwkflaction = false;
if($workflowmode == 'advanced') {
$workflow = $latestContent->getWorkflow();
if($workflow) {
$needwkflaction = $latestContent->needsWorkflowAction($user);
}
}
/* Retrieve attacheѕ files */
$files = $document->getDocumentFiles();
/* Retrieve linked documents */
$links = $document->getDocumentLinks();
$links = SeedDMS_Core_DMS::filterDocumentLinks($user, $links);
$content .= "<td>";
if (file_exists($dms->contentDir . $latestContent->getPath())) {
$content .= "<a rel=\"document_".$docID."\" draggable=\"true\" ondragstart=\"onDragStartDocument(event);\" href=\"../op/op.Download.php?documentid=".$docID."&version=".$version."\">";
if($previewer->hasPreview($latestContent)) {
$content .= "<img draggable=\"false\" class=\"mimeicon\" width=\"".$previewwidth."\"src=\"../op/op.Preview.php?documentid=".$document->getID()."&version=".$latestContent->getVersion()."&width=".$previewwidth."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
} else {
$content .= "<img draggable=\"false\" class=\"mimeicon\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
}
$content .= "</a>";
} else
$content .= "<img draggable=\"false\" class=\"mimeicon\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
$content .= "</td>";
$content .= "<td>";
$content .= "<a href=\"out.ViewDocument.php?documentid=".$docID."&showtree=".$showtree."\">" . htmlspecialchars($document->getName()) . "</a>";
$content .= "<br /><span style=\"font-size: 85%; font-style: italic; color: #666; \">".getMLText('owner').": <b>".htmlspecialchars($owner->getFullName())."</b>, ".getMLText('creation_date').": <b>".date('Y-m-d', $document->getDate())."</b>, ".getMLText('version')." <b>".$version."</b> - <b>".date('Y-m-d', $latestContent->getDate())."</b></span>";
if($comment) {
$content .= "<br /><span style=\"font-size: 85%;\">".htmlspecialchars($comment)."</span>";
}
$content .= "</td>\n";
$content .= "<td nowrap>";
$attentionstr = '';
if ( $document->isLocked() ) {
$attentionstr .= "<img src=\"".$this->getImgPath("lock.png")."\" title=\"". getMLText("locked_by").": ".htmlspecialchars($document->getLockingUser()->getFullName())."\"> ";
}
if ( $needwkflaction ) {
$attentionstr .= "<img src=\"".$this->getImgPath("attention.gif")."\" title=\"". getMLText("workflow").": "."\"> ";
}
if($attentionstr)
$content .= $attentionstr."<br />";
$content .= "<small>";
if(count($files))
$content .= count($files)." ".getMLText("linked_files")."<br />";
if(count($links))
$content .= count($links)." ".getMLText("linked_documents")."<br />";
$content .= getOverallStatusText($status["status"])."</small>";
$content .= "</td>\n";
$content .= "<td>";
$content .= "<div class=\"list-action\">";
if($document->getAccessMode($user) >= M_ALL) {
$content .= $this->printDeleteDocumentButton($document, 'splash_rm_document', true);
} else {
$content .= '<span style="padding: 2px; color: #CCC;"><i class="icon-remove"></i></span>';
}
if($document->getAccessMode($user) >= M_READWRITE) {
2014-06-11 09:02:25 +00:00
$content .= '<a href="../out/out.EditDocument.php?documentid='.$docID.'" title="'.getMLText("edit_document_props").'"><i class="icon-edit"></i></a>';
} else {
$content .= '<span style="padding: 2px; color: #CCC;"><i class="icon-edit"></i></span>';
}
if($document->getAccessMode($user) >= M_READWRITE) {
$content .= $this->printLockButton($document, 'splash_document_locked', 'splash_document_unlocked', true);
}
if($enableClipboard) {
$content .= '<a class="addtoclipboard" rel="D'.$docID.'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="icon-copy"></i></a>';
}
$content .= "</div>";
$content .= "</td>";
}
if(!$skipcont)
$content .= "</tr>\n";
return $content;
} /* }}} */
function folderListRow($subFolder) { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$folder = $this->params['folder'];
$showtree = $this->params['showtree'];
$enableRecursiveCount = $this->params['enableRecursiveCount'];
$maxRecursiveCount = $this->params['maxRecursiveCount'];
$enableClipboard = $this->params['enableclipboard'];
$owner = $subFolder->getOwner();
$comment = $subFolder->getComment();
if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "...";
$subsub = $subFolder->getSubFolders();
$subsub = SeedDMS_Core_DMS::filterAccess($subsub, $user, M_READ);
$subdoc = $subFolder->getDocuments();
$subdoc = SeedDMS_Core_DMS::filterAccess($subdoc, $user, M_READ);
$content = '';
$content .= "<tr id=\"table-row-folder-".$subFolder->getID()."\" rel=\"folder_".$subFolder->getID()."\" class=\"folder\" ondragover=\"allowDrop(event)\" ondrop=\"onDrop(event)\">";
// $content .= "<td><img src=\"images/folder_closed.gif\" width=18 height=18 border=0></td>";
$content .= "<td><a rel=\"folder_".$subFolder->getID()."\" draggable=\"true\" ondragstart=\"onDragStartFolder(event);\" href=\"out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\"><img draggable=\"false\" src=\"".$this->imgpath."folder.png\" width=\"24\" height=\"24\" border=0></a></td>\n";
$content .= "<td><a href=\"out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . "</a>";
$content .= "<br /><span style=\"font-size: 85%; font-style: italic; color: #666;\">".getMLText('owner').": <b>".htmlspecialchars($owner->getFullName())."</b>, ".getMLText('creation_date').": <b>".date('Y-m-d', $subFolder->getDate())."</b></span>";
if($comment) {
$content .= "<br /><span style=\"font-size: 85%;\">".htmlspecialchars($comment)."</span>";
}
$content .= "</td>\n";
// $content .= "<td>".htmlspecialchars($owner->getFullName())."</td>";
$content .= "<td colspan=\"1\" nowrap><small>";
if($enableRecursiveCount) {
if($user->isAdmin()) {
/* No need to check for access rights in countChildren() for
* admin. So pass 0 as the limit.
*/
$cc = $subFolder->countChildren($user, 0);
$content .= $cc['folder_count']." ".getMLText("folders")."<br />".$cc['document_count']." ".getMLText("documents");
} else {
$cc = $subFolder->countChildren($user, $maxRecursiveCount);
if($maxRecursiveCount > 5000)
$rr = 100.0;
else
$rr = 10.0;
$content .= (!$cc['folder_precise'] ? '~'.(round($cc['folder_count']/$rr)*$rr) : $cc['folder_count'])." ".getMLText("folders")."<br />".(!$cc['document_precise'] ? '~'.(round($cc['document_count']/$rr)*$rr) : $cc['document_count'])." ".getMLText("documents");
}
} else {
$content .= count($subsub)." ".getMLText("folders")."<br />".count($subdoc)." ".getMLText("documents");
}
$content .= "</small></td>";
// $content .= "<td></td>";
$content .= "<td>";
$content .= "<div class=\"list-action\">";
if($subFolder->getAccessMode($user) >= M_ALL) {
$content .= $this->printDeleteFolderButton($subFolder, 'splash_rm_folder', true);
} else {
$content .= '<span style="padding: 2px; color: #CCC;"><i class="icon-remove"></i></span>';
}
if($subFolder->getAccessMode($user) >= M_READWRITE) {
2014-06-11 09:02:25 +00:00
$content .= '<a class_="btn btn-mini" href="../out/out.EditFolder.php?folderid='.$subFolder->getID().'" title="'.getMLText("edit_folder_props").'"><i class="icon-edit"></i></a>';
} else {
$content .= '<span style="padding: 2px; color: #CCC;"><i class="icon-edit"></i></span>';
}
if($enableClipboard) {
$content .= '<a class="addtoclipboard" rel="F'.$subFolder->getID().'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="icon-copy"></i></a>';
}
$content .= "</div>";
$content .= "</td>";
$content .= "</tr>\n";
return $content;
} /* }}} */
2012-12-14 07:53:13 +00:00
/**
* Output HTML Code for jumploader
*
* @param string $uploadurl URL where post data is send
* @param integer $folderid id of folder where document is saved
* @param integer $maxfiles maximum number of files allowed to upload
* @param array $fields list of post fields
*/
function printUploadApplet($uploadurl, $attributes, $maxfiles=0, $fields=array()){ /* {{{ */
?>
<applet id="jumpLoaderApplet" name="jumpLoaderApplet"
code="jmaster.jumploader.app.JumpLoaderApplet.class"
archive="jl_core_z.jar"
width="715"
height="400"
mayscript>
<param name="uc_uploadUrl" value="<?php echo $uploadurl; ?>"/>
2012-12-14 07:53:13 +00:00
<param name="ac_fireAppletInitialized" value="true"/>
<param name="ac_fireUploaderSelectionChanged" value="true"/>
<param name="ac_fireUploaderFileStatusChanged" value="true"/>
<param name="ac_fireUploaderFileAdded" value="true"/>
<param name="uc_partitionLength" value="<?php echo $this->params['partitionsize'] ?>"/>
2012-12-14 07:53:13 +00:00
<?php
if($maxfiles) {
?>
<param name="uc_maxFiles" value="<?php echo $maxfiles ?>"/>
<?php
}
?>
</applet>
<div id="fileLinks">
</div>
<!-- callback methods -->
<script language="javascript">
/**
* applet initialized notification
*/
2013-09-30 07:11:58 +00:00
function appletInitialized(applet) {
var uploader = applet.getUploader();
2012-12-14 07:53:13 +00:00
var attrSet = uploader.getAttributeSet();
var attr;
<?php
foreach($attributes as $name=>$value) {
?>
attr = attrSet.createStringAttribute( '<?php echo $name ?>', '<?php echo $value ?>' );
attr.setSendToServer(true);
<?php
}
?>
}
/**
* uploader selection changed notification
*/
function uploaderSelectionChanged( uploader ) {
dumpAllFileAttributes();
}
/**
* uploader file added notification
*/
function uploaderFileAdded( uploader ) {
dumpAllFileAttributes();
}
/**
* file status changed notification
*/
function uploaderFileStatusChanged( uploader, file ) {
traceEvent( "uploaderFileStatusChanged, index=" + file.getIndex() + ", status=" + file.getStatus() + ", content=" + file.getResponseContent() );
if( file.isFinished() ) {
var serverFileName = file.getId() + "." + file.getName();
var linkHtml = "<a href='/uploaded/" + serverFileName + "'>" + serverFileName + "</a> " + file.getLength() + " bytes";
var container = document.getElementById( "fileLinks");
container.innerHTML += linkHtml + "<br />";
}
}
/**
* trace event to events textarea
*/
function traceEvent( message ) {
document.debugForm.txtEvents.value += message + "\r\n";
}
</script>
<!-- debug auxiliary methods -->
<script language="javascript">
/**
* list attributes of file into html
*/
function listFileAttributes( file, edit, index ) {
var attrSet = file.getAttributeSet();
var content = "";
var attr;
var value;
if(edit)
content += "<form name='form" + index + "' id='form" + index + "' action='#' >";
content += "<table>";
content += "<tr class='dataRow' colspan='2'><td class='dataText'><b>" + file.getName() + "</b></td></tr>";
<?php
if(!$fields || (isset($fields['name']) && $fields['name'])) {
?>
content += "<tr class='dataRow'>";
content += "<td class='dataField'><?php echo getMLText('name') ?></td>";
if(attr = attrSet.getAttributeByName('name'))
value = attr.getStringValue();
else
value = '';
if(edit)
value = "<input id='name" + index + "' name='name' type='input' value='" + value + "' />";
content += "<td class='dataText'>" + value + "</td>";
content += "</tr>";
<?php
}
?>
<?php
if(!$fields || (isset($fields['comment']) && $fields['comment'])) {
?>
content += "<tr class='dataRow'>";
content += "<td class='dataField'><?php echo getMLText('comment') ?></td>";
if(attr = attrSet.getAttributeByName('comment'))
value = attr.getStringValue();
else
value = '';
if(edit)
value = "<textarea id='comment" + index + "' name='comment' cols='40' rows='2'>" + value + "</textarea>";
content += "<td class='dataText'>" + value + "</td>";
content += "</tr>";
<?php
}
?>
<?php
if(!$fields || (isset($fields['reqversion']) && $fields['reqversion'])) {
?>
content += "<tr class='dataRow'>";
content += "<td class='dataField'><?php echo getMLText('version') ?></td>";
if(attr = attrSet.getAttributeByName('reqversion'))
value = attr.getStringValue();
else
value = '';
if(edit)
value = "<input id='reqversion" + index + "' name='reqversion' type='input' value='" + value + "' />";
content += "<td class='dataText'>" + value + "</td>";
content += "</tr>";
<?php
}
?>
<?php
if(!$fields || (isset($fields['version_comment']) && $fields['version_comment'])) {
?>
content += "<tr class='dataRow'>";
content += "<td class='dataField'><?php echo getMLText('comment_for_current_version') ?></td>";
if(attr = attrSet.getAttributeByName('version_comment'))
value = attr.getStringValue();
else
value = '';
if(edit)
value = "<textarea id='version_comment" + index + "' name='version_comment' cols='40' rows='2'>" + value + "</textarea>";
content += "<td class='dataText'>" + value + "</td>";
content += "</tr>";
<?php
}
?>
<?php
if(!$fields || (isset($fields['keywords']) && $fields['keywords'])) {
?>
content += "<tr class='dataRow'>";
content += "<td class='dataField'><?php echo getMLText('keywords') ?></td>";
if(attr = attrSet.getAttributeByName('keywords'))
value = attr.getStringValue();
else
value = '';
if(edit) {
value = "<textarea id='keywords" + index + "' name='keywords' cols='40' rows='2'>" + value + "</textarea>";
value += "<br /><a href='javascript:chooseKeywords(\"form" + index + ".keywords" + index +"\");'><?php echo getMLText("use_default_keywords");?></a>";
}
content += "<td class='dataText'>" + value + "</td>";
content += "</tr>";
<?php
}
?>
<?php
if(!$fields || (isset($fields['categories']) && $fields['categories'])) {
?>
content += "<tr class='dataRow'>";
content += "<td class='dataField'><?php echo getMLText('categories') ?></td>";
if(attr = attrSet.getAttributeByName('categoryids'))
value = attr.getStringValue();
else
value = '';
if(attr = attrSet.getAttributeByName('categorynames'))
value2 = attr.getStringValue();
else
value2 = '';
if(edit) {
value = "<input type='hidden' id='categoryidform" + index + "' name='categoryids' value='" + value + "' />";
value += "<input disabled id='categorynameform" + index + "' name='categorynames' value='" + value2 + "' />";
value += "<br /><a href='javascript:chooseCategory(\"form" + index + "\", \"\");'><?php echo getMLText("use_default_categories");?></a>";
} else {
value = value2;
}
content += "<td class='dataText'>" + value + "</td>";
content += "</tr>";
<?php
}
?>
if(edit) {
content += "<tr class='dataRow'>";
content += "<td class='dataField'></td>";
content += "<td class='dataText'><input type='button' value='Set' onClick='updateFileAttributes("+index+")'/></td>";
content += "</tr>";
content += "</table>";
content += "</form>";
} else {
content += "</table>";
}
return content;
}
/**
* return selected file if and only if single file selected
*/
function getSelectedFile() {
var file = null;
var uploader = document.jumpLoaderApplet.getUploader();
var selection = uploader.getSelection();
var numSelected = selection.getSelectedItemCount();
if( numSelected == 1 ) {
var selectedIndex = selection.getSelectedItemIndexAt( 0 );
file = uploader.getFile( selectedIndex );
}
return file;
}
/**
* dump attributes of all files into html
*/
function dumpAllFileAttributes() {
var content = "";
var uploader = document.jumpLoaderApplet.getUploader();
var files = uploader.getAllFiles();
var file = getSelectedFile();
if(file) {
for (var i = 0; i < uploader.getFileCount() ; i++) {
if(uploader.getFile(i).getIndex() == file.getIndex())
content += listFileAttributes( uploader.getFile(i), 1, i );
else
content += listFileAttributes( uploader.getFile(i), 0, i );
}
document.getElementById( "fileList" ).innerHTML = content;
}
}
/**
* update attributes for the selected file
*/
function updateFileAttributes(index) {
var uploader = document.jumpLoaderApplet.getUploader();
var file = uploader.getFile( index );
if( file != null ) {
var attr;
var value;
var attrSet = file.getAttributeSet();
value = document.getElementById("name"+index);
attr = attrSet.createStringAttribute( 'name', (value.value) ? value.value : "" );
attr.setSendToServer( true );
value = document.getElementById("comment"+index);
attr = attrSet.createStringAttribute( 'comment', (value.value) ? value.value : "" );
attr.setSendToServer( true );
value = document.getElementById("reqversion"+index);
attr = attrSet.createStringAttribute( 'reqversion', (value.value) ? value.value : "" );
attr.setSendToServer( true );
value = document.getElementById("version_comment"+index);
attr = attrSet.createStringAttribute( 'version_comment', (value.value) ? value.value : "" );
attr.setSendToServer( true );
value = document.getElementById("keywords"+index);
attr = attrSet.createStringAttribute( 'keywords', (value.value) ? value.value : "" );
attr.setSendToServer( true );
value = document.getElementById("categoryidform"+index);
attr = attrSet.createStringAttribute( 'categoryids', (value.value) ? value.value : "" );
attr.setSendToServer( true );
value = document.getElementById("categorynameform"+index);
attr = attrSet.createStringAttribute( 'categorynames', (value.value) ? value.value : "" );
attr.setSendToServer( true );
dumpAllFileAttributes();
} else {
alert( "Single file should be selected" );
}
}
</script>
<form name="debugForm">
<textarea name="txtEvents" style="visibility: hidden;width:715px; font:10px monospace" rows="1" wrap="off" id="txtEvents"></textarea></p>
</form>
<p></p>
<p id="fileList"></p>
<?php
} /* }}} */
2013-05-02 10:14:10 +00:00
function show(){ /* {{{ */
parent::show();
} /* }}} */
/**
* Output a protocol
*
* @param object $attribute attribute
*/
protected function printProtocol($latestContent, $type="") { /* {{{ */
$dms = $this->params['dms'];
?>
<legend><?php printMLText($type.'_log'); ?></legend>
<table class="table condensed">
<tr><th><?php printMLText('name'); ?></th><th><?php printMLText('last_update'); ?>, <?php printMLText('comment'); ?></th><th><?php printMLText('status'); ?></th></tr>
<?php
switch($type) {
case "review":
$statusList = $latestContent->getReviewStatus(10);
break;
case "approval":
$statusList = $latestContent->getApprovalStatus(10);
break;
case "revision":
$statusList = $latestContent->getRevisionStatus(10);
break;
case "receipt":
$statusList = $latestContent->getReceiptStatus(1);
break;
default:
$statusList = array();
}
foreach($statusList as $rec) {
echo "<tr>";
echo "<td>";
switch ($rec["type"]) {
case 0: // individual.
$required = $dms->getUser($rec["required"]);
if (!is_object($required)) {
$reqName = getMLText("unknown_user")." '".$rec["required"]."'";
} else {
$reqName = htmlspecialchars($required->getFullName()." (".$required->getLogin().")");
}
break;
case 1: // Approver is a group.
$required = $dms->getGroup($rec["required"]);
if (!is_object($required)) {
$reqName = getMLText("unknown_group")." '".$rec["required"]."'";
}
else {
$reqName = "<i>".htmlspecialchars($required->getName())."</i>";
}
break;
}
echo $reqName;
echo "</td>";
echo "<td>";
echo "<i style=\"font-size: 80%;\">".$rec['date']." - ";
$updateuser = $dms->getUser($rec["userID"]);
if(!is_object($required))
echo getMLText("unknown_user");
else
echo htmlspecialchars($updateuser->getFullName()." (".$updateuser->getLogin().")");
echo "</i>";
if($rec['comment'])
echo "<br />".htmlspecialchars($rec['comment']);
switch($type) {
case "review":
if($rec['file']) {
echo "<br />";
echo "<a href=\"../op/op.Download.php?documentid=".$documentid."&reviewlogid=".$rec['reviewLogID']."\" class=\"btn btn-mini\"><i class=\"icon-download\"></i> ".getMLText('download')."</a>";
}
break;
case "approval":
if($rec['file']) {
echo "<br />";
echo "<a href=\"../op/op.Download.php?documentid=".$documentid."&approvelogid=".$rec['approveLogID']."\" class=\"btn btn-mini\"><i class=\"icon-download\"></i> ".getMLText('download')."</a>";
}
break;
}
echo "</td>";
echo "<td>";
switch($type) {
case "review":
echo getReviewStatusText($rec["status"]);
break;
case "approval":
echo getApprovalStatusText($rec["status"]);
break;
case "revision":
echo getRevisionStatusText($rec["status"]);
break;
case "receipt":
echo getReceiptStatusText($rec["status"]);
break;
default:
}
echo "</td>";
echo "</tr>";
}
?>
</table>
<?php
} /* }}} */
2012-12-14 07:53:13 +00:00
}
?>