diff --git a/module/action/model.php b/module/action/model.php index 784329a4f7..c055f3399c 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -384,7 +384,7 @@ class actionModel extends model $name = $execution->name; $method = $execution->type == 'kanban' ? 'kanban' : 'view'; - $action->extra = (!common::hasPriv('execution', $method) or ($method == 'kanban' and isonlybody())) ? $name : html::a(helper::createLink('execution', $method, "executionID=$action->execution"), $name); + $action->extra = (!common::hasPriv('execution', $method) or ($method == 'kanban' and isonlybody())) ? $name : html::a(helper::createLink('execution', $method, "executionID=$action->execution"), $name, '', "data-app='execution'"); } } elseif($actionName == 'linked2project') diff --git a/module/custom/control.php b/module/custom/control.php index 56aba91414..f939abc1be 100644 --- a/module/custom/control.php +++ b/module/custom/control.php @@ -644,7 +644,7 @@ class custom extends control return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'top')); } - $disabledFeatures = array('program', 'productLine', 'scrum' => array()); + $disabledFeatures = array('program', 'productLine', 'scrum' => array('scrumMeasrecord')); foreach($this->config->custom->features as $feature) { $function = 'has' . ucfirst($feature) . 'Data'; diff --git a/module/release/css/browse.css b/module/release/css/browse.css index 252ff7eb52..8c33b9fd78 100644 --- a/module/release/css/browse.css +++ b/module/release/css/browse.css @@ -1,5 +1,6 @@ #releaseList {font-size: 13px;} td {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;} +.main-table tbody>tr>td:first-child{padding: 2px 8px!important;} .c-id {width: 60px} .c-branch {width: 100px} diff --git a/module/release/model.php b/module/release/model.php index 0a1bbebcbf..4ec48b56ea 100644 --- a/module/release/model.php +++ b/module/release/model.php @@ -53,19 +53,38 @@ class releaseModel extends model */ public function getList($productID, $branch = 'all', $type = 'all', $orderBy = 't1.date_desc', $pager = null) { - return $this->dao->select('t1.*, t2.name as productName, t3.id as buildID, t3.name as buildName, t3.project, t4.name as projectName') + $releases = $this->dao->select('t1.*, t2.name as productName') ->from(TABLE_RELEASE)->alias('t1') ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id') - ->leftJoin(TABLE_BUILD)->alias('t3')->on('t1.build = t3.id') - ->leftJoin(TABLE_PROJECT)->alias('t4')->on('t1.project = t4.id') ->where('t1.deleted')->eq(0) ->beginIF($productID)->andWhere('t1.product')->eq((int)$productID)->fi() - ->beginIF($branch !== 'all')->andWhere('t1.branch')->eq($branch)->fi() + ->beginIF($branch !== 'all')->andWhere('t1.branch')->like(",{$branch},")->fi() ->beginIF($type != 'all' && $type != 'review')->andWhere('t1.status')->eq($type)->fi() ->beginIF($type == 'review')->andWhere("FIND_IN_SET('{$this->app->user->account}', t1.reviewers)")->fi() ->orderBy($orderBy) ->page($pager) ->fetchAll(); + + $builds = $this->dao->select("t1.id, t1.name, IF(t2.name IS NOT NULL, t2.name, '') AS projectName, IF(t3.name IS NOT NULL, t3.name, '{$this->lang->trunk}') AS branchName") + ->from(TABLE_BUILD)->alias('t1') + ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') + ->leftJoin(TABLE_BRANCH)->alias('t3')->on('t1.branch = t3.id') + ->fetchAll('id'); + + foreach($releases as $release) + { + $releaseBuilds = array(); + foreach(explode(',', $release->build) as $buildID) + { + if(!$buildID or !isset($builds[$buildID])) continue; + + $releaseBuilds[] = $builds[$buildID]; + } + + $release->builds = $releaseBuilds; + } + + return $releases; } /** @@ -219,8 +238,9 @@ class releaseModel extends model } } - $release->branch = implode(',', $branches); - $release->project = implode(',', $projects); + $release->build = ',' . trim($release->build, ',') . ','; + $release->branch = ',' . trim(implode(',', $branches), ',') . ','; + $release->project = ',' . trim(implode(',', $projects), ',') . ','; } $release = $this->loadModel('file')->processImgURL($release, $this->config->release->editor->create['id'], $this->post->uid); $this->dao->insert(TABLE_RELEASE)->data($release) @@ -304,8 +324,9 @@ class releaseModel extends model $branches[$build->branch] = $build->branch; $projects[$build->project] = $build->project; } - $release->branch = implode(',', $branches); - $release->project = implode(',', $projects); + $release->build = ',' . trim($release->build, ',') . ','; + $release->branch = ',' . trim(implode(',', $branches), ',') . ','; + $release->project = ',' . trim(implode(',', $projects), ',') . ','; } $this->dao->update(TABLE_RELEASE)->data($release, 'deleteFiles') diff --git a/module/release/view/browse.html.php b/module/release/view/browse.html.php index d8e18d56f6..5552c7eb28 100644 --- a/module/release/view/browse.html.php +++ b/module/release/view/browse.html.php @@ -46,16 +46,13 @@
-| release->id;?> | release->name;?> | -release->build;?> | - type != 'normal'):?> -product->branch;?> | - -release->project;?> | +release->build;?> | +release->project;?> | release->status;?> | release->date;?> | + builds);?> + + builds as $build):?>||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id"), sprintf('%03d', $release->id));?> | -+ + | id"), sprintf('%03d', $release->id));?> | +
marker ? " |
- execution) ? $release->buildName : html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName);?> | - type != 'normal'):?> -'>branch];?> | -projectName;?> | ++ type != 'normal'):?> + branchName;?> + + createLink('build', 'view', "buildID=$build->id"), $build->name);?> + | +projectName;?> | + processStatus('release', $release);?> -+ | - | date;?> | - " . $this->loadModel('flow')->getFieldValue($extendField, $release) . "";?> -- release->buildOperateMenu($release, 'browse');?> - | +date;?> | + " . $this->loadModel('flow')->getFieldValue($extendField, $release) . "";?> +release->buildOperateMenu($release, 'browse');?> | +