diff --git a/module/block/control.php b/module/block/control.php index 00286cf87d..e7baea9b88 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -897,7 +897,7 @@ class block extends control /* Get projects. */ $excludedModel = $this->config->edition == 'max' ? '' : 'waterfall'; - $projects = $this->loadModel('project')->getOverviewList('byStatus', $status, 'id_desc', $count, $excludedModel); + $projects = $this->loadModel('project')->getOverviewList('byStatus', $status, 'order_asc', $count, $excludedModel); if(empty($projects)) { $this->view->projects = $projects; diff --git a/module/bug/view/batchedit.html.php b/module/bug/view/batchedit.html.php index 625c95320d..68d5f4bd91 100644 --- a/module/bug/view/batchedit.html.php +++ b/module/bug/view/batchedit.html.php @@ -133,7 +133,7 @@ } ?> ' style='overflow:visible'>assignedTo, "class='form-control picker-select' data-drop-width='135px'");?> - ' style='overflow:visible'>deadline) ? '' : substr($bug->deadline, 5, 11), "class='form-control form-date'");?> + ' style='overflow:visible'>deadline) ? '' : $bug->deadline, "class='form-control form-date'");?> >os, 'class=form-control');?> >browser, 'class=form-control');?> >keywords, 'class=form-control');?> diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php index 10b13c2d9e..8fb36fbcbd 100644 --- a/module/bug/view/view.html.php +++ b/module/bug/view/view.html.php @@ -224,7 +224,7 @@ bug->deadline;?> deadline) echo helper::isZeroDate($bug->deadline) ? '' : substr($bug->deadline, 5, 11); + if($bug->deadline) echo helper::isZeroDate($bug->deadline) ? '' : $bug->deadline; if(isset($bug->delay)) printf($lang->bug->delayWarning, $bug->delay); ?> diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php index fc95005d2e..32438dc257 100644 --- a/module/common/lang/menu.php +++ b/module/common/lang/menu.php @@ -291,16 +291,27 @@ $lang->waterfall->menu->design['subMenu']->ads = array('link' => "{$lang->d $lang->waterfall->menu->design['subMenu']->bysearch = array('link' => ' ' . $lang->searchAB . ''); /* Kanban project menu. */ -$lang->kanbanProject = new stdclass(); -$lang->kanbanProject->menu = new stdclass(); -$lang->kanbanProject->menu->index = array('link' => "{$lang->kanban->common}|project|index|project=%s"); -$lang->kanbanProject->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s"); +$lang->kanbanProject = new stdclass(); +$lang->kanbanProject->menu = new stdclass(); +$lang->kanbanProject->menu->index = array('link' => "{$lang->kanban->common}|project|index|project=%s"); +$lang->kanbanProject->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s"); +$lang->kanbanProject->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team'); -$lang->kanbanProject->menuOrder = array(); -$lang->kanbanProject->menuOrder[5] = 'index'; -$lang->kanbanProject->menuOrder[10] = 'build'; $lang->kanbanProject->dividerMenu = ''; +$lang->kanbanProject->menuOrder = array(); +$lang->kanbanProject->menuOrder[5] = 'index'; +$lang->kanbanProject->menuOrder[10] = 'build'; +$lang->kanbanProject->menuOrder[15] = 'settings'; + +$lang->kanbanProject->menu->settings['subMenu'] = new stdclass(); +$lang->kanbanProject->menu->settings['subMenu']->view = array('link' => "$lang->overview|project|view|project=%s", 'alias' => 'edit'); +$lang->kanbanProject->menu->settings['subMenu']->products = array('link' => "{$lang->product->common}|project|manageProducts|project=%s", 'alias' => 'manageproducts'); +$lang->kanbanProject->menu->settings['subMenu']->members = array('link' => "{$lang->team->common}|project|team|project=%s", 'alias' => 'managemembers,team'); +$lang->kanbanProject->menu->settings['subMenu']->whitelist = array('link' => "{$lang->whitelist}|project|whitelist|project=%s", 'subModule' => 'personnel'); +$lang->kanbanProject->menu->settings['subMenu']->stakeholder = array('link' => "{$lang->stakeholder->common}|stakeholder|browse|project=%s", 'subModule' => 'stakeholder'); +$lang->kanbanProject->menu->settings['subMenu']->group = array('link' => "{$lang->priv}|project|group|project=%s", 'alias' => 'group,manageview,managepriv'); + /* Execution menu. */ $lang->execution->homeMenu = new stdclass(); $lang->execution->homeMenu->all = array('link' => "{$lang->execution->all}|execution|all|", 'alias' => 'create,batchedit'); diff --git a/module/group/control.php b/module/group/control.php index d399f84c26..36fa58e21e 100644 --- a/module/group/control.php +++ b/module/group/control.php @@ -191,7 +191,7 @@ class group extends control if($type == 'byModule') $result = $this->group->updatePrivByModule(); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - if($type == 'byGroup') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse'))); + if($type == 'byGroup') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('managePriv', "type=byGroup¶m=$param&menu=$menu&version=$version"))); if($type == 'byModule') return print(js::alert($this->lang->saveSuccess) . js::execute('window.parent.location.reload()')); } diff --git a/module/mr/control.php b/module/mr/control.php index 0b0bc2ef60..7fe28b3372 100644 --- a/module/mr/control.php +++ b/module/mr/control.php @@ -303,6 +303,8 @@ class mr extends control $this->view->stories = $this->mr->getLinkList($MR->id, $product->id, 'story'); $this->view->bugs = $this->mr->getLinkList($MR->id, $product->id, 'bug'); $this->view->tasks = $this->mr->getLinkList($MR->id, $product->id, 'task'); + $this->view->actions = $this->loadModel('action')->getList('mr', $MRID); + $this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed'); $this->display(); } diff --git a/module/mr/css/browse.css b/module/mr/css/browse.css index ac7990261a..37c751af56 100644 --- a/module/mr/css/browse.css +++ b/module/mr/css/browse.css @@ -11,3 +11,10 @@ #repoList .tree li > a {max-width: 100%;} #repoList .hide-in-search .hidden {display: block !important; visibility: inherit !important;} #repoList .tree li > a {line-height: 20px; border-radius: 2px;} + +.c-id {width: 60px;} +.c-title {min-width: 120px;} +.c-branch {width: 240px;} +.c-status {width: 100px;} +.c-author {width: 100px;} +.c-date {width: 140px;} diff --git a/module/mr/css/create.css b/module/mr/css/create.css index 7176c78083..d5bc7e6536 100644 --- a/module/mr/css/create.css +++ b/module/mr/css/create.css @@ -1 +1,2 @@ #mrForm table tbody th {width: 145px;} +.branch-btn {width: 110px; height: 32px; line-height: 22px; float: right;} diff --git a/module/mr/js/view.js b/module/mr/js/view.js index a6433ab5d2..dd3ea725bd 100644 --- a/module/mr/js/view.js +++ b/module/mr/js/view.js @@ -1,17 +1,17 @@ $(document).ready(function() - { +{ $('#mergeButton,.mergeButton').click(function() - { + { link = $(this).attr('href'); $.getJSON(link, function(response) - { + { if(response.result == 'success') { - $.zui.messager.success(response.message); - setTimeout(function(){ location.href=response.locate }, 2500); + $.zui.messager.success(response.message); + setTimeout(function(){ location.href=response.locate }, 2500); } if(response.result == 'fail') $.zui.messager.danger(response.message); - }); + }); return false; - }); - }); + }); +}); diff --git a/module/mr/lang/de.php b/module/mr/lang/de.php index 75fd977b34..c24db27c9a 100644 --- a/module/mr/lang/de.php +++ b/module/mr/lang/de.php @@ -30,6 +30,7 @@ $lang->mr->mriid = "raw MR ID"; $lang->mr->title = 'Name'; $lang->mr->status = 'Status'; $lang->mr->author = 'Author'; +$lang->mr->createdDate = 'Created date'; $lang->mr->assignee = 'Assignee'; $lang->mr->reviewer = 'Reviewer'; $lang->mr->mergeStatus = 'Merge status'; diff --git a/module/mr/lang/en.php b/module/mr/lang/en.php index 75fd977b34..c24db27c9a 100644 --- a/module/mr/lang/en.php +++ b/module/mr/lang/en.php @@ -30,6 +30,7 @@ $lang->mr->mriid = "raw MR ID"; $lang->mr->title = 'Name'; $lang->mr->status = 'Status'; $lang->mr->author = 'Author'; +$lang->mr->createdDate = 'Created date'; $lang->mr->assignee = 'Assignee'; $lang->mr->reviewer = 'Reviewer'; $lang->mr->mergeStatus = 'Merge status'; diff --git a/module/mr/lang/fr.php b/module/mr/lang/fr.php index 75fd977b34..c24db27c9a 100644 --- a/module/mr/lang/fr.php +++ b/module/mr/lang/fr.php @@ -30,6 +30,7 @@ $lang->mr->mriid = "raw MR ID"; $lang->mr->title = 'Name'; $lang->mr->status = 'Status'; $lang->mr->author = 'Author'; +$lang->mr->createdDate = 'Created date'; $lang->mr->assignee = 'Assignee'; $lang->mr->reviewer = 'Reviewer'; $lang->mr->mergeStatus = 'Merge status'; diff --git a/module/mr/lang/vi.php b/module/mr/lang/vi.php index 75fd977b34..c24db27c9a 100644 --- a/module/mr/lang/vi.php +++ b/module/mr/lang/vi.php @@ -30,6 +30,7 @@ $lang->mr->mriid = "raw MR ID"; $lang->mr->title = 'Name'; $lang->mr->status = 'Status'; $lang->mr->author = 'Author'; +$lang->mr->createdDate = 'Created date'; $lang->mr->assignee = 'Assignee'; $lang->mr->reviewer = 'Reviewer'; $lang->mr->mergeStatus = 'Merge status'; diff --git a/module/mr/lang/zh-cn.php b/module/mr/lang/zh-cn.php index 4e4ed474e4..ecefd0fda4 100644 --- a/module/mr/lang/zh-cn.php +++ b/module/mr/lang/zh-cn.php @@ -30,6 +30,7 @@ $lang->mr->mriid = "MR原始ID"; $lang->mr->title = '名称'; $lang->mr->status = '状态'; $lang->mr->author = '创建人'; +$lang->mr->createdDate = '创建时间'; $lang->mr->assignee = '指派给'; $lang->mr->reviewer = '评审人'; $lang->mr->mergeStatus = '是否可合并'; diff --git a/module/mr/view/browse.html.php b/module/mr/view/browse.html.php index 20d3ed910a..a03b3565cb 100644 --- a/module/mr/view/browse.html.php +++ b/module/mr/view/browse.html.php @@ -46,14 +46,15 @@ recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?> - mr->id);?> - mr->title);?> - mr->sourceBranch);?> - mr->targetBranch);?> - mr->mergeStatus);?> - mr->approvalStatus);?> - mr->author);?> - actions;?> + mr->id);?> + mr->title);?> + mr->sourceBranch);?> + mr->targetBranch);?> + mr->mergeStatus);?> + mr->approvalStatus);?> + mr->author);?> + mr->createdDate);?> + actions;?> @@ -87,6 +88,7 @@ approvalStatus) ? $lang->mr->approvalStatusList['notReviewed'] : $lang->mr->approvalStatusList[$MR->approvalStatus];?> createdBy);?> + createdDate);?> user->admin or (isset($projects[$MR->hostID][$MR->sourceProject]->owner->id) and $projects[$MR->hostID][$MR->sourceProject]->owner->id == $openIDList[$MR->hostID])) ? '' : 'disabled'; diff --git a/module/mr/view/create.html.php b/module/mr/view/create.html.php index 95d794eafb..cfe89386a6 100644 --- a/module/mr/view/create.html.php +++ b/module/mr/view/create.html.php @@ -32,7 +32,7 @@
- mr->sourceBranch ?> + mr->sourceBranch ?>
@@ -42,7 +42,7 @@
- mr->targetBranch ?> + mr->targetBranch ?>
diff --git a/module/mr/view/view.html.php b/module/mr/view/view.html.php index 190a484577..b22dd9df96 100644 --- a/module/mr/view/view.html.php +++ b/module/mr/view/view.html.php @@ -37,7 +37,7 @@ -
+
-
+
@@ -105,6 +105,10 @@
mr->commandDocument, $httpRepoURL, $MR->sourceBranch, $branchPath, $MR->targetBranch, $branchPath, $MR->targetBranch); ?>
+ app->getViewType() != 'xhtml'):?> +
+ +
diff --git a/module/personnel/control.php b/module/personnel/control.php index 2fb6a96424..8b1f079761 100644 --- a/module/personnel/control.php +++ b/module/personnel/control.php @@ -103,14 +103,7 @@ class personnel extends control */ public function whitelist($objectID = 0, $module = 'personnel', $objectType = 'program', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1, $programID = 0, $from = '') { - if($this->app->tab == 'program') - { - $this->loadModel('program')->setMenu($objectID); - } - else if($this->app->tab == 'project') - { - $this->loadModel('project')->setMenu($objectID); - } + if($this->app->tab == 'program') $this->loadModel('program')->setMenu($objectID); /* Load lang and set session. */ $this->app->loadLang('user'); @@ -155,14 +148,7 @@ class personnel extends control */ public function addWhitelist($objectID = 0, $deptID = 0, $copyID = 0, $objectType = 'program', $module = 'personnel', $programID = 0, $from = '') { - if($this->app->tab == 'program') - { - $this->loadModel('program')->setMenu($objectID); - } - else if($this->app->tab == 'project') - { - $this->loadModel('project')->setMenu($objectID); - } + if($this->app->tab == 'program') $this->loadModel('program')->setMenu($objectID); $this->app->loadLang('execution'); diff --git a/module/program/model.php b/module/program/model.php index 0f66c08f7e..abc9048db0 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -1605,17 +1605,21 @@ class programModel extends model $menu .= ""; $menu .= "
"; } - $attr = $program->model == 'kanban' ? " disabled='disabled' style='pointer-events: none;'" : ''; + $menu .= $this->buildMenu('project', 'edit', $params, $program, $type, 'edit', '', 'iframe', true); - $menu .= $this->buildMenu('project', 'team', $params, $program, $type, 'group', '', '', '', 'data-app="project"' . $attr); - $menu .= $this->buildMenu('project', 'group', $params, $program, $type, 'lock', '', '', '', 'data-app="project"' . $attr); + $menu .= $this->buildMenu('project', 'team', $params, $program, $type, 'group', '', '', '', 'data-app="project"'); + + $disabledGroup = $program->model == 'kanban' ? " disabled='disabled' style='pointer-events: none;'" : ''; + $menu .= $this->buildMenu('project', 'group', $params, $program, $type, 'lock', '', '', '', 'data-app="project"' . $disabledGroup); if(common::hasPriv('project', 'manageProducts') || common::hasPriv('project', 'whitelist') || common::hasPriv('project', 'delete')) { $menu .= "
"; $menu .= ""; $menu .= "