* finish task #2803.
This commit is contained in:
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user