diff --git a/module/doc/css/common.css b/module/doc/css/common.css index 53b27e1613..77db29a06e 100644 --- a/module/doc/css/common.css +++ b/module/doc/css/common.css @@ -23,9 +23,11 @@ #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-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-list-heading:hover {border-color: #114f8e; cursor: pointer; color: #114f8e;} -.lib-menu-list-heading > .icon {display: none} +.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;} diff --git a/module/doc/js/common.js b/module/doc/js/common.js index 024246a034..545ef8ee64 100644 --- a/module/doc/js/common.js +++ b/module/doc/js/common.js @@ -21,34 +21,35 @@ function showLibMenu() var productCount = 0, projectCount = 0, customCount = 0; $.each(data.product, function(idx, product) { - $list.append('
[ ' + product.name + ' ]
'); + $list.append('
[ ' + product.name + ' ]
'); $.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('' + libName + ''); + $list.append('' + libName + ''); items[itemId] = {type: 'product', id: libId, name: libName, objectId: product.id, product: product.name, search: (libName + ' ' + product.name).toLowerCase()}; productCount++; }); - $list.append(''); + $list.append(''); }); $list.toggleClass('lib-list-bg', productCount > 4); $list = $('#libMenuProjectGroup > .lib-menu-list'); $.each(data.project, function(idx, project) { - $list.append('
[ ' + project.name + ' ]
'); + $list.append('
[ ' + project.name + ' ]
'); $.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('' + libName + ''); + $list.append('' + libName + ''); items[itemId] = {type: 'project', id: libId, name: libName, objectId: project.id, project: project.name, search: (libName + ' ' + project.name).toLowerCase()}; projectCount++; }); - $list.append(''); + $list.append(''); }); + $list.find('[data-status="done"]').addClass('hidden'); $list.toggleClass('lib-list-bg', projectCount > 4); $list = $('#libMenuCustomGroup > .lib-menu-list'); @@ -94,6 +95,15 @@ function showLibMenu() 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) @@ -166,6 +176,22 @@ function showLibMenu() 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();}); diff --git a/module/doc/model.php b/module/doc/model.php index aba5cadfb6..6f1c88e754 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -42,7 +42,7 @@ class docModel extends model } } - $selectHtml = "{$libs[$libID]}
{$this->lang->doc->libTypeList['product']}
{$this->lang->doc->libTypeList['project']}
{$this->lang->doc->libTypeList['custom']}
"; + $selectHtml = "{$libs[$libID]}
{$this->lang->doc->libTypeList['product']}
{$this->lang->doc->libTypeList['project']}
已结束
{$this->lang->doc->libTypeList['custom']}
"; common::setMenuVars($this->lang->doc->menu, 'list', $selectHtml); common::setMenuVars($this->lang->doc->menu, 'crumb', $this->getCrumbs($libID, $moduleID)); } @@ -691,7 +691,7 @@ class docModel extends model } } $productIdList = array_keys($productLibs); - $products = $this->dao->select('id,name')->from(TABLE_PRODUCT)->where('id')->in($productIdList)->andWhere('deleted')->eq('0')->orderBy('`order`_desc')->fetchPairs('id', 'name'); + $products = $this->dao->select('id,name,status')->from(TABLE_PRODUCT)->where('id')->in($productIdList)->andWhere('deleted')->eq('0')->orderBy('`order`_desc')->fetchAll(); $hasProject = $this->dao->select('DISTINCT product')->from(TABLE_PROJECTPRODUCT)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id') ->where('t1.product')->in($productIdList) @@ -701,25 +701,31 @@ class docModel extends model $hasLibsPriv = common::hasPriv('doc', 'allLibs'); $hasFilesPriv = common::hasPriv('doc', 'showFiles'); $productOrderLibs = array(); - foreach($products as $productID => $productName) + foreach($products as $product) { + $productID = $product->id; + $productName = $product->name; if(isset($productLibs[$productID])) { - $productOrderLibs[$productID]['id'] = $productID; - $productOrderLibs[$productID]['name'] = $productName; + $productOrderLibs[$productID]['id'] = $productID; + $productOrderLibs[$productID]['name'] = $productName; + $productOrderLibs[$productID]['status'] = $product->status; foreach($productLibs[$productID] as $libID => $libName) $productOrderLibs[$productID]['libs'][$libID] = $libName; if(isset($hasProject[$productID]) and $hasLibsPriv) $productOrderLibs[$productID]['libs']['project'] = $this->lang->doc->systemLibs['project']; if($hasFilesPriv) $productOrderLibs[$productID]['libs']['files'] = $this->lang->doclib->files; } } - $projects = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->in(array_keys($projectLibs))->andWhere('deleted')->eq('0')->orderBy('`order`_desc')->fetchPairs('id', 'name'); + $projects = $this->dao->select('id,name,status')->from(TABLE_PROJECT)->where('id')->in(array_keys($projectLibs))->andWhere('deleted')->eq('0')->orderBy('`order`_desc')->fetchAll(); $projectOrderLibs = array(); - foreach($projects as $projectID => $projectName) + foreach($projects as $project) { + $projectID = $project->id; + $projectName = $project->name; if(isset($projectLibs[$projectID])) { - $projectOrderLibs[$projectID]['id'] = $projectID; - $projectOrderLibs[$projectID]['name'] = $projectName; + $projectOrderLibs[$projectID]['id'] = $projectID; + $projectOrderLibs[$projectID]['name'] = $projectName; + $projectOrderLibs[$projectID]['status'] = $project->status; foreach($projectLibs[$projectID] as $libID => $libName) $projectOrderLibs[$projectID]['libs'][$libID] = $libName; if($hasFilesPriv) $projectOrderLibs[$projectID]['libs']['files'] = $this->lang->doclib->files; }