* Rewrite allLibs, objectLibs and browse pages of doc.
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
ALTER TABLE `zt_release` ADD `marker` enum('0','1') NOT NULL default '0' AFTER `name`;
|
||||
ALTER TABLE `zt_doc` ADD `collector` text NOT NULL AFTER `views`;
|
||||
ALTER TABLE `zt_doc` ADD `visitedDate` datetime NOT NULL AFTER `editedDate`;
|
||||
ALTER TABLE `zt_doclib` ADD `collector` text NOT NULL AFTER `main`;
|
||||
ALTER TABLE `zt_module` ADD `collector` text NOT NULL AFTER `owner`;
|
||||
|
||||
@@ -12,6 +12,11 @@ $config->doc->editLib->requiredFields = 'name';
|
||||
$config->doc->create->requiredFields = 'title';
|
||||
$config->doc->edit->requiredFields = 'title';
|
||||
|
||||
$config->doc->customObjectLibs = 'files,customFiles';
|
||||
|
||||
$config->doc->custom = new stdclass();
|
||||
$config->doc->custom->objectLibs = $config->doc->customObjectLibs;
|
||||
|
||||
$config->doc->editor = new stdclass();
|
||||
$config->doc->editor->create = array('id' => 'content', 'tools' => 'fullTools');
|
||||
$config->doc->editor->edit = array('id' => 'content', 'tools' => 'fullTools');
|
||||
|
||||
+58
-46
@@ -39,23 +39,11 @@ class doc extends control
|
||||
{
|
||||
$this->doc->setMenu();
|
||||
|
||||
$products = $this->doc->getLimitLibs('product');
|
||||
$projects = $this->doc->getLimitLibs('project');
|
||||
$customLibs = $this->doc->getLimitLibs('custom');
|
||||
|
||||
$subLibs['product'] = $this->doc->getSubLibGroups('product', array_keys($products));
|
||||
$subLibs['project'] = $this->doc->getSubLibGroups('project', array_keys($projects));
|
||||
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager(6, 6, 1);
|
||||
|
||||
$this->view->title = $this->lang->doc->common . $this->lang->colon . $this->lang->doc->index;
|
||||
$this->view->position[] = $this->lang->doc->index;
|
||||
$this->view->products = $products;
|
||||
$this->view->projects = $projects;
|
||||
$this->view->customLibs = $customLibs;
|
||||
$this->view->subLibs = $subLibs;
|
||||
$this->view->modules = $this->loadModel('tree')->getDocStructure();
|
||||
$this->view->latestEditedDocs = $this->loadModel('doc')->getDocsByBrowseType(0, 'byediteddate', 0, 0, 'editedDate_desc, id_desc', $pager);
|
||||
$this->view->myDocs = $this->loadModel('doc')->getDocsByBrowseType(0, 'openedbyme', 0, 0, 'addedDate_desc', $pager);
|
||||
$this->view->statisticInfo = $this->doc->getStatisticInfo();
|
||||
@@ -88,9 +76,8 @@ class doc extends control
|
||||
|
||||
/* Set browseType.*/
|
||||
$browseType = strtolower($browseType);
|
||||
if(($this->cookie->browseType == 'bymenu' or $this->cookie->browseType == 'bytree') and $browseType != 'bysearch') $browseType = $this->cookie->browseType;
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$moduleID = ($browseType == 'bymodule' or $browseType == 'bymenu') ? (int)$param : 0;
|
||||
$moduleID = ($browseType == 'bymodule') ? (int)$param : 0;
|
||||
|
||||
$type = '';
|
||||
$productID = 0;
|
||||
@@ -129,7 +116,7 @@ class doc extends control
|
||||
$menuType = (!$type && in_array($browseType, array_keys($this->lang->doc->fastMenuList))) ? $browseType : $type;
|
||||
$this->doc->setMenu($menuType, $libID, $moduleID, $productID, $projectID);
|
||||
}
|
||||
$this->session->set('docList', $this->app->getURI(true));
|
||||
$this->session->set('docList', $this->app->getURI(true));
|
||||
|
||||
/* Set header and position. */
|
||||
$this->view->title = $this->lang->doc->common . ($libID ? $this->lang->colon . $this->libs[$libID] : '');
|
||||
@@ -140,7 +127,6 @@ class doc extends control
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Append id for secend sort. */
|
||||
if($browseType == 'bymenu' and strpos('editeddate_desc,addeddate_desc', strtolower($orderBy)) === false) $orderBy = 'title_asc';
|
||||
$sort = $this->loadModel('common')->appendOrder($orderBy);
|
||||
|
||||
/* Get docs by browse type. */
|
||||
@@ -150,37 +136,24 @@ class doc extends control
|
||||
$actionURL = $this->createLink('doc', 'browse', "lib=$libID&browseType=bySearch&queryID=myQueryID&orderBy=$orderBy&from=$from");
|
||||
$this->doc->buildSearchForm($libID, $this->libs, $queryID, $actionURL, $type);
|
||||
|
||||
$this->view->fixedMenu = false;
|
||||
foreach(customModel::getModuleMenu('doc') as $item)
|
||||
{
|
||||
if($item->name == "custom$libID" and empty($item->hidden)) $this->view->fixedMenu = true;
|
||||
}
|
||||
$title = '';
|
||||
$module = $moduleID ? $this->loadModel('tree')->getByID($moduleID) : '';
|
||||
if($module) $title = $module->name;
|
||||
if($libID) $title = $this->libs[$libID];
|
||||
if(in_array($browseType, array_keys($this->lang->doc->fastMenuList))) $title = $this->lang->doc->fastMenuList[$browseType];
|
||||
|
||||
if($this->cookie->browseType == 'bymenu')
|
||||
{
|
||||
$this->view->modules = $this->doc->getDocMenu($libID, $moduleID, $orderBy == 'title_asc' ? 'name_asc' : 'id_desc');
|
||||
$this->view->parents = $this->loadModel('tree')->getParents($moduleID);
|
||||
}
|
||||
elseif($this->cookie->browseType == 'bytree')
|
||||
{
|
||||
$this->view->tree = $this->doc->getDocTree($libID);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->view->moduleTree = $this->loadModel('tree')->getTreeMenu($libID, $viewType = 'doc', $startModuleID = 0, array('treeModel', 'createDocLink'));
|
||||
}
|
||||
|
||||
$this->view->libID = $libID;
|
||||
$this->view->libName = $libID ? $this->libs[$libID] : '';
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->docs = $docs;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->param = $param;
|
||||
$this->view->type = $type;
|
||||
$this->view->from = $from;
|
||||
$this->view->title = $title;
|
||||
$this->view->libID = $libID;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->modules = $this->doc->getDocMenu($libID, $moduleID, $orderBy == 'title_asc' ? 'name_asc' : 'id_desc');
|
||||
$this->view->docs = $docs;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->param = $param;
|
||||
$this->view->type = $type;
|
||||
$this->view->from = $from;
|
||||
$this->view->pager = $pager;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
@@ -483,6 +456,39 @@ class doc extends control
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Collect doc, doclib or module of doclib.
|
||||
*
|
||||
* @param int $objectID
|
||||
* @param int $objectType
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function collect($objectID, $objectType)
|
||||
{
|
||||
if($objectType == 'doc') $table = TABLE_DOC;
|
||||
if($objectType == 'doclib') $table = TABLE_DOCLIB;
|
||||
if($objectType == 'module') $table = TABLE_MODULE;
|
||||
$collectors = $this->dao->select('collector')->from($table)->where('id')->eq($objectID)->fetch('collector');
|
||||
|
||||
if(strpos($collectors, ",{$this->app->user->account},") !== false)
|
||||
{
|
||||
$collectors = str_replace(",{$this->app->user->account},", ',', $collectors);
|
||||
}
|
||||
else
|
||||
{
|
||||
$collectors = explode(',', $collectors);
|
||||
$collectors[] = $this->app->user->account;
|
||||
$collectors = implode(',', $collectors);
|
||||
}
|
||||
|
||||
$collectors = trim($collectors, ',') ? ',' . trim($collectors, ',') . ',' : '';
|
||||
|
||||
$this->dao->update($table)->set('collector')->eq($collectors)->where('id')->eq($objectID)->exec();
|
||||
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort doc lib.
|
||||
*
|
||||
@@ -602,6 +608,7 @@ class doc extends control
|
||||
$libs = $this->doc->getAllLibsByType($type, $pager, $product);
|
||||
$subLibs = array();
|
||||
if($type == 'product' or $type == 'project') $subLibs = $this->doc->getSubLibGroups($type, array_keys($libs));
|
||||
if($type == 'custom') $this->view->itemCounts = $this->doc->statLibCounts(array_keys($libs));
|
||||
|
||||
$this->view->type = $type;
|
||||
$this->view->libs = $libs;
|
||||
@@ -749,6 +756,11 @@ class doc extends control
|
||||
$this->doc->setMenu($type, $libID = 0, $moduleID = 0, $productID, $projectID, $crumb);
|
||||
}
|
||||
|
||||
/* Set Custom. */
|
||||
foreach(explode(',', $this->config->doc->customObjectLibs) as $libType) $customObjectLibs[$libType] = $this->lang->doc->customObjectLibs[$libType];
|
||||
$this->view->customObjectLibs = $customObjectLibs;
|
||||
$this->view->showLibs = $this->config->doc->custom->objectLibs;
|
||||
|
||||
$this->view->title = $object->name;
|
||||
$this->view->position[] = $object->name;
|
||||
|
||||
|
||||
+38
-97
@@ -1,102 +1,43 @@
|
||||
.libs-group-heading {color: #808080; border-bottom:1px solid #ddd; padding:8px;}
|
||||
.libs-group-heading a{overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
|
||||
.libs-group{padding:10px; height:84px;}
|
||||
.lib {float: left; display: block; width:80px; padding: 5px; margin:0px 3px; text-align: center; color: #333; overflow: hidden; text-overflow: ellipsis;}
|
||||
.lib .file-icon{margin-bottom:5px;}
|
||||
.lib .lib-name{overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
|
||||
.lib:hover, .lib:focus, .lib:active {border-color: #2e6dad; background-color: #EBF2F9; color: #2e6dad}
|
||||
.lib .icon-move{display: none; position: relative; top: -10px; right : -70px;}
|
||||
.lib:hover .icon-move{display: inline-block; cursor: move;}
|
||||
.w-lib-p100{width:100%;}
|
||||
.w-lib-p50{width:45%;}
|
||||
.w-lib-p33{width:30%;}
|
||||
#titlebar > .heading > strong > i{display:inline;}
|
||||
#modulemenu .nav > li > a{display: inline-block;}
|
||||
.split-row > .side-col,
|
||||
.split-row > .main-col {padding: 0;}
|
||||
.col-spliter {width: 20px; position: relative; z-index: 10; cursor: ew-resize;}
|
||||
.col-spliter:before,
|
||||
.col-spliter:after {content: ''; display: block; position: absolute; left: 50%; width: 10px; margin-left: -5px; top: 0; bottom: 0; background: rgba(0,0,0,.075); opacity: 0; transition: opacity .2s;}
|
||||
.col-spliter:before {border-radius: 5px;}
|
||||
.col-spliter:after {background: transparent; top: 50%; bottom: auto; height: 20px; opacity: 1; width: 4px; border-left: 1px solid rgba(0,0,0,.2); border-right: rgba(0,0,0,.2) 1px solid; margin-left: -2px; margin-top: -10px; }
|
||||
/* .col-spliter:hover:after {width: 2px; background: rgba(0,0,0,.15); margin-left: -1px; top: 0; bottom: 20px; height: auto; margin-top: auto; border: none;} */
|
||||
.row-spliting .col-spliter:after,
|
||||
.col-spliter:hover:after {border-color: rgba(0,0,0,.3);}
|
||||
.col-spliter:hover:before,
|
||||
.col-spliter:hover:after,
|
||||
.row-spliting .col-spliter:before,
|
||||
.row-spliting .col-spliter:after {opacity: 1;}
|
||||
|
||||
#groups_chosen .chosen-choices {border-bottom:0px;}
|
||||
.groups-addon {border-bottom:0px;}
|
||||
@media (max-width: 720px) {
|
||||
.split-row > .side-col,
|
||||
.split-row > .main-col {width: 100%!important;}
|
||||
}
|
||||
|
||||
#dropMenu.loading > #libMenu,
|
||||
#dropMenu > .icon {display: none}
|
||||
#dropMenu.loading > .icon {display: block}
|
||||
#dropMenu {min-width: 600px; box-sizing: content-box; padding: 0;}
|
||||
.col-sm-size .col-sm-5,
|
||||
.col-sm-size .col-sm-7 {width: 100%;}
|
||||
.col-sm-size .table .c-user,
|
||||
.col-sm-size .table .c-num,
|
||||
.col-md-size .table .c-datetime {display: none;}
|
||||
|
||||
#libMenu {display: block; margin: 0; position: relative;}
|
||||
#libMenuHeading {padding: 10px;}
|
||||
#libMenuGroups {display: table; width: 100%; margin-bottom: 10px; table-layout: fixed;}
|
||||
.lib-menu-group {display: table-cell; width: 33.333333%; padding: 0}
|
||||
.lib-menu-group + .lib-menu-group {border-left: 1px dotted #ddd;}
|
||||
.lib-menu-project-done, .lib-menu-list-heading {background-color: #fafafa; color: #808080; padding: 0 10px; text-align: center; display: inline-block; margin: 0 0 10px 10px; border: 1px solid #ddd; line-height: 20px; border-radius: 10px;}
|
||||
.lib-menu-project-done:hover, .lib-menu-list-heading:hover {border-color: #114f8e; cursor: pointer; color: #114f8e;}
|
||||
.lib-menu-project-done > .icon, .lib-menu-list-heading > .icon {display: none}
|
||||
.lib-menu-project-done.active {background-color: #114f8e; color: #fff; border-color: #114f8e;}
|
||||
.lib-menu-project-done.active > .icon {display: inline-block;}
|
||||
.lib-menu-list {max-height: 500px; overflow-y: auto; min-height: 100px; line-height:25px;}
|
||||
.list-menu-item-heading {padding: 0 3px 0 0px; color: #141414; white-space: nowrap; overflow:hidden; float: left; width:35%;text-align:right;}
|
||||
.list-menu-item-heading > .icon {display: inline-block; width: 18px;}
|
||||
.list-menu-item {padding: 0 8px 0 5px; display: block; overflow: hidden; white-space: nowrap; float: left; color:#3280FC;}
|
||||
.list-menu-item.current {background-color: #EBF2F9; color:red}
|
||||
.list-menu-item.active,
|
||||
.list-menu-item:hover {color: #1a53ff}
|
||||
.list-menu-item-footer {clear:left}
|
||||
.table-files .c-actions .btn > .icon {opacity: 0;}
|
||||
.table-files .c-actions .btn > .icon.text-yellow,
|
||||
.table-files tr:hover .c-actions .btn > .icon {opacity: 1;}
|
||||
|
||||
#dropMenu[data-filter] #libMenuGroups {table-layout: auto;}
|
||||
#dropMenu[data-filter="project"] #libMenuProductGroup,
|
||||
#dropMenu[data-filter="project"] #libMenuCustomGroup,
|
||||
#dropMenu[data-filter="custom"] #libMenuProjectGroup,
|
||||
#dropMenu[data-filter="custom"] #libMenuProductGroup,
|
||||
#dropMenu[data-filter="product"] #libMenuProjectGroup,
|
||||
#dropMenu[data-filter="product"] #libMenuCustomGroup {display: none;}
|
||||
#main {opacity: 0; transition: opacity .4s;}
|
||||
#main.in {opacity: 1;}
|
||||
|
||||
#dropMenu[data-filter] .lib-menu-group {display: block; width: 100%}
|
||||
#dropMenu[data-filter] .lib-menu-list-heading {position: absolute; top: 13px; left: 215px; padding-right: 25px; background-color: #114f8e; color: #fff; border-color: #114f8e;}
|
||||
#dropMenu[data-filter] .lib-menu-list-heading > .icon {position: absolute; right: 3px; top: 2px; display: block;}
|
||||
#dropMenu[data-filter] .list-menu-item {width: 33.33333%;}
|
||||
|
||||
|
||||
@media (min-width: 760px)
|
||||
{
|
||||
#dropMenu {min-width: 720px;}
|
||||
}
|
||||
@media (min-width: 880px)
|
||||
{
|
||||
#dropMenu {min-width: 850px;}
|
||||
.lib-menu-lg .lib-list-bg .list-menu-item {max-width: 50%;}
|
||||
#dropMenu.lib-menu-lg[data-filter] .list-menu-item {max-width: 25%;}
|
||||
}
|
||||
@media (min-width: 1000px)
|
||||
{
|
||||
#dropMenu {min-width: 960px;}
|
||||
#dropMenu .lib-list-bg .list-menu-item {max-width: 50%;}
|
||||
#dropMenu.lib-menu-lg[data-filter] .list-menu-item {max-width: 20%;}
|
||||
}
|
||||
@media (min-width: 1120px)
|
||||
{
|
||||
#dropMenu {min-width: 1080px;}
|
||||
#dropMenu .list-menu-item {max-width: 50%;}
|
||||
#dropMenu .lib-list-bg .list-menu-item {max-width: 33.33333333%;}
|
||||
#dropMenu.lib-menu-lg[data-filter] .list-menu-item {max-width: 16.666667%;}
|
||||
}
|
||||
@media (min-width: 1240px)
|
||||
{
|
||||
#dropMenu {min-width: 1200px;}
|
||||
#dropMenu.lib-menu-lg[data-filter] .list-menu-item {max-width: 12.5%;}
|
||||
}
|
||||
@media (min-width: 1360px)
|
||||
{
|
||||
#dropMenu {min-width: 1320px;}
|
||||
#dropMenu .lib-list-bg .list-menu-item {max-width: 25%;}
|
||||
#dropMenu.lib-menu-lg[data-filter] .list-menu-item {max-width: 10%;}
|
||||
}
|
||||
@media (min-width: 1480px)
|
||||
{
|
||||
#dropMenu {min-width: 1340px;}
|
||||
#dropMenu .list-menu-item {max-width: 33.3333333%;}
|
||||
#dropMenu .lib-list-bg .list-menu-item {max-width: 20%;}
|
||||
}
|
||||
@media (min-width: 1600px)
|
||||
{
|
||||
#dropMenu {min-width: 1460px;}
|
||||
#dropMenu .list-menu-item {max-width: 25%;}
|
||||
#dropMenu.lib-menu-lg[data-filter] .list-menu-item {max-width: 8.333333%;}
|
||||
}
|
||||
.files-grid .col {width: 167px; text-align: center; padding: 0; margin-bottom: 10px;}
|
||||
.files-grid .actions {position: absolute; bottom: -30px; left: 0; right: 0; background: #E9F2FB; z-index: 10; opacity: 0; transition: opacity .2s; padding-bottom: 8px;}
|
||||
.files-grid .col:hover .actions {opacity: 1;}
|
||||
.files-grid .file {padding: 10px; cursor: pointer; display: block; border-radius: 2px;}
|
||||
.files-grid .col:hover .file {background-color: #E9F2FB;}
|
||||
.files-grid .file-icon {font-size: 54px; width: 64px; height: 64px; display: block; margin: 0 auto 8px; line-height: 64px;}
|
||||
.files-grid .file-name,
|
||||
.files-grid .file-info {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}
|
||||
.files-grid .file-info {font-size: 12px; margin-top: 3px;}
|
||||
.files-grid .icon-folder {background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI1MnB4IiBoZWlnaHQ9IjQ2cHgiIHZpZXdCb3g9IjAgMCA1MiA0NiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5pY29uLWJpZy1mb2xkZXJpY29uLWJpZy1mb2xkZXI8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4gICAgPGRlZnM+PC9kZWZzPiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxnIGlkPSJ3ZWItbWF4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTA5NS4wMDAwMDAsIC02OTUuMDAwMDAwKSI+ICAgICAgICAgICAgPGcgaWQ9Ijgt5paH5qGjIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDkwLjAwMDAwMCwgNTgzLjAwMDAwMCkiPiAgICAgICAgICAgICAgICA8ZyBpZD0iaWNvbi1iaWctZm9sZGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LjAwMDAwMCwgMTEyLjAwMDAwMCkiPiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIxLjA0NTY4OTEsNC4yNzAyMzU0MiBDMjEuOTYxODA1OSw1LjEwNzIwMzY1IDIzLjAyMjcwMDQsNS41NTc5NjY1OSAyNC4zNjg4OTQ0LDUuNTI1MDEyMTggTDI2LjE2MDIzOCw1LjUyNTAxMjE4IEwzMC44MTIxMDExLDUuNTI1MDEyMTggQzI5LjYwMDkxMDksNS41MjUwMTIxOCAyOC40Mzg1MTg2LDUuMDM1NzUxMTMgMjcuNTc3MDQ3LDQuMTg1ODk1OTMgTDI0LjY3ODE1NjYsMS4zMjY0MDI3MSBDMjMuODE2NTgwOCwwLjQ3NjU0NzUxMSAyMi42NTQyOTI3LDAgMjEuNDQzMTAyNSwwIEwxNS4xMTQ5MDQ2LDAgTDE1LDAgQzE2LjIyNjg2NzksMC4wMzk0MzcwODA1IDE3LjMwMjA1NTcsMC41NTY4NjUwODcgMTguMTYzNTI3MywxLjQwNjYxNjIyIEwyMS4wNDU2ODkxLDQuMjcwMjM1NDIgWiIgaWQ9IlNoYXBlLUNvcHktNyIgZmlsbD0iI0ZGQzg1QSI+PC9wYXRoPiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQ5LjMxMDMyMDMsNS41MjAwMjkxOCBMMzguNTUxNzAzMSw1LjUyMDAyOTE4IEwzNi44MDY4NTk0LDUuNTIwMDI5MTggTDMyLjI3NTc1LDUuNTIwMDI5MTggTDMwLjUzMDkwNjMsNS41MjAwMjkxOCBMMjYsNS41MjAwMjkxOCBMMjQuMjU1MTU2Miw1LjUyMDAyOTE4IEMyMy4wNzU0MDYzLDUuNTIwMDI5MTggMjEuOTQzMTg3NSw1LjA0MjgxMzM1IDIxLjEwNDA3ODEsNC4xOTE3NjYzIEwxOC4yODA0Mzc1LDEuMzI4MjYyODggQzE3LjQ0MTIyNjYsMC40NzcyMTU4MjkgMTYuMzA5MTA5NCwwIDE1LjEyOTM1OTQsMCBMOC45NjU1MzEyNSwwIEwyLjY4OTY3OTY5LDAgQzEuMjA0MjI2NTYsNy40MDUxNTkyM2UtMTYgMCwxLjIzNTcxNjk5IDAsMi43NjAwMTQ1OSBMMCw4LjI4MDA0Mzc3IEwwLDkuMjAwMDgzMzcgTDAsNDMuMjM5OTg1NCBDMCw0NC43NjQyODMgMS4yMDQyMjY1Niw0NiAyLjY4OTY3OTY5LDQ2IEw0OS4zMTAzMjAzLDQ2IEM1MC43OTU3NzM0LDQ2IDUyLDQ0Ljc2NDI4MyA1Miw0My4yMzk5ODU0IEw1Miw4LjI4MDA0Mzc3IEM1Miw2Ljc1NTY0MTk1IDUwLjc5NTc3MzQsNS41MjAwMjkxOCA0OS4zMTAzMjAzLDUuNTIwMDI5MTggTDQ5LjMxMDMyMDMsNS41MjAwMjkxOCBaIiBpZD0iU2hhcGUtQ29weS04IiBmaWxsPSIjRkZFMDY2Ij48L3BhdGg+ICAgICAgICAgICAgICAgIDwvZz4gICAgICAgICAgICA8L2c+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=) no-repeat center;}
|
||||
|
||||
@@ -25,7 +25,6 @@ function setBrowseType(type)
|
||||
|
||||
$(function(){
|
||||
$('#' + browseType + 'Tab').addClass('active');
|
||||
if(fixedMenu) $('#modulemenu .nav li[data-id="custom' + libID + '"]').addClass('active');
|
||||
if(browseType == "bysearch")
|
||||
{
|
||||
ajaxGetSearchForm();
|
||||
|
||||
+122
-208
@@ -1,207 +1,3 @@
|
||||
function showLibMenu()
|
||||
{
|
||||
var $item = $('#currentItem');
|
||||
var $li = $item.closest('li');
|
||||
var $menu = $('#dropMenu');
|
||||
|
||||
if($li.hasClass('show')) {$li.removeClass('show'); return;}
|
||||
var $search = $('#searchLib');
|
||||
if(!$li.data('showagain'))
|
||||
{
|
||||
$menu.addClass('loading');
|
||||
var isBigMode = false;
|
||||
var items = {};
|
||||
var itemIdSeed = $.zui.uuid();
|
||||
var orderSeed = 1;
|
||||
$.getJSON(createLink('doc', 'ajaxGetAllLibs'), function(data)
|
||||
{
|
||||
$menu.removeClass('loading');
|
||||
|
||||
var $list = $('#libMenuProductGroup > .lib-menu-list');
|
||||
var productCount = 0, projectCount = 0, customCount = 0;
|
||||
$.each(data.product, function(idx, product)
|
||||
{
|
||||
$list.append('<div class="list-menu-item-heading" data-status="' + product.status + '" data-product="' + product.id + '">[ ' + product.name + ' ]</div>');
|
||||
$.each(product.libs, function(libId, libName)
|
||||
{
|
||||
var url = libId === 'files' ? createLink('doc', 'showFiles', 'type=product&objectID=' + product.id) : createLink('doc', 'browse', 'libID=' + libId);
|
||||
var url = libId === 'project' ? createLink('doc', 'allLibs', 'type=project&extra=' + product.id) : url;
|
||||
var itemId = 'lib-' + itemIdSeed++;
|
||||
$list.append('<a data-order="' + (orderSeed++) + '" data-status="' + product.status + '" title="' + product.name + '/' + libName + '" id="' + itemId + '" href="' + url + '" class="list-menu-item" data-type="product" data-product="' + product.id + '" data-id="' + libId + '">' + libName + '</a>');
|
||||
items[itemId] = {type: 'product', id: libId, name: libName, objectId: product.id, product: product.name, search: (libName + ' ' + product.name).toLowerCase()};
|
||||
productCount++;
|
||||
});
|
||||
$list.append('<div class="list-menu-item-footer" data-status="' + product.status + '" data-product="' + product.id + '"></div>');
|
||||
});
|
||||
$list.toggleClass('lib-list-bg', productCount > 4);
|
||||
|
||||
$list = $('#libMenuProjectGroup > .lib-menu-list');
|
||||
$.each(data.project, function(idx, project)
|
||||
{
|
||||
$list.append('<div class="list-menu-item-heading" data-status="' + project.status + '" data-project="' + project.id + '">[ ' + project.name + ' ]</div>');
|
||||
$.each(project.libs, function(libId, libName)
|
||||
{
|
||||
var url = libId === 'files' ? createLink('doc', 'showFiles', 'type=project&objectID=' + project.id) : createLink('doc', 'browse', 'libID=' + libId);
|
||||
var itemId = 'lib-' + itemIdSeed++;
|
||||
$list.append('<a data-order="' + (orderSeed++) + '" data-status="' + project.status + '" title="' + project.name + '/' + libName + '" id="' + itemId + '" href="' + url + '" class="list-menu-item" data-type="project" data-project="' + project.id + '" data-id="' + libId + '">' + libName + '</a>');
|
||||
items[itemId] = {type: 'project', id: libId, name: libName, objectId: project.id, project: project.name, search: (libName + ' ' + project.name).toLowerCase()};
|
||||
projectCount++;
|
||||
});
|
||||
$list.append('<div class="list-menu-item-footer" data-status="' + project.status + '" data-project="' + project.id + '"></div>');
|
||||
});
|
||||
$list.find('[data-status="done"]').addClass('hidden');
|
||||
$list.toggleClass('lib-list-bg', projectCount > 4);
|
||||
|
||||
$list = $('#libMenuCustomGroup > .lib-menu-list');
|
||||
$.each(data.custom, function(libId, libName)
|
||||
{
|
||||
var url = createLink('doc', 'browse', 'libID=' + libId);
|
||||
var itemId = 'lib-' + itemIdSeed++;
|
||||
$list.append('<a data-order="' + (orderSeed++) + '" title="' + libName + '" id="' + itemId + '" href="' + url + '" class="list-menu-item" data-type="custom" data-id="' + libId + '">' + libName + '</a>');
|
||||
items[itemId] = {type: 'custom', id: libId, name: libName, search: libName.toLowerCase()};
|
||||
customCount++;
|
||||
});
|
||||
$list.toggleClass('lib-list-bg', customCount > 4);
|
||||
|
||||
var $items = $menu.find('.list-menu-item');
|
||||
$items.filter('[data-id="' + $item.data('libId') + '"]').addClass('current');
|
||||
$items.first().addClass('active');
|
||||
|
||||
$menu.toggleClass('lib-menu-lg', productCount > 9 || projectCount > 9 || customCount > 9);
|
||||
|
||||
var lastSearchKey = $search.val();
|
||||
$search.on('change keyup paste input propertychange', function()
|
||||
{
|
||||
var searchKey = $search.val();
|
||||
if(searchKey == lastSearchKey) return;
|
||||
lastSearchKey = searchKey;
|
||||
$menu.find('.list-menu-item.active').removeClass('active');
|
||||
if(searchKey)
|
||||
{
|
||||
var $menuHeadings = $menu.find('.list-menu-item-heading').addClass('hidden');
|
||||
var $menuFooters = $menu.find('.list-menu-item-footer').addClass('hidden');
|
||||
searchKey = searchKey.toLowerCase();
|
||||
$.each(items, function(itemId, item)
|
||||
{
|
||||
var isMatch = item.search.indexOf(searchKey) > -1 || '@' + item.type === searchKey || item.id === searchKey;
|
||||
$('#' + itemId).toggleClass('hidden', !isMatch);
|
||||
if(isMatch && item.type !== 'custom' && item.objectId)
|
||||
{
|
||||
$menuHeadings.filter('[data-' + item.type + '="' + item.objectId + '"]').removeClass('hidden');
|
||||
$menuFooters.filter('[data-' + item.type + '="' + item.objectId + '"]').removeClass('hidden');
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
$menu.find('.list-menu-item.hidden,.list-menu-item-heading.hidden,.list-menu-item-footer.hidden').removeClass('hidden');
|
||||
var hasActive = ($('.lib-menu-project-done').hasClass('active'));
|
||||
if(hasActive)
|
||||
{
|
||||
$('#libMenuProjectGroup > .lib-menu-list').find('[data-status!="done"]').addClass('hidden');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#libMenuProjectGroup > .lib-menu-list').find('[data-status="done"]').addClass('hidden');
|
||||
}
|
||||
}
|
||||
$menu.find('.list-menu-item:not(.hidden)').first().addClass('active');
|
||||
}).on('keydown', function(e)
|
||||
{
|
||||
$items = $menu.find('.list-menu-item');
|
||||
|
||||
var code = e.which;
|
||||
var $this = $items.filter('.list-menu-item.active');
|
||||
if(code === 38) // up
|
||||
{
|
||||
$this.removeClass('active');
|
||||
if($this.length)
|
||||
{
|
||||
var order = $this.data('order') - 1;
|
||||
if(order > 0)
|
||||
{
|
||||
var $prev = $items.filter('.list-menu-item[data-order="' + order + '"]');
|
||||
while($prev.hasClass('hidden') && order > 1)
|
||||
{
|
||||
order -= 1;
|
||||
$prev = $items.filter('.list-menu-item[data-order="' + order + '"]');
|
||||
}
|
||||
if($prev.length)
|
||||
{
|
||||
$prev.addClass('active');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
$items.last(':not(.hidden)').addClass('active');
|
||||
}
|
||||
else if(code === 40) // down
|
||||
{
|
||||
$this.removeClass('active');
|
||||
if($this.length)
|
||||
{
|
||||
var order = $this.data('order') + 1;
|
||||
if(order <= $items.length)
|
||||
{
|
||||
var $next = $items.filter('.list-menu-item[data-order="' + order + '"]');
|
||||
while($next.hasClass('hidden') && order <= $items.length)
|
||||
{
|
||||
order += 1;
|
||||
$next = $items.filter('.list-menu-item[data-order="' + order + '"]');
|
||||
}
|
||||
if($next.length)
|
||||
{
|
||||
$next.addClass('active');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
$items.first(':not(.hidden)').addClass('active');
|
||||
}
|
||||
else if(code === 13) // enter
|
||||
{
|
||||
if($this.length) window.location.href = $this.attr('href');
|
||||
}
|
||||
});
|
||||
|
||||
$menu.on('mouseenter', '.list-menu-item', function()
|
||||
{
|
||||
$menu.find('.list-menu-item.active').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
});
|
||||
|
||||
$menu.on('click', '.lib-menu-list-heading', function()
|
||||
{
|
||||
var libType = $(this).data('type');
|
||||
var showFilter = $menu.attr('data-filter') != libType;
|
||||
$menu.attr('data-filter', showFilter ? libType : null);
|
||||
});
|
||||
$menu.on('click', '.lib-menu-project-done', function()
|
||||
{
|
||||
var hasActive = ($(this).hasClass('active'));
|
||||
if(hasActive)
|
||||
{
|
||||
$(this).removeClass('active');
|
||||
$('#libMenuProjectGroup > .lib-menu-list').find('[data-status!="done"]').removeClass('hidden');
|
||||
$('#libMenuProjectGroup > .lib-menu-list').find('[data-status="done"]').addClass('hidden');
|
||||
}
|
||||
else
|
||||
{
|
||||
$(this).addClass('active');
|
||||
$('#libMenuProjectGroup > .lib-menu-list').find('[data-status!="done"]').addClass('hidden');
|
||||
$('#libMenuProjectGroup > .lib-menu-list').find('[data-status="done"]').removeClass('hidden');
|
||||
}
|
||||
});
|
||||
});
|
||||
$li.data('showagain', true);
|
||||
$li.on('click', function(e){e.stopPropagation();});
|
||||
$(document).click(function(){$li.removeClass('show');});
|
||||
}
|
||||
$menu.find('.lib-menu-list').css('max-height', $(window).height() - 210);
|
||||
$li.addClass('show');
|
||||
$search.focus();
|
||||
}
|
||||
|
||||
function loadModules(libID)
|
||||
{
|
||||
link = createLink('doc', 'ajaxGetModules', 'libID=' + libID);
|
||||
@@ -222,10 +18,6 @@ function toggleAcl(acl)
|
||||
|
||||
$(document).ready(function()
|
||||
{
|
||||
$('[data-id="create"] a[href*=doc][href*=createLib]').modalTrigger({type: 'iframe', width: 800});
|
||||
$('#modulemenu .nav li').removeClass('active');
|
||||
if(typeof(type) != 'undefined') $('#modulemenu .nav li[data-id="' + type + '"]').addClass('active');
|
||||
|
||||
$('.libs-group.sort').sortable(
|
||||
{
|
||||
trigger: '.lib',
|
||||
@@ -255,4 +47,126 @@ $(document).ready(function()
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
'use strict';
|
||||
|
||||
var NAME = 'zui.splitRow'; // model name
|
||||
|
||||
// File input list
|
||||
// The SplitRow model class
|
||||
var SplitRow = function(element, options)
|
||||
{
|
||||
var that = this;
|
||||
that.name = NAME;
|
||||
var $element = that.$ = $(element);
|
||||
|
||||
options = that.options = $.extend({}, SplitRow.DEFAULTS, this.$.data(), options);
|
||||
var id = options.id || $element.attr('id') || $.zui.uuid();
|
||||
var $cols = $element.children('.side-col,.main-col');
|
||||
var $firstCol = $cols.first();
|
||||
var $secondCol = $cols.eq(1);
|
||||
var $spliter = $firstCol.next('.col-spliter');
|
||||
if (!$spliter.length)
|
||||
{
|
||||
$spliter = $(options.spliter);
|
||||
if (!$spliter.parent().length)
|
||||
{
|
||||
$spliter.insertAfter($firstCol);
|
||||
}
|
||||
}
|
||||
var spliterWidth = $spliter.width();
|
||||
var minFirstColWidth = $firstCol.data('minWidth');
|
||||
var minSecondColWidth = $secondCol.data('minWidth');
|
||||
var setFirstColWidth = function(width)
|
||||
{
|
||||
var rowWidth = $element.width();
|
||||
var maxFirstWidth = rowWidth - minSecondColWidth - spliterWidth;
|
||||
width = Math.max(minFirstColWidth, Math.min(width, maxFirstWidth));
|
||||
$firstCol.width(width);
|
||||
$.zui.store.set('splitRowFirstSize:' + id, width);
|
||||
};
|
||||
|
||||
var defaultWidth = $.zui.store.get('splitRowFirstSize:' + id);
|
||||
if (defaultWidth) setFirstColWidth(defaultWidth);
|
||||
|
||||
var documentEventName = '.' + id;
|
||||
|
||||
var mouseDownX, isMouseDown, startFirstWidth;
|
||||
$spliter.on('mousedown', function(e)
|
||||
{
|
||||
startFirstWidth = $firstCol.width();
|
||||
mouseDownX = e.pageX;
|
||||
isMouseDown = true;
|
||||
$element.addClass('row-spliting');
|
||||
e.preventDefault();
|
||||
$(document).on('mousemove' + documentEventName, function(e)
|
||||
{
|
||||
if (isMouseDown)
|
||||
{
|
||||
var deltaX = e.pageX - mouseDownX;
|
||||
setFirstColWidth(startFirstWidth + deltaX);
|
||||
e.preventDefault();
|
||||
} else {
|
||||
$(document).off(documentEventName);
|
||||
$element.removeClass('row-spliting');
|
||||
}
|
||||
}).on('mouseup' + documentEventName + ' mouseleave' + documentEventName, function(e)
|
||||
{
|
||||
isMouseDown = false;
|
||||
$(document).off(documentEventName);
|
||||
$element.removeClass('row-spliting');
|
||||
});
|
||||
});
|
||||
|
||||
var fixColClass = function($col)
|
||||
{
|
||||
if (options.smallSize) $col.toggleClass('col-sm-size', $col.width() < options.smallSize);
|
||||
if (options.middleSize) $col.toggleClass('col-md-size', $col.width() < options.middleSize);
|
||||
};
|
||||
|
||||
var resizeCols = function() {
|
||||
var $cells = $cols.children('.panel,.cell').height('auto');
|
||||
var bestHeight = $firstCol.height();
|
||||
$cells.css('height', bestHeight);
|
||||
};
|
||||
|
||||
$element.find('.tree').on('resize', resizeCols);
|
||||
$firstCol.on('resize', function(e) {fixColClass($firstCol);});
|
||||
$secondCol.on('resize', function(e) {fixColClass($secondCol);});
|
||||
fixColClass($firstCol);
|
||||
fixColClass($secondCol);
|
||||
resizeCols();
|
||||
};
|
||||
|
||||
// default options
|
||||
SplitRow.DEFAULTS =
|
||||
{
|
||||
spliter: '<div class="col-spliter"></div>',
|
||||
smallSize: 700,
|
||||
middleSize: 850
|
||||
};
|
||||
|
||||
// Extense jquery element
|
||||
$.fn.splitRow = function(option)
|
||||
{
|
||||
return this.each(function()
|
||||
{
|
||||
var $this = $(this);
|
||||
var data = $this.data(NAME);
|
||||
var options = typeof option == 'object' && option;
|
||||
if(!data) $this.data(NAME, (data = new SplitRow(this, options)));
|
||||
});
|
||||
};
|
||||
|
||||
SplitRow.NAME = NAME;
|
||||
|
||||
$.fn.splitRow.Constructor = SplitRow;
|
||||
|
||||
// Auto call splitRow after document load complete
|
||||
$(function()
|
||||
{
|
||||
$('.split-row').splitRow();
|
||||
});
|
||||
|
||||
$('#main').addClass('in');
|
||||
});
|
||||
|
||||
@@ -43,6 +43,7 @@ $lang->doc->download = '下载';
|
||||
$lang->doc->acl = '权限';
|
||||
$lang->doc->groups = '分组';
|
||||
$lang->doc->users = '用户';
|
||||
$lang->doc->item = '项';
|
||||
|
||||
$lang->doc->moduleDoc = '按模块浏览';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
@@ -71,6 +72,7 @@ $lang->doc->editType = '编辑分类';
|
||||
$lang->doc->deleteType = '删除分类';
|
||||
$lang->doc->addType = '增加分类';
|
||||
$lang->doc->childType = '子分类';
|
||||
$lang->doc->collect = '收藏';
|
||||
|
||||
$lang->doc->libName = '文档库名称';
|
||||
$lang->doc->libType = '文档库类型';
|
||||
@@ -115,9 +117,7 @@ $lang->doc->contentTypeList['markdown'] = 'MarkDown';
|
||||
|
||||
$lang->doc->browseType = '浏览方式';
|
||||
$lang->doc->browseTypeList['list'] = '列表';
|
||||
$lang->doc->browseTypeList['menu'] = '目录';
|
||||
$lang->doc->browseTypeList['tree'] = '树状图';
|
||||
$lang->doc->browseTypeList['card'] = '卡片';
|
||||
$lang->doc->browseTypeList['grid'] = '目录';
|
||||
|
||||
$lang->doc->fastMenuList['byediteddate'] = '最近更新';
|
||||
$lang->doc->fastMenuList['visiteddate'] = '最近访问';
|
||||
@@ -129,6 +129,9 @@ $lang->doc->fastMenuIconList['visiteddate'] = 'icon-folder-move';
|
||||
$lang->doc->fastMenuIconList['openedbyme'] = 'icon-folder-account';
|
||||
$lang->doc->fastMenuIconList['collectedbyme'] = 'icon-folder-star';
|
||||
|
||||
$lang->doc->customObjectLibs['files'] = '是否显示附件库';
|
||||
$lang->doc->customObjectLibs['customFiles'] = '是否显示自定义文件';
|
||||
|
||||
$lang->doc->confirmDelete = "您确定删除该文档吗?";
|
||||
$lang->doc->confirmDeleteLib = "您确定删除该文档库吗?";
|
||||
$lang->doc->errorEditSystemDoc = "系统文档库无需修改。";
|
||||
|
||||
+111
-56
@@ -54,7 +54,7 @@ class docModel extends model
|
||||
{
|
||||
if($key == 'editedDate' or $key == 'visitedDate')
|
||||
{
|
||||
$link = helper::createLink('doc', 'browse', "libID=0&browseTyp=bymenu&module=0&orderBy={$key}_desc");
|
||||
$link = helper::createLink('doc', 'browse', "libID=0&browseTyp=bygrid&module=0&orderBy={$key}_desc");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -70,53 +70,55 @@ class docModel extends model
|
||||
|
||||
if(strpos('product,project,custom', $type) !== false)
|
||||
{
|
||||
$allLibGroups = $this->getAllLibGroups();
|
||||
$currentGroups = $allLibGroups[$type];
|
||||
|
||||
if($type == 'custom') $currentLib = $libID ? $libID : key($currentGroups);
|
||||
if($type == 'product') $currentLib = $productID ? $productID : key($currentGroups);
|
||||
if($type == 'project') $currentLib = $projectID ? $projectID : key($currentGroups);
|
||||
|
||||
$selectHtml .= "<div class='btn-group angle-btn'>";
|
||||
$selectHtml .= "<div class='btn-group'>";
|
||||
$selectHtml .= '<a data-toggle="dropdown" class="btn">' . (is_array($currentGroups[$currentLib]) ? $currentGroups[$currentLib]['name'] : $currentGroups[$currentLib]) . ' <span class="caret"></span></a>';
|
||||
$selectHtml .='<ul class="dropdown-menu">';
|
||||
if($type == 'custom')
|
||||
if($type == 'custom') $currentLib = $libID;
|
||||
if($type == 'product') $currentLib = $productID;
|
||||
if($type == 'project') $currentLib = $projectID;
|
||||
if($currentLib)
|
||||
{
|
||||
foreach($currentGroups as $groupID => $groupName)
|
||||
{
|
||||
if($type == 'custom')
|
||||
{
|
||||
$link = helper::createLink('doc', 'browse', "libID=$groupID");
|
||||
$icon = 'icon-folder-o';
|
||||
}
|
||||
elseif($type == 'product')
|
||||
{
|
||||
$link = helper::createLink('doc', 'objectLibs', "type=product&objectID=$groupID");
|
||||
$icon = 'icon-cube';
|
||||
}
|
||||
else
|
||||
{
|
||||
$link = helper::createLink('doc', 'objectLibs', "type=project&objectID=$groupID");
|
||||
$icon = 'icon-stack';
|
||||
}
|
||||
$allLibGroups = $this->getAllLibGroups();
|
||||
$currentGroups = $allLibGroups[$type];
|
||||
|
||||
$active = $currentLib == $groupID ? "class='active'" : '';
|
||||
$selectHtml .= "<li $active>" . html::a(helper::createLink('doc', 'browse', "libID=$groupID"), "<i class='icon icon-folder-o'></i> {$groupName}") . '</li>';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($currentGroups as $groupID => $libGroups)
|
||||
$selectHtml .= "<div class='btn-group angle-btn'>";
|
||||
$selectHtml .= "<div class='btn-group'>";
|
||||
$selectHtml .= '<a data-toggle="dropdown" class="btn">' . (is_array($currentGroups[$currentLib]) ? $currentGroups[$currentLib]['name'] : $currentGroups[$currentLib]) . ' <span class="caret"></span></a>';
|
||||
$selectHtml .='<ul class="dropdown-menu">';
|
||||
if($type == 'custom')
|
||||
{
|
||||
$link = helper::createLink('doc', 'objectLibs', "type=$type&objectID=$groupID");
|
||||
$icon = $type == 'product' ? 'icon-cube' : 'icon-stack';
|
||||
foreach($currentGroups as $groupID => $groupName)
|
||||
{
|
||||
if($type == 'custom')
|
||||
{
|
||||
$link = helper::createLink('doc', 'browse', "libID=$groupID");
|
||||
$icon = 'icon-folder-o';
|
||||
}
|
||||
elseif($type == 'product')
|
||||
{
|
||||
$link = helper::createLink('doc', 'objectLibs', "type=product&objectID=$groupID");
|
||||
$icon = 'icon-cube';
|
||||
}
|
||||
else
|
||||
{
|
||||
$link = helper::createLink('doc', 'objectLibs', "type=project&objectID=$groupID");
|
||||
$icon = 'icon-stack';
|
||||
}
|
||||
|
||||
$active = $currentLib == $groupID ? "class='active'" : '';
|
||||
$selectHtml .= "<li $active>" . html::a($link, "<i class='icon {$icon}'></i> {$libGroups['name']}") . '</li>';
|
||||
$active = $currentLib == $groupID ? "class='active'" : '';
|
||||
$selectHtml .= "<li $active>" . html::a(helper::createLink('doc', 'browse', "libID=$groupID"), "<i class='icon icon-folder-o'></i> {$groupName}") . '</li>';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($currentGroups as $groupID => $libGroups)
|
||||
{
|
||||
$link = helper::createLink('doc', 'objectLibs', "type=$type&objectID=$groupID");
|
||||
$icon = $type == 'product' ? 'icon-cube' : 'icon-stack';
|
||||
|
||||
$active = $currentLib == $groupID ? "class='active'" : '';
|
||||
$selectHtml .= "<li $active>" . html::a($link, "<i class='icon {$icon}'></i> {$libGroups['name']}") . '</li>';
|
||||
}
|
||||
}
|
||||
$selectHtml .= '</ul></div></div>';
|
||||
}
|
||||
$selectHtml .= '</ul></div></div>';
|
||||
}
|
||||
|
||||
$actions = '';
|
||||
@@ -374,13 +376,9 @@ class docModel extends model
|
||||
if($moduleID) $modules = $this->loadModel('tree')->getAllChildId($moduleID);
|
||||
$docs = $this->getDocs($libID, $modules, $sort, $pager);
|
||||
}
|
||||
elseif($browseType == "bymenu")
|
||||
elseif($browseType == "bygrid")
|
||||
{
|
||||
$docs = $this->getDocs($libID, $moduleID, $sort, $pager);
|
||||
}
|
||||
elseif($browseType == 'bytree')
|
||||
{
|
||||
return array();
|
||||
$docs = $this->getDocs($libID, 0, $sort, $pager);
|
||||
}
|
||||
elseif($browseType == "bysearch")
|
||||
{
|
||||
@@ -469,9 +467,9 @@ class docModel extends model
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($libID)->andWhere('lib')->in($libID)->fi()
|
||||
->beginIF($module)->andWhere('module')->in($module)->fi()
|
||||
->beginIF($this->cookie->browseType == 'bymenu')->andWhere('module')->in($module)->fi()
|
||||
->query();
|
||||
|
||||
|
||||
$docIdList = array();
|
||||
while($doc = $stmt->fetch())
|
||||
{
|
||||
@@ -748,12 +746,21 @@ class docModel extends model
|
||||
*/
|
||||
public function getDocMenu($libID, $parent, $orderBy = 'name_asc')
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_MODULE)->where('root')->eq($libID)
|
||||
$modules = $this->dao->select('*')->from(TABLE_MODULE)->where('root')->eq($libID)
|
||||
->andWhere('type')->eq('doc')
|
||||
->andWhere('parent')->eq($parent)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($orderBy)
|
||||
->fetchAll('id');
|
||||
|
||||
$docCounts= $this->dao->select("module, count(id) as docCount")->from(TABLE_DOC)
|
||||
->where('module')->in(array_keys($modules))
|
||||
->groupBy('module')
|
||||
->fetchPairs();
|
||||
|
||||
foreach($modules as $moduleID => $module) $modules[$moduleID]->docCount = isset($docCounts[$moduleID]) ? $docCounts[$moduleID] : 0;
|
||||
|
||||
return $modules;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1073,7 +1080,7 @@ class docModel extends model
|
||||
public function getLibsByObject($type, $objectID, $mode = '')
|
||||
{
|
||||
if($type != 'product' and $type != 'project') return false;
|
||||
$objectLibs = $this->dao->select('*')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->andWhere($type)->eq($objectID)->orderBy('`order`, id')->fetchAll('id');
|
||||
$objectLibs = $this->dao->select('*')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->andWhere($type)->eq($objectID)->orderBy('`order`, id')->fetchAll('id');
|
||||
if($type == 'product')
|
||||
{
|
||||
if($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest')
|
||||
@@ -1082,28 +1089,76 @@ class docModel extends model
|
||||
}
|
||||
else
|
||||
{
|
||||
$hasProject = $this->dao->select('DISTINCT product')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
$hasProject = $this->dao->select('DISTINCT product, count(project) as projectCount')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->eq($objectID)
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->fetchPairs('product', 'product');
|
||||
->groupBy('product')
|
||||
->fetchPairs('product', 'projectCount');
|
||||
}
|
||||
}
|
||||
|
||||
$libs = array();
|
||||
foreach($objectLibs as $lib)
|
||||
{
|
||||
if($this->checkPriv($lib)) $libs[$lib->id] = $lib->name;
|
||||
if($this->checkPriv($lib)) $libs[$lib->id] = $lib;
|
||||
}
|
||||
|
||||
$itemCounts = $this->statLibCounts(array_keys($libs));
|
||||
foreach($libs as $libID => $lib) $libs[$libID]->allCount = $itemCounts[$libID];
|
||||
|
||||
if(strpos($mode, 'onlylib') === false)
|
||||
{
|
||||
if($type == 'product' and isset($hasProject[$objectID]) and common::hasPriv('doc', 'allLibs')) $libs['project'] = $this->lang->doclib->project;
|
||||
if(common::hasPriv('doc', 'showFiles')) $libs['files'] = $this->lang->doclib->files;
|
||||
if($type == 'product' and isset($hasProject[$objectID]) and common::hasPriv('doc', 'allLibs'))
|
||||
{
|
||||
$libs['project'] = new stdclass();
|
||||
$libs['project']->name = $this->lang->doclib->project;
|
||||
$libs['project']->allCount = $hasProject[$objectID];
|
||||
}
|
||||
if(common::hasPriv('doc', 'showFiles'))
|
||||
{
|
||||
$libs['files'] = new stdclass();
|
||||
$libs['files']->name = $this->lang->doclib->files;
|
||||
$libs['files']->allCount = count($this->getLibFiles($type, $objectID, 'id_desc'));
|
||||
}
|
||||
}
|
||||
|
||||
return $libs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stat module and document counts of lib.
|
||||
*
|
||||
* @param array $idList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function statLibCounts($idList)
|
||||
{
|
||||
$moduleCounts= $this->dao->select("root, count(id) as moduleCount")->from(TABLE_MODULE)
|
||||
->where('type')->eq('doc')
|
||||
->andWhere('root')->in($idList)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->groupBy('root')
|
||||
->fetchPairs();
|
||||
|
||||
$docCounts= $this->dao->select("lib, count(id) as docCount")->from(TABLE_DOC)
|
||||
->where('lib')->in($idList)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->groupBy('lib')
|
||||
->fetchPairs();
|
||||
|
||||
$itemCounts = array();
|
||||
foreach($idList as $libID)
|
||||
{
|
||||
$docCount = isset($docCounts[$libID]) ? $docCounts[$libID] : 0;
|
||||
$moduleCount = isset($moduleCounts[$libID]) ? $moduleCounts[$libID] : 0;
|
||||
$itemCounts[$libID] = $docCount + $moduleCount;
|
||||
}
|
||||
|
||||
return $itemCounts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get lib files.
|
||||
*
|
||||
|
||||
@@ -11,65 +11,47 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='libs'>
|
||||
<?php if(($type == 'project' or $type == 'product')):?>
|
||||
<div class='row'>
|
||||
<?php foreach($libs as $lib):?>
|
||||
<?php if(isset($subLibs[$lib->id])): ?>
|
||||
<div class='col-md-3'>
|
||||
<?php
|
||||
$i = 0;
|
||||
$subLibCount = count($subLibs[$lib->id]);
|
||||
?>
|
||||
<div class='libs-group-heading libs-<?php echo $type?>-heading'>
|
||||
<?php
|
||||
echo html::a(inlink('objectLibs', "type=$type&objectID=$lib->id&from=doc"), $lib->name, '', "title='{$lib->name}'");
|
||||
if($subLibCount > 3) echo html::a(inlink('objectLibs', "type=$type&objectID=$lib->id&from=doc"), "{$lang->more}<i class='icon icon-double-angle-right'></i>", '', "title='{$lang->more}' class='pull-right'");
|
||||
?>
|
||||
<div class="main-row split-row" id="mainRow">
|
||||
<?php include './side.html.php';?>
|
||||
<div class="main-col" data-min-width="400">
|
||||
<div class="panel block-files block-sm no-margin">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title font-normal">
|
||||
<?php if($type == 'custom') $panelTitle = $lang->doc->custom;?>
|
||||
<?php if($type == 'product') $panelTitle = $lang->productCommon;?>
|
||||
<?php if($type == 'project') $panelTitle = $lang->projectCommon;?>
|
||||
<i class="icon icon-folder-open-o text-muted"></i> <?php echo $panelTitle;?>
|
||||
</div>
|
||||
</div>
|
||||
<div class='libs-group clearfix'>
|
||||
<?php
|
||||
$widthClass = 'w-lib-p100';
|
||||
if($subLibCount == 2) $widthClass = 'w-lib-p50';
|
||||
if($subLibCount >= 3) $widthClass = 'w-lib-p33';
|
||||
?>
|
||||
<?php foreach($subLibs[$lib->id] as $subLibID => $subLibName):?>
|
||||
<?php
|
||||
if($subLibID == 'project') $libLink = inlink('allLibs', "type=project&product=$lib->id");
|
||||
elseif($subLibID == 'files') $libLink = inlink('showFiles', "type=$type&objectID=$lib->id");
|
||||
else $libLink = inlink('browse', "libID=$subLibID");
|
||||
?>
|
||||
<a class='lib <?php echo $widthClass?>' title='<?php echo $subLibName?>' href='<?php echo $libLink ?>'>
|
||||
<img src='<?php echo $config->webRoot . 'theme/default/images/main/doc-lib.png'?>' class='file-icon' />
|
||||
<div class='lib-name' title='<?php echo $subLibName?>'><?php echo $subLibName?></div>
|
||||
</a>
|
||||
<?php if($i >= 2) break;?>
|
||||
<?php $i++;?>
|
||||
<?php endforeach; ?>
|
||||
<div class="panel-body">
|
||||
<div class="row row-grid files-grid" data-size="300">
|
||||
<?php if($type == 'product') $icon = 'icon-cube text-secondary';?>
|
||||
<?php if($type == 'project') $icon = 'icon-stack text-green';?>
|
||||
<?php if($type == 'custom') $icon = 'icon-folder text-yellow';?>
|
||||
<?php foreach($libs as $lib):?>
|
||||
<?php $link = $type != 'custom' ? $this->createLink('doc', 'objectLibs', "type=$type&objectID=$lib->id") : $this->createLink('doc', 'browse', "libID=$lib->id");?>
|
||||
<div class="col">
|
||||
<a class="file" href="<?php echo $link;?>">
|
||||
<i class="file-icon icon <?php echo $icon;?>"></i>
|
||||
<div class="file-name"><?php echo $lib->name;?></div>
|
||||
<?php if($type == 'custom'):?>
|
||||
<div class="text-primary file-info"><?php echo $itemCounts[$lib->id] . $lang->doc->item;?></div>
|
||||
<?php else:?>
|
||||
<div class="text-primary file-info"><?php echo count($subLibs[$lib->id]) . $lang->doc->item;?></div>
|
||||
<?php endif;?>
|
||||
</a>
|
||||
<?php if($type == 'custom'):?>
|
||||
<div class="actions">
|
||||
<?php common::printLink('doc', 'collect', "objectID=$lib->id&objectType=lib", "<i class='icon icon-star-empty'></i>", '', "title='{$lang->doc->collect}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'editLib', "libID=$lib->id", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link' data-toggle='modal'")?>
|
||||
<?php common::printLink('doc', 'deleteLib', "libID=$lib->id", "<i class='icon icon-trash'></i>", '', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php elseif($libs): ?>
|
||||
<div class='clearfix libs-group libs-custom <?php if(common::hasPriv('doc', 'sort')) echo 'sort'?>'>
|
||||
<?php foreach($libs as $lib):?>
|
||||
<a class='lib lib-custom' title='<?php echo $lib->name?>' href='<?php echo inlink('browse', "libID=$lib->id") ?>' data-id='<?php echo $lib->id;?>'>
|
||||
<?php if(common::hasPriv('doc', 'sort')):?>
|
||||
<i class='icon icon-move'></i>
|
||||
<?php endif;?>
|
||||
<img src='<?php echo $config->webRoot . 'theme/default/images/main/doc-lib.png'?>' class='file-icon' />
|
||||
<div class='lib-name' title='<?php echo $lib->name?>'><?php echo $lib->name?></div>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class='clearfix pager-wrapper'><?php $pager->show();?></div>
|
||||
<script>
|
||||
$(function()
|
||||
{
|
||||
$('#libs').css('min-height', $('.outer').height() - $('#featurebar').height() - 60);
|
||||
})
|
||||
</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -16,96 +16,73 @@
|
||||
var browseType = '<?php echo $browseType;?>';
|
||||
</script>
|
||||
<?php js::set('confirmDelete', $lang->doc->confirmDelete)?>
|
||||
<?php js::set('fixedMenu', $fixedMenu);?>
|
||||
<?php js::set('libID', $libID);?>
|
||||
<?php if(!$fixedMenu and $this->from != 'doc') js::set('type', 'doc');?>
|
||||
<?php if($this->cookie->browseType == 'bymenu'):?>
|
||||
<?php include dirname(__FILE__) . '/browsebymenu.html.php';?>
|
||||
<?php elseif($this->cookie->browseType == 'bytree'):?>
|
||||
<?php include dirname(__FILE__) . '/browsebytree.html.php';?>
|
||||
<?php else:?>
|
||||
<div id='featurebar'>
|
||||
<ul class='nav'>
|
||||
<li id='allTab'><?php echo html::a(inlink('browse', "libID=$libID&browseType=all¶m=0&orderBy=$orderBy&from=$from"), $lang->doc->allDoc)?></li>
|
||||
<li id='openedbymeTab'><?php echo html::a(inlink('browse', "libID=$libID&browseType=openedByMe¶m=0&orderBy=$orderBy&from=$from"), $lang->doc->openedByMe)?></li>
|
||||
<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i> <?php echo $lang->doc->searchDoc;?></a></li>
|
||||
</ul>
|
||||
<div class='actions'>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn dropdown-toggle" data-toggle="dropdown"><i class='icon icon-list'></i> <?php echo $lang->doc->browseTypeList['list']?> <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><?php echo html::a('javascript:setBrowseType("bylist")', "<i class='icon icon-list'></i> {$lang->doc->browseTypeList['list']}");?></li>
|
||||
<li><?php echo html::a('javascript:setBrowseType("bymenu")', "<i class='icon icon-th'></i> {$lang->doc->browseTypeList['menu']}");?></li>
|
||||
<li><?php echo html::a('javascript:setBrowseType("bytree")', "<i class='icon icon-branch'></i> {$lang->doc->browseTypeList['tree']}");?></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn dropdown-toggle" data-toggle="dropdown"><i class='icon icon-cog'></i> <?php echo $lang->actions?> <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<?php
|
||||
if(common::hasPriv('doc', 'editLib')) echo '<li>' . html::a(inlink('editLib', "rootID=$libID"), $lang->doc->editLib, '', "data-toggle='modal' data-type='iframe' data-width='800px'") . '</li>';
|
||||
if(common::hasPriv('doc', 'deleteLib')) echo '<li>' . html::a(inlink('deleteLib', "rootID=$libID"), $lang->doc->deleteLib, 'hiddenwin') . '</li>';
|
||||
?>
|
||||
<li><?php echo html::a(inlink('ajaxFixedMenu', "libID=$libID&type=" . ($fixedMenu ? 'remove' : 'fixed')), $fixedMenu ? $lang->doc->removeMenu : $lang->doc->fixedMenu, "hiddenwin");?></li>
|
||||
</ul>
|
||||
</div>
|
||||
<?php common::printIcon('doc', 'create', "libID=$libID&moduleID=$moduleID");?>
|
||||
</div>
|
||||
<div id='querybox' class='<?php if($browseType == 'bysearch') echo 'show';?>'></div>
|
||||
</div>
|
||||
<div class='side' id='treebox'>
|
||||
<a class='side-handle' data-id='treebox'><i class='icon-caret-left'></i></a>
|
||||
<div class='side-body'>
|
||||
<div class='panel panel-sm'>
|
||||
<div class='panel-heading nobr'><?php echo html::icon('folder-close-alt');?> <strong><?php echo $libName;?></strong></div>
|
||||
<div class='panel-body'>
|
||||
<?php echo $moduleTree;?>
|
||||
<div class='text-right'><?php common::printLink('tree', 'browse', "rootID=$libID&view=doc", $lang->doc->manageType);?></div>
|
||||
<?php if($this->from != 'doc') js::set('type', 'doc');?>
|
||||
|
||||
<div class='main-row split-row' id='mainRow'>
|
||||
<?php include './side.html.php';?>
|
||||
<?php if($this->cookie->browseType == 'bygrid'):?>
|
||||
<?php include dirname(__FILE__) . '/browsebygrid.html.php';?>
|
||||
<?php else:?>
|
||||
<div class="main-col" data-min-width="400">
|
||||
<div class="panel block-files block-sm no-margin">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title font-normal"><i class="icon icon-folder-open-o text-muted"></i> <?php echo $title;?></div>
|
||||
<nav class="panel-actions btn-toolbar">
|
||||
<div class="btn-group">
|
||||
<?php echo html::a('javascript:setBrowseType("bylist")', "<i class='icon icon-bars'></i>", '', "title='{$lang->doc->browseTypeList['list']}' class='btn btn-gray btn-icon text-primary'");?>
|
||||
<?php echo html::a('javascript:setBrowseType("bygrid")', "<i class='icon icon-cards-view'></i>", '', "title='{$lang->doc->browseTypeList['grid']}' class='btn btn-gray btn-icon'");?>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="panel-body has-table">
|
||||
<table class="table table-borderless table-hover table-files">
|
||||
<thead>
|
||||
<tr class="muted">
|
||||
<th class="c-name"><?php echo $lang->doc->title;?></th>
|
||||
<th class="c-actions"></th>
|
||||
<th class="c-num"><?php echo $lang->doc->size;?></th>
|
||||
<th class="c-user"><?php echo $lang->doc->addedBy;?></th>
|
||||
<th class="c-datetime"><?php echo $lang->doc->addedDate;?></th>
|
||||
<th class="c-datetime"><?php echo $lang->doc->editedDate;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php if(isset($modules)):?>
|
||||
<?php foreach($modules as $module):?>
|
||||
<?php $star = strpos($module->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
|
||||
<tr>
|
||||
<td class="c-name"><?php echo html::a(inlink('browse', "libID=$libID&browseType=bymodule¶m=$module->id&orderBy=$orderBy&from=$from"), "<i class='icon icon-folder text-yellow'></i> " . $module->name);?></td>
|
||||
<td class="c-actions">
|
||||
<?php common::printLink('doc', 'collect', "objectID=$module->id&objectType=module", "<i class='icon {$star}'></i>", 'hiddenwin', "title='{$lang->doc->collect}' class='btn btn-link'")?>
|
||||
</td>
|
||||
<td class="c-num"></td>
|
||||
<td class="c-user"></td>
|
||||
<td class="c-datetime"></td>
|
||||
<td class="c-datetime"></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<?php endif;?>
|
||||
<?php foreach($docs as $doc):?>
|
||||
<?php $star = strpos($doc->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
|
||||
<tr>
|
||||
<td class="c-name"><?php echo html::a(inlink('view', "docID=$doc->id"), "<i class='icon icon-file-text text-muted'></i> " . $doc->title);?></td>
|
||||
<td class="c-actions">
|
||||
<?php common::printLink('doc', 'collect', "objectID=$doc->id&objectType=doc", "<i class='icon {$star}'></i>", 'hiddenwin', "title='{$lang->doc->collect}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'edit', "docID=$doc->id", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'delete', "docID=$doc->id", "<i class='icon icon-trash'></i>", '', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
</td>
|
||||
<td class="c-num"></td>
|
||||
<td class="c-user"><?php echo zget($users, $doc->addedBy);?></td>
|
||||
<td class="c-datetime"><?php echo formatTime($doc->addedDate, 'm-d h:i');?></td>
|
||||
<td class="c-datetime"><?php echo formatTime($doc->editedDate, 'm-d h:i');?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<div class='main'>
|
||||
<script>setTreeBox();</script>
|
||||
<table class='table table-condensed table-hover table-striped tablesorter table-fixed' id='docList'>
|
||||
<thead>
|
||||
<tr>
|
||||
<?php $vars = "libID=$libID&browseType=$browseType¶m=$param&orderBy=%s&from=$from&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th> <?php common::printOrderLink('title', $orderBy, $vars, $lang->doc->title);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('addedBy', $orderBy, $vars, $lang->doc->addedBy);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('addedDate', $orderBy, $vars, $lang->doc->addedDate);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('editedDate', $orderBy, $vars, $lang->doc->editedDate);?></th>
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($docs as $key => $doc):?>
|
||||
<?php
|
||||
$viewLink = $this->createLink('doc', 'view', "docID=$doc->id");
|
||||
$canView = common::hasPriv('doc', 'view');
|
||||
?>
|
||||
<tr class='text-center'>
|
||||
<td><?php if($canView) echo html::a($viewLink, sprintf('%03d', $doc->id)); else printf('%03d', $doc->id);?></td>
|
||||
<td class='text-left' title="<?php echo $doc->title?>"><nobr><?php echo html::a($viewLink, $doc->title);?></nobr></td>
|
||||
<td><?php isset($users[$doc->addedBy]) ? print($users[$doc->addedBy]) : print($doc->addedBy);?></td>
|
||||
<td><?php echo substr($doc->addedDate, 5, 11);?></td>
|
||||
<td><?php echo substr($doc->editedDate, 5, 11);?></td>
|
||||
<td>
|
||||
<?php
|
||||
common::printIcon('doc', 'edit', "doc={$doc->id}", $doc, 'list');
|
||||
if(common::hasPriv('doc', 'delete', $doc))
|
||||
{
|
||||
$deleteURL = $this->createLink('doc', 'delete', "docID=$doc->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"docList\",confirmDelete)", '<i class="icon-remove"></i>', '', "class='btn-icon' title='{$lang->doc->delete}'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
<div class="main-col" data-min-width="400">
|
||||
<div class="panel block-files block-sm no-margin">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title font-normal"><i class="icon icon-folder-open-o text-muted"></i> <?php echo $title;?></div>
|
||||
<nav class="panel-actions btn-toolbar">
|
||||
<div class="btn-group">
|
||||
<?php echo html::a('javascript:setBrowseType("bygrid")', "<i class='icon icon-cards-view'></i>", '', "title='{$lang->doc->browseTypeList['grid']}' class='btn btn-gray btn-icon'");?>
|
||||
<?php echo html::a('javascript:setBrowseType("bylist")', "<i class='icon icon-bars'></i>", '', "title='{$lang->doc->browseTypeList['list']}' class='btn btn-gray btn-icon text-primary'");?>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row row-grid files-grid" data-size="300">
|
||||
<?php foreach($modules as $module):?>
|
||||
<?php $star = strpos($module->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
|
||||
<div class="col">
|
||||
<a class="file" href="<?php echo inlink('browse', "libID=$libID&browseType=bymodule¶m=$module->id&orderBy=$orderBy&from=$from");?>">
|
||||
<i class="file-icon icon icon-folder text-yellow"></i>
|
||||
<div class="file-name"><?php echo (strpos($module->collector, $this->app->user->account) !== false ? "<i class='icon icon-star text-yellow'></i> " : '') . $module->name;?></div>
|
||||
<div class="text-primary file-info"><?php echo $module->docCount . $lang->doc->item;?></div>
|
||||
</a>
|
||||
<div class="actions">
|
||||
<?php common::printLink('doc', 'collect', "objectID={$module->id}&objectType=module", "<i class='icon {$star}'></i>", 'hiddenwin', "title='{$lang->doc->collect}' class='btn btn-link'")?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
<?php foreach($docs as $doc):?>
|
||||
<?php $star = strpos($doc->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
|
||||
<div class="col">
|
||||
<a class="file" href="<?php echo inlink('view', "docID=$doc->id");?>">
|
||||
<i class="file-icon icon icon-file-text text-muted"></i>
|
||||
<div class="file-name"><?php echo (strpos($doc->collector, $this->app->user->account) !== false ? "<i class='icon icon-star text-yellow'></i> " : '') . $doc->title;?></div>
|
||||
<div class="text-primary file-info"><?php echo zget($users, $doc->addedBy);?></div>
|
||||
</a>
|
||||
<div class="actions">
|
||||
<?php common::printLink('doc', 'collect', "objectID={$doc->id}&objectType=doc", "<i class='icon {$star}'></i>", 'hiddenwin', "title='{$lang->doc->collect}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'edit', "docID={$doc->id}", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link' data-toggle='modal'")?>
|
||||
<?php common::printLink('doc', 'delete', "docID={$doc->id}", "<i class='icon icon-trash'></i>", '', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -11,128 +11,8 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div class="main-row spilter-row">
|
||||
<div class="side-col" style="width: 220px" data-min-width="220">
|
||||
<div class="cell">
|
||||
<header class="table-row space">
|
||||
<form method='post' action='<?php echo $this->createLink('doc', 'browse', "libID=&browseType=fastsearch");?>' class='input-control has-icon-right table-col'>
|
||||
<input id="searchDoc" type="searchDoc" name='searchDoc' class="form-control" placeholder="<?php echo $this->lang->doc->searchDoc;?>">
|
||||
<button type="submit" class="btn btn-icon btn-link input-control-icon-right"><i class="icon icon-search"></i></button>
|
||||
</form>
|
||||
<div class="table-col text-right c-sm">
|
||||
<?php echo html::a($this->createLink('doc', 'createLib'), "<i class='icon icon-plus'></i>", '', "class='btn btn-secondary btn-icon iframe'");?>
|
||||
</div>
|
||||
</header>
|
||||
<ul id="docsTree" data-ride="tree" class="tree no-margin">
|
||||
<li class="open">
|
||||
<a class="text-muted tree-toggle"><?php echo $lang->doc->fast;?></a>
|
||||
<ul>
|
||||
<?php foreach($lang->doc->fastMenuList as $type => $menu):?>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=0&browseType={$type}"), "<i class='icon {$lang->doc->fastMenuIconList[$type]}'></i> {$menu}");?>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="open">
|
||||
<a class="text-muted tree-toggle"><?php echo $lang->productCommon;?></a>
|
||||
<ul>
|
||||
<?php foreach($products as $product):?>
|
||||
<li>
|
||||
<?php echo html::a($this->createLink('doc', 'objectLibs', "type=product&objectID=$product->id"), "<i class='icon icon-cube'></i> " . $product->name);?>
|
||||
<?php if(isset($subLibs['product'][$product->id])):?>
|
||||
<ul>
|
||||
<?php foreach($subLibs['product'][$product->id] as $libID => $libName):?>
|
||||
<?php
|
||||
if($libID == 'project')
|
||||
{
|
||||
$libLink = inlink('allLibs', "type=project&product=$product->id");
|
||||
$icon = 'icon-stack';
|
||||
}
|
||||
elseif($libID == 'files')
|
||||
{
|
||||
$libLink = inlink('showFiles', "type=product&objectID=$product->id");
|
||||
$icon = 'icon-paper-clip';
|
||||
}
|
||||
else
|
||||
{
|
||||
$libLink = inlink('browse', "libID=$libID");
|
||||
$icon = 'icon-folder-outline';
|
||||
}
|
||||
?>
|
||||
<li>
|
||||
<?php echo html::a($libLink, "<i class='icon {$icon}'></i> " . $libName);?>
|
||||
<?php if(isset($modules[$libID])):?>
|
||||
<ul>
|
||||
<?php foreach($modules[$libID] as $module):?>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=$libID&browseType=byModule¶m={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name);?></li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a class="text-muted tree-toggle"><?php echo $lang->projectCommon;?></a>
|
||||
<ul>
|
||||
<?php foreach($projects as $project):?>
|
||||
<li>
|
||||
<?php echo html::a($this->createLink('doc', 'objectLibs', "type=project&objectID=$project->id"), "<i class='icon icon-cube'></i> " . $project->name);?>
|
||||
<?php if(isset($subLibs['project'][$project->id])):?>
|
||||
<ul>
|
||||
<?php foreach($subLibs['project'][$project->id] as $libID => $libName):?>
|
||||
<?php
|
||||
if($libID == 'files')
|
||||
{
|
||||
$libLink = inlink('showFiles', "type=project&objectID=$project->id");
|
||||
$icon = 'icon-paper-clip';
|
||||
}
|
||||
else
|
||||
{
|
||||
$libLink = inlink('browse', "libID=$libID");
|
||||
$icon = 'icon-paper-outline';
|
||||
}
|
||||
?>
|
||||
<li>
|
||||
<?php echo html::a($libLink, "<i class='icon $icon'></i> " . $libName);?>
|
||||
<?php if(isset($modules[$libID])):?>
|
||||
<ul>
|
||||
<?php foreach($modules[$libID] as $module):?>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=$libID&browseType=byModule¶m={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name);?></li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a class="text-muted tree-toggle"><?php echo $lang->doc->custom;?></a>
|
||||
<ul>
|
||||
<?php foreach($customLibs as $libID => $libName):?>
|
||||
<li>
|
||||
<?php echo html::a(inlink('browse', "libID=$libID"), "<i class='icon icon-folder-outline'></i> " . $libName);?>
|
||||
<?php if(isset($modules[$libID])):?>
|
||||
<ul>
|
||||
<?php foreach($modules[$libID] as $module):?>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=$libID&browseType=byModule¶m={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name);?></li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class='main-row split-row' id='mainRow'>
|
||||
<?php include './side.html.php';?>
|
||||
<div class="main-col" data-min-width="400">
|
||||
<div class="row">
|
||||
<div class="col-sm-7">
|
||||
@@ -140,7 +20,7 @@
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title"><?php echo $lang->doc->orderByEdit;?></div>
|
||||
<nav class="panel-actions nav nav-default">
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=0&browseTyp=bymenu&module=0&orderBy=editeddate_desc"), 'MORE', '', "title='{$lang->more}'");?></li>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=0&browseTyp=bygrid&module=0&orderBy=editeddate_desc"), 'MORE', '', "title='{$lang->more}'");?></li>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="panel-body has-table">
|
||||
|
||||
@@ -11,27 +11,72 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='featurebar'>
|
||||
<strong><?php echo $object->name?></strong>
|
||||
<div class='actions'><?php echo html::backButton();?></div>
|
||||
</div>
|
||||
<div id='libs'>
|
||||
<div class='libs-group clearfix <?php if(common::hasPriv('doc', 'sort')) echo 'sort'?>'>
|
||||
<?php foreach($libs as $libID => $libName):?>
|
||||
<?php
|
||||
if($libID == 'project' and $from != 'doc') continue;
|
||||
<div class="main-row split-row" id="mainRow">
|
||||
<?php include './side.html.php';?>
|
||||
<div class="main-col" data-min-width="400">
|
||||
<div class="panel block-files block-sm no-margin">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title font-normal">
|
||||
<i class="icon icon-folder-open-o text-muted"></i> <?php echo $object->name;?>
|
||||
</div>
|
||||
<nav class="panel-actions btn-toolbar">
|
||||
<div class="dropdown">
|
||||
<button type="button" title="<?php echo $lang->customConfig;?>" class="btn btn-gray btn-icon" data-toggle="dropdown"><i class="icon icon-cog"></i></button>
|
||||
<div class="dropdown-menu pull-right col-lg" id="pageSetting">
|
||||
<form class='with-padding load-indicator' id='pageSettingForm' method='post' target='hiddenwin' action='<?php echo $this->createLink('custom', 'ajaxSaveCustomFields', 'module=doc§ion=custom&key=objectLibs');?>'>
|
||||
<div><?php echo $lang->customConfig;?></div>
|
||||
<div class="row row-grid with-padding">
|
||||
<?php foreach($customObjectLibs as $libType => $libTypeName):?>
|
||||
<div class="col-xs-12">
|
||||
<?php $checked = (strpos(",$showLibs,", ",$libType,") !== false) ? " checked ='checked'" : "";?>
|
||||
<div class="checkbox-primary">
|
||||
<input type="checkbox" name="fields[]" value="<?php echo $libType;?>" <?php echo $checked;?> id="fields<?php echo $libType;?>">
|
||||
<label for="fields<?php echo $libType;?>"><?php echo $libTypeName;?></label>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
<div>
|
||||
<?php echo html::submitButton($lang->save);?>
|
||||
<?php echo html::commonButton($lang->cancel, '', "btn btn-gray close-dropdown");?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
<div class='panel-body'>
|
||||
<div class="row row-grid files-grid" data-size="300">
|
||||
<?php foreach($libs as $libID => $lib):?>
|
||||
<?php if($libID == 'project' and $from != 'doc') continue;?>
|
||||
<?php if(strpos($this->config->doc->custom->objectLibs, 'files') === false && $libID == 'files') continue;?>
|
||||
<?php if(strpos($this->config->doc->custom->objectLibs, 'customFiles') === false && !$lib->main) continue;?>
|
||||
|
||||
$libLink = inlink('browse', "libID=$libID&browseType=all¶m=0&orderBy=id_desc&from=$from");
|
||||
if($libID == 'project') $libLink = inlink('allLibs', "type=project&product=$object->id");
|
||||
if($libID == 'files') $libLink = inlink('showFiles', "type=$type&objectID=$object->id");
|
||||
?>
|
||||
<a class='lib <?php echo $libID == 'files' ? 'files' : '';?>' title='<?php echo $libName?>' href='<?php echo $libLink?>' data-id='<?php echo $libID;?>'>
|
||||
<?php if($libID != 'files' and $libID != 'project' and common::hasPriv('doc', 'sort')):?><i class='icon icon-move'></i><?php endif;?>
|
||||
<img src='<?php echo $config->webRoot . 'theme/default/images/main/doc-lib.png'?>' class='file-icon' />
|
||||
<div class='lib-name' title='<?php echo $libName?>'><?php echo $libName?></div>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
<?php if(common::hasPriv('doc', 'createLib')) echo html::a(inlink('createLib', "type=$type&objectID={$object->id}"), "<i class='icon icon-plus'></i>", '', "class='lib addbtn' data-toggle='modal' data-type='iframe' title='{$lang->doc->createLib}'")?>
|
||||
<?php $libLink = inlink('browse', "libID=$libID&browseType=all¶m=0&orderBy=id_desc&from=$from");?>
|
||||
<?php if($libID == 'project') $libLink = inlink('allLibs', "type=project&product=$object->id");?>
|
||||
<?php if($libID == 'files') $libLink = inlink('showFiles', "type=$type&objectID=$object->id");?>
|
||||
|
||||
<?php $icon = 'icon-folder text-yellow';?>
|
||||
<?php if($libID == 'files') $icon = 'icon-paper-clip text-brown';?>
|
||||
|
||||
<div class="col">
|
||||
<a class="file" href="<?php echo $libLink;?>">
|
||||
<i class="file-icon icon <?php echo $icon;?>"></i>
|
||||
<div class="file-name"><?php echo ($libID != 'project' && $libID != 'files' && strpos($lib->collector, $this->app->user->account) !== false ? "<i class='icon icon-star text-yellow'></i> " : '') . $lib->name;?></div>
|
||||
<div class="text-primary file-info"><?php echo $lib->allCount . $lang->doc->item;?></div>
|
||||
</a>
|
||||
<?php if($libID != 'project' and $libID != 'files'):?>
|
||||
<div class="actions">
|
||||
<?php common::printLink('doc', 'collect', "objectID=$libID&objectType=doclib", "<i class='icon icon-star-empty'></i>", 'hiddenwin', "title='{$lang->doc->collect}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'editLib', "libID=$libID", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link' data-toggle='modal'")?>
|
||||
<?php common::printLink('doc', 'deleteLib', "libID=$libID", "<i class='icon icon-trash'></i>", '', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php js::set('type', 'doc');?>
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
$products = $this->doc->getLimitLibs('product');
|
||||
$projects = $this->doc->getLimitLibs('project');
|
||||
$customLibs = $this->doc->getLimitLibs('custom');
|
||||
$allModules = $this->loadModel('tree')->getDocStructure();
|
||||
|
||||
$productSubLibs = $this->doc->getSubLibGroups('product', array_keys($products));
|
||||
$projectSubLibs = $this->doc->getSubLibGroups('project', array_keys($projects));
|
||||
?>
|
||||
<div class="side-col" style="width: 220px" data-min-width="220">
|
||||
<div class="cell">
|
||||
<header class="table-row space">
|
||||
<form method='post' action='<?php echo $this->createLink('doc', 'browse', "libID=&browseType=fastsearch");?>' class='input-control has-icon-right table-col'>
|
||||
<input id="searchDoc" type="searchDoc" name='searchDoc' class="form-control" placeholder="<?php echo $this->lang->doc->searchDoc;?>">
|
||||
<button type="submit" class="btn btn-icon btn-link input-control-icon-right"><i class="icon icon-search"></i></button>
|
||||
</form>
|
||||
<div class="table-col text-right c-sm">
|
||||
<?php echo html::a($this->createLink('doc', 'createLib'), "<i class='icon icon-plus'></i>", '', "class='btn btn-secondary btn-icon iframe'");?>
|
||||
</div>
|
||||
</header>
|
||||
<ul id="docsTree" data-ride="tree" class="tree no-margin">
|
||||
<li class="open">
|
||||
<a class="text-muted tree-toggle"><?php echo $lang->doc->fast;?></a>
|
||||
<ul>
|
||||
<?php foreach($lang->doc->fastMenuList as $menuType => $menu):?>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=0&browseType={$menuType}"), "<i class='icon {$lang->doc->fastMenuIconList[$menuType]}'></i> {$menu}");?>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="open">
|
||||
<?php echo html::a($this->createLink('doc', 'allLibs', "type=product"), $lang->productCommon, '', "class='text-muted'");?>
|
||||
<ul>
|
||||
<?php foreach($products as $product):?>
|
||||
<li>
|
||||
<?php echo html::a($this->createLink('doc', 'objectLibs', "type=product&objectID=$product->id"), "<i class='icon icon-cube'></i> " . $product->name);?>
|
||||
<?php if(isset($productSubLibs[$product->id])):?>
|
||||
<ul>
|
||||
<?php foreach($productSubLibs[$product->id] as $subLibID => $subLibName):?>
|
||||
<?php
|
||||
if($subLibID == 'project')
|
||||
{
|
||||
$subLibLink = inlink('allLibs', "type=project&product=$product->id");
|
||||
$icon = 'icon-stack';
|
||||
}
|
||||
elseif($subLibID == 'files')
|
||||
{
|
||||
$subLibLink = inlink('showFiles', "type=product&objectID=$product->id");
|
||||
$icon = 'icon-paper-clip';
|
||||
}
|
||||
else
|
||||
{
|
||||
$subLibLink = inlink('browse', "libID=$subLibID");
|
||||
$icon = 'icon-folder-outline';
|
||||
}
|
||||
?>
|
||||
<li>
|
||||
<?php echo html::a($subLibLink, "<i class='icon {$icon}'></i> " . $subLibName);?>
|
||||
<?php if(isset($allModules[$subLibID])):?>
|
||||
<ul>
|
||||
<?php foreach($allModules[$subLibID] as $module):?>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=$subLibID&browseType=byModule¶m={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name);?></li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<?php echo html::a($this->createLink('doc', 'allLibs', "type=project"), $lang->projectCommon, '', "class='text-muted'");?>
|
||||
<ul>
|
||||
<?php foreach($projects as $project):?>
|
||||
<li>
|
||||
<?php echo html::a($this->createLink('doc', 'objectLibs', "type=project&objectID=$project->id"), "<i class='icon icon-cube'></i> " . $project->name);?>
|
||||
<?php if(isset($projectSubLibs[$project->id])):?>
|
||||
<ul>
|
||||
<?php foreach($projectSubLibs[$project->id] as $subLibID => $subLibName):?>
|
||||
<?php
|
||||
if($subLibID == 'files')
|
||||
{
|
||||
$subLibLink = inlink('showFiles', "type=project&objectID=$project->id");
|
||||
$icon = 'icon-paper-clip';
|
||||
}
|
||||
else
|
||||
{
|
||||
$subLibLink = inlink('browse', "libID=$subLibID");
|
||||
$icon = 'icon-paper-outline';
|
||||
}
|
||||
?>
|
||||
<li>
|
||||
<?php echo html::a($subLibLink, "<i class='icon $icon'></i> " . $subLibName);?>
|
||||
<?php if(isset($allModules[$subLibID])):?>
|
||||
<ul>
|
||||
<?php foreach($allModules[$subLibID] as $module):?>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=$subLibID&browseType=byModule¶m={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name);?></li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<?php echo html::a($this->createLink('doc', 'allLibs', "type=custom"), $lang->doc->custom, '', "class='text-muted'");?>
|
||||
<ul>
|
||||
<?php foreach($customLibs as $subLibID => $subLibName):?>
|
||||
<li>
|
||||
<?php echo html::a(inlink('browse', "libID=$subLibID"), "<i class='icon icon-folder-outline'></i> " . $subLibName);?>
|
||||
<?php if(isset($allModules[$subLibID])):?>
|
||||
<ul>
|
||||
<?php foreach($allModules[$subLibID] as $module):?>
|
||||
<li><?php echo html::a($this->createLink('doc', 'browse', "libID=$subLibID&browseType=byModule¶m={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name);?></li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -122,7 +122,7 @@
|
||||
<?php $i = 0;?>
|
||||
<?php foreach($docLibs as $libID => $docLib):?>
|
||||
<?php if($i > 8) break;?>
|
||||
<div class="col-xs-6"><?php echo html::a($this->createLink('doc', 'browse', "libID=$libID&browseTyp=all¶m=&orderBy=&from=project"), "<i class='icon icon-folder text-yellow'></i> " . $docLib);?></div>
|
||||
<div class="col-xs-6"><?php echo html::a($this->createLink('doc', 'browse', "libID=$libID&browseTyp=all¶m=&orderBy=&from=project"), "<i class='icon icon-folder text-yellow'></i> " . $docLib->name);?></div>
|
||||
<?php $i++;?>
|
||||
<?php endforeach;?>
|
||||
<div class="col-xs-6">
|
||||
|
||||
Reference in New Issue
Block a user