Merge branch 'sprint/189_hufangzhou_53673' into 'master'
* Finish task #53673. See merge request easycorp/zentaopms!3316
This commit is contained in:
@@ -60,3 +60,9 @@ $config->action->majorList['execution'] = array('opened', 'edited');
|
||||
$config->action->needGetProjectType = 'build,task,bug,case,testcase,caselib,testtask,testsuite,testreport,doc,issue,release,risk,design,opportunity,trainplan,gapanalysis,researchplan,researchreport,';
|
||||
$config->action->needGetRelateField = ',story,productplan,release,task,build,bug,testcase,case,testtask,testreport,doc,doclib,issue,risk,opportunity,trainplan,gapanalysis,team,whitelist,researchplan,researchreport,meeting,kanbanlane,kanbancolumn,';
|
||||
$config->action->noLinkModules = ',doclib,module,webhook,gitlab,sonarqube,pipeline,jenkins,kanban,kanbanspace,kanbancolumn,kanbanlane,kanbanregion,kanbancard,execution,project,traincategory,apistruct,program,product,';
|
||||
|
||||
$config->action->preferredTypeNum = 10;
|
||||
|
||||
$config->action->preferredType = new stdclass();
|
||||
$config->action->preferredType->new = array('user', 'story', 'task', 'bug', 'case', 'doc', 'program', 'product', 'project', 'execution');
|
||||
$config->action->preferredType->classic = array('user', 'story', 'task', 'bug', 'case', 'doc', 'product', 'execution', 'productplan', 'build');
|
||||
|
||||
@@ -14,6 +14,7 @@ class action extends control
|
||||
/**
|
||||
* Trash.
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param string $type all|hidden
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
@@ -22,7 +23,7 @@ class action extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function trash($type = 'all', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
public function trash($browseType = 'all', $type = 'all', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->loadModel('backup');
|
||||
|
||||
@@ -60,18 +61,37 @@ class action extends control
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$sort = common::appendOrder($orderBy);
|
||||
$trashes = $this->action->getTrashes($type, $sort, $pager);
|
||||
$sort = common::appendOrder($orderBy);
|
||||
$trashes = $this->action->getTrashes($browseType, $type, $sort, $pager);
|
||||
$objectTypeList = $this->action->getTrashObjectTypes($type);
|
||||
$objectTypeList = array_keys($objectTypeList);
|
||||
|
||||
$preferredType = array();
|
||||
$moreType = array();
|
||||
$preferredTypeConfig = $this->config->systemMode == 'new' ? $this->config->action->preferredType->new : $this->config->action->preferredType->classic;
|
||||
foreach($objectTypeList as $objectType)
|
||||
{
|
||||
in_array($objectType, $preferredTypeConfig) ? $preferredType[$objectType] = $objectType : $moreType[$objectType] = $objectType;
|
||||
}
|
||||
if(count($preferredType) < $this->config->action->preferredTypeNum)
|
||||
{
|
||||
$toPreferredType = array_splice($moreType, 0, $this->config->action->preferredTypeNum - count($preferredType));
|
||||
$preferredType = $preferredType + $toPreferredType;
|
||||
}
|
||||
|
||||
/* Title and position. */
|
||||
$this->view->title = $this->lang->action->trash;
|
||||
$this->view->position[] = $this->lang->action->trash;
|
||||
|
||||
$this->view->trashes = $trashes;
|
||||
$this->view->type = $type;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->trashes = $trashes;
|
||||
$this->view->type = $type;
|
||||
$this->view->currentObjectType = $browseType;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->preferredType = $preferredType;
|
||||
$this->view->moreType = $moreType;
|
||||
$this->view->preferredTypeConfig = $preferredTypeConfig;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
.table-footer .table-actions {width: auto; visibility: visible; opacity: 1;}
|
||||
.table-footer .table-actions .text {line-height: 28px;}
|
||||
table tbody tr td {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
|
||||
|
||||
#mainMenu .btn-toolbar .btn-group .dropdown-menu .btn-active-text:hover .text {color: #fff}
|
||||
|
||||
.dropdown-menu .btn-active-text:hover .text:after {border-bottom: 0px;}
|
||||
|
||||
+18
-2
@@ -610,17 +610,19 @@ class actionModel extends model
|
||||
/**
|
||||
* Get deleted objects.
|
||||
*
|
||||
* @param string $objectType
|
||||
* @param string $type all|hidden
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getTrashes($type, $orderBy, $pager)
|
||||
public function getTrashes($objectType, $type, $orderBy, $pager)
|
||||
{
|
||||
$extra = $type == 'hidden' ? self::BE_HIDDEN : self::CAN_UNDELETED;
|
||||
$extra = $type == 'hidden' ? self::BE_HIDDEN : self::CAN_UNDELETED;
|
||||
$trashes = $this->dao->select('*')->from(TABLE_ACTION)
|
||||
->where('action')->eq('deleted')
|
||||
->beginIF($objectType != 'all')->andWhere('objectType')->eq($objectType)->fi()
|
||||
->andWhere('extra')->eq($extra)
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
@@ -665,9 +667,23 @@ class actionModel extends model
|
||||
|
||||
$trash->objectName = isset($objectNames[$objectType][$trash->objectID]) ? $objectNames[$objectType][$trash->objectID] : '';
|
||||
}
|
||||
|
||||
return $trashes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get object type list of trashes.
|
||||
*
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getTrashObjectTypes($type)
|
||||
{
|
||||
$extra = $type == 'hidden' ? self::BE_HIDDEN : self::CAN_UNDELETED;
|
||||
return $this->dao->select('objectType')->from(TABLE_ACTION)->where('action')->eq('deleted')->andWhere('extra')->eq($extra)->andWhere('vision')->eq($this->config->vision)->fetchAll('objectType');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get histories of an action.
|
||||
*
|
||||
|
||||
@@ -12,6 +12,50 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
<?php $activeClass = $currentObjectType == 'all' ? 'btn-active-text' : '';?>
|
||||
<?php echo html::a($this->createLink('action', 'trash', "objectType=all&type=$type"), "<span class='text'>" . $lang->all . "</span>", '', "class='btn btn-link $activeClass'");?>
|
||||
<?php
|
||||
/* Output the objectType order by preferredTypeConfig. */
|
||||
foreach($preferredTypeConfig as $objectType)
|
||||
{
|
||||
if(in_array($objectType, $preferredType))
|
||||
{
|
||||
$activeClass = $objectType == $currentObjectType ? 'btn-active-text' : '';
|
||||
echo html::a($this->createLink('action', 'trash', "objectType=$objectType&type=$type"), "<span class='text'>" . zget($lang->action->objectTypes, $objectType) . "</span>", '', "class='btn btn-link $activeClass'");
|
||||
unset($preferredType[$objectType]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Output the remaining types which transformed from more type. */
|
||||
foreach($preferredType as $objectType)
|
||||
{
|
||||
$activeClass = $objectType == $currentObjectType ? 'btn-active-text' : '';
|
||||
echo html::a($this->createLink('action', 'trash', "objectType=$objectType&type=$type"), "<span class='text'>" . zget($lang->action->objectTypes, $objectType) . "</span>", '', "class='btn btn-link $activeClass'");
|
||||
}
|
||||
|
||||
/* Output the more types. */
|
||||
if(!empty($moreType))
|
||||
{
|
||||
$moreLabel = $lang->more;
|
||||
$moreLabelActive = '';
|
||||
if(in_array($currentObjectType, $moreType))
|
||||
{
|
||||
$moreLabel = "<span class='text'>" . zget($lang->action->objectTypes, $currentObjectType) . "</span>";
|
||||
$moreLabelActive = 'btn-active-text';
|
||||
}
|
||||
echo '<div class="btn-group" id="more">';
|
||||
echo html::a('javascript:;', $moreLabel . " <span class='caret'></span>", '', "data-toggle='dropdown' class='btn btn-link $moreLabelActive'");
|
||||
echo "<ul class='dropdown-menu'>";
|
||||
foreach($moreType as $objectType)
|
||||
{
|
||||
$activeClass = $objectType == $currentObjectType ? 'btn-active-text' : '';
|
||||
echo '<li>' . html::a($this->createLink('action', 'trash', "objectType=$objectType&type=$type"), "<span class='text'>" . zget($lang->action->objectTypes, $objectType) . "</span>", '', "class='btn btn-link $activeClass'") . '</li>';
|
||||
}
|
||||
echo '</ul></div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class='btn-toolbar pull-right'>
|
||||
<?php if($type == 'hidden') echo html::a(inLink('trash', "type=all"), $lang->goback, '', "class='btn'");?>
|
||||
<?php if($type == 'all') echo html::a(inLink('trash', "type=hidden"), "<i class='icon-eye-close'></i> " . $lang->action->dynamic->hidden, '', "class='btn btn-danger'");?>
|
||||
|
||||
@@ -764,6 +764,7 @@ class apiModel extends model
|
||||
public function createDemoData($name, $baseUrl, $version = '16.0')
|
||||
{
|
||||
/* Replace the doc lib name to api lib name. */
|
||||
$this->app->loadLang('doc');
|
||||
$this->lang->doclib->name = $this->lang->doclib->apiLibName;
|
||||
|
||||
$firstAccount = $this->dao->select('account')->from(TABLE_USER)->orderBy('id_asc')->limit(1)->fetch('account');
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
<?php common::printBack($browseLink);?>
|
||||
<?php if(!$bug->deleted):?>
|
||||
<div class='divider'></div>
|
||||
<?php echo $this->buildOperateMenu($bug, 'view');?>
|
||||
<?php echo $this->bug->buildOperateMenu($bug, 'view');?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user