diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php
index 034969f00b..f2b09ad06b 100644
--- a/module/common/lang/menu.php
+++ b/module/common/lang/menu.php
@@ -213,8 +213,6 @@ $lang->scrum->menu->settings['subMenu']->whitelist = array('link' => "{$lang->
$lang->scrum->menu->settings['subMenu']->stakeholder = array('link' => "{$lang->stakeholder->common}|stakeholder|browse|project=%s", 'subModule' => 'stakeholder');
$lang->scrum->menu->settings['subMenu']->group = array('link' => "{$lang->priv}|project|group|project=%s", 'alias' => 'group,manageview,managepriv');
-$lang->scrum->menu->devops['subMenu'] = new stdclass();
-
/* Waterfall menu. */
$lang->waterfall->menu = new stdclass();
$lang->waterfall->menu->index = array('link' => "$lang->dashboard|project|index|project=%s");
@@ -300,8 +298,6 @@ $lang->execution->menu->view['subMenu'] = new stdclass();
$lang->execution->menu->view['subMenu']->groupTask = "$lang->groupView|execution|grouptask|executionID=%s";
$lang->execution->menu->view['subMenu']->tree = "$lang->treeView|execution|tree|executionID=%s";
-$lang->execution->menu->devops['subMenu'] = new stdclass();
-
$lang->execution->menu->qa['subMenu'] = new stdclass();
$lang->execution->menu->qa['subMenu']->qa = array('link' => "$lang->dashboard|execution|qa|executionID=%s");
$lang->execution->menu->qa['subMenu']->bug = array('link' => "{$lang->bug->common}|execution|bug|executionID=%s", 'subModule' => 'bug');
@@ -370,8 +366,6 @@ $lang->devops->menuOrder[15] = 'jenkins';
$lang->devops->menuOrder[20] = 'maintain';
$lang->devops->menuOrder[25] = 'rules';
-$lang->devops->menu->code['subMenu'] = new stdclass();
-
/* Doc menu.*/
$lang->doc->menu = new stdclass();
$lang->doc->menu->recent = array('link' => "{$lang->doc->recent}|doc|recent");
diff --git a/module/doc/control.php b/module/doc/control.php
index a1e74b3c7c..3d4ce9ba2e 100644
--- a/module/doc/control.php
+++ b/module/doc/control.php
@@ -799,7 +799,7 @@ class doc extends control
if($type == 'execution')
{
$executionID = $objectID;
- if(!$this->executionID->checkPriv($objectID)) $this->accessDenied();
+ if(!$this->execution->checkPriv($objectID)) $this->accessDenied();
}
}
diff --git a/module/doc/lang/de.php b/module/doc/lang/de.php
index 6656732f4b..7156a50fbd 100644
--- a/module/doc/lang/de.php
+++ b/module/doc/lang/de.php
@@ -54,6 +54,7 @@ $lang->doc->searchDoc = 'Suche';
$lang->doc->fast = 'Schnelleintrag';
$lang->doc->allDoc = 'Alle Doks';
$lang->doc->openedByMe = 'Meine';
+$lang->doc->editedByMe = 'Edited By Me';
$lang->doc->orderByOpen = 'Zuletzt hinzugefügt';
$lang->doc->orderByEdit = 'Zuletzt bearbeitet';
$lang->doc->orderByVisit = 'Zuletzt angesehen';
diff --git a/module/doc/lang/en.php b/module/doc/lang/en.php
index 86bb860b2b..cbd766b9ce 100644
--- a/module/doc/lang/en.php
+++ b/module/doc/lang/en.php
@@ -54,6 +54,7 @@ $lang->doc->searchDoc = 'Search';
$lang->doc->fast = 'Quick Entry';
$lang->doc->allDoc = 'All Documents';
$lang->doc->openedByMe = 'My';
+$lang->doc->editedByMe = 'Edited By Me';
$lang->doc->orderByOpen = 'Recent Added';
$lang->doc->orderByEdit = 'Recent Updated';
$lang->doc->orderByVisit = 'Last Visited';
diff --git a/module/doc/lang/fr.php b/module/doc/lang/fr.php
index 2bb67bd317..2e67aa2a24 100644
--- a/module/doc/lang/fr.php
+++ b/module/doc/lang/fr.php
@@ -54,6 +54,7 @@ $lang->doc->searchDoc = 'Rechercher';
$lang->doc->fast = 'Saisie rapide';
$lang->doc->allDoc = 'Tous les Documents';
$lang->doc->openedByMe = 'Mes';
+$lang->doc->editedByMe = 'Edited By Me';
$lang->doc->orderByOpen = 'Récemment Ajoutés';
$lang->doc->orderByEdit = 'Récemment Mis à Jour';
$lang->doc->orderByVisit = 'Dernière Visite';
diff --git a/module/doc/lang/vi.php b/module/doc/lang/vi.php
index 5615bb9553..4f5fdf7735 100644
--- a/module/doc/lang/vi.php
+++ b/module/doc/lang/vi.php
@@ -54,6 +54,7 @@ $lang->doc->searchDoc = 'Tìm kiếm';
$lang->doc->fast = 'Quick Entry';
$lang->doc->allDoc = 'Tất cả tài liệu';
$lang->doc->openedByMe = 'Của bạn';
+$lang->doc->editedByMe = 'Edited By Me';
$lang->doc->orderByOpen = 'Recent Added';
$lang->doc->orderByEdit = 'Recent Updated';
$lang->doc->orderByVisit = 'Last Visited';
diff --git a/module/execution/lang/de.php b/module/execution/lang/de.php
index e5fd2bf703..071139edc1 100644
--- a/module/execution/lang/de.php
+++ b/module/execution/lang/de.php
@@ -261,7 +261,6 @@ $lang->execution->aboveAllExecution = "Alle oberen {$lang->executionCommon}";
/* 页面提示。*/
$lang->execution->linkStoryByPlanTips = "This action will link all stories in this plan to the {$lang->executionCommon}.";
$lang->execution->selectExecution = "Auswahl {$lang->executionCommon}";
-$lang->execution->selectExecution = "Select Execution";
$lang->execution->beginAndEnd = 'Dauer';
$lang->execution->lblStats = 'Mannstunden Summe(h) : ';
$lang->execution->stats = '%s Verfügbar, %s geplant, %s genutzt, %s Rest.';
diff --git a/module/execution/lang/en.php b/module/execution/lang/en.php
index 356c54b825..d3e378bf0a 100644
--- a/module/execution/lang/en.php
+++ b/module/execution/lang/en.php
@@ -261,7 +261,6 @@ $lang->execution->aboveAllExecution = "All the above {$lang->executionCommon}s";
/* Page prompt. */
$lang->execution->linkStoryByPlanTips = "This action will link all stories in this plan to the {$lang->executionCommon}.";
$lang->execution->selectExecution = "Select {$lang->executionCommon}";
-$lang->execution->selectExecution = "Select Stage/Sprint/Iteration";
$lang->execution->beginAndEnd = 'Duration';
$lang->execution->lblStats = 'Efforts';
$lang->execution->stats = 'Available: %s(h). Estimates: %s(h). Cost: %s(h). Left: %s(h).';
diff --git a/module/execution/lang/fr.php b/module/execution/lang/fr.php
index 689b733a3e..ff6bf241f4 100644
--- a/module/execution/lang/fr.php
+++ b/module/execution/lang/fr.php
@@ -260,8 +260,7 @@ $lang->execution->aboveAllExecution = "Tous les {$lang->executionCommon}s dépen
/* 页面提示。*/
$lang->execution->linkStoryByPlanTips = "Cette action va lier toutes les stories incluses dans le plan à ce {$lang->executionCommon}.";
-$lang->execution->selectExecution = "Sélectionner {$lang->executionCommon}";
-$lang->execution->selectExecution = "Select Execution";
+$lang->execution->selectExecution = "Sélectionner {$lang->executionCommon}";
$lang->execution->beginAndEnd = 'Durée';
$lang->execution->lblStats = 'Efforts';
$lang->execution->stats = 'Disponible: %s(h). Estimé: %s(h). Coût: %s(h). Reste: %s(h).';
diff --git a/module/execution/lang/vi.php b/module/execution/lang/vi.php
index 702efe4ccd..53bc22f0cf 100644
--- a/module/execution/lang/vi.php
+++ b/module/execution/lang/vi.php
@@ -260,8 +260,7 @@ $lang->execution->aboveAllExecution = "Tất cả {$lang->executionCommon} trên
/* Page prompt. */
$lang->execution->linkStoryByPlanTips = "Hành động này sẽ liên kết tất cả câu chuyện trong kế hoạch này tới {$lang->executionCommon} này.";
-$lang->execution->selectExecution = "Chọn {$lang->executionCommon}";
-$lang->execution->selectExecution = "Select Execution";
+$lang->execution->selectExecution = "Chọn {$lang->executionCommon}";
$lang->execution->beginAndEnd = 'Thời gian';
$lang->execution->lblStats = 'Chấm công';
$lang->execution->stats = 'Khả dụng: %s(giờ). Dự tính: %s(giờ). Đã làm: %s(giờ). Còn: %s(giờ).';
diff --git a/module/execution/lang/zh-cn.php b/module/execution/lang/zh-cn.php
index a298d13aef..bd0830d890 100644
--- a/module/execution/lang/zh-cn.php
+++ b/module/execution/lang/zh-cn.php
@@ -260,8 +260,7 @@ $lang->execution->aboveAllExecution = "以上所有{$lang->executionCommon}";
/* 页面提示。*/
$lang->execution->linkStoryByPlanTips = "此操作会将所选计划下面的{$lang->SRCommon}全部关联到此{$lang->executionCommon}中";
-$lang->execution->selectExecution = "请选择{$lang->executionCommon}";
-$lang->execution->selectExecution = "请选择阶段/迭代/冲刺";
+$lang->execution->selectExecution = "请选择执行";
$lang->execution->beginAndEnd = '起止时间';
$lang->execution->lblStats = '工时统计';
$lang->execution->stats = '可用工时 %s 工时,总共预计 %s 工时,已经消耗 %s 工时,预计剩余 %s 工时';
diff --git a/module/product/model.php b/module/product/model.php
index 7662eb4efd..7ec4be92c5 100644
--- a/module/product/model.php
+++ b/module/product/model.php
@@ -437,6 +437,7 @@ class productModel extends model
{
$currentProduct = $this->getById($productID);
$currentProductName = $currentProduct->name;
+ $this->session->set('currentProductType', $currentProduct->type);
}
$fromModule = $this->lang->navGroup->qa == 'qa' ? 'qa' : '';
diff --git a/module/program/model.php b/module/program/model.php
index b5430776f2..f0f4d10f69 100644
--- a/module/program/model.php
+++ b/module/program/model.php
@@ -652,11 +652,11 @@ class programModel extends model
* @access public
* @return array
*/
- public function getParentPairs($model = '', $mode = '')
+ public function getParentPairs($model = '', $mode = 'noclosed')
{
$modules = $this->dao->select('id,name,parent,path,grade')->from(TABLE_PROGRAM)
->where('type')->eq('program')
- ->beginIF(strpos($mode, 'noclosed') === false)->andWhere('status')->ne('closed')->fi()
+ ->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi()
->andWhere('deleted')->eq(0)
->beginIF($model)->andWhere('model')->eq($model)->fi()
->orderBy('grade desc, `order`')
diff --git a/module/project/control.php b/module/project/control.php
index de4a397ed2..b2bc44bf7d 100644
--- a/module/project/control.php
+++ b/module/project/control.php
@@ -1200,7 +1200,7 @@ class project extends control
$this->view->actions = $this->action->getList('project', $projectID);
$this->view->project = $this->project->getByID($projectID);
- $this->display('project', 'suspend');
+ $this->display();
}
/**
@@ -1247,6 +1247,7 @@ class project extends control
public function activate($projectID)
{
$this->loadModel('action');
+ $this->app->loadLang('execution');
$project = $this->project->getByID($projectID);
if(!empty($_POST))
@@ -1275,7 +1276,7 @@ class project extends control
$this->view->newEnd = $newEnd;
$this->view->project = $project;
- $this->display('project', 'activate');
+ $this->display();
}
/**
diff --git a/module/repo/control.php b/module/repo/control.php
index f756e39ee7..5b3e32f5cb 100644
--- a/module/repo/control.php
+++ b/module/repo/control.php
@@ -61,8 +61,6 @@ class repo extends control
$this->repo->setMenu($this->repos, $repoID);
}
- $this->lang->modulePageNav = $this->repo->select($this->repos, $repoID, $this->app->openApp, $objectID);
-
if(empty($this->repos) and $this->methodName != 'create') die(js::locate($this->repo->createLink('create', "objectID=$objectID")));
}
@@ -342,13 +340,12 @@ class repo extends control
$this->session->set('revisionList', $this->app->getURI(true));
session_write_close();
- /* Use cookie to switch repo branch. */
- setcookie('repoBranch', $branchID);
-
/* Get repo and synchronous commit. */
$repo = $this->repo->getRepoByID($repoID);
if(!$repo->synced) $this->locate($this->repo->createLink('showSyncCommit', "repoID=$repoID"));
+ $branches = $this->repo->getBranches($repo);
+
/* Decrypt path and get cacheFile. */
$path = $this->repo->decodePath($path);
$cacheFile = $this->repo->getCacheFile($repoID, $path, $revision);
@@ -426,11 +423,13 @@ class repo extends control
$this->view->title = $this->lang->repo->common;
$this->view->repo = $repo;
+ $this->view->repos = $this->repos;
$this->view->revisions = $revisions;
$this->view->revision = $revision;
$this->view->infos = $infos;
$this->view->repoID = $repoID;
- $this->view->branchID = $this->cookie->branchID;
+ $this->view->branches = $branches;
+ $this->view->branchID = $branchID ? $branchID : key($branches);
$this->view->objectID = $objectID;
$this->view->pager = $pager;
$this->view->path = urldecode($path);
diff --git a/module/repo/view/browse.html.php b/module/repo/view/browse.html.php
index 9c65c9fc67..aa405f192f 100644
--- a/module/repo/view/browse.html.php
+++ b/module/repo/view/browse.html.php
@@ -11,23 +11,30 @@