-
executions as $executionID => $execution)
{
if(isset($story->tasks[$executionID])) continue;
- $execName = ($execution->type == 'kanban' and isonlybody()) ? $execution->name : html::a($this->createLink('execution', 'view', "executionID=$executionID"), $execution->name, '', "class='text-muted'");
+ $execName = ($execution->type == 'kanban' and isonlybody()) ? $executions[$executionID] : html::a($this->createLink('execution', 'view', "executionID=$executionID"), $executions[$executionID], '', "class='text-muted'");
echo "
- " . $execName . ' '; } ?> @@ -571,7 +575,7 @@
| release->name;?> | +release->name;?> | shadow):?> @@ -50,11 +50,9 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| release->build;?> | -- |
- |
+ release->includedBuild;?> | +build->placeholder->multipleSelect}'");?> | +||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| release->date;?> | @@ -94,4 +92,5 @@ +build->placeholder->multipleSelect);?> diff --git a/module/projectrelease/view/edit.html.php b/module/projectrelease/view/edit.html.php index 2d287d373a..ddccf35e5c 100644 --- a/module/projectrelease/view/edit.html.php +++ b/module/projectrelease/view/edit.html.php @@ -25,7 +25,7 @@
| release->name;?> | +release->name;?> | name, "class='form-control' required");?> | marker) ? "checked='checked'" : '';?> @@ -36,8 +36,8 @@ | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| release->build;?> | -build, "class='form-control chosen' multiple required"); ?> | + | release->includedBuild;?> | +build, "class='form-control chosen' multiple data-placeholder='{$lang->build->placeholder->multipleSelect}'"); ?> | |||||||||||||||||||||
| release->date;?> | diff --git a/module/projectrelease/view/view.html.php b/module/projectrelease/view/view.html.php index 4f8b471a9c..cb6267e017 100644 --- a/module/projectrelease/view/view.html.php +++ b/module/projectrelease/view/view.html.php @@ -350,7 +350,7 @@name;?> | ||||||||||||||||||||||||
| release->build;?> | +release->includedBuild;?> |
release = new stdclass();
$config->release->create = new stdclass();
$config->release->edit = new stdclass();
$config->release->create->requiredFields = 'name,date';
-$config->release->edit->requiredFields = 'name,build,date';
+$config->release->edit->requiredFields = 'name,date';
$config->release->editor = new stdclass();
$config->release->editor->create = array('id' => 'desc', 'tools' => 'simpleTools');
diff --git a/module/release/control.php b/module/release/control.php
index 346e23fb7a..a6f45d3ab3 100644
--- a/module/release/control.php
+++ b/module/release/control.php
@@ -82,7 +82,7 @@ class release extends control
return $this->send(array('result' => 'success', 'message' => $message, 'locate' => inlink('view', "releaseID=$releaseID")));
}
- $builds = $this->loadModel('build')->getBuildPairs($productID, $branch, 'notrunk|withbranch', 0, 'execution', '', false);
+ $builds = $this->loadModel('build')->getBuildPairs($productID, $branch, 'notrunk|withbranch|noproject', 0, 'execution', '', false);
$releasedBuilds = $this->release->getReleasedBuilds($productID, $branch);
foreach($releasedBuilds as $build) unset($builds[$build]);
@@ -139,7 +139,7 @@ class release extends control
$release = $this->release->getById((int)$releaseID);
$this->commonAction($release->product);
- $builds = $this->loadModel('build')->getBuildPairs($release->product, $release->branch, 'notrunk|withbranch', 0, 'project', $release->build, false);
+ $builds = $this->loadModel('build')->getBuildPairs($release->product, $release->branch, 'notrunk|withbranch|noproject', 0, 'project', $release->build, false);
$releasedBuilds = $this->release->getReleasedBuilds($release->product);
foreach($releasedBuilds as $releasedBuild)
{
@@ -302,7 +302,11 @@ class release extends control
$release = $this->dao->select('*')->from(TABLE_RELEASE)->where('id')->eq((int)$releaseID)->fetch();
$build = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->eq((int)$release->build)->fetch();
- if(empty($build->execution)) $this->loadModel('build')->delete(TABLE_BUILD, $build->id);
+ $this->loadModel('build')->delete(TABLE_BUILD, $release->shadow);
+ foreach($builds as $build)
+ {
+ if(empty($build->execution) and $build->createdDate == $release->createdDate) $this->build->delete(TABLE_BUILD, $build->id);
+ }
$message = $this->executeHooks($releaseID);
if($message) $response['message'] = $message;
@@ -320,7 +324,6 @@ class release extends control
$response['result'] = 'success';
$response['message'] = '';
$release = $this->release->getById($releaseID);
- $this->dao->update(TABLE_BUILD)->set('deleted')->eq(1)->where('id')->eq($release->build)->andWhere('name')->eq($release->name)->exec();
}
return $this->send($response);
@@ -525,7 +528,7 @@ class release extends control
}
else
{
- $allStories = $this->story->getExecutionStories($executionIdList, $build->product, 0, 't1.`order`_desc', 'byBranch', $release->branch, 'story', $release->stories, $pager);
+ $allStories = $this->story->getExecutionStories($executionIdList, $release->product, 0, 't1.`order`_desc', 'byBranch', $release->branch, 'story', $release->stories, $pager);
}
$this->view->allStories = $allStories;
diff --git a/module/release/js/browse.js b/module/release/js/browse.js
index 215487f727..3f5f28fce4 100644
--- a/module/release/js/browse.js
+++ b/module/release/js/browse.js
@@ -3,24 +3,28 @@ $(function()
/* Update table summary text. */
var $rows = $('#releaseList').find('tbody>tr');
+ var total = 0;
var normal = 0;
var terminate = 0;
$rows.each(function()
{
var $row = $(this);
+ if($row.find('td.c-id').length == 0) return;
+
var data = $row.data();
if(data.type === 'normal') normal++;
if(data.type === 'terminate') terminate++;
+ total++;
});
var summary = '';
if(type != 'all')
{
- summary = pageSummary.replace('%s', $rows.length);
+ summary = pageSummary.replace('%s', total);
}
else
{
- summary = pageAllSummary.replace('%total%', $rows.length).replace('%normal%', normal).replace('%terminate%', terminate);
+ summary = pageAllSummary.replace('%total%', total).replace('%normal%', normal).replace('%terminate%', terminate);
}
$('.table-statistic').html(summary);
});
diff --git a/module/release/lang/de.php b/module/release/lang/de.php
index 2b5d9dd9c0..81723c68b5 100644
--- a/module/release/lang/de.php
+++ b/module/release/lang/de.php
@@ -30,7 +30,6 @@ $lang->release->confirmUnlinkBug = "Möchten Sie diesen Bug löschen?";
$lang->release->existBuild = '『Build』『%s』 existiert bereits. Sie können den 『name』 ändern oder ein anderes 『build』 wählen.';
$lang->release->noRelease = 'Keine Releases. ';
$lang->release->errorDate = 'The release date should not be greater than today.';
-$lang->release->tips = 'If no build is selected for a release, a build with the same name as the release is created by default.';
$lang->release->basicInfo = 'Basis Info';
diff --git a/module/release/lang/en.php b/module/release/lang/en.php
index c480cbd021..c226ece8bd 100644
--- a/module/release/lang/en.php
+++ b/module/release/lang/en.php
@@ -30,7 +30,6 @@ $lang->release->confirmUnlinkBug = "Do you want to remove this bug?";
$lang->release->existBuild = '『Build』『%s』existed. You could change『name』or choose a『build』.';
$lang->release->noRelease = 'No releases yet.';
$lang->release->errorDate = 'The release date should not be greater than today.';
-$lang->release->tips = 'If no build is selected for a release, a build with the same name as the release is created by default.';
$lang->release->basicInfo = 'Basic Info';
@@ -64,9 +63,9 @@ $lang->release->all = 'All';
$lang->release->notify = 'Notify';
$lang->release->notifyUsers = 'Notify Users';
$lang->release->mailto = 'Mailto';
-$lang->release->mailContent = ' Dear users, The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version. '; -$lang->release->storyList = 'Story List:%s。 '; -$lang->release->bugList = 'Bug List:%s。 '; +$lang->release->mailContent = 'Dear users, The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version. '; +$lang->release->storyList = 'Story List:%s。 '; +$lang->release->bugList = 'Bug List:%s。 '; $lang->release->pageAllSummary = 'Total releases: %total%, Normal: %normal%, Terminate: %terminate%.'; $lang->release->pageSummary = "Total releases: %s."; diff --git a/module/release/lang/fr.php b/module/release/lang/fr.php index ca2d60eb54..2819d6a36b 100644 --- a/module/release/lang/fr.php +++ b/module/release/lang/fr.php @@ -30,7 +30,6 @@ $lang->release->confirmUnlinkBug = "Voulez-vous retirer ce bug de la release ? $lang->release->existBuild = '『Build』『%s』existant. Vous pouvez changer『name』ou choisir un『build』.'; $lang->release->noRelease = 'Pas de release à ce jour.'; $lang->release->errorDate = "La date de release ne doit pas être supérieure à aujourd'hui."; -$lang->release->tips = 'If no build is selected for a release, a build with the same name as the release is created by default.'; $lang->release->basicInfo = 'Infos de Base'; @@ -64,9 +63,9 @@ $lang->release->all = 'Tout'; $lang->release->notify = 'Notify'; $lang->release->notifyUsers = 'Notify Users'; $lang->release->mailto = 'Mailto'; -$lang->release->mailContent = 'Dear users, The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version. '; -$lang->release->storyList = 'Story List:%s。 '; -$lang->release->bugList = 'Bug List:%s。 '; +$lang->release->mailContent = 'Dear users, The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version. '; +$lang->release->storyList = 'Story List:%s。 '; +$lang->release->bugList = 'Bug List:%s。 '; $lang->release->pageAllSummary = 'Total releases: %total%, Normal: %normal%, Terminate: %terminate%.'; $lang->release->pageSummary = "Total releases: %s."; diff --git a/module/release/lang/zh-cn.php b/module/release/lang/zh-cn.php index 57af6338f2..1d1db7edca 100644 --- a/module/release/lang/zh-cn.php +++ b/module/release/lang/zh-cn.php @@ -30,7 +30,6 @@ $lang->release->confirmUnlinkBug = "您确认移除该Bug吗?"; $lang->release->existBuild = '『版本』已经有『%s』这条记录了。您可以更改『发布名称』或者选择一个『版本』。'; $lang->release->noRelease = '暂时没有发布。'; $lang->release->errorDate = '发布日期不能大于今天。'; -$lang->release->tips = '如果发布未选择任何版本,系统会默认创建一个和该发布同名的版本。'; $lang->release->basicInfo = '基本信息'; diff --git a/module/release/model.php b/module/release/model.php index 90f4b12acc..eba1139120 100644 --- a/module/release/model.php +++ b/module/release/model.php @@ -54,12 +54,11 @@ class releaseModel extends model */ public function getList($productID, $branch = 'all', $type = 'all', $orderBy = 't1.date_desc', $pager = null) { - $releases = $this->dao->select('t1.*, t2.name as productName') - ->from(TABLE_RELEASE)->alias('t1') + $releases = $this->dao->select('t1.*, t2.name as productName')->from(TABLE_RELEASE)->alias('t1') ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id') ->where('t1.deleted')->eq(0) ->beginIF($productID)->andWhere('t1.product')->eq((int)$productID)->fi() - ->beginIF($branch !== 'all')->andWhere('t1.branch')->like(",{$branch},")->fi() + ->beginIF($branch !== 'all')->andWhere("FIND_IN_SET($branch, t1.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) @@ -116,19 +115,30 @@ class releaseModel extends model */ public function getReleasedBuilds($productID, $branch = 'all') { - $builds = $this->dao->select('build')->from(TABLE_RELEASE) + $releases = $this->dao->select('branch,shadow,build')->from(TABLE_RELEASE) ->where('deleted')->eq(0) ->andWhere('product')->eq($productID) - ->beginIF($branch !== 'all')->andWhere('branch')->eq($branch)->fi() - ->fetchPairs('build'); + ->fetchAll(); - $buildIDList = array(); - foreach($builds as $build) + $buildIdList = array(); + foreach($releases as $release) { - $build = explode(',', $build); - $buildIDList = array_merge($buildIDList, $build); + if($branch != 'all') + { + $inBranch = false; + foreach(explode(',', trim($release->branch, ',')) as $branchID) + { + if(empty($branchID)) continue; + if(strpos(",{$branch},", ",{$branchID},") !== false) $inBranch = true; + } + if(!$inBranch) continue; + } + + $builds = explode(',', $release->build); + $buildIdList = array_merge($buildIdList, $builds); + $buildIdList[] = $release->shadow; } - return $buildIDList; + return $buildIdList; } /** @@ -182,45 +192,20 @@ class releaseModel extends model ->remove('allchecker,files,labels,uid,sync') ->get(); - /* Auto create build when release is not link build. */ - if(empty($release->build) and $release->name) + /* Auto create shadow build. */ + if($release->name) { - $build = $this->dao->select('*')->from(TABLE_BUILD) - ->where('deleted')->eq('0') - ->andWhere('name')->eq($release->name) - ->andWhere('product')->eq($productID) - ->andWhere('branch')->eq($branch) - ->fetch(); - if($build) - { - return dao::$errors['build'] = sprintf($this->lang->release->existBuild, $release->name); - } - else - { - $build = new stdclass(); - $build->project = $projectID; - $build->product = (int)$productID; - $build->branch = (int)$branch; - $build->name = $release->name; - $build->date = $release->date; - $build->builder = $this->app->user->account; - $build->desc = $release->desc; - $build->execution = 0; - $build->createdBy = $this->app->user->account; - $build->createdDate = helper::now(); + $shadowBuild = new stdclass(); + $shadowBuild->product = $release->product; + $shadowBuild->builds = $release->build; + $shadowBuild->name = $release->name; + $shadowBuild->date = $release->date; + $shadowBuild->createdBy = $this->app->user->account; + $shadowBuild->createdDate = helper::now(); + $this->dao->insert(TABLE_BUILD)->data($shadowBuild)->exec(); - $build = $this->loadModel('file')->processImgURL($build, $this->config->release->editor->create['id']); - $this->app->loadLang('build'); - $this->dao->insert(TABLE_BUILD)->data($build) - ->autoCheck() - ->check('name', 'unique', "product = {$productID} AND branch = {$branch} AND deleted = '0'") - ->batchCheck($this->config->release->create->requiredFields, 'notempty') - ->exec(); - if(dao::isError()) return false; - - $buildID = $this->dao->lastInsertID(); - $release->build = $buildID; - } + if(dao::isError()) return false; + $release->shadow = $this->dao->lastInsertID(); } if($release->build) @@ -249,6 +234,7 @@ class releaseModel extends model $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) ->autoCheck() @@ -258,7 +244,7 @@ class releaseModel extends model if(dao::isError()) { - if(!empty($buildID)) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($buildID)->exec(); + if(!empty($release->shadow)) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($release->shadow)->exec(); return false; } @@ -266,7 +252,7 @@ class releaseModel extends model if(dao::isError()) { - if(!empty($buildID)) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($buildID)->exec(); + if(!empty($release->shadow)) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($release->shadow)->exec(); } else { @@ -310,7 +296,6 @@ class releaseModel extends model $oldRelease = $this->getById($releaseID); $release = fixer::input('post')->stripTags($this->config->release->editor->edit['id'], $this->config->allowedTags) - ->add('id', $releaseID) ->setDefault('build', '') ->setDefault('mailto', '') ->setDefault('deleteFiles', array()) @@ -346,6 +331,12 @@ class releaseModel extends model ->exec(); if(!dao::isError()) { + $shadowBuild = array(); + if($release->name != $oldRelease->name) $shadowBuild['name'] = $release->name; + if($release->build != $oldRelease->build) $shadowBuild['builds'] = $release->build; + if($release->date != $oldRelease->date) $shadowBuild['date'] = $release->date; + if($shadowBuild) $this->dao->update(TABLE_BUILD)->data($shadowBuild)->where('id')->eq($oldRelease->shadow)->exec(); + $this->file->processFile4Object('release', $oldRelease, $release); return common::createChanges($oldRelease, $release); } diff --git a/module/release/view/browse.html.php b/module/release/view/browse.html.php index 86a23ef7bd..ad9b6aa7c4 100644 --- a/module/release/view/browse.html.php +++ b/module/release/view/browse.html.php @@ -69,13 +69,15 @@ ?> - builds);?> + builds);?> + 1 ? "rowspan='{$buildCount}'" : '';?> + builds = array('');?> builds as $build):?> | |||||||||||||||||||||||
| id"), sprintf('%03d', $release->id));?> | -+ | >id"), sprintf('%03d', $release->id));?> | +>
marker ? " |
+ type != 'normal'):?> branchName;?> @@ -93,16 +96,17 @@ if($moduleName == 'build' and $this->execution->checkPriv($build->execution)) $canClickable = true; echo $canClickable ? html::a($this->createLink($moduleName, 'view', "buildID=$build->id"), $build->name, '', "data-app='project'") : $build->name; ?> + | -projectName;?> | +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');?> |
| release->name;?> | +release->name;?> |
@@ -34,11 +34,9 @@
|
|||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| release->build;?> | -- |
- |
+ release->includedBuild;?> | +build->placeholder->multipleSelect}'");?> | +|||||||||||||||||||||
| release->date;?> | diff --git a/module/release/view/edit.html.php b/module/release/view/edit.html.php index d203e03e18..bd144236a8 100644 --- a/module/release/view/edit.html.php +++ b/module/release/view/edit.html.php @@ -25,7 +25,7 @@
| release->name;?> | +release->name;?> | name, "class='form-control' required");?> | marker) ? "checked='checked'" : '';?> @@ -36,8 +36,8 @@ |
|---|---|---|---|
| release->build;?> | -build, "class='form-control chosen' required multiple"); ?> | +release->includedBuild;?> | +build, "class='form-control chosen' multiple data-placeholder='{$lang->build->placeholder->multipleSelect}'"); ?> |
| release->date;?> | diff --git a/module/release/view/view.html.php b/module/release/view/view.html.php index accbb8d1b7..00698cf074 100644 --- a/module/release/view/view.html.php +++ b/module/release/view/view.html.php @@ -350,7 +350,7 @@name;?> | ||
| release->build;?> | +release->includedBuild;?> |
app->loadLang('action');
- $products = $this->loadModel('product')->getProductPairsByProject($objectID);
- $products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('id')->in(array_keys($products))->andWhere('shadow')->eq(0)->fetchPairs('id', 'name'); /* Remove shadow products. */
+ $products = $this->loadModel('product')->getProductPairsByProject($objectID);
+ $products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('id')->in(array_keys($products))->andWhere('shadow')->eq(0)->fetchPairs('id', 'name'); // Remove shadow products.
$shadowProduct = null;
if($this->app->tab == 'project' && $objectID) $shadowProduct = $this->loadModel('product')->getShadowProductByProject($objectID);
@@ -150,7 +150,8 @@ class repo extends control
$this->view->groups = $this->loadModel('group')->getPairs();
$this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted|noclosed');
$this->view->products = $products;
- $this->view->relatedProjects = array();
+ $this->view->projects = $this->loadModel('product')->getProjectPairsByProductIDList(array_keys($products));
+ $this->view->relatedProjects = $this->app->tab == 'project' ? array($objectID) : array();
$this->view->serviceHosts = $this->loadModel('gitlab')->getPairs();
$this->view->objectID = $objectID;
$this->view->shadowProduct = $shadowProduct;
@@ -1655,12 +1656,7 @@ class repo extends control
->get();
/* Get all projects that can be accessed. */
- $accessProjects = array();
- foreach($postData->products as $productID)
- {
- $projects = $this->loadModel('product')->getProjectPairsByProduct($productID);
- $accessProjects = $accessProjects + $projects;
- }
+ $accessProjects = $this->loadModel('product')->getProjectPairsByProductIDList($postData->products);
$selectedProjects = array_intersect(array_keys($accessProjects), $postData->projects);
diff --git a/module/repo/css/browse.css b/module/repo/css/browse.css
index 114203c1e2..9a157205eb 100644
--- a/module/repo/css/browse.css
+++ b/module/repo/css/browse.css
@@ -17,7 +17,7 @@
#branchList {line-height: 25px;}
#branchList .hide-in-search, #branchList .tree ul {padding-left: 20px;}
.tree li.has-list.open:before {border-left: none;}
-.tree li {padding: 0;}
+#branchList .tree li {padding: 0;}
.branch-or-tag {border-radius: 4px;}
.c-name {min-width: 150px;}
diff --git a/module/repo/js/edit.js b/module/repo/js/edit.js
index 85c1b2f921..19ff865cfb 100644
--- a/module/repo/js/edit.js
+++ b/module/repo/js/edit.js
@@ -1,6 +1,6 @@
$(function()
{
- scmChanged(scm, true);
+ scmChanged(repoSCM, true);
$('#submit').mousedown(function()
{
$form = $(this).closest('form');
@@ -86,6 +86,7 @@ function scmChanged(scm, isFirstRequest = false)
if(scm == 'Git' || scm == 'Gitea' || scm == 'Gogs')
{
$('.account-fields').addClass('hidden');
+ if(['Git', 'Gitea', 'Gogs'].indexOf(repoSCM) === -1) $('#client').val('');
$('.tips-git').removeClass('hidden');
$('.tips-svn').addClass('hidden');
diff --git a/module/repo/model.php b/module/repo/model.php
index 3dbf64b26f..3e0727ef4c 100644
--- a/module/repo/model.php
+++ b/module/repo/model.php
@@ -253,6 +253,7 @@ class repoModel extends model
public function update($id)
{
$repo = $this->getRepoByID($id);
+ if(!$this->checkConnection()) return false;
$isPipelineServer = in_array(strtolower($this->post->SCM), $this->config->repo->gitServiceList) ? true : false;
diff --git a/module/repo/view/browse.html.php b/module/repo/view/browse.html.php
index cde898c798..bc8b0c5204 100644
--- a/module/repo/view/browse.html.php
+++ b/module/repo/view/browse.html.php
@@ -44,7 +44,7 @@
$selected = ($branchName == $branchID and $branchOrTag == 'branch') ? 'selected' : '';
$base64BranchID = helper::safe64Encode(base64_encode($branchName));
$branchLink = $this->createLink('repo', 'browse', "repoID=$repoID&branchID=$base64BranchID&objectID=$objectID");
- echo " | |
| repo->projects;?> | -+ | ||
| story->title;?> | story->status;?> | story->closedReason;?> | -story->comment;?> | + | ' closedReason != 'duplicate') echo "style='display:none'";?>> + '') + $productStoryList[$story->product][$story->branch], $story->duplicateStory ? $story->duplicateStory : '', "class='form-control' placeholder='{$lang->bug->duplicateTip}'");?> + | ' closedReason != 'subdivided') echo "style='display:none'";?>> idAB}'");?> |
' . $branchTagOption[$branch] . html::select("stages[$branch]", $lang->story->stageList, $stage, "class='form-control chosen'") . '
'; + } + } + else + { + echo html::select('stage', $lang->story->stageList, $story->stage, "class='form-control chosen'"); + } + ?> +