diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php
index a5effd5d81..278ab5452a 100644
--- a/module/common/lang/menu.php
+++ b/module/common/lang/menu.php
@@ -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');
diff --git a/module/mr/control.php b/module/mr/control.php
index 633050d734..003b06817b 100644
--- a/module/mr/control.php
+++ b/module/mr/control.php
@@ -1,23 +1,10 @@
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');
diff --git a/module/mr/model.php b/module/mr/model.php
index 995ea43fbd..113fec43b4 100644
--- a/module/mr/model.php
+++ b/module/mr/model.php
@@ -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();
diff --git a/module/mr/view/browse.html.php b/module/mr/view/browse.html.php
index 056075e64d..2d28e541aa 100644
--- a/module/mr/view/browse.html.php
+++ b/module/mr/view/browse.html.php
@@ -10,28 +10,56 @@
?>
- config->systemMode == 'new'):?>
-