* Finish task #57664.

This commit is contained in:
caoyanyi
2022-06-21 10:33:12 +08:00
parent e138da8508
commit dfbf69a211
4 changed files with 57 additions and 28 deletions
+1 -1
View File
@@ -396,7 +396,7 @@ $lang->qa->dividerMenu = ',bug,testtask,caselib,';
$lang->devops->menu = new stdclass();
$lang->devops->menu->code = array('link' => "{$lang->repo->common}|repo|browse|repoID=%s", 'alias' => 'diff,view,revision,log,blame,showsynccommit');
$lang->devops->menu->compile = array('link' => "{$lang->devops->compile}|job|browse", 'subModule' => 'compile,job');
$lang->devops->menu->mr = array('link' => "{$lang->devops->mr}|mr|browse");
$lang->devops->menu->mr = array('link' => "{$lang->devops->mr}|mr|browse|repoID=%s");
$lang->devops->menu->gitlab = array('link' => "GitLab|gitlab|browse", 'alias' => 'create,edit');
$lang->devops->menu->sonarqube = array('link' => "SonarQube|sonarqube|browse");
$lang->devops->menu->jenkins = array('link' => "Jenkins|jenkins|browse", 'alias' => 'create,edit');
+14 -17
View File
@@ -1,23 +1,10 @@
<?php
class mr extends control
{
/**
* The mr constructor.
* @param string $moduleName
* @param string $methodName
*/
public function __construct($moduleName = '', $methodName = '')
{
parent::__construct($moduleName, $methodName);
/* This is essential when changing tab(menu) from gitlab to repo. */
/* Optional: common::setMenuVars('devops', $this->session->repoID); */
$this->loadModel('ci')->setMenu();
}
/**
* Browse mr.
*
* @param int $repoID
* @param string $mode
* @param string $param
* @param int $objectID
@@ -28,13 +15,20 @@ class mr extends control
* @access public
* @return void
*/
public function browse($mode = 'status', $param = 'opened', $objectID = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
public function browse($repoID = 0, $mode = 'status', $param = 'opened', $objectID = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
$this->app->loadClass('pager', $static = true);
$pager = new pager($recTotal, $recPerPage, $pageID);
$projects = $this->mr->getAllGitlabProjects();
$MRList = $this->mr->getList($mode, $param, $orderBy, $pager, empty($projects) ? false : $projects);
$repos = $this->loadModel('repo')->getListBySCM('Gitlab');
if(empty($repos)) $this->locate($this->repo->createLink('create'));
if($repoID == 0) $repoID = $this->repo->saveState($repoID, $objectID);
$repo = $this->repo->getRepoByID($repoID);
$this->loadModel('ci')->setMenu();
$projects = $this->mr->getAllGitlabProjects($repoID);
$MRList = $this->mr->getList($mode, $param, $orderBy, $pager, empty($projects) ? false : $projects, $repoID);
/* Save current URI to session. */
$this->session->set('mrList', $this->app->getURI(true), 'repo');
@@ -62,7 +56,10 @@ class mr extends control
$this->view->pager = $pager;
$this->view->mode = $mode;
$this->view->param = $param;
$this->view->repoID = $repoID;
$this->view->objectID = $objectID;
$this->view->repos = $repos;
$this->view->repo = $repo;
$this->view->orderBy = $orderBy;
$this->view->openIDList = $openIDList;
$this->view->users = $this->loadModel('user')->getPairs('noletter');
+6 -2
View File
@@ -43,10 +43,11 @@ class mrModel extends model
* @param string $orderBy
* @param object $pager
* @param array|bool $filterProjects
* @param int $repoID
* @access public
* @return array
*/
public function getList($mode = 'all', $param = 'all', $orderBy = 'id_desc', $pager = null, $filterProjects = array())
public function getList($mode = 'all', $param = 'all', $orderBy = 'id_desc', $pager = null, $filterProjects = array(), $repoID = 0)
{
/* If filterProjects equals false,it means no permission. */
if($filterProjects === false) return array();
@@ -70,6 +71,7 @@ class mrModel extends model
->beginIF($mode == 'assignee' and $param != 'all')->andWhere('assignee')->eq($param)->fi()
->beginIF($mode == 'creator' and $param != 'all')->andWhere('createdBy')->eq($param)->fi()
->beginIF($filterProjectSql)->andWhere($filterProjectSql)->fi()
->beginIF($repoID)->andWhere('repoID')->eq($repoID)->fi()
->orderBy($orderBy)
->page($pager)
->fetchAll('id');
@@ -96,13 +98,15 @@ class mrModel extends model
/**
* Get all gitlab server projects. If not an administrator, the role of project member should be higher than guest.
*
* @param int $repoID
* @access public
* @return array
*/
public function getAllGitlabProjects()
public function getAllGitlabProjects($repoID = 0)
{
$gitlabIDList = $this->dao->select('distinct gitlabID')->from(TABLE_MR)
->where('deleted')->eq('0')
->beginIF($repoID)->andWhere('repoID')->eq($repoID)->fi()
->fetchPairs('gitlabID');
$allProjects = array();
+36 -8
View File
@@ -10,28 +10,56 @@
?>
<?php include '../../common/view/header.html.php';?>
<div id="mainMenu" class="clearfix">
<?php if($this->config->systemMode == 'new'):?>
<div id="sidebarHeader">
<div class="title">
<?php echo $lang->mr->common;?>
<div class='btn-toolbar pull-left'>
<div class='btn-group'>
<a href='javascript:;' class='btn btn-link btn-limit text-ellipsis' data-toggle='dropdown' style="max-width: 120px;">
<span class='text' title='<?php echo $repo->name;?>'><?php echo $repo->name;?></span> <span class='caret'></span>
</a>
<div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList'>
<div class="input-control search-box has-icon-left has-icon-right search-example">
<input type="search" class="form-control search-input" />
<label class="input-control-icon-left search-icon">
<i class="icon icon-search"></i>
</label>
<a class="input-control-icon-right search-clear-btn">
<i class="icon icon-close icon-sm"></i>
</a>
</div>
<div class="list-group">
<div class="table-row">
<div class="table-col">
<ul class="tree tree-angles" data-ride="tree">
<?php
foreach($repos as $repo)
{
echo '<li>';
$selectedClass = $repo->id == $repoID ? 'selected' : '';
echo html::a(inlink('browse', "repoID=$repo->id"), $repo->name, '_self', "class='clickable search-list-item $selectedClass' title='$repo->name' data-key='$repo->name'");
echo '</li>';
}
?>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<?php endif;?>
<div class="btn-toolBar pull-left">
<?php foreach($lang->mr->statusList as $key => $label):?>
<?php $active = $param == $key ? 'btn-active-text' : '';?>
<?php $label = "<span class='text'>$label</span>";?>
<?php if($param == $key) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink('browse', "mode=status&param=$key"), $label, '', "class='btn btn-link $active'");?>
<?php echo html::a(inlink('browse', "repoID=$repoID&mode=status&param=$key"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php $active = $mode == 'assignee' ? 'btn-active-text' : '';?>
<?php $label = "<span class='text'>{$lang->mr->assignedToMe}</span>";?>
<?php if($mode == 'assignee') $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink('browse', "mode=assignee&param={$this->app->user->account}"), $label, '', "class='btn btn-link $active'");?>
<?php echo html::a(inlink('browse', "repoID=$repoID&mode=assignee&param={$this->app->user->account}"), $label, '', "class='btn btn-link $active'");?>
<?php $active = $mode == 'creator' ? 'btn-active-text' : '';?>
<?php $label = "<span class='text'>{$lang->mr->createdByMe}</span>";?>
<?php if($mode == 'creator') $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink('browse', "mode=creator&param={$this->app->user->account}"), $label, '', "class='btn btn-link $active'");?>
<?php echo html::a(inlink('browse', "repoID=$repoID&mode=creator&param={$this->app->user->account}"), $label, '', "class='btn btn-link $active'");?>
</div>
<div class="btn-toolbar pull-right">
<?php common::printLink('mr', 'create', '', "<i class='icon icon-plus'></i> " . $lang->mr->create, '', "class='btn btn-primary'");?>