* finish task #2803.

This commit is contained in:
wangyidong
2016-11-14 15:52:38 +08:00
parent f8acec2392
commit 2d6f8ac439
3 changed files with 52 additions and 18 deletions
+5 -3
View File
@@ -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;}
+32 -6
View File
@@ -21,34 +21,35 @@ function showLibMenu()
var productCount = 0, projectCount = 0, customCount = 0;
$.each(data.product, function(idx, product)
{
$list.append('<div class="list-menu-item-heading" data-product="' + product.id + '">[ ' + product.name + ' ]</div>');
$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++) + '" title="' + product.name + '/' + libName + '" id="' + itemId + '" href="' + url + '" class="list-menu-item" data-type="product" data-product="' + product.id + '" data-id="' + libId + '">' + libName + '</a>');
$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-product="' + product.id + '"></div>');
$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-project="' + project.id + '">[ ' + project.name + ' ]</div>');
$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++) + '" title="' + project.name + '/' + libName + '" id="' + itemId + '" href="' + url + '" class="list-menu-item" data-type="project" data-project="' + project.id + '" data-id="' + libId + '">' + libName + '</a>');
$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-project="' + project.id + '"></div>');
$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');
@@ -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();});
+15 -9
View File
@@ -42,7 +42,7 @@ class docModel extends model
}
}
$selectHtml = "<a id='currentItem' data-lib-id='$libID' href=\"javascript:showLibMenu()\">{$libs[$libID]} <span class='icon-caret-down'></span></a><div id='dropMenu'><i class='icon icon-spin icon-spinner'></i><div id='libMenu'><div id='libMenuHeading'><input id='searchLib' type='search' placeholder='{$this->lang->doc->searchDoc}' class='form-control'></div><div id='libMenuGroups' class='clearfix'><div class='lib-menu-group' id='libMenuProductGroup'><div class='lib-menu-list-heading' data-type='product'>{$this->lang->doc->libTypeList['product']}<i class='icon icon-remove'></i></div><div class='lib-menu-list clearfix'></div></div><div class='lib-menu-group' id='libMenuProjectGroup'><div class='lib-menu-list-heading' data-type='project'>{$this->lang->doc->libTypeList['project']}<i class='icon icon-remove'></i></div><div class='lib-menu-list clearfix'></div></div><div class='lib-menu-group' id='libMenuCustomGroup'><div class='lib-menu-list-heading' data-type='custom'>{$this->lang->doc->libTypeList['custom']}<i class='icon icon-remove'></i></div><div class='lib-menu-list clearfix'></div></div></div></div></div>";
$selectHtml = "<a id='currentItem' data-lib-id='$libID' href=\"javascript:showLibMenu()\">{$libs[$libID]} <span class='icon-caret-down'></span></a><div id='dropMenu'><i class='icon icon-spin icon-spinner'></i><div id='libMenu'><div id='libMenuHeading'><input id='searchLib' type='search' placeholder='{$this->lang->doc->searchDoc}' class='form-control'></div><div id='libMenuGroups' class='clearfix'><div class='lib-menu-group' id='libMenuProductGroup'><div class='lib-menu-list-heading' data-type='product'>{$this->lang->doc->libTypeList['product']}<i class='icon icon-remove'></i></div><div class='lib-menu-list clearfix'></div></div><div class='lib-menu-group' id='libMenuProjectGroup'><div class='lib-menu-list-heading' data-type='project'>{$this->lang->doc->libTypeList['project']}<i class='icon icon-remove'></i></div><div class='lib-menu-project-done'>已结束<i class='icon icon-remove'></i></div><div class='lib-menu-list clearfix'></div></div><div class='lib-menu-group' id='libMenuCustomGroup'><div class='lib-menu-list-heading' data-type='custom'>{$this->lang->doc->libTypeList['custom']}<i class='icon icon-remove'></i></div><div class='lib-menu-list clearfix'></div></div></div></div></div>";
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;
}