* finish task #5030,5029.

This commit is contained in:
wangyidong
2018-10-16 16:41:40 +08:00
parent a8b94bb6c0
commit f74a4b1e36
9 changed files with 133 additions and 111 deletions
+14 -1
View File
@@ -161,10 +161,22 @@ class doc extends control
$this->view->itemCounts = $this->doc->statLibCounts(array_keys($libs));
}
$modules = $this->doc->getDocMenu($libID, $moduleID, $orderBy == 'title_asc' ? 'name_asc' : 'id_desc', $browseType);
if(!empty($lib) and (!empty($lib->product) or !empty($lib->project)))
{
$count = $this->dao->select('count(*) as count')->from(TABLE_DOCLIB)->where('project')->eq($lib->project)->andWhere('product')->eq($lib->product)->fetch('count');
if($count == 1)
{
$objectLibs = $this->doc->getLibsByObject($type, $lib->$type);
if(isset($objectLibs['project'])) $modules['project'] = $objectLibs['project'];
if(isset($objectLibs['files'])) $modules['files'] = $objectLibs['files'];
}
}
$this->view->breadTitle = $title;
$this->view->libID = $libID;
$this->view->moduleID = $moduleID;
$this->view->modules = $this->doc->getDocMenu($libID, $moduleID, $orderBy == 'title_asc' ? 'name_asc' : 'id_desc', $browseType);
$this->view->modules = $modules;
$this->view->docs = $this->doc->getDocsByBrowseType($libID, $browseType, $queryID, $moduleID, $sort, $pager);
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->orderBy = $orderBy;
@@ -174,6 +186,7 @@ class doc extends control
$this->view->from = $from;
$this->view->pager = $pager;
$this->view->libs = $libs;
$this->view->lib = $libID ? $lib : '';
$this->display();
}
+1 -1
View File
@@ -31,7 +31,7 @@
.files-grid {padding: 0 10px;}
.files-grid .col {width: 167px; text-align: center; padding: 0; margin-bottom: 10px;}
.files-grid .actions {position: absolute; bottom: -38px; left: 0; right: 0; background: #E9F2FB; z-index: 10; opacity: 0; transition: opacity .2s; padding-bottom: 8px; border-radius: 0 0 3px 3px; padding-top: 8px;}
.files-grid .actions {position: absolute; bottom: -38px; height:50px; left: 0; right: 0; background: #E9F2FB; z-index: 10; opacity: 0; transition: opacity .2s; padding-bottom: 8px; border-radius: 0 0 3px 3px; padding-top: 8px;}
.files-grid .col:hover .actions {opacity: 1;}
.files-grid .file {padding: 10px; cursor: pointer; display: block; border-radius: 2px; transition: background-color .2s; border-radius: 3px 3px 0 0}
.files-grid .col:hover .file {background-color: #E9F2FB;}
+2 -1
View File
@@ -132,7 +132,8 @@ $(document).ready(function()
var resizeCols = function() {
var cellHeight = $(window).height() - $('#footer').outerHeight() - $('#header').outerHeight() - 40;
$cols.children('.panel,.cell').height(cellHeight).css('maxHeight', cellHeight);
$cols.children('.panel').height(cellHeight).css('maxHeight', cellHeight);
$cols.find('.tab-content').height(cellHeight - $cols.find('.nav-tabs').height()).css('maxHeight', cellHeight - $cols.find('.nav-tabs').height()).css('overflow-y', 'auto');
};
$(window).on('resize', resizeCols);
+4
View File
@@ -166,3 +166,7 @@ $lang->doclib->product = $lang->productCommon . ' Library';
$lang->doclib->main['product'] = 'Main Library';
$lang->doclib->main['project'] = 'Main Library';
$lang->doclib->tabList['product'] = $lang->productCommon;
$lang->doclib->tabList['project'] = $lang->projectCommon;
$lang->doclib->tabList['custom'] = 'Custom';
+4
View File
@@ -166,3 +166,7 @@ $lang->doclib->product = $lang->productCommon . '库';
$lang->doclib->main['product'] = $lang->productCommon . '主库';
$lang->doclib->main['project'] = $lang->projectCommon . '主库';
$lang->doclib->tabList['product'] = $lang->productCommon;
$lang->doclib->tabList['project'] = $lang->projectCommon;
$lang->doclib->tabList['custom'] = '自定义';
+12 -2
View File
@@ -75,7 +75,7 @@ var browseType = '<?php echo $browseType;?>';
<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>
<th class="c-actions-3"><?php echo $lang->actions;?></th>
<th class="c-actions-4"><?php echo $lang->actions;?></th>
</tr>
</thead>
<tbody>
@@ -98,18 +98,28 @@ var browseType = '<?php echo $browseType;?>';
<?php endforeach;?>
<?php endif;?>
<?php if(isset($modules)):?>
<?php foreach($modules as $module):?>
<?php foreach($modules as $moduleID => $module):?>
<?php if($moduleID != 'project' and $moduleID != 'files'):?>
<?php $star = strpos($module->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
<?php $collectTitle = strpos($module->collector, ',' . $this->app->user->account . ',') !== false ? $lang->doc->cancelCollection : $lang->doc->collect;?>
<?php endif;?>
<tr>
<?php if($moduleID == 'project'):?>
<td class="c-name"><?php echo html::a(inlink('allLibs', "type=project&product={$lib->product}"), "<i class='icon icon-folder text-yellow'></i> &nbsp;" . $module->name);?></td>
<?php elseif($moduleID == 'files'):?>
<td class="c-name"><?php echo html::a(inlink('showFiles', "type=$type&objectID={$lib->$type}"), "<i class='icon icon-folder text-yellow'></i> &nbsp;" . $module->name);?></td>
<?php else:?>
<td class="c-name"><?php echo html::a(inlink('browse', "libID=$libID&browseType=bymodule&param=$module->id&orderBy=$orderBy&from=$from"), "<i class='icon icon-folder text-yellow'></i> &nbsp;" . $module->name);?></td>
<?php endif;?>
<td class="c-num"></td>
<td class="c-user"></td>
<td class="c-datetime"></td>
<td class="c-datetime"></td>
<td>
<?php if($moduleID != 'project' and $moduleID != 'files'):?>
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$module->id&objectType=module");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><i class='icon <?php echo $star;?>'></i></a>
<?php common::printLink('tree', 'browse', "rootID=$libID&type=doc", "<i class='icon icon-cog'></i>", '', "title='{$lang->tree->manage}' class='btn btn-link'")?>
<?php endif;?>
</td>
</tr>
<?php endforeach;?>
+23 -4
View File
@@ -31,17 +31,36 @@
</div>
</div>
<?php endforeach;?>
<?php foreach($modules as $module):?>
<?php foreach($modules as $moduleID => $module):?>
<?php if($moduleID != 'project' and $moduleID != 'files'):?>
<?php $star = strpos($module->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
<?php endif;?>
<div class="col">
<a class="file" href="<?php echo inlink('browse', "libID=$libID&browseType=bymodule&param=$module->id&orderBy=$orderBy&from=$from");?>">
<?php
$browseLink = '';
if($moduleID == 'project')
{
$browseLink = inlink('allLibs', "type=project&product={$lib->product}");
}
elseif($moduleID == 'files')
{
$browseLink = inlink('showFiles', "type=$type&objectID={$lib->$type}");
}
else
{
$browseLink = inlink('browse', "libID=$libID&browseType=bymodule&param=$module->id&orderBy=$orderBy&from=$from");
}
?>
<a class="file" href="<?php echo $browseLink;?>">
<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>
<div class="file-name"><?php echo (($moduleID != 'project' and $moduleID != 'files' and 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 (isset($module->docCount) ? $module->docCount : $module->allCount) . $lang->doc->item;?></div>
</a>
<div class="actions">
<?php if($moduleID != 'project' and $moduleID != 'files'):?>
<?php common::printLink('doc', 'collect', "objectID={$module->id}&objectType=module", "<i class='icon {$star}'></i>", 'hiddenwin', "title='{$lang->doc->collect}' class='btn btn-link'");?>
<?php common::printLink('tree', 'browse', "rootID=$libID&type=doc", "<i class='icon icon-cog'></i>", '', "title='{$lang->tree->manage}' class='btn btn-link'")?>
<?php endif;?>
</div>
</div>
<?php endforeach;?>
+73 -98
View File
@@ -1,58 +1,71 @@
<?php
$products = $this->doc->getLimitLibs('product');
$projects = $this->doc->getLimitLibs('project');
$customLibs = $this->doc->getLimitLibs('custom');
$sideLibs = array();
$sideLibs['product'] = $this->doc->getLimitLibs('product');
$sideLibs['project'] = $this->doc->getLimitLibs('project');
$sideLibs['custom'] = $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));
$sideSubLibs = array();
$sideSubLibs['product'] = $this->doc->getSubLibGroups('product', array_keys($sideLibs['product']));
$sideSubLibs['project'] = $this->doc->getSubLibGroups('project', array_keys($sideLibs['project']));
if($this->methodName != 'browse')
{
$browseType = '';
$moduleID = '';
}
if(!isset($type)) $type = 'product';
?>
<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-name="docsTree" data-ride="tree" data-initial-state="preserve" 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 if($this->methodName == 'browse' && $browseType == $menuType) echo "class='active'";?>><?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>
<?php if($this->config->global->flow != 'onlyTask'):?>
<li class='open'>
<?php echo html::a($this->createLink('doc', 'allLibs', "type=product"), $lang->productCommon, '', "class='text-muted'");?>
<ul>
<?php foreach($products as $productMenu):?>
<li <?php if($this->methodName == 'objectlibs' && $type == 'product' && $object->id == $productMenu->id) echo "class='active'";?>>
<?php echo html::a($this->createLink('doc', 'objectLibs', "type=product&objectID=$productMenu->id"), "<i class='icon icon-cube'></i> " . $productMenu->name, '', "class='text-ellipsis' title='{$productMenu->name}'");?>
<?php if(isset($productSubLibs[$productMenu->id])):?>
<ul class='nav nav-tabs'>
<?php foreach($lang->doclib->tabList as $tabValue => $tabName):?>
<?php if($this->config->global->flow == 'onlyTask' and $tabValue == 'product') continue;?>
<?php if(($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest') and $tabValue == 'project') continue;?>
<?php $activeClass = $tabValue == $type ? 'active' : '';?>
<li class='<?php echo $activeClass;?>'><?php echo html::a("#{$tabValue}", $tabName, '', "data-tab");?></li>
<?php endforeach;?>
</ul>
<div class="tab-content">
<?php foreach($lang->doclib->tabList as $tabValue => $tabName):?>
<?php if($this->config->global->flow == 'onlyTask' and $tabValue == 'product') continue;?>
<?php if(($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest') and $tabValue == 'project') continue;?>
<?php $activeClass = $tabValue == $type ? 'active' : '';?>
<div class="tab-pane <?php echo $activeClass;?>" id="<?php echo "$tabValue";?>">
<ul data-name="docsTree" data-ride="tree" data-initial-state="preserve" class="tree no-margin">
<?php if(isset($sideSubLibs[$tabValue])):?>
<?php foreach($sideLibs[$tabValue] as $tabMenu):?>
<li <?php if($this->methodName == 'objectlibs' && $type == $tabValue && $object->id == $tabMenu->id) echo "class='active'";?>>
<?php
$customLibCount = 0;
$mainLibID = 0;
if(isset($sideSubLibs[$tabValue][$tabMenu->id]))
{
foreach($sideSubLibs[$tabValue][$tabMenu->id] as $subLibID => $subLibName)
{
if(is_numeric($subLibID) and !empty($mainLibID)) $customLibCount += 1;
if(is_numeric($subLibID) and empty($mainLibID)) $mainLibID = $subLibID;
}
}
?>
<?php if($customLibCount > 0):?>
<?php echo html::a($this->createLink('doc', 'objectLibs', "type=$tabValue&objectID=$tabMenu->id"), "<i class='icon icon-cube'></i> " . $tabMenu->name, '', "class='text-ellipsis' title='{$tabMenu->name}'");?>
<?php else:?>
<?php echo html::a($this->createLink('doc', 'browse', "libID=$mainLibID"), "<i class='icon icon-cube'></i> " . $tabMenu->name, '', "class='text-ellipsis' title='{$tabMenu->name}'");?>
<?php endif;?>
<?php if(isset($sideSubLibs[$tabValue][$tabMenu->id])):?>
<ul>
<?php foreach($productSubLibs[$productMenu->id] as $subLibID => $subLibName):?>
<?php foreach($sideSubLibs[$tabValue][$tabMenu->id] as $subLibID => $subLibName):?>
<?php
if($subLibID == 'project')
{
$subLibLink = inlink('allLibs', "type=project&product=$productMenu->id");
$activeClass = ($this->methodName == 'alllibs' && $type == 'project' && $product == $productMenu->id) ? "class='active'" : '';
$subLibLink = inlink('allLibs', "type=project&product=$tabMenu->id");
$activeClass = ($this->methodName == 'alllibs' && $type == 'project' && $$tabValue == $tabMenu->id) ? "class='active'" : '';
$icon = 'icon-stack';
}
elseif($subLibID == 'files')
{
$subLibLink = inlink('showFiles', "type=product&objectID=$productMenu->id");
$activeClass = ($this->methodName == 'showfiles' && $type == 'product' && $object->id == $productMenu->id) ? "class='active'" : '';
$subLibLink = inlink('showFiles', "type=$tabValue&objectID=$tabMenu->id");
$activeClass = ($this->methodName == 'showfiles' && $type == $tabValue && $object->id == $tabMenu->id) ? "class='active'" : '';
$icon = 'icon-paper-clip';
}
else
@@ -62,10 +75,14 @@ if($this->methodName != 'browse')
$icon = 'icon-folder-outline';
}
?>
<?php if($customLibCount > 0):?>
<li <?php echo $activeClass;?>>
<?php echo html::a($subLibLink, "<i class='icon {$icon}'></i> " . $subLibName, '', "class='text-ellipsis' title='{$subLibName}'");?>
<?php endif;?>
<?php if(isset($allModules[$subLibID])):?>
<?php if($customLibCount > 0):?>
<ul>
<?php endif;?>
<?php foreach($allModules[$subLibID] as $module):?>
<?php if($module->parent != 0) continue;?>
<li <?php if($this->methodName == 'browse' && $browseType == 'bymodule' && $moduleID == $module->id) echo "class='active'";?>>
@@ -73,84 +90,42 @@ if($this->methodName != 'browse')
<?php $this->doc->printChildModule($module, $subLibID, $this->methodName, $browseType, $moduleID);?>
</li>
<?php endforeach;?>
<?php if($customLibCount > 0):?>
</ul>
<?php endif;?>
<?php endif;?>
<?php if($customLibCount > 0):?>
</li>
<?php endif;?>
<?php if($customLibCount == 0 and !is_numeric($subLibID)):?>
<li>
<?php echo html::a($subLibLink, "<i class='icon {$icon}'></i> " . $subLibName, '', "class='text-ellipsis' title='{$subLibName}'");?>
</li>
<?php endif;?>
<?php endforeach;?>
</ul>
<?php endif;?>
</li>
<?php endforeach;?>
</ul>
</li>
<?php endif;?>
<?php if($this->config->global->flow != 'onlyStory' && $this->config->global->flow != 'onlyTest'):?>
<li>
<?php echo html::a($this->createLink('doc', 'allLibs', "type=project"), $lang->projectCommon, '', "class='text-muted'");?>
<ul>
<?php foreach($projects as $project):?>
<li <?php if($this->methodName == 'objectlibs' && $type == 'project' && $object->id == $project->id) echo "class='active'";?>>
<?php echo html::a($this->createLink('doc', 'objectLibs', "type=project&objectID=$project->id"), "<i class='icon icon-stack'></i> " . $project->name, '', "class='text-ellipsis' title='{$project->name}'");?>
<?php if(isset($projectSubLibs[$project->id])):?>
<?php else:?>
<?php foreach($sideLibs[$tabValue] as $sideLibID => $sideLibName):?>
<li <?php if($this->methodName == 'objectlibs' && $type == $tabValue && $object->id == $sideLibID) echo "class='active'";?>>
<?php echo html::a($this->createLink('doc', 'browse', "libID=$sideLibID"), "<i class='icon icon-cube'></i> " . $sideLibName, '', "class='text-ellipsis' title='{$sideLibName}'");?>
<ul>
<?php foreach($projectSubLibs[$project->id] as $subLibID => $subLibName):?>
<?php
if($subLibID == 'files')
{
$subLibLink = inlink('showFiles', "type=project&objectID=$project->id");
$activeClass = ($this->methodName == 'showfiles' && $type == 'project' && $object->id == $project->id) ? "class='active'" : '';
$icon = 'icon-paper-clip';
}
else
{
$subLibLink = inlink('browse', "libID=$subLibID");
$activeClass = ($this->methodName == 'browse' && $browseType != 'bymodule' && $subLibID == $libID) ? "class='active'" : '';
$icon = 'icon-folder-o';
}
?>
<li <?php echo $activeClass;?>>
<?php echo html::a($subLibLink, "<i class='icon $icon'></i> " . $subLibName, '', "class='text-ellipsis' title='{$subLibName}'");?>
<?php if(isset($allModules[$subLibID])):?>
<ul>
<?php foreach($allModules[$subLibID] as $module):?>
<?php if($module->parent != 0) continue;?>
<li <?php if($this->methodName == 'browse' && $browseType == 'bymodule' && $moduleID == $module->id) echo "class='active'";?>>
<?php echo html::a($this->createLink('doc', 'browse', "libID=$subLibID&browseType=byModule&param={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name, '', "class='text-ellipsis' title='{$module->name}'");?>
<?php $this->doc->printChildModule($module, $subLibID, $this->methodName, $browseType, $moduleID);?>
</li>
<?php endforeach;?>
</ul>
<?php endif;?>
</li>
<?php endforeach;?>
</ul>
<?php endif;?>
</li>
<?php endforeach;?>
</ul>
</li>
<?php endif;?>
<li <?php if($this->methodName == 'alllibs' && $type == 'custom') echo "class='active'";?>>
<?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 if($this->methodName == 'browse' && $browseType != 'bymodule' && $libID == $subLibID) echo "class='active'";?>>
<?php echo html::a(inlink('browse', "libID=$subLibID"), "<i class='icon icon-folder-outline'></i> " . $subLibName, '', "class='text-ellipsis' title='{$subLibName}'");?>
<?php if(isset($allModules[$subLibID])):?>
<ul>
<?php foreach($allModules[$subLibID] as $module):?>
<?php foreach($allModules[$sideLibID] as $module):?>
<?php if($module->parent != 0) continue;?>
<li <?php if($this->methodName == 'browse' && $browseType == 'bymodule' && $moduleID == $module->id) echo "class='active'";?>>
<?php echo html::a($this->createLink('doc', 'browse', "libID=$subLibID&browseType=byModule&param={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name, '', "class='text-ellipsis' title='{$module->name}'");?>
<?php $this->doc->printChildModule($module, $subLibID, $this->methodName, $browseType, $moduleID);?>
<?php echo html::a($this->createLink('doc', 'browse', "libID=$sideLibID&browseType=byModule&param={$module->id}"), "<i class='icon icon-folder-outline'></i> " . $module->name, '', "class='text-ellipsis' title='{$module->name}'");?>
<?php $this->doc->printChildModule($module, $sideLibID, $this->methodName, $browseType, $moduleID);?>
</li>
<?php endforeach;?>
</ul>
<?php endif;?>
</li>
<?php endforeach;?>
<?php endif;?>
</ul>
</li>
</ul>
</div>
<?php endforeach;?>
</div>
</div>
</div>
-4
View File
@@ -47,10 +47,6 @@
</ul>
</div>
<?php
$misc = "class='btn btn-link iframe" . (common::hasPriv('task', 'export', $project) ? ' dtisabled' : '') . "' data-width='700'";
$link = common::hasPriv('task', 'export') ? $this->createLink('task', 'export', "project=$projectID&orderBy=$orderBy&type=$browseType") : '#';
echo html::a($link, "<i class='icon icon-export muted'></i> <span class='text'>{$lang->export}</span>", '', $misc);
$checkObject = new stdclass();
$checkObject->project = $projectID;
$misc = common::hasPriv('task', 'create', $checkObject) ? "class='btn btn-primary'" : "class='btn btn-primary disabled'";