diff --git a/module/doc/control.php b/module/doc/control.php index 8a6655c293..6329b9bdbd 100644 --- a/module/doc/control.php +++ b/module/doc/control.php @@ -537,56 +537,6 @@ class doc extends control } } - /** - * Ajax get drop menu. - * - * @param int $productID - * @param string $module - * @param string $method - * @param string $extra - * @access public - * @return void - */ - public function ajaxGetDropMenu($libID, $module, $method, $extra) - { - $this->view->link = $this->doc->getDocLink($module, $method, $extra); - $this->view->libID = $libID; - $this->view->module = $module; - $this->view->method = $method; - $this->view->extra = $extra; - $this->view->libs = $this->doc->getLibs($extra); - - $this->display(); - } - - /** - * The results page of search. - * - * @param string $keywords - * @param string $module - * @param string $method - * @param mix $extra - * @access public - * @return void - */ - public function ajaxGetMatchedItems($keywords, $module, $method, $extra) - { - $libs = $this->dao->select('*')->from(TABLE_DOCLIB)->where('deleted')->eq(0) - ->andWhere('name')->like("%$keywords%") - ->beginIF($extra == 'product' or $extra == 'project')->andWhere($extra)->ne(0)->fi() - ->orderBy('`id` desc') - ->fetchAll(); - foreach($libs as $key => $lib) - { - if(!$this->doc->checkPriv($lib)) unset($libs[$key]); - } - - $this->view->link = $this->doc->getDocLink($module, $method, $extra); - $this->view->libs = $libs; - $this->view->keywords = $keywords; - $this->display(); - } - /** * Ajax get modules by libID. * @@ -658,39 +608,40 @@ class doc extends control * Show all libs by type. * * @param string $type - * @param string $extra + * @param string $product * @param int $recTotal * @param int $recPerPage * @param int $pageID * @access public * @return void */ - public function allLibs($type, $extra = '', $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function allLibs($type, $product = '', $recTotal = 0, $recPerPage = 20, $pageID = 1) { $libName = isset($this->lang->doc->systemLibs[$type]) ? $this->lang->doc->systemLibs[$type] : $this->lang->doc->custom; - $this->doc->setMenu(array($this->lang->doclib->select), 0); + if($product) + { + $this->view->product = $this->product->getById($product); + $libName = $this->view->product->name; + } $this->view->title = $libName; $this->view->position[] = $libName; + $this->doc->setMenu(array($product ? $libName : $this->lang->doclib->select), 0); + /* Load pager. */ $this->app->loadClass('pager', $static = true); $pager = new pager($recTotal, $recPerPage, $pageID); - $libs = $this->doc->getAllLibsByType($type, $pager, $extra); + $libs = $this->doc->getAllLibsByType($type, $pager, $product); $subLibs = array(); if($type == 'product' or $type == 'project') $subLibs = $this->doc->getSubLibGroups($type, array_keys($libs)); - if($extra) - { - parse_str($extra); - if(isset($product)) $this->view->product = $this->product->getById($product); - } $this->view->type = $type; $this->view->libs = $libs; $this->view->subLibs = $subLibs; $this->view->pager = $pager; - $this->view->extra = $extra; + $this->view->product = $product; $this->display(); } @@ -709,6 +660,9 @@ class doc extends control $this->app->session->set('storyList', $uri); $this->app->session->set('docList', $uri); + $table = $type == 'product' ? TABLE_PRODUCT : TABLE_PROJECT; + $object = $this->dao->select('id,name')->from($table)->where('id')->eq($objectID)->fetch(); + /* According the from, set menus. */ if($this->from == 'product') { @@ -726,16 +680,13 @@ class doc extends control } else { - $this->doc->setMenu(array($this->lang->doclib->files), 0); + $this->doc->setMenu(array($object->name), 0); } /* Load pager. */ $this->app->loadClass('pager', $static = true); $pager = new pager($recTotal, $recPerPage, $pageID); - $table = $type == 'product' ? TABLE_PRODUCT : TABLE_PROJECT; - $object = $this->dao->select('id,name')->from($table)->where('id')->eq($objectID)->fetch(); - $this->view->title = $object->name; $this->view->position[] = $object->name; diff --git a/module/doc/css/common.css b/module/doc/css/common.css index 9fb075a4b1..bc8e8e1ecc 100644 --- a/module/doc/css/common.css +++ b/module/doc/css/common.css @@ -1,9 +1,9 @@ .libs-group-heading {color: #808080; border-bottom:1px solid #ddd; padding:8px;} -.libs-group-heading a{overflow: hidden; white-space: nowrap;} +.libs-group-heading a{overflow: hidden; white-space: nowrap; text-overflow: ellipsis;} .libs-group{padding:10px 10px 10px 10px;} .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;} +.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} .w-lib-p100{width:100%;} .w-lib-p50{width:47%;} @@ -27,13 +27,13 @@ .lib-menu-list-heading:hover {border-color: #114f8e; cursor: pointer; color: #114f8e;} .lib-menu-list-heading > .icon {display: none} .lib-menu-list {max-height: 500px; overflow-y: auto; min-height: 100px;} -.list-menu-item-heading {padding: 0 10px; font-weight: bold; color: #a1a1a1; float: left; width: 100%;} +.list-menu-item-heading {padding: 0 10px; font-weight: bold; color: #141414; white-space: nowrap; text-overflow: ellipsis; overflow:hidden; float: left; max-width:50%} .list-menu-item-heading > .icon {display: inline-block; width: 18px;} -.list-menu-item + .list-menu-item-heading {border-top: 1px dotted #ddd;} -.list-menu-item {padding: 0 8px 0 10px; display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; width: 100%; float: left; width: 100%} +.list-menu-item {padding: 0 8px 0 10px; display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; float: left} .list-menu-item.current {background-color: #EBF2F9;} .list-menu-item.active, .list-menu-item:hover {background-color: #e5e5e5; color: #1a53ff} +.list-menu-item-footer {clear:left; border-top: 1px dotted #ddd;} #searchLib {padding: 2px 8px; height: 28px; max-width: 190px;} #dropMenu[data-filter] #libMenuGroups {table-layout: auto;} @@ -57,42 +57,42 @@ @media (min-width: 880px) { #dropMenu {min-width: 850px;} - .lib-menu-lg .lib-list-bg .list-menu-item {width: 50%;} - #dropMenu.lib-menu-lg[data-filter] .list-menu-item {width: 25%;} + .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 {width: 50%;} - #dropMenu.lib-menu-lg[data-filter] .list-menu-item {width: 20%;} + #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 {width: 50%;} - #dropMenu .lib-list-bg .list-menu-item {width: 33.33333333%;} - #dropMenu.lib-menu-lg[data-filter] .list-menu-item {width: 16.666667%;} + #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 {width: 12.5%;} + #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 {width: 25%;} - #dropMenu.lib-menu-lg[data-filter] .list-menu-item {width: 10%;} + #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 {width: 33.3333333%;} - #dropMenu .lib-list-bg .list-menu-item {width: 20%;} + #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 {width: 25%;} - #dropMenu.lib-menu-lg[data-filter] .list-menu-item {width: 8.333333%;} + #dropMenu .list-menu-item {max-width: 25%;} + #dropMenu.lib-menu-lg[data-filter] .list-menu-item {max-width: 8.333333%;} } diff --git a/module/doc/css/index.css b/module/doc/css/index.css index 3c30337744..89bc233945 100644 --- a/module/doc/css/index.css +++ b/module/doc/css/index.css @@ -4,7 +4,8 @@ #libs .libs-group{border:1px solid #ddd; border-top:0px; margin-bottom:20px;} #libs .libs-group.lib-more{border:0px; text-align:center; height:120px; line-height:110px;} #libs .libs-group.lib-more:hover{background-color: #EBF2F9} -#libs .libs-custom-heading{text-align:center; height:120px; line-height:110px;} +#libs .libs-custom-heading{text-align:center; height:120px; line-height:110px; position: relative;} #libs .libs-custom-heading:hover{background-color: #EBF2F9} #libs .libs-custom-heading a{display:block;height:100%;} +#libs .libs-custom-heading .lable-custom{position: absolute;left:8px;} #libs hr {margin-top:0px;} diff --git a/module/doc/js/common.js b/module/doc/js/common.js index c01f81b762..caf24dafe3 100644 --- a/module/doc/js/common.js +++ b/module/doc/js/common.js @@ -21,22 +21,24 @@ function showLibMenu() var productCount = 0, projectCount = 0, customCount = 0; $.each(data.product, function(idx, product) { - $list.append('
'); + $list.append(''); $.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 + ''); items[itemId] = {type: 'product', id: libId, name: libName, objectId: product.id, product: product.name, search: (libName + ' ' + product.name).toLowerCase()}; productCount++; }); + $list.append(''); }); $list.toggleClass('lib-list-bg', productCount > 4); $list = $('#libMenuProjectGroup > .lib-menu-list'); $.each(data.project, function(idx, project) { - $list.append(''); + $list.append(''); $.each(project.libs, function(libId, libName) { var url = libId === 'files' ? createLink('doc', 'showFiles', 'type=project&objectID=' + project.id) : createLink('doc', 'browse', 'libID=' + libId); @@ -45,6 +47,7 @@ function showLibMenu() items[itemId] = {type: 'project', id: libId, name: libName, objectId: project.id, project: project.name, search: (libName + ' ' + project.name).toLowerCase()}; projectCount++; }); + $list.append(''); }); $list.toggleClass('lib-list-bg', projectCount > 4); @@ -75,6 +78,7 @@ function showLibMenu() 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) { @@ -83,12 +87,13 @@ function showLibMenu() 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').removeClass('hidden'); + $menu.find('.list-menu-item.hidden,.list-menu-item-heading.hidden,.list-menu-item-footer.hidden').removeClass('hidden'); } $menu.find('.list-menu-item:not(.hidden)').first().addClass('active'); }).on('keydown', function(e) diff --git a/module/doc/model.php b/module/doc/model.php index 8cb5d50f12..a798361657 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -24,8 +24,6 @@ class docModel extends model */ public function setMenu($libs, $libID = 0, $moduleID = 0) { - $currentModule = 'doc'; - $currentMethod = 'browse'; if($libID) { $lib = $this->getLibById($libID); @@ -34,6 +32,14 @@ class docModel extends model echo(js::alert($this->lang->doc->accessDenied)); die(js::locate('back')); } + + if($lib->product or $lib->project) + { + $table = $lib->product ? TABLE_PRODUCT : TABLE_PROJECT; + $objectID = $lib->product ? $lib->product : $lib->project; + $object = $this->dao->select('id,name')->from($table)->where('id')->eq($objectID)->fetch(); + if($object) $libs[$libID] = $object->name . ' / ' . $lib->name; + } } $selectHtml = "{$libs[$libID]}