* Finish task #91011.

This commit is contained in:
liumengyi
2023-04-11 15:30:05 +08:00
parent 9fadd45264
commit 2397c644f5
16 changed files with 50 additions and 106 deletions
+2
View File
@@ -773,3 +773,5 @@ CREATE TABLE IF NOT EXISTS `zt_docaction` (
KEY `doc` (`doc`),
KEY `actor` (`actor`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) SELECT `group`, 'projectbuild', 'browse' FROM `zt_grouppriv` WHERE `module` = 'project' AND `method` = 'build';
-11
View File
@@ -2470,7 +2470,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1,'project','batchEdit'),
(1,'project','browse'),
(1,'project','bug'),
(1,'project','build'),
(1,'project','close'),
(1,'project','copyGroup'),
(1,'project','create'),
@@ -2949,7 +2948,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(2,'program','view'),
(2,'project','browse'),
(2,'project','bug'),
(2,'project','build'),
(2,'project','create'),
(2,'project','dynamic'),
(2,'project','edit'),
@@ -3252,7 +3250,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(3,'program','view'),
(3,'project','browse'),
(3,'project','bug'),
(3,'project','build'),
(3,'project','dynamic'),
(3,'project','execution'),
(3,'project','group'),
@@ -3666,7 +3663,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(4,'project','batchEdit'),
(4,'project','browse'),
(4,'project','bug'),
(4,'project','build'),
(4,'project','close'),
(4,'project','copyGroup'),
(4,'project','create'),
@@ -4190,7 +4186,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5,'project','batchEdit'),
(5,'project','browse'),
(5,'project','bug'),
(5,'project','build'),
(5,'project','close'),
(5,'project','copyGroup'),
(5,'project','create'),
@@ -4625,7 +4620,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(6,'project','batchEdit'),
(6,'project','browse'),
(6,'project','bug'),
(6,'project','build'),
(6,'project','close'),
(6,'project','copyGroup'),
(6,'project','create'),
@@ -5018,7 +5012,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7,'project','batchEdit'),
(7,'project','browse'),
(7,'project','bug'),
(7,'project','build'),
(7,'project','close'),
(7,'project','copyGroup'),
(7,'project','create'),
@@ -5432,7 +5425,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8,'project','batchEdit'),
(8,'project','browse'),
(8,'project','bug'),
(8,'project','build'),
(8,'project','close'),
(8,'project','copyGroup'),
(8,'project','create'),
@@ -5805,7 +5797,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(9,'project','batchEdit'),
(9,'project','browse'),
(9,'project','bug'),
(9,'project','build'),
(9,'project','close'),
(9,'project','copyGroup'),
(9,'project','create'),
@@ -6102,7 +6093,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(10,'program','view'),
(10,'project','browse'),
(10,'project','bug'),
(10,'project','build'),
(10,'project','index'),
(10,'project','dynamic'),
(10,'project','kanban'),
@@ -6348,7 +6338,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(11,'program','view'),
(11,'project','browse'),
(11,'project','bug'),
(11,'project','build'),
(11,'project','dynamic'),
(11,'project','execution'),
(11,'project','group'),
+1 -1
View File
@@ -32,7 +32,7 @@
$appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : '';
$buildViewLink = $this->createLink('build', 'view', "buildID={$build->id}");
$productViewLink = $this->createLink('product', 'browse', "productID={$build->product}");
$projectViewLink = $this->createLink('project', 'build', "projectID={$build->project}");
$projectViewLink = $this->createLink('projectbuild', 'browse', "projectID={$build->project}");
?>
<tr <?php echo $appid?>>
<td class='text-center'><?php echo sprintf('%03d', $build->id);?></td>
+1 -1
View File
@@ -397,7 +397,7 @@ class build extends control
return $this->send($response);
}
$link = $this->app->tab == 'project' ? $this->createLink('project', 'build', "projectID=$build->project") : $this->createLink('execution', 'build', "executionID=$build->execution");
$link = $this->app->tab == 'project' ? $this->createLink('projectbuild', 'browse', "projectID=$build->project") : $this->createLink('execution', 'build', "executionID=$build->execution");
if(defined('RUN_MODE') && RUN_MODE == 'api') return $this->send(array('status' => 'success'));
return print(js::locate($link, 'parent'));
}
+1 -1
View File
@@ -795,7 +795,7 @@ class buildModel extends model
global $app;
$tab = $app->tab;
$module = $build->execution ? 'build' : 'projectbuild';
$module = $this->app->tab == 'project' ? 'projectbuild' : 'build';
if($type == 'browse')
{
$executionID = $tab == 'execution' ? $extraParams['executionID'] : $build->execution;
+1 -1
View File
@@ -62,7 +62,7 @@
<?php echo html::submitButton($lang->build->linkBug, '', 'btn btn-secondary');?>
</div>
<div class="btn-toolbar">
<?php echo html::a(inlink('view', "buildID={$build->id}&type=bug") . "#app={$app->tab}", $lang->goback, '', "class='btn'");?>
<?php echo html::a($this->createLink(($this->app->tab == 'project' ? 'projectbuild' : 'build'), 'view', "buildID={$build->id}&type=bug") . "#app={$app->tab}", $lang->goback, '', "class='btn'");?>
</div>
<div class='table-statistic'></div>
<?php $pager->show('right', 'pagerjs');?>
+1 -1
View File
@@ -72,7 +72,7 @@
<?php echo html::submitButton($lang->build->linkStory, '', 'btn btn-secondary');?>
</div>
<div class="btn-toolbar">
<?php echo html::a(inlink('view', "buildID={$build->id}&type=story") . "#app={$app->tab}", $lang->goback, '', "class='btn'");?>
<?php echo html::a($this->createLink(($this->app->tab == 'project' ? 'projectbuild' : 'build'), 'view', "buildID={$build->id}&type=story") . "#app={$app->tab}", $lang->goback, '', "class='btn'");?>
</div>
<div class='table-statistic'></div>
<?php $pager->show('right', 'pagerjs');?>
+1 -1
View File
@@ -58,7 +58,7 @@ tbody tr td:first-child input {display: none;}
</div>
<?php endif;?>
</div>
<?php $module = $build->execution ? 'build' : 'projectbuild';?>
<?php $module = $this->app->tab == 'project' ? 'projectbuild' : 'build';?>
<div id='mainContent' class='main-content'>
<div class='tabs' id='tabsNav'>
<?php $countStories = count($stories); $countBugs = count($bugs); $countGeneratedBugs = count($generatedBugs);?>
+3 -3
View File
@@ -210,7 +210,7 @@ $lang->scrum->menu->projectplan = array('link' => "{$lang->productplan->shortCom
$lang->scrum->menu->doc = array('link' => "{$lang->doc->common}|doc|projectSpace|objectID=%s", 'subModule' => 'doc,api');
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
$lang->scrum->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s", 'subModule' => 'projectbuild');
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|projectbuild|browse|project=%s", 'subModule' => 'projectbuild');
$lang->scrum->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
$lang->scrum->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
$lang->scrum->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'tree,stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team', 'exclude' => 'tree-browsetask');
@@ -262,7 +262,7 @@ $lang->waterfall->menu->design = array('link' => "{$lang->design->common}|de
$lang->waterfall->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport');
$lang->waterfall->menu->doc = array('link' => "{$lang->doc->common}|doc|projectSpace|objectID=%s");
$lang->waterfall->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s", 'subModule' => 'projectbuild');
$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|projectbuild|browse|project=%s", 'subModule' => 'projectbuild');
$lang->waterfall->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
$lang->waterfall->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
$lang->waterfall->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team', 'exclude' => 'tree-browsetask');
@@ -306,7 +306,7 @@ $lang->waterfall->menu->design['subMenu']->bysearch = array('link' => '<a href="
$lang->kanbanProject = new stdclass();
$lang->kanbanProject->menu = new stdclass();
$lang->kanbanProject->menu->index = array('link' => "{$lang->kanban->common}|project|index|project=%s");
$lang->kanbanProject->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s", 'subModule' => 'projectbuild');
$lang->kanbanProject->menu->build = array('link' => "{$lang->build->common}|projectbuild|browse|project=%s", 'subModule' => 'projectbuild');
$lang->kanbanProject->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'tree,stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team');
$lang->kanbanProject->dividerMenu = '';
+11 -13
View File
@@ -187,7 +187,6 @@ $lang->resource->project->addWhitelist = 'addWhitelist';
$lang->resource->project->unbindWhitelist = 'unbindWhitelist';
$lang->resource->project->manageProducts = 'manageProducts';
$lang->resource->project->dynamic = 'dynamic';
$lang->resource->project->build = 'build';
$lang->resource->project->qa = 'qa';
$lang->resource->project->bug = 'bug';
$lang->resource->project->testcase = 'testcase';
@@ -228,18 +227,17 @@ $lang->project->methodOrder[115] = 'unbindWhitelist';
$lang->project->methodOrder[120] = 'manageProducts';
$lang->project->methodOrder[125] = 'view';
$lang->project->methodOrder[130] = 'dynamic';
$lang->project->methodOrder[135] = 'build';
$lang->project->methodOrder[140] = 'qa';
$lang->project->methodOrder[145] = 'bug';
$lang->project->methodOrder[150] = 'testcase';
$lang->project->methodOrder[155] = 'testtask';
$lang->project->methodOrder[160] = 'testreport';
$lang->project->methodOrder[165] = 'execution';
$lang->project->methodOrder[170] = 'export';
$lang->project->methodOrder[175] = 'updateOrder';
$lang->project->methodOrder[180] = 'team';
$lang->project->methodOrder[185] = 'unlinkMember';
$lang->project->methodOrder[190] = 'manageRepo';
$lang->project->methodOrder[135] = 'qa';
$lang->project->methodOrder[140] = 'bug';
$lang->project->methodOrder[145] = 'testcase';
$lang->project->methodOrder[150] = 'testtask';
$lang->project->methodOrder[155] = 'testreport';
$lang->project->methodOrder[160] = 'execution';
$lang->project->methodOrder[165] = 'export';
$lang->project->methodOrder[170] = 'updateOrder';
$lang->project->methodOrder[175] = 'team';
$lang->project->methodOrder[180] = 'unlinkMember';
$lang->project->methodOrder[185] = 'manageRepo';
$lang->resource->projectbuild = new stdclass();
$lang->resource->projectbuild->browse = 'browse';
+6 -1
View File
@@ -1436,10 +1436,13 @@ class project extends control
$products = $this->product->getProducts($projectID, 'all', '', false);
$products = array('' => '') + $products;
$fromModule = $this->app->tab == 'project' ? 'projectbuild' : 'project';
$fromMethod = $this->app->tab == 'project' ? 'browse' : 'build';
/* Build the search form. */
$type = strtolower($type);
$queryID = ($type == 'bysearch') ? (int)$param : 0;
$actionURL = $this->createLink('project', 'build', "projectID=$projectID&type=bysearch&queryID=myQueryID");
$actionURL = $this->createLink($fromModule, $fromMethod, "projectID=$projectID&type=bysearch&queryID=myQueryID");
$devel = $project->model == 'waterfall' ? true : false;
$executions = $this->loadModel('execution')->getByProject($projectID, 'all', '', true, $devel);
@@ -1514,6 +1517,8 @@ class project extends control
$this->view->buildPairs = $this->loadModel('build')->getBuildPairs(0);
$this->view->type = $type;
$this->view->showBranch = $showBranch;
$this->view->fromModule = $fromModule;
$this->view->fromMethod = $fromMethod;
$this->display();
}
+1 -1
View File
@@ -7,7 +7,7 @@
*/
function changeProduct(productID)
{
link = createLink('project', 'build', 'projectID=' + projectID + '&type=product&param=' + productID);
link = createLink(fromModule, fromMethod, 'projectID=' + projectID + '&type=product&param=' + productID);
location.href = link;
}
+3 -1
View File
@@ -681,7 +681,9 @@ class projectModel extends model
}
else
{
$link = helper::createLink('project', 'build', "projectID=%s");
$fromModule = $this->app->tab == 'project' ? 'projectbuild' : 'project';
$fromMethod = $this->app->tab == 'project' ? 'browse' : 'build';
$link = helper::createLink($fromModule, $fromMethod, "projectID=%s");
}
}
elseif($module == 'projectrelease')
+5 -4
View File
@@ -15,6 +15,8 @@
<?php js::set('noDevStage', $lang->project->noDevStage)?>
<?php js::set('createExecution', $lang->project->createExecution)?>
<?php js::set('confirmDelete', $lang->build->confirmDelete)?>
<?php js::set('fromModule', $fromModule)?>
<?php js::set('fromMethod', $fromMethod)?>
<div id="mainMenu" class="clearfix table-row">
<div class="btn-toolbar pull-left">
<?php
@@ -24,7 +26,7 @@
$activeClass = $type == $featureType ? 'btn-active-text' : '';
$label = "<span class='text'>$label</span>";
if($type == $featureType) $label .= " <span class='label label-light label-badge'>{$buildsTotal}</span>";
echo html::a(inlink('build', "projectID=$projectID&type=$featureType"), $label, '',"class='btn btn-link $activeClass' data-app={$app->tab} id=" . $featureType .'Tab');
echo html::a($this->createLink($fromModule, $fromMethod, "projectID=$projectID&type=$featureType"), $label, '',"class='btn btn-link $activeClass' data-app={$app->tab} id=" . $featureType .'Tab');
}
?>
<?php if($project->hasProduct):?>
@@ -67,12 +69,11 @@
<tbody>
<?php foreach($projectBuilds as $productID => $builds):?>
<?php foreach($builds as $index => $build):?>
<?php $module = $build->execution ? 'build' : 'projectbuild';?>
<tr data-id="<?php echo $productID;?>">
<td class="c-id-sm text-muted"><?php echo html::a(helper::createLink($module, 'view', "buildID=$build->id"), sprintf('%03d', $build->id), '', "data-app='project'");?></td>
<td class="c-id-sm text-muted"><?php echo html::a(helper::createLink($fromModule, 'view', "buildID=$build->id"), sprintf('%03d', $build->id), '', "data-app='project'");?></td>
<td class="c-name" title='<?php echo $build->name;?>'>
<span class='build'>
<?php echo html::a($this->createLink($module, 'view', "buildID=$build->id"), $build->name, '', "data-app='project' class='buildName'");?>
<?php echo html::a($this->createLink($fromModule, 'view', "buildID=$build->id"), $build->name, '', "data-app='project' class='buildName'");?>
<?php if(!$build->execution):?>
<span class='icon icon-code-fork text-muted' title='<?php echo $lang->build->integrated;?>'></span>
<?php endif;?>
+2 -55
View File
@@ -19,62 +19,9 @@ class projectBuild extends control
* @access public
* @return void
*/
public function browse($projectID = 0, $type = 'all', $param = 0)
public function browse($projectID = 0, $type = 'all', $param = 0, $orderBy = 't1.date_desc,t1.id_desc')
{
$this->loadModel('project');
$this->loadModel('product');
$this->loadModel('execution');
$this->loadModel('build');
$project = $this->project->getByID($projectID);
/* Get products' list. */
$products = $this->product->getProducts($projectID, 'all', '', false);
$products = array('' => '') + $products;
/* Build the search form. */
$type = strtolower($type);
$queryID = ($type == 'bysearch') ? (int)$param : 0;
$actionURL = $this->createLink('projectbuild', 'browse', "projectID=$projectID&type=bysearch&queryID=myQueryID");
$executions = $this->execution->getByProject($projectID, 'all', '', true);
$this->config->build->search['fields']['project'] = $this->project->lang->executionCommon;
$this->config->build->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => array('' => '') + $executions);
$this->project->buildProjectBuildSearchForm($products, $queryID, $actionURL, 'project');
commonModel::setAppObjectID('project', $projectID);
if($type == 'bysearch')
{
$builds = $this->build->getProjectBuildsBySearch((int)$projectID, (int)$param);
}
else
{
$builds = $this->build->getProjectBuilds((int)$projectID, $type, $param);
}
/* Set project builds. */
$projectBuilds = array();
if(!empty($builds))
{
foreach($builds as $build) $projectBuilds[$build->product][] = $build;
}
/* Header and position. */
$this->view->title = $project->name . $this->lang->colon . $this->lang->execution->build;
$this->view->position[] = html::a(inlink('browse', "projectID=$projectID"), $project->name);
$this->view->position[] = $this->lang->execution->build;
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->buildsTotal = count($builds);
$this->view->projectBuilds = $projectBuilds;
$this->view->projectID = $projectID;
$this->view->product = $type == 'product' ? $param : 'all';
$this->view->project = $project;
$this->view->products = $products;
$this->view->executions = $executions;
$this->view->type = $type;
$this->display();
echo $this->fetch('project', 'build', "projectID=$projectID&type=$type&param=$param&orderBy=$orderBy");
}
/**
+11 -11
View File
@@ -11,14 +11,14 @@
*/
$lang->projectbuild->common = $lang->projectCommon . '版本';
$lang->projectbuild->browse = '版本列表';
$lang->projectbuild->create = "创建集成版本";
$lang->projectbuild->edit = "编辑集成版本";
$lang->projectbuild->delete = "删除集成版本";
$lang->projectbuild->view = "集成版本详情";
$lang->projectbuild->linkStory = "集成版本关联{$lang->SRCommon}";
$lang->projectbuild->linkBug = "集成版本关联Bug";
$lang->projectbuild->unlinkStory = "集成版本移除{$lang->SRCommon}";
$lang->projectbuild->unlinkBug = "集成版本移除Bug";
$lang->projectbuild->batchUnlink = '集成版本批量移除';
$lang->projectbuild->batchUnlinkStory = "集成版本批量移除{$lang->SRCommon}";
$lang->projectbuild->batchUnlinkBug = '集成版本批量移除Bug';
$lang->projectbuild->create = "创建版本";
$lang->projectbuild->edit = "编辑版本";
$lang->projectbuild->delete = "删除版本";
$lang->projectbuild->view = "版本详情";
$lang->projectbuild->linkStory = "关联{$lang->SRCommon}";
$lang->projectbuild->linkBug = "关联Bug";
$lang->projectbuild->unlinkStory = "移除{$lang->SRCommon}";
$lang->projectbuild->unlinkBug = "移除Bug";
$lang->projectbuild->batchUnlink = '批量移除';
$lang->projectbuild->batchUnlinkStory = "批量移除{$lang->SRCommon}";
$lang->projectbuild->batchUnlinkBug = '批量移除Bug';