This commit is contained in:
liumengyi
2024-05-23 11:22:10 +08:00
parent bf1d88ee6d
commit fdd682f4f2
3 changed files with 39 additions and 41 deletions
+3 -25
View File
@@ -995,7 +995,7 @@ class bugZen extends bug
{
$builds = $this->build->getBuildPairs(array($productID), $branch, 'noempty,noterminate,nodone,withbranch,noreleased');
}
$builds = $this->addReleaseLabelForBuilds($productID, $builds);
$builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
return $this->updateBug($bug, array('builds' => $builds));
}
@@ -1194,6 +1194,7 @@ class bugZen extends bug
$assignedToList = array_filter($assignedToList);
if(empty($assignedToList)) $assignedToList = $this->user->getPairs('devfirst|noclosed');
}
$openedBuilds = $this->build->addReleaseLabelForBuilds($bug->product, $openedBuilds);
if(!isset($openedBuilds[$bug->openedBuild]))
{
$build = $this->build->getByID((int)$bug->openedBuild);
@@ -1215,7 +1216,7 @@ class bugZen extends bug
}
$resolvedBuilds = $this->build->getBuildPairs(array($bug->product), $bug->branch, 'noempty');
$resolvedBuilds = $this->addReleaseLabelForBuilds($bug->product, $resolvedBuilds);
$resolvedBuilds = $this->build->addReleaseLabelForBuilds($bug->product, $resolvedBuilds);
$this->config->moreLinks['case'] = inlink('ajaxGetProductCases', "bugID={$bug->id}");
@@ -2408,27 +2409,4 @@ class bugZen extends bug
return $chartOption;
}
/**
* 给版本中的发布增加标识。
* Add label for the release in the builds.
*
* @param int $productID
* @param array $builds
* @access protected
* @return array
*/
protected function addReleaseLabelForBuilds(int $productID, array $builds): array
{
$releases = $this->loadModel('build')->getRelatedReleases(array($productID));
$buildItems = array();
foreach($builds as $buildID => $buildName) $buildItems[$buildID] = array('value' => $buildID, 'text' => $buildName);
foreach($releases as $release)
{
if(isset($buildItems[$release->shadow])) $buildItems[$release->shadow]['content'] = array('html' => "<div class='flex clip'>{$buildItems[$release->shadow]['text']}</div><label class='label bg-primary-50 text-primary ml-1 flex-none'>{$this->lang->release->common}</label>", 'class' => 'w-full flex nowrap');
}
return array_values($buildItems);
}
}
+10 -14
View File
@@ -234,20 +234,18 @@ class build extends control
$isJsonView = $this->app->getViewType() == 'json';
if($varName == 'openedBuild' )
{
$params = $type == 'all' ? 'noempty,withbranch,noreleased' : 'noempty,noterminate,nodone,withbranch,noreleased';
$params = $type == 'all' ? 'withbranch,noreleased' : 'noterminate,nodone,withbranch,noreleased';
$builds = $this->build->getBuildPairs(array($productID), $branch, $params, 0, 'project', $build);
if($isJsonView) return print(json_encode($builds));
$items = array();
foreach($builds as $buildID => $buildName) $items[] = array('text' => $buildName, 'value' => $buildID, 'keys' => $buildName);
return print(json_encode($items));
$builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
return print(json_encode($builds));
}
if($varName == 'openedBuilds' )
{
$builds = $this->build->getBuildPairs(array($productID), $branch, 'noempty,noreleased', 0, 'project', $build);
$buildList = array();
foreach($builds as $buildID => $buildName) $buildList[] = array('value' => $buildID, 'text' => $buildName);
return $this->send($buildList);
$builds = $this->build->getBuildPairs(array($productID), $branch, 'noempty,noreleased', 0, 'project', $build);
$builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
return $this->send($builds);
}
if($varName == 'resolvedBuild')
{
@@ -255,17 +253,15 @@ class build extends control
$builds = $this->build->getBuildPairs(array($productID), $branch, $params, 0, 'project', $build);
if($isJsonView) return print(json_encode($builds));
$items = array();
foreach($builds as $buildID => $buildName) $items[] = array('text' => $buildName, 'value' => $buildID, 'keys' => $buildName);
return print(json_encode($items));
$builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
return print(json_encode($builds));
}
$builds = $this->build->getBuildPairs(array($productID), $branch, $type, 0, 'project', $build, false);
if($isJsonView) return print(json_encode($builds));
$items = array();
foreach($builds as $buildID => $buildName) $items[] = array('text' => $buildName, 'value' => $buildID);
return print(json_encode($items));
$builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
return print(json_encode($builds));
}
/**
+26 -2
View File
@@ -405,11 +405,12 @@ class buildModel extends model
->leftJoin(TABLE_BUILD)->alias('t2')->on('FIND_IN_SET(t2.id, t1.build)')
->leftJoin(TABLE_BRANCH)->alias('t3')->on('FIND_IN_SET(t3.id, t1.branch)')
->leftJoin(TABLE_PRODUCT)->alias('t4')->on('t1.product=t4.id')
->where('t1.product')->in($productIdList)
->beginIF(!empty($buildIdList))->andWhere('t2.id')->in($buildIdList)->fi()
->where('(t1.product')->in($productIdList)
->beginIF($objectType === 'project' && $objectID)->andWhere("(FIND_IN_SET('$objectID', t1.project)")->orWhere('t1.project')->eq('0')->markRight(1)->fi()
->andWhere('t1.deleted')->eq(0)
->andWhere('t1.shadow')->ne(0)
->markRight(true)
->beginIF(!empty($buildIdList))->orWhere('t2.id')->in($buildIdList)->fi()
->fetchAll('id');
if($shadows === false) $shadows = $this->dao->select('shadow')->from(TABLE_RELEASE)->where('product')->in($productIdList)->fetchPairs('shadow', 'shadow'); // Get the buildID under the shadow product.
@@ -900,4 +901,27 @@ class buildModel extends model
return $stories;
}
/**
* 给版本中的发布增加标识。
* Add label for the release in the builds.
*
* @param int $productID
* @param array $builds
* @access protected
* @return array
*/
public function addReleaseLabelForBuilds(int $productID, array $builds): array
{
$releases = $this->getRelatedReleases(array($productID));
$buildItems = array();
foreach($builds as $buildID => $buildName) $buildItems[$buildID] = array('value' => $buildID, 'text' => $buildName);
foreach($releases as $release)
{
if(isset($buildItems[$release->shadow])) $buildItems[$release->shadow]['content'] = array('html' => "<div class='flex clip'>{$buildItems[$release->shadow]['text']}</div><label class='label bg-primary-50 text-primary ml-1 flex-none'>{$this->lang->release->common}</label>", 'class' => 'w-full flex nowrap');
}
return array_values($buildItems);
}
}