Merge branch '15.0.beta3' of http://gitlab.zcorp.cc/easycorp/zentaopms into 15.0.beta3
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
<th class='text-left'><?php echo $lang->testtask->product;?></th>
|
||||
<?php endif;?>
|
||||
<?php if($longBlock):?>
|
||||
<th class='text-left'><?php echo $lang->testtask->project?></th>
|
||||
<th class='text-left'><?php echo $lang->testtask->execution?></th>
|
||||
<?php endif;?>
|
||||
<th class='text-left'><?php echo $lang->testtask->build;?></th>
|
||||
<th class='w-date'><?php echo $lang->testtask->status;?></th>
|
||||
|
||||
@@ -59,6 +59,12 @@ $lang->my->menuOrder[40] = 'follow';
|
||||
$lang->my->menuOrder[45] = 'contacts';
|
||||
$lang->todo->menuOrder = $lang->my->menuOrder;
|
||||
|
||||
/* program menu order. */
|
||||
$lang->program->menuOrder[5] = 'product';
|
||||
$lang->program->menuOrder[10] = 'project';
|
||||
$lang->program->menuOrder[15] = 'personnel';
|
||||
$lang->program->menuOrder[20] = 'stakeholder';
|
||||
|
||||
/* product menu order. */
|
||||
$lang->product->menuOrder[5] = 'dashboard';
|
||||
$lang->product->menuOrder[10] = 'story';
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->executionCommon = $lang->executionCommon;
|
||||
$lang->execution->common = $lang->executionCommon . '视图';
|
||||
$lang->execution->common = '执行';
|
||||
$lang->execution->allExecutions = '所有' . $lang->executionCommon;
|
||||
$lang->execution->id = $lang->executionCommon . '编号';
|
||||
$lang->execution->type = $lang->executionCommon . '类型';
|
||||
|
||||
@@ -894,7 +894,8 @@ class executionModel extends model
|
||||
}
|
||||
|
||||
$dropMenuLink = helper::createLink('execution', 'ajaxGetDropMenu', "objectID=$executionID&module=$currentModule&method=$currentMethod&extra=");
|
||||
$output = "<div class='btn-group header-btn' id='swapper'><button data-toggle='dropdown' type='button' class='btn' id='currentItem' title='{$currentExecutionName}'><span class='text'>{$currentExecutionName}</span> <span class='caret'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
|
||||
$output = "<div class='btn-group header-btn'>" . html::a(helper::createLink('execution', 'all'), "<i class='icon icon-run'></i> {$this->lang->execution->common}", '', "class='btn'") . '</div>';
|
||||
$output .= "<div class='btn-group header-btn' id='swapper'><button data-toggle='dropdown' type='button' class='btn' id='currentItem' title='{$currentExecutionName}'><span class='text'>{$currentExecutionName}</span> <span class='caret'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
|
||||
$output .= '<div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div>';
|
||||
$output .= "</div></div>";
|
||||
|
||||
|
||||
@@ -48,12 +48,7 @@
|
||||
<?php if($from == 'execution'):?>
|
||||
<div id="sidebar" class="side-col">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
<div class="cell">
|
||||
<?php echo $projectTree;?>
|
||||
<div class="text-center">
|
||||
<?php common::printLink('project', 'projectTitle', '', $lang->project->moduleSetting, '', "class='btn btn-info btn-wide iframe'", true, true);?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell"><?php echo $projectTree;?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php $canBatchEdit = common::hasPriv('execution', 'batchEdit'); ?>
|
||||
|
||||
@@ -547,8 +547,11 @@ $lang->resource->execution->importplanstories = 'importPlanStories';
|
||||
$lang->resource->execution->importBug = 'importBug';
|
||||
$lang->resource->execution->story = 'story';
|
||||
$lang->resource->execution->build = 'build';
|
||||
$lang->resource->execution->qa = 'qa';
|
||||
$lang->resource->execution->testtask = 'testtaskAction';
|
||||
$lang->resource->execution->testcase = 'testcase';
|
||||
$lang->resource->execution->bug = 'bug';
|
||||
$lang->resource->execution->testreport = 'testreport';
|
||||
$lang->resource->execution->burn = 'burn';
|
||||
$lang->resource->execution->computeBurn = 'computeBurnAction';
|
||||
$lang->resource->execution->fixFirst = 'fixFirst';
|
||||
@@ -600,36 +603,39 @@ $lang->execution->methodOrder[80] = 'importplanstories';
|
||||
$lang->execution->methodOrder[85] = 'importBug';
|
||||
$lang->execution->methodOrder[90] = 'story';
|
||||
$lang->execution->methodOrder[95] = 'build';
|
||||
$lang->execution->methodOrder[100] = 'testtask';
|
||||
$lang->execution->methodOrder[105] = 'bug';
|
||||
$lang->execution->methodOrder[110] = 'burn';
|
||||
$lang->execution->methodOrder[115] = 'computeBurn';
|
||||
$lang->execution->methodOrder[120] = 'fixFirst';
|
||||
$lang->execution->methodOrder[125] = 'burnData';
|
||||
$lang->execution->methodOrder[130] = 'team';
|
||||
$lang->execution->methodOrder[100] = 'qa';
|
||||
$lang->execution->methodOrder[105] = 'testcase';
|
||||
$lang->execution->methodOrder[110] = 'bug';
|
||||
$lang->execution->methodOrder[115] = 'testtask';
|
||||
$lang->execution->methodOrder[120] = 'testreport';
|
||||
$lang->execution->methodOrder[125] = 'burn';
|
||||
$lang->execution->methodOrder[130] = 'computeBurn';
|
||||
$lang->execution->methodOrder[135] = 'fixFirst';
|
||||
$lang->execution->methodOrder[140] = 'burnData';
|
||||
$lang->execution->methodOrder[145] = 'team';
|
||||
//$lang->execution->methodOrder[130] = 'doc';
|
||||
$lang->execution->methodOrder[135] = 'dynamic';
|
||||
$lang->execution->methodOrder[140] = 'manageProducts';
|
||||
$lang->execution->methodOrder[145] = 'manageMembers';
|
||||
$lang->execution->methodOrder[150] = 'unlinkMember';
|
||||
$lang->execution->methodOrder[155] = 'linkStory';
|
||||
$lang->execution->methodOrder[160] = 'unlinkStory';
|
||||
$lang->execution->methodOrder[165] = 'batchUnlinkStory';
|
||||
$lang->execution->methodOrder[170] = 'updateOrder';
|
||||
$lang->execution->methodOrder[175] = 'kanban';
|
||||
$lang->execution->methodOrder[180] = 'printKanban';
|
||||
$lang->execution->methodOrder[185] = 'kanbanHideCols';
|
||||
$lang->execution->methodOrder[190] = 'kanbanColsColor';
|
||||
$lang->execution->methodOrder[195] = 'tree';
|
||||
$lang->execution->methodOrder[200] = 'treeTask';
|
||||
$lang->execution->methodOrder[205] = 'treeStory';
|
||||
$lang->execution->methodOrder[210] = 'all';
|
||||
$lang->execution->methodOrder[215] = 'export';
|
||||
$lang->execution->methodOrder[220] = 'storyKanban';
|
||||
$lang->execution->methodOrder[225] = 'storySort';
|
||||
$lang->execution->methodOrder[230] = 'whitelist';
|
||||
$lang->execution->methodOrder[235] = 'addWhitelist';
|
||||
$lang->execution->methodOrder[240] = 'unbindWhitelist';
|
||||
$lang->execution->methodOrder[150] = 'dynamic';
|
||||
$lang->execution->methodOrder[155] = 'manageProducts';
|
||||
$lang->execution->methodOrder[160] = 'manageMembers';
|
||||
$lang->execution->methodOrder[165] = 'unlinkMember';
|
||||
$lang->execution->methodOrder[170] = 'linkStory';
|
||||
$lang->execution->methodOrder[175] = 'unlinkStory';
|
||||
$lang->execution->methodOrder[180] = 'batchUnlinkStory';
|
||||
$lang->execution->methodOrder[185] = 'updateOrder';
|
||||
$lang->execution->methodOrder[190] = 'kanban';
|
||||
$lang->execution->methodOrder[195] = 'printKanban';
|
||||
$lang->execution->methodOrder[200] = 'kanbanHideCols';
|
||||
$lang->execution->methodOrder[205] = 'kanbanColsColor';
|
||||
$lang->execution->methodOrder[210] = 'tree';
|
||||
$lang->execution->methodOrder[215] = 'treeTask';
|
||||
$lang->execution->methodOrder[220] = 'treeStory';
|
||||
$lang->execution->methodOrder[225] = 'all';
|
||||
$lang->execution->methodOrder[230] = 'export';
|
||||
$lang->execution->methodOrder[235] = 'storyKanban';
|
||||
$lang->execution->methodOrder[240] = 'storySort';
|
||||
$lang->execution->methodOrder[245] = 'whitelist';
|
||||
$lang->execution->methodOrder[250] = 'addWhitelist';
|
||||
$lang->execution->methodOrder[255] = 'unbindWhitelist';
|
||||
|
||||
/* Task. */
|
||||
$lang->resource->task = new stdclass();
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
{
|
||||
$vars = "story={$story->id}";
|
||||
common::printIcon('story', 'change', $vars, $story, 'list', 'alter');
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'glasses');
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'search');
|
||||
common::printIcon('story', 'close', $vars, $story, 'list', '', '', 'iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $story, 'list');
|
||||
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap');
|
||||
@@ -137,7 +137,7 @@
|
||||
{
|
||||
$vars = "story={$child->id}";
|
||||
common::printIcon('story', 'change', $vars, $child, 'list', 'fork');
|
||||
common::printIcon('story', 'review', $vars, $child, 'list', 'glasses');
|
||||
common::printIcon('story', 'review', $vars, $child, 'list', 'search');
|
||||
common::printIcon('story', 'close', $vars, $child, 'list', '', '', 'iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $child, 'list');
|
||||
common::printIcon('story', 'createCase', "productID=$child->product&branch=$child->branch&module=0&from=¶m=0&$vars", $child, 'list', 'sitemap');
|
||||
|
||||
@@ -224,7 +224,7 @@ class personnel extends control
|
||||
public function setProgramMenu($programID = 0)
|
||||
{
|
||||
$this->loadModel('program');
|
||||
$this->lang->program->switcherMenu = $this->program->getSwitcher($programID, true);
|
||||
$this->lang->program->switcherMenu = $this->program->getSwitcher($programID, true);
|
||||
commonModel::setAppObjectID('program', $programID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ class productModel extends model
|
||||
->orWhere('createdBy')->eq($this->app->user->account)
|
||||
->markRight(1)
|
||||
->fi()
|
||||
->orderBy('program_asc,line_desc,order_asc')
|
||||
->orderBy('program_asc, line_desc, order_asc')
|
||||
->beginIF($limit > 0)->limit($limit)->fi()
|
||||
->fetchAll('id');
|
||||
}
|
||||
@@ -471,7 +471,7 @@ class productModel extends model
|
||||
$fromModule = $this->lang->navGroup->qa == 'qa' ? 'qa' : '';
|
||||
$dropMenuLink = helper::createLink('product', 'ajaxGetDropMenu', "objectID=$productID&module=$currentModule&method=$currentMethod&extra=$extra&from=$fromModule");
|
||||
|
||||
$output = "<div class='btn-group header-btn'>" . html::a(helper::createLink('product', 'all'), "<i class='icon icon-product'></i> {$this->lang->productCommon}", '', "class='btn'") . '</div>';
|
||||
$output = $this->app->openApp == 'product' ? "<div class='btn-group header-btn'>" . html::a(helper::createLink('product', 'all'), "<i class='icon icon-product'></i> {$this->lang->productCommon}", '', "class='btn'") . '</div>' : '';
|
||||
$output .= "<div class='btn-group header-btn' id='swapper'><button data-toggle='dropdown' type='button' class='btn' id='currentItem' title='{$currentProductName}'><span class='text'>{$currentProductName}</span> <span class='caret' style='margin-top: 3px'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
|
||||
$output .= '<div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div>';
|
||||
$output .= "</div></div>";
|
||||
@@ -1329,7 +1329,7 @@ class productModel extends model
|
||||
$productKeys = array_keys($products);
|
||||
$products = $this->dao->select('*')->from(TABLE_PRODUCT)
|
||||
->where('id')->in($productKeys)
|
||||
->orderBy('program_asc,line_desc,' . $orderBy)
|
||||
->orderBy('program_asc, line_desc, ' . $orderBy)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
|
||||
|
||||
@@ -71,6 +71,8 @@ $isProjectStory = $this->app->rawModule == 'projectstory';
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php
|
||||
$this->moduleName = $this->app->rawModule;
|
||||
$this->methodName = $this->app->rawMethod;
|
||||
foreach(customModel::getFeatureMenu($this->moduleName, $this->methodName) as $menuItem)
|
||||
{
|
||||
if(isset($menuItem->hidden)) continue;
|
||||
|
||||
@@ -125,7 +125,7 @@ class project extends control
|
||||
foreach($projects as $project)
|
||||
{
|
||||
if($project->parent and $project->parent != $programID) continue;
|
||||
$project->parent = $this->program->getTopByID();
|
||||
$project->parent = $this->program->getTopByID($project->parent);
|
||||
$orderedProjects[] = $project;
|
||||
unset($projects[$project->id]);
|
||||
}
|
||||
|
||||
@@ -142,6 +142,7 @@ class projectModel extends model
|
||||
*/
|
||||
public function getSwitcher($projectID, $currentModule, $currentMethod)
|
||||
{
|
||||
if($currentModule == 'project' and $currentMethod == 'browse') return;
|
||||
$this->session->set('moreProjectLink', $this->app->getURI(true));
|
||||
|
||||
$currentProjectName = $this->lang->project->common;
|
||||
@@ -281,12 +282,14 @@ class projectModel extends model
|
||||
->groupBy('project')
|
||||
->fetchPairs();
|
||||
|
||||
$this->loadModel('product');
|
||||
foreach($projectIdList as $projectID)
|
||||
{
|
||||
$productIdList = $this->loadModel('product')->getProductIDByProject($projectID, false);
|
||||
$allStories[$projectID] = $this->product->getTotalStoriesByProduct($productIdList, 'story');
|
||||
$doneStories[$projectID] = $this->product->getTotalStoriesByProduct($productIdList, 'story', 'closed');
|
||||
$leftStories[$projectID] = $this->product->getTotalStoriesByProduct($productIdList, 'story', 'active');
|
||||
$productIdList = $this->product->getProductIDByProject($projectID, false);
|
||||
|
||||
$allStories[$projectID] = $this->getTotalStoriesByProject($projectID, $productIdList, 'story');
|
||||
$doneStories[$projectID] = $this->getTotalStoriesByProject($projectID, $productIdList, 'story', 'closed');
|
||||
$leftStories[$projectID] = $this->getTotalStoriesByProject($projectID, $productIdList, 'story', 'active');
|
||||
}
|
||||
|
||||
$leftBugs = $this->getTotalBugByProject($projectIdList, 'active');
|
||||
@@ -310,6 +313,29 @@ class projectModel extends model
|
||||
return $projects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of stories associated with the project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param array $productIdList
|
||||
* @param string $type story|requirement
|
||||
* @param string $status all|closed|active
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function getTotalStoriesByProject($projectID = 0, $productIdList, $type = 'story', $status = 'all')
|
||||
{
|
||||
return $this->dao->select('count(t2.id) as stories')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story=t2.id')
|
||||
->where('t1.project')->eq($projectID)
|
||||
->andWhere('t2.type')->eq($type)
|
||||
->andWhere('t2.product')->in($productIdList)
|
||||
->beginIF($status != 'all')->andWhere('t2.status')->eq($status)->fi()
|
||||
->beginIF($status == 'closed')->andWhere('t2.closedReason')->eq('done')->fi()
|
||||
->andWhere('deleted')->eq('0')
|
||||
->fetch('stories');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project workhour info.
|
||||
*
|
||||
|
||||
@@ -46,8 +46,6 @@ class projectStory extends control
|
||||
{
|
||||
$this->session->set('storyList', $this->app->getURI(true));
|
||||
|
||||
$this->lang->menugroup->product = 'projectstory';
|
||||
|
||||
$this->lang->story->title = str_replace($this->lang->SRCommon, $this->lang->SRCommon, $this->lang->story->title);
|
||||
$this->lang->story->createRequirement = str_replace($this->lang->SRCommon, $this->lang->SRCommon, $this->lang->story->createRequirement);
|
||||
$this->lang->story->createStory = str_replace($this->lang->SRCommon, $this->lang->SRCommon, $this->lang->story->createStory);
|
||||
|
||||
@@ -10,14 +10,9 @@ $lang->projectstory->importplanstories = 'Linked by plan' . $lang->SRCommon;
|
||||
|
||||
global $app;
|
||||
$app->loadLang('product');
|
||||
$lang->projectstory->featureBarList['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBarList['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBarList['willclose'] = $lang->product->willClose;
|
||||
$lang->projectstory->featureBarList['status']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->projectstory->featureBarList['status']['activestory'] = $lang->product->activeStory;
|
||||
$lang->projectstory->featureBarList['status']['changedstory'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBarList['status']['closedstory'] = $lang->product->closedStory;
|
||||
$lang->projectstory->featureBarList['other']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->projectstory->featureBarList['other']['assignedtome'] = $lang->product->assignedToMe;
|
||||
$lang->projectstory->featureBarList['other']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->projectstory->featureBarList['other']['closedbyme'] = $lang->product->closedByMe;
|
||||
|
||||
$lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBar['story']['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBar['story']['changed'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBar['story']['closed'] = $lang->product->closedStory;
|
||||
|
||||
|
||||
@@ -10,14 +10,7 @@ $lang->projectstory->importplanstories = 'Linked by plan' . $lang->SRCommon;
|
||||
|
||||
global $app;
|
||||
$app->loadLang('product');
|
||||
$lang->projectstory->featureBarList['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBarList['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBarList['willclose'] = $lang->product->willClose;
|
||||
$lang->projectstory->featureBarList['status']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->projectstory->featureBarList['status']['activestory'] = $lang->product->activeStory;
|
||||
$lang->projectstory->featureBarList['status']['changedstory'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBarList['status']['closedstory'] = $lang->product->closedStory;
|
||||
$lang->projectstory->featureBarList['other']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->projectstory->featureBarList['other']['assignedtome'] = $lang->product->assignedToMe;
|
||||
$lang->projectstory->featureBarList['other']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->projectstory->featureBarList['other']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBar['story']['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBar['story']['changed'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBar['story']['closed'] = $lang->product->closedStory;
|
||||
|
||||
@@ -10,14 +10,7 @@ $lang->projectstory->importplanstories = 'Linked by plan' . $lang->SRCommon;
|
||||
|
||||
global $app;
|
||||
$app->loadLang('product');
|
||||
$lang->projectstory->featureBarList['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBarList['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBarList['willclose'] = $lang->product->willClose;
|
||||
$lang->projectstory->featureBarList['status']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->projectstory->featureBarList['status']['activestory'] = $lang->product->activeStory;
|
||||
$lang->projectstory->featureBarList['status']['changedstory'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBarList['status']['closedstory'] = $lang->product->closedStory;
|
||||
$lang->projectstory->featureBarList['other']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->projectstory->featureBarList['other']['assignedtome'] = $lang->product->assignedToMe;
|
||||
$lang->projectstory->featureBarList['other']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->projectstory->featureBarList['other']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBar['story']['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBar['story']['changed'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBar['story']['closed'] = $lang->product->closedStory;
|
||||
|
||||
@@ -10,14 +10,7 @@ $lang->projectstory->importplanstories = 'Linked by plan' . $lang->SRCommon;
|
||||
|
||||
global $app;
|
||||
$app->loadLang('product');
|
||||
$lang->projectstory->featureBarList['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBarList['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBarList['willclose'] = $lang->product->willClose;
|
||||
$lang->projectstory->featureBarList['status']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->projectstory->featureBarList['status']['activestory'] = $lang->product->activeStory;
|
||||
$lang->projectstory->featureBarList['status']['changedstory'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBarList['status']['closedstory'] = $lang->product->closedStory;
|
||||
$lang->projectstory->featureBarList['other']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->projectstory->featureBarList['other']['assignedtome'] = $lang->product->assignedToMe;
|
||||
$lang->projectstory->featureBarList['other']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->projectstory->featureBarList['other']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBar['story']['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBar['story']['changed'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBar['story']['closed'] = $lang->product->closedStory;
|
||||
|
||||
@@ -10,14 +10,8 @@ $lang->projectstory->importplanstories = '按计划关联' . $lang->SRCommon;
|
||||
|
||||
global $app;
|
||||
$app->loadLang('product');
|
||||
$lang->projectstory->featureBarList['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBarList['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBarList['willclose'] = $lang->product->willClose;
|
||||
$lang->projectstory->featureBarList['status']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->projectstory->featureBarList['status']['activestory'] = $lang->product->activeStory;
|
||||
$lang->projectstory->featureBarList['status']['changedstory'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBarList['status']['closedstory'] = $lang->product->closedStory;
|
||||
$lang->projectstory->featureBarList['other']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->projectstory->featureBarList['other']['assignedtome'] = $lang->product->assignedToMe;
|
||||
$lang->projectstory->featureBarList['other']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->projectstory->featureBarList['other']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBar['story']['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBar['story']['changed'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBar['story']['closed'] = $lang->product->closedStory;
|
||||
|
||||
|
||||
@@ -8,14 +8,7 @@ $lang->projectstory->unlinkStory = '移除' . $lang->SRCommon;
|
||||
|
||||
global $app;
|
||||
$app->loadLang('product');
|
||||
$lang->projectstory->featureBarList['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBarList['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBarList['willclose'] = $lang->product->willClose;
|
||||
$lang->projectstory->featureBarList['status']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->projectstory->featureBarList['status']['activestory'] = $lang->product->activeStory;
|
||||
$lang->projectstory->featureBarList['status']['changedstory'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBarList['status']['closedstory'] = $lang->product->closedStory;
|
||||
$lang->projectstory->featureBarList['other']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->projectstory->featureBarList['other']['assignedtome'] = $lang->product->assignedToMe;
|
||||
$lang->projectstory->featureBarList['other']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->projectstory->featureBarList['other']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory;
|
||||
$lang->projectstory->featureBar['story']['unclosed'] = $lang->product->unclosed;
|
||||
$lang->projectstory->featureBar['story']['changed'] = $lang->product->changedStory;
|
||||
$lang->projectstory->featureBar['story']['closed'] = $lang->product->closedStory;
|
||||
|
||||
@@ -2359,11 +2359,6 @@ class storyModel extends model
|
||||
|
||||
$unclosedStatus = $this->lang->story->statusList;
|
||||
unset($unclosedStatus['closed']);
|
||||
if($execution->type == 'project')
|
||||
{
|
||||
$statusFeatureList = $this->lang->projectstory->featureBarList['status'];
|
||||
$otherFeatureList = $this->lang->projectstory->featureBarList['other'];
|
||||
}
|
||||
|
||||
$stories = $this->dao->select('distinct t1.*, t2.*,t3.branch as productBranch,t4.type as productType,t2.version as version')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
|
||||
@@ -2375,10 +2370,8 @@ class storyModel extends model
|
||||
->beginIF($execution->type == 'project')
|
||||
->beginIF(!empty($productID))->andWhere('t1.product')->eq($productID)
|
||||
->beginIF($type == 'bybranch')->andWhere('t2.branch')->eq($branch)->fi()
|
||||
->beginIF(isset($statusFeatureList) and in_array($type, array_keys($statusFeatureList)))->andWhere('t2.status')->eq(substr($type, 0, -5))->fi()
|
||||
->beginIF(isset($otherFeatureList) and in_array($type, array_keys($otherFeatureList)))->andWhere('t2.' . substr($type, 0, -2))->eq($this->app->user->account)->fi()
|
||||
->beginIF(strpos('changed|closed', $type) !== false)->andWhere('t2.status')->eq($type)->fi()
|
||||
->beginIF($type == 'unclosed')->andWhere('t2.status')->in(array_keys($unclosedStatus))->fi()
|
||||
->beginIF($type == 'willclose')->andWhere('t2.stage')->in('developed,released')->andWhere('t2.status')->ne('closed')->fi()
|
||||
->fi()
|
||||
->beginIF($execution->type != 'project')
|
||||
->beginIF(!empty($productParam))->andWhere('t1.product')->eq($productParam)->fi()
|
||||
|
||||
Reference in New Issue
Block a user