From b8c4c2bb9d101295783c33218160989b22d794b9 Mon Sep 17 00:00:00 2001
From: wangyidong
Date: Thu, 10 Nov 2022 14:13:29 +0800
Subject: [PATCH] * code for task #75426,75427.
---
module/file/model.php | 2 +-
module/projectrelease/control.php | 11 +++----
module/projectrelease/css/browse.css | 4 ++-
module/projectrelease/model.php | 19 +++++-------
module/projectrelease/view/browse.html.php | 35 ++++++++++++++--------
module/projectrelease/view/view.html.php | 11 +++++--
6 files changed, 50 insertions(+), 32 deletions(-)
diff --git a/module/file/model.php b/module/file/model.php
index 9fe5e57900..08523e554a 100755
--- a/module/file/model.php
+++ b/module/file/model.php
@@ -44,7 +44,7 @@ class fileModel extends model
{
$files = $this->dao->select('*')->from(TABLE_FILE)
->where('objectType')->eq($objectType)
- ->andWhere('objectID')->eq((int)$objectID)
+ ->andWhere('objectID')->in($objectID)
->andWhere('extra')->ne('editor')
->beginIF($extra)->andWhere('extra')->eq($extra)
->andWhere('deleted')->eq('0')
diff --git a/module/projectrelease/control.php b/module/projectrelease/control.php
index 936f704b05..3c4b980d65 100644
--- a/module/projectrelease/control.php
+++ b/module/projectrelease/control.php
@@ -82,19 +82,20 @@ class projectrelease extends control
$this->app->loadClass('pager', $static = true);
$pager = new pager($recTotal, $recPerPage, $pageID);
+ $releases = $this->projectrelease->getList($projectID, $type, $orderBy, $pager);
+ $productIdList = array();
+ foreach($releases as $release) $productIdList[$release->product] = $release->product;
+
$this->view->title = $objectName . $this->lang->colon . $this->lang->release->browse;
- $this->view->position[] = $this->lang->release->browse;
$this->view->execution = $execution;
$this->view->project = $project;
$this->view->products = $this->loadModel('product')->getProducts($projectID);
- $this->view->releases = $this->projectrelease->getList($projectID, $type, $orderBy, $pager);
+ $this->view->releases = $releases;
+ $this->view->builds = $this->loadModel('build')->getBuildPairs($productIdList, 'all', 'notrunk,withbranch', $projectID, 'project');
$this->view->projectID = $projectID;
$this->view->executionID = $executionID;
$this->view->type = $type;
$this->view->from = $this->app->tab;
- $this->view->recTotal = $recTotal;
- $this->view->recPerPage = $recPerPage;
- $this->view->pageID = $pageID;
$this->view->pager = $pager;
$this->display();
}
diff --git a/module/projectrelease/css/browse.css b/module/projectrelease/css/browse.css
index fb0a3a0c39..8f2f032ebf 100644
--- a/module/projectrelease/css/browse.css
+++ b/module/projectrelease/css/browse.css
@@ -1,5 +1,7 @@
#releaseList {font-size: 13px;}
+#releaseList tr:hover {background-color:unset;}
td {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
-.c-build {width: 100px;}
+.c-build {width: 250px;}
+td.c-build {padding-left:8px !important;}
.c-product, .c-execution {width: 120px;}
diff --git a/module/projectrelease/model.php b/module/projectrelease/model.php
index 1493ef5f0b..29ef014a2e 100644
--- a/module/projectrelease/model.php
+++ b/module/projectrelease/model.php
@@ -23,10 +23,9 @@ class projectreleaseModel extends model
*/
public function getByID($releaseID, $setImgSize = false)
{
- $release = $this->dao->select('t1.*, t2.id as buildID, t2.filePath, t2.scmPath, t2.name as buildName, t2.execution, t3.name as productName, t3.type as productType')
+ $release = $this->dao->select('t1.*, t2.name as productName, t2.type as productType')
->from(TABLE_RELEASE)->alias('t1')
- ->leftJoin(TABLE_BUILD)->alias('t2')->on('t1.build = t2.id')
- ->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
+ ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id')
->where('t1.id')->eq((int)$releaseID)
->orderBy('t1.id DESC')
->fetch();
@@ -34,8 +33,9 @@ class projectreleaseModel extends model
$this->loadModel('file');
$release = $this->file->replaceImgURL($release, 'desc');
- $release->files = $this->file->getByObject('release', $releaseID);
- if(empty($release->files))$release->files = $this->file->getByObject('build', $release->buildID);
+ $release->files = $this->file->getByObject('release', $releaseID);
+ $release->buildInfos = $this->dao->select('id,project,product,name,scmPath,filePath')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll('id');
+ if(empty($release->files))$release->files = $this->file->getByObject('build', $release->build);
if($setImgSize) $release->desc = $this->file->setImgSize($release->desc);
return $release;
}
@@ -51,15 +51,12 @@ class projectreleaseModel extends model
*/
public function getList($projectID, $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.execution, t4.name as executionName')
- ->from(TABLE_RELEASE)->alias('t1')
+ return $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_EXECUTION)->alias('t4')->on('t3.execution = t4.id')
- ->where('t1.project')->eq((int)$projectID)
+ ->where('t1.deleted')->eq(0)
+ ->andWhere("FIND_IN_SET($projectID, t1.project)")
->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()
- ->andWhere('t1.deleted')->eq(0)
->orderBy($orderBy)
->page($pager)
->fetchAll();
diff --git a/module/projectrelease/view/browse.html.php b/module/projectrelease/view/browse.html.php
index 399a5f543a..9764482095 100644
--- a/module/projectrelease/view/browse.html.php
+++ b/module/projectrelease/view/browse.html.php
@@ -44,7 +44,7 @@
-
+
| release->id;?> |
@@ -52,7 +52,6 @@
hasProduct):?>
release->product;?> |
- executionCommon;?> |
release->build;?> |
release->status;?> |
release->date;?> |
@@ -65,28 +64,40 @@
+ build, ','));
+ $buildCount = count($linkedBuilds);
+ foreach($linkedBuilds as $i => $buildID):
+ ?>
+
+
+ 1 ? "rowspan='$buildCount'" : '';?>
- | id"), sprintf('%03d', $release->id));?> |
-
+ | >id"), sprintf('%03d', $release->id));?> |
+ >
marker ? " " : '';
echo html::a(inlink('view', "release=$release->id"), $release->name, '', "data-app='$from'") . $flagIcon;
?>
|
hasProduct):?>
- productName?> |
+ title='productName?>'>productName?> |
- executionName?> |
- hasProduct and !$project->multiple) ? 'data-app=project' : '';?>
- execution) ? $release->buildName : html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName, '', "$dataApp");?> |
+ createLink('build', 'view', "buildID=$buildID"), $buildName, '', "data-app='project'");?> |
processStatus('release', $release);?>
-
+ | class='c-status text-center' title=''>
|
- date;?> |
- " . $this->loadModel('flow')->getFieldValue($extendField, $release) . "";?>
- projectrelease->buildOperateMenu($release, 'browse');?> |
+ class='text-center'>date;?> |
+ " . $this->loadModel('flow')->getFieldValue($extendField, $release) . "";?>
+ class='c-actions'>projectrelease->buildOperateMenu($release, 'browse');?> |
+
+
+ | createLink('build', 'view', "buildID=$buildID"), $buildName, '', "data-app='project'");?> |
+
+
+
diff --git a/module/projectrelease/view/view.html.php b/module/projectrelease/view/view.html.php
index d59bada8f3..eac0127387 100644
--- a/module/projectrelease/view/view.html.php
+++ b/module/projectrelease/view/view.html.php
@@ -351,8 +351,15 @@
| release->build;?> |
-
- execution) ? html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName, '_blank') : $release->buildName;?>
+ |
+ buildInfos as $buildID => $buildInfo)
+ {
+ $buildHtml[] = html::a($this->createLink('build', 'view', "buildID=$buildID"), $buildInfo->name);
+ }
+ echo join(', ', $buildHtml);
+ ?>
|