From 619e9220caf6339d2ad6e026b6f1c060341b4203 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 15 Apr 2016 15:03:35 +0800 Subject: [PATCH 1/6] * adjust and fix block. --- module/block/control.php | 9 +++++---- module/block/lang/en.php | 2 +- module/block/lang/zh-cn.php | 2 +- module/block/view/dashboard.html.php | 2 +- module/block/view/projectblock.html.php | 2 ++ module/my/view/index.html.php | 1 - module/product/control.php | 12 ++++++++++++ module/project/control.php | 13 +++++++++++++ 8 files changed, 35 insertions(+), 8 deletions(-) diff --git a/module/block/control.php b/module/block/control.php index ca8e86d073..0168c3a7f8 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -164,6 +164,7 @@ class block extends control if($block) { $block->grid = $grid; + $block->params = helper::jsonEncode($block->params); $this->dao->replace(TABLE_BLOCK)->data($block)->exec(); if(dao::isError()) $this->send(array('result' => 'fail', 'code' => 500)); $this->send(array('result' => 'success')); @@ -187,7 +188,7 @@ class block extends control $inited = empty($this->config->$module->common->blockInited) ? '' : $this->config->$module->common->blockInited; /* Init block when vist index first. */ - if(empty($blocks) and !($inited and $inited->app == $module and $inited->value)) + if(empty($blocks) and !$inited) { if($this->block->initBlock($module)) die(js::reload()); } @@ -199,9 +200,9 @@ class block extends control $block->blockLink = $this->createLink('block', 'printBlock', "id=$block->id&module=$block->module"); $block->moreLink = ''; - if(isset($this->lang->block->modules[$module]->moreLinkList->{$blockID})) + if(isset($this->lang->block->modules[$block->source]->moreLinkList->{$blockID})) { - list($moduleName, $method, $vars) = explode('|', sprintf($this->lang->block->modules[$module]->moreLinkList->{$blockID}, $block->params->type)); + list($moduleName, $method, $vars) = explode('|', sprintf($this->lang->block->modules[$block->source]->moreLinkList->{$blockID}, isset($block->params->type) ? $block->params->type : '')); $block->moreLink = $this->createLink($moduleName, $method, $vars); } } @@ -559,6 +560,6 @@ class block extends control { $this->app->loadClass('pager', $static = true); $pager = pager::init(0, $this->params->num, 1); - $this->view->projectStats = $this->loadModel('project')->getProjectStats($status = 'undone', $productID = 0, $branch = 0, $itemCounts = 30, $orderBy = 'order_desc', $this->viewType != 'json' ? $pager : ''); + $this->view->projectStats = $this->loadModel('project')->getProjectStats($this->params->type, $productID = 0, $branch = 0, $itemCounts = 30, $orderBy = 'order_desc', $this->viewType != 'json' ? $pager : ''); } } diff --git a/module/block/lang/en.php b/module/block/lang/en.php index c86558fc3d..ba1888b897 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -219,7 +219,7 @@ $lang->block->modules['product']->moreLinkList = new stdclass(); $lang->block->modules['product']->moreLinkList->list = 'product|all|product=&status=%s'; $lang->block->modules['product']->moreLinkList->story = 'my|story|type=%s'; $lang->block->modules['project']->moreLinkList = new stdclass(); -$lang->block->modules['project']->moreLinkList->list = 'project|all|project=&status=%s'; +$lang->block->modules['project']->moreLinkList->list = 'project|all|status=%s&project='; $lang->block->modules['project']->moreLinkList->task = 'my|task|type=%s'; $lang->block->modules['qa']->moreLinkList = new stdclass(); $lang->block->modules['qa']->moreLinkList->bug = 'my|bug|type=%s'; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index 624822af90..b28af17485 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -221,7 +221,7 @@ $lang->block->modules['product']->moreLinkList = new stdclass(); $lang->block->modules['product']->moreLinkList->list = 'product|all|product=&status=%s'; $lang->block->modules['product']->moreLinkList->story = 'my|story|type=%s'; $lang->block->modules['project']->moreLinkList = new stdclass(); -$lang->block->modules['project']->moreLinkList->list = 'project|all|project=&status=%s'; +$lang->block->modules['project']->moreLinkList->list = 'project|all|status=%s&project='; $lang->block->modules['project']->moreLinkList->task = 'my|task|type=%s'; $lang->block->modules['qa']->moreLinkList = new stdclass(); $lang->block->modules['qa']->moreLinkList->bug = 'my|bug|type=%s'; diff --git a/module/block/view/dashboard.html.php b/module/block/view/dashboard.html.php index 7cb4e65897..96037750a9 100644 --- a/module/block/view/dashboard.html.php +++ b/module/block/view/dashboard.html.php @@ -36,7 +36,7 @@ if(isset($pageCSS)) css::internal($pageCSS); - moreLink)):?> + moreLink)):?> moreLink, $block->title . " ", null, "class='panel-title drag-disabled' title='$lang->more' data-toggle='tooltip' data-placement='right'"); ?> title;?> diff --git a/module/block/view/projectblock.html.php b/module/block/view/projectblock.html.php index 866e3bf07c..80946065f5 100644 --- a/module/block/view/projectblock.html.php +++ b/module/block/view/projectblock.html.php @@ -10,6 +10,8 @@ * @link http://www.zentao.net */ ?> +config->webRoot . 'js/';?> +
diff --git a/module/my/view/index.html.php b/module/my/view/index.html.php index 887af2dd92..af96a59b9b 100644 --- a/module/my/view/index.html.php +++ b/module/my/view/index.html.php @@ -10,7 +10,6 @@ */ ?> -version);?> fetch('block', 'dashboard', 'module=my');?> diff --git a/module/product/control.php b/module/product/control.php index d00dc89517..614d716a61 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -597,6 +597,18 @@ class product extends control $this->display(); } + /** + * All product. + * + * @param int $productID + * @param string $status + * @param string $orderBy + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID + * @access public + * @return void + */ public function all($productID = 0, $status = 'noclosed', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 10, $pageID = 1) { $this->session->set('productList', $this->app->getURI(true)); diff --git a/module/project/control.php b/module/project/control.php index 267ca513d9..535dd6fc34 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -1925,6 +1925,19 @@ class project extends control } } + /** + * All project. + * + * @param string $status + * @param int $projectID + * @param string $orderBy + * @param int $productID + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID + * @access public + * @return void + */ public function all($status = 'undone', $projectID = 0, $orderBy = 'order_desc', $productID = 0, $recTotal = 0, $recPerPage = 10, $pageID = 1) { if($this->projects) $this->commonAction($projectID); From 9c3e35e4b1f4b60267c8fc30f7e67504ed706624 Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Mon, 18 Apr 2016 11:24:00 +0800 Subject: [PATCH 2/6] * add change log for 8.1.3 version of new privilege. --- module/group/lang/resource.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index ac694ec0b6..e50ebd208a 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -1152,3 +1152,10 @@ $lang->changelog['8.0.1'][] = 'story-linkStory'; $lang->changelog['8.0.1'][] = 'story-unlinkStory'; $lang->changelog['8.0.1'][] = 'testcase-linkCases'; $lang->changelog['8.0.1'][] = 'testcase-unlinkCase'; + +$lang->changelog['8.1.3'][] = 'story-batchChangeModule'; +$lang->changelog['8.1.3'][] = 'task-batchChangeModule'; +$lang->changelog['8.1.3'][] = 'bug-batchChangeModule'; +$lang->changelog['8.1.3'][] = 'testcase-batchChangeModule'; +$lang->changelog['8.1.3'][] = 'my-manageContacts'; +$lang->changelog['8.1.3'][] = 'my-deleteContacts'; From 3e7ff8731da5a03f3618a7111709fd8ef29d2ec2 Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Mon, 18 Apr 2016 15:12:37 +0800 Subject: [PATCH 3/6] * remove manageContacts and deleteContacts method of user module. --- module/company/view/browse.html.php | 4 +- module/user/control.php | 84 ----------------------------- module/user/lang/en.php | 2 - module/user/lang/zh-cn.php | 2 - module/user/model.php | 20 ------- 5 files changed, 2 insertions(+), 110 deletions(-) diff --git a/module/company/view/browse.html.php b/module/company/view/browse.html.php index e3c22f8f3d..c5cef28368 100644 --- a/module/company/view/browse.html.php +++ b/module/company/view/browse.html.php @@ -60,7 +60,7 @@ js::set('confirmDelete', $lang->user->confirmDelete); @@ -96,7 +96,7 @@ js::set('confirmDelete', $lang->user->confirmDelete); - - + + loadModel('productplan')->getPairs($bugs[$bugID]->product, $branch); + $plans['ditto'] = $this->lang->story->ditto; + } /** * Remove designchange, newfeature, trackings from the typeList, because should be tracked in story or task. * These thress types if upgrade from bugfree2.x. @@ -67,6 +73,9 @@ $columns = count($hasFields) + 2; + + + - - - From 5762df7678569032736a7c069b7726e08780602f Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Mon, 18 Apr 2016 16:26:25 +0800 Subject: [PATCH 5/6] * fix button style for bug method of my module. --- module/my/view/bug.html.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/module/my/view/bug.html.php b/module/my/view/bug.html.php index 521708b106..7a944c613f 100644 --- a/module/my/view/bug.html.php +++ b/module/my/view/bug.html.php @@ -70,11 +70,15 @@ From d22230a546f914bdfb69ab1b8febb16bf30d48b3 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 18 Apr 2016 16:27:15 +0800 Subject: [PATCH 6/6] * change for custom menu. --- module/bug/lang/en.php | 13 +++ module/bug/lang/zh-cn.php | 13 +++ module/bug/view/browse.html.php | 20 +--- module/common/lang/menuOrder.php | 132 +++++++++++------------ module/common/model.php | 55 ++-------- module/custom/model.php | 118 ++++++++++++++++++++ module/product/lang/en.php | 12 +++ module/product/lang/zh-cn.php | 12 +++ module/product/view/browse.html.php | 15 +-- module/project/lang/en.php | 11 ++ module/project/lang/zh-cn.php | 11 ++ module/project/view/taskheader.html.php | 81 ++++++++------ module/testcase/lang/en.php | 7 ++ module/testcase/lang/zh-cn.php | 7 ++ module/testcase/view/caseheader.html.php | 20 ++-- module/testtask/lang/en.php | 5 + module/testtask/lang/zh-cn.php | 5 + module/testtask/view/caseheader.html.php | 39 ++++--- 18 files changed, 376 insertions(+), 200 deletions(-) diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index 33397c7b7e..1c21c5558d 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -336,3 +336,16 @@ $lang->bug->action->unlinkrelatedbug = array('main' => '$date, unlink related bu $lang->bug->placeholder = new stdclass(); $lang->bug->placeholder->chooseBuilds = 'Choose builds...'; + +$lang->bug->featurebar['browse']['unclosed'] = $lang->bug->unclosed; +$lang->bug->featurebar['browse']['all'] = $lang->bug->allBugs; +$lang->bug->featurebar['browse']['assigntome'] = $lang->bug->assignToMe; +$lang->bug->featurebar['browse']['openedbyme'] = $lang->bug->openedByMe; +$lang->bug->featurebar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe; +$lang->bug->featurebar['browse']['unconfirmed'] = $lang->bug->confirmedList[0]; +$lang->bug->featurebar['browse']['assigntonull'] = $lang->bug->assignToNull; +$lang->bug->featurebar['browse']['unresolved'] = $lang->bug->unResolved; +$lang->bug->featurebar['browse']['toclosed'] = $lang->bug->toClosed; +$lang->bug->featurebar['browse']['longlifebugs'] = $lang->bug->longLifeBugs; +$lang->bug->featurebar['browse']['postponedbugs'] = $lang->bug->postponedBugs; +$lang->bug->featurebar['browse']['needconfirm'] = $lang->bug->needConfirm; diff --git a/module/bug/lang/zh-cn.php b/module/bug/lang/zh-cn.php index 7e480f403f..0e207f2905 100644 --- a/module/bug/lang/zh-cn.php +++ b/module/bug/lang/zh-cn.php @@ -336,3 +336,16 @@ $lang->bug->action->unlinkrelatedbug = array('main' => '$date, 由 $acto $lang->bug->placeholder = new stdclass(); $lang->bug->placeholder->chooseBuilds = '选择相关版本...'; + +$lang->bug->featurebar['browse']['unclosed'] = $lang->bug->unclosed; +$lang->bug->featurebar['browse']['all'] = $lang->bug->allBugs; +$lang->bug->featurebar['browse']['assigntome'] = $lang->bug->assignToMe; +$lang->bug->featurebar['browse']['openedbyme'] = $lang->bug->openedByMe; +$lang->bug->featurebar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe; +$lang->bug->featurebar['browse']['unconfirmed'] = $lang->bug->confirmedList[0]; +$lang->bug->featurebar['browse']['assigntonull'] = $lang->bug->assignToNull; +$lang->bug->featurebar['browse']['unresolved'] = $lang->bug->unResolved; +$lang->bug->featurebar['browse']['toclosed'] = $lang->bug->toClosed; +$lang->bug->featurebar['browse']['longlifebugs'] = $lang->bug->longLifeBugs; +$lang->bug->featurebar['browse']['postponedbugs'] = $lang->bug->postponedBugs; +$lang->bug->featurebar['browse']['needconfirm'] = $lang->bug->needConfirm; diff --git a/module/bug/view/browse.html.php b/module/bug/view/browse.html.php index 4189eec8b2..87393f3b25 100644 --- a/module/bug/view/browse.html.php +++ b/module/bug/view/browse.html.php @@ -32,21 +32,11 @@ js::set('bugBrowseType', $this->session->bugBrowseType); ?> - " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=unclosed¶m=0"), $lang->bug->unclosed) . ""; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=all¶m=0&orderBy=$orderBy&recTotal=0&recPerPage=200"), $lang->bug->allBugs) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=assignToMe¶m=0"), $lang->bug->assignToMe) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=openedByMe¶m=0"), $lang->bug->openedByMe) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=resolvedByMe¶m=0"), $lang->bug->resolvedByMe) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=unconfirmed¶m=0"), $lang->bug->confirmedList[0]) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=assignToNull¶m=0"), $lang->bug->assignToNull) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=unResolved¶m=0"), $lang->bug->unResolved) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=toClosed¶m=0"), $lang->bug->toClosed) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=longLifeBugs¶m=0"), $lang->bug->longLifeBugs) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=postponedBugs¶m=0"), $lang->bug->postponedBugs) . "
  • "; - echo "
  • " . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=needconfirm¶m=0"), $lang->bug->needConfirm) . "
  • "; - echo "
  •  {$lang->bug->byQuery}
  • "; - ?> + customMenu['featurebar'] as $type => $featurebar):?> + +
  • createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=unclosed¶m=0"), $featurebar['link'])?>
  • + +
  •  bug->byQuery;?>
  • diff --git a/module/common/lang/menuOrder.php b/module/common/lang/menuOrder.php index c9b8bc7891..7bfb0afd16 100644 --- a/module/common/lang/menuOrder.php +++ b/module/common/lang/menuOrder.php @@ -28,66 +28,60 @@ $lang->my->menuOrder[55] = 'changePassword'; $lang->todo->menuOrder = $lang->my->menuOrder; /* product menu order. */ -$lang->product->menuOrder[5] = 'index'; -$lang->product->menuOrder[10] = 'story'; -$lang->product->menuOrder[15] = 'dynamic'; -$lang->product->menuOrder[20] = 'plan'; -$lang->product->menuOrder[25] = 'release'; -$lang->product->menuOrder[30] = 'roadmap'; -$lang->product->menuOrder[35] = 'doc'; -$lang->product->menuOrder[40] = 'project'; -$lang->product->menuOrder[45] = 'branch'; -$lang->product->menuOrder[50] = 'module'; -$lang->product->menuOrder[55] = 'view'; -$lang->product->menuOrder[60] = 'create'; -$lang->product->menuOrder[65] = 'all'; +$lang->product->menuOrder[5] = 'list'; +$lang->product->menuOrder[10] = 'index'; +$lang->product->menuOrder[15] = 'story'; +$lang->product->menuOrder[20] = 'dynamic'; +$lang->product->menuOrder[25] = 'plan'; +$lang->product->menuOrder[30] = 'release'; +$lang->product->menuOrder[35] = 'roadmap'; +$lang->product->menuOrder[40] = 'doc'; +$lang->product->menuOrder[45] = 'project'; +$lang->product->menuOrder[50] = 'branch'; +$lang->product->menuOrder[55] = 'module'; +$lang->product->menuOrder[60] = 'view'; +$lang->product->menuOrder[65] = 'create'; +$lang->product->menuOrder[70] = 'all'; $lang->story->menuOrder = $lang->product->menuOrder; $lang->productplan->menuOrder = $lang->product->menuOrder; $lang->release->menuOrder = $lang->product->menuOrder; $lang->branch->menuOrder = $lang->product->menuOrder; /* project menu order. */ -$lang->project->menuOrder[1] = 'index'; -$lang->project->menuOrder[5] = 'task'; -$lang->project->menuOrder[10] = 'story'; -$lang->project->menuOrder[15] = 'bug'; -$lang->project->menuOrder[20] = 'build'; -$lang->project->menuOrder[25] = 'testtask'; -$lang->project->menuOrder[30] = 'burn'; -$lang->project->menuOrder[35] = 'team'; -$lang->project->menuOrder[40] = 'dynamic'; -$lang->project->menuOrder[45] = 'doc'; -$lang->project->menuOrder[50] = 'product'; -$lang->project->menuOrder[55] = 'linkstory'; +$lang->project->menuOrder[5] = 'list'; +$lang->project->menuOrder[10] = 'index'; +$lang->project->menuOrder[15] = 'task'; +$lang->project->menuOrder[20] = 'story'; +$lang->project->menuOrder[25] = 'bug'; +$lang->project->menuOrder[30] = 'build'; +$lang->project->menuOrder[35] = 'testtask'; +$lang->project->menuOrder[40] = 'team'; +$lang->project->menuOrder[45] = 'dynamic'; +$lang->project->menuOrder[50] = 'doc'; +$lang->project->menuOrder[55] = 'product'; $lang->project->menuOrder[60] = 'view'; -$lang->project->menuOrder[65] = 'order'; -$lang->project->menuOrder[70] = 'create'; -$lang->project->menuOrder[75] = 'copy'; -$lang->project->menuOrder[80] = 'all'; +$lang->project->menuOrder[65] = 'create'; +$lang->project->menuOrder[70] = 'all'; $lang->task->menuOrder = $lang->project->menuOrder; $lang->build->menuOrder = $lang->project->menuOrder; -/* bug menu order. */ -$lang->bug->menuOrder[0] = 'product'; -$lang->bug->menuOrder[1] = 'index'; -$lang->bug->menuOrder[5] = 'bug'; -$lang->bug->menuOrder[10] = 'testcase'; -$lang->bug->menuOrder[15] = 'testtask'; - -/* testcase menu order. */ -$lang->testcase->menuOrder[0] = 'product'; -$lang->testcase->menuOrder[1] = 'index'; -$lang->testcase->menuOrder[5] = 'bug'; -$lang->testcase->menuOrder[10] = 'testcase'; -$lang->testcase->menuOrder[15] = 'testtask'; -$lang->testtask->menuOrder = $lang->testcase->menuOrder; +/* qa menu order. */ +$lang->qa->menuOrder[5] = 'product'; +$lang->qa->menuOrder[10] = 'index'; +$lang->qa->menuOrder[15] = 'bug'; +$lang->qa->menuOrder[20] = 'testcase'; +$lang->qa->menuOrder[25] = 'testtask'; +$lang->bug->menuOrder = $lang->qa->menuOrder; +$lang->testcase->menuOrder = $lang->bug->menuOrder; +$lang->testtask->menuOrder = $lang->testcase->menuOrder; /* doc menu order. */ -$lang->doc->menuOrder[5] = 'browse'; -$lang->doc->menuOrder[10] = 'edit'; -$lang->doc->menuOrder[15] = 'module'; -$lang->doc->menuOrder[20] = 'delete'; -$lang->doc->menuOrder[25] = 'create'; +$lang->doc->menuOrder[5] = 'list'; +$lang->doc->menuOrder[10] = 'browse'; +$lang->doc->menuOrder[15] = 'edit'; +$lang->doc->menuOrder[20] = 'module'; +$lang->doc->menuOrder[25] = 'delete'; +$lang->doc->menuOrder[30] = 'create'; /* report menu order. */ $lang->report->menuOrder[5] = 'product'; @@ -96,15 +90,15 @@ $lang->report->menuOrder[15] = 'test'; $lang->report->menuOrder[20] = 'staff'; /* company menu order. */ -$lang->company->menuOrder[0] = 'name'; -$lang->company->menuOrder[5] = 'browseUser'; -$lang->company->menuOrder[10] = 'dept'; -$lang->company->menuOrder[15] = 'browseGroup'; -$lang->company->menuOrder[20] = 'view'; -$lang->company->menuOrder[25] = 'dynamic'; -$lang->company->menuOrder[30] = 'addGroup'; -$lang->company->menuOrder[35] = 'batchAddUser'; -$lang->company->menuOrder[40] = 'addUser'; +$lang->company->menuOrder[5] = 'name'; +$lang->company->menuOrder[10] = 'browseUser'; +$lang->company->menuOrder[15] = 'dept'; +$lang->company->menuOrder[20] = 'browseGroup'; +$lang->company->menuOrder[25] = 'view'; +$lang->company->menuOrder[30] = 'dynamic'; +$lang->company->menuOrder[35] = 'addGroup'; +$lang->company->menuOrder[40] = 'batchAddUser'; +$lang->company->menuOrder[45] = 'addUser'; $lang->dept->menuOrder = $lang->company->menuOrder; $lang->group->menuOrder = $lang->company->menuOrder; $lang->user->menuOrder = $lang->company->menuOrder; @@ -113,24 +107,22 @@ $lang->user->menuOrder = $lang->company->menuOrder; $lang->admin->menuOrder[5] = 'index'; $lang->admin->menuOrder[10] = 'extension'; $lang->admin->menuOrder[15] = 'custom'; -$lang->admin->menuOrder[20] = 'editor'; -$lang->admin->menuOrder[25] = 'mail'; -$lang->admin->menuOrder[30] = 'custom'; -$lang->admin->menuOrder[40] = 'convert'; -$lang->admin->menuOrder[45] = 'cron'; -$lang->admin->menuOrder[50] = 'backup'; -$lang->admin->menuOrder[55] = 'dev'; -$lang->admin->menuOrder[60] = 'safe'; -$lang->admin->menuOrder[65] = 'sso'; -$lang->admin->menuOrder[70] = 'trashes'; +$lang->admin->menuOrder[20] = 'mail'; +$lang->admin->menuOrder[25] = 'custom'; +$lang->admin->menuOrder[30] = 'convert'; +$lang->admin->menuOrder[35] = 'cron'; +$lang->admin->menuOrder[40] = 'backup'; +$lang->admin->menuOrder[45] = 'dev'; +$lang->admin->menuOrder[50] = 'safe'; +$lang->admin->menuOrder[55] = 'sso'; +$lang->admin->menuOrder[60] = 'trashes'; $lang->convert->menuOrder = $lang->admin->menuOrder; $lang->upgrade->menuOrder = $lang->admin->menuOrder; $lang->action->menuOrder = $lang->admin->menuOrder; +$lang->backup->menuOrder = $lang->admin->menuOrder; +$lang->cron->menuOrder = $lang->admin->menuOrder; $lang->extension->menuOrder = $lang->admin->menuOrder; $lang->custom->menuOrder = $lang->admin->menuOrder; $lang->editor->menuOrder = $lang->admin->menuOrder; $lang->mail->menuOrder = $lang->admin->menuOrder; -$lang->custom->menuOrder = $lang->admin->menuOrder; -$lang->backup->menuOrder = $lang->admin->menuOrder; -$lang->cron->menuOrder = $lang->admin->menuOrder; $lang->dev->menuOrder = $lang->admin->menuOrder; diff --git a/module/common/model.php b/module/common/model.php index 40ac0f3830..1dead13842 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -381,6 +381,7 @@ class commonModel extends model public static function printMainmenu($moduleName, $methodName = '') { global $app, $lang; + if(empty($app->customMenu)) $app->customMenu = customModel::getCustomMenu($app->getModuleName(), $app->getMethodName()); echo " diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php index 4e80f9e6eb..0ef0b12128 100644 --- a/module/testcase/lang/en.php +++ b/module/testcase/lang/en.php @@ -145,3 +145,10 @@ $lang->testcase->noFunction = 'Iconv and mb_convert_encoding does not exist, yo $lang->testcase->noRequire = "In the row of %s, the %s is a required field"; $lang->testcase->searchStories = 'Type to search stories'; + +$lang->testcase->featurebar['browse']['all'] = $lang->testcase->allCases; +$lang->testcase->featurebar['browse']['needconfirm'] = $lang->testcase->needConfirm; +$lang->testcase->featurebar['browse']['group'] = ''; +$lang->testcase->featurebar['browse']['zerocase'] = ''; +$lang->testcase->featurebar['groupcase'] = $lang->testcase->featurebar['browse']; +if(isset($lang->story))$lang->story->featurebar['zerocase'] = $lang->testcase->featurebar['browse']; diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php index 3260342ab3..bc01be9917 100644 --- a/module/testcase/lang/zh-cn.php +++ b/module/testcase/lang/zh-cn.php @@ -145,3 +145,10 @@ $lang->testcase->noFunction = '不存在iconv和mb_convert_encoding转码方法 $lang->testcase->noRequire = "%s行的“%s”是必填字段,不能为空"; $lang->testcase->searchStories = '键入来搜索需求'; + +$lang->testcase->featurebar['browse']['all'] = $lang->testcase->allCases; +$lang->testcase->featurebar['browse']['needconfirm'] = $lang->testcase->needConfirm; +$lang->testcase->featurebar['browse']['group'] = ''; +$lang->testcase->featurebar['browse']['zerocase'] = ''; +$lang->testcase->featurebar['groupcase'] = $lang->testcase->featurebar['browse']; +if(isset($lang->story))$lang->story->featurebar['zerocase'] = $lang->testcase->featurebar['browse']; diff --git a/module/testcase/view/caseheader.html.php b/module/testcase/view/caseheader.html.php index 4f4306c575..bb10d7233e 100644 --- a/module/testcase/view/caseheader.html.php +++ b/module/testcase/view/caseheader.html.php @@ -16,11 +16,14 @@ + customMenu['featurebar'] as $type => $featurebar):?> + " . html::a($this->createLink('testcase', 'browse', "productid=$productID&branch=$branch&browseType=all"), $lang->testcase->allCases) . ""; - echo "
  • " . html::a($this->createLink('testcase', 'browse', "productid=$productID&branch=$branch&browseType=needconfirm"), $lang->testcase->needConfirm) . "
  • "; - - if(common::hasPriv('testcase', 'groupcase')) + if(common::hasPriv('testcase', 'browse') and ($type == 'all' or $type == 'needconfirm')) + { + echo "
  • " . html::a($this->createLink('testcase', 'browse', "productid=$productID&branch=$branch&browseType=$type"), $featurebar['link']) . "
  • "; + } + elseif($type == 'group' and common::hasPriv('testcase', 'groupcase')) { echo "'; } - - if(common::hasPriv('story', 'zeroCase')) echo "
  • " . html::a($this->createLink('story', 'zeroCase', "productID=$productID"), $lang->story->zeroCase) . '
  • '; + elseif($type == 'zerocase' and common::hasPriv('story', 'zeroCase')) + { + echo "
  • " . html::a($this->createLink('story', 'zeroCase', "productID=$productID"), $lang->story->zeroCase) . '
  • '; + } + ?> + + methodName == 'browse') echo "
  •  {$lang->testcase->bySearch}
  • "; ?> diff --git a/module/testtask/lang/en.php b/module/testtask/lang/en.php index e0f4557527..c223e9d842 100644 --- a/module/testtask/lang/en.php +++ b/module/testtask/lang/en.php @@ -103,3 +103,8 @@ $lang->testtask->action = new stdclass(); $lang->testtask->action->testtaskopened = '$date, 由 $actor opened test task. $extra。' . "\n"; $lang->testtask->action->testtaskstarted = '$date, 由 $actor started test task. $extra。' . "\n"; $lang->testtask->action->testtaskclosed = '$date, 由 $actor finished test task. $extra。' . "\n"; + +$lang->testtask->featurebar['cases']['all'] = $lang->testtask->allCases; +$lang->testtask->featurebar['cases']['assignedtome'] = $lang->testtask->assignedToMe; +$lang->testtask->featurebar['cases']['group'] = ''; +$lang->testtask->featurebar['groupcase'] = $lang->testtask->featurebar['cases']; diff --git a/module/testtask/lang/zh-cn.php b/module/testtask/lang/zh-cn.php index b07da7ee4d..7045f9bd12 100644 --- a/module/testtask/lang/zh-cn.php +++ b/module/testtask/lang/zh-cn.php @@ -103,3 +103,8 @@ $lang->testtask->action = new stdclass(); $lang->testtask->action->testtaskopened = '$date, 由 $actor 创建版本 $extra。' . "\n"; $lang->testtask->action->testtaskstarted = '$date, 由 $actor 启动版本 $extra。' . "\n"; $lang->testtask->action->testtaskclosed = '$date, 由 $actor 完成版本 $extra。' . "\n"; + +$lang->testtask->featurebar['cases']['all'] = $lang->testtask->allCases; +$lang->testtask->featurebar['cases']['assignedtome'] = $lang->testtask->assignedToMe; +$lang->testtask->featurebar['cases']['group'] = ''; +$lang->testtask->featurebar['groupcase'] = $lang->testtask->featurebar['cases']; diff --git a/module/testtask/view/caseheader.html.php b/module/testtask/view/caseheader.html.php index 60a6f22bb9..6b9c4c5155 100644 --- a/module/testtask/view/caseheader.html.php +++ b/module/testtask/view/caseheader.html.php @@ -3,25 +3,32 @@ " . html::icon($lang->icons['usecase']) . '' . $task->name . '';?>
    account'> "; + if($canBatchEdit) echo " "; printf('%03d', $user->id); ?>
    edit, 'onclick=batchEdit()', 'btn btn-default'); ?>
    diff --git a/module/user/control.php b/module/user/control.php index f6b4a247b6..f0d4e6b065 100644 --- a/module/user/control.php +++ b/module/user/control.php @@ -901,90 +901,6 @@ class user extends control $this->display(); } - /** - * Manage contacts. - * - * @param int $listID - * @access public - * @return void - */ - public function manageContacts($listID = 0) - { - $lists = $this->user->getContactLists($this->app->user->account); - - /* If set $mode, need to update database. */ - if($this->post->mode) - { - /* The mode is new: append or new a list. */ - if($this->post->mode == 'new') - { - if($this->post->list2Append) - { - $this->user->append2ContactList($this->post->list2Append, $this->post->users); - die(js::locate(inlink('manageContacts', "listID={$this->post->list2Append}"), 'parent')); - } - elseif($this->post->newList) - { - $listID = $this->user->createContactList($this->post->newList, $this->post->users); - die(js::locate(inlink('manageContacts', "listID=$listID"), 'parent')); - } - } - elseif($this->post->mode == 'edit') - { - $this->user->updateContactList($this->post->listID, $this->post->listName, $this->post->users); - die(js::locate(inlink('manageContacts', "listID={$this->post->listID}"), 'parent')); - } - } - if($this->post->users) - { - $mode = 'new'; - $users = $this->user->getContactUserPairs($this->post->users); - } - else - { - $mode = 'edit'; - $listID= $listID ? $listID : key($lists); - if(!$listID) die(js::alert($this->lang->user->contacts->noListYet) . js::locate($this->createLink('company', 'browse'), 'parent')); - - $list = $this->user->getContactListByID($listID); - $users = explode(',', $list->userList); - $users = $this->user->getContactUserPairs($users); - $this->view->list = $list; - } - - $this->view->title = $this->lang->company->common . $this->lang->colon . $this->lang->user->manageContacts; - $this->view->position[] = $this->lang->company->common; - $this->view->position[] = $this->lang->user->manageContacts; - $this->view->lists = $this->user->getContactLists($this->app->user->account); - $this->view->users = $users; - $this->view->listID = $listID; - $this->view->mode = $mode; - $this->display(); - } - - /** - * Delete a contact list. - * - * @param int $listID - * @param string $confirm - * @access public - * @return void - */ - public function deleteContacts($listID, $confirm = 'no') - { - if($confirm == 'no') - { - echo js::confirm($this->lang->user->contacts->confirmDelete, inlink('deleteContacts', "listID=$listID&confirm=yes")); - exit; - } - else - { - $this->user->deleteContactList($listID); - echo js::locate(inlink('manageContacts'), 'parent'); - exit; - } - } - /** * Get user for ajax * diff --git a/module/user/lang/en.php b/module/user/lang/en.php index b97ae68f84..51ef77c624 100644 --- a/module/user/lang/en.php +++ b/module/user/lang/en.php @@ -59,8 +59,6 @@ $lang->user->unbind = "Unbind ranzhi"; $lang->user->login = "Login"; $lang->user->mobileLogin = "Mobile"; $lang->user->editProfile = "Edit profile"; -$lang->user->manageContacts = 'Manage contacts'; -$lang->user->deleteContacts = 'Delete contacts'; $lang->user->deny = "Denied"; $lang->user->confirmDelete = "Are you sure to delete this user?"; $lang->user->confirmUnlock = "Are you sure to unlock this user?"; diff --git a/module/user/lang/zh-cn.php b/module/user/lang/zh-cn.php index bb660d8b3c..8c20dbd658 100644 --- a/module/user/lang/zh-cn.php +++ b/module/user/lang/zh-cn.php @@ -59,8 +59,6 @@ $lang->user->unbind = "解除然之绑定"; $lang->user->login = "用户登录"; $lang->user->mobileLogin = "手机访问"; $lang->user->editProfile = "修改档案"; -$lang->user->manageContacts = '维护联系人'; -$lang->user->deleteContacts = '删除联系人'; $lang->user->deny = "访问受限"; $lang->user->confirmDelete = "您确定删除该用户吗?"; $lang->user->confirmUnlock = "您确定解除该用户的锁定状态吗?"; diff --git a/module/user/model.php b/module/user/model.php index 4327539442..4ecf105a3a 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -915,26 +915,6 @@ class userModel extends model return $this->dao->lastInsertID(); } - /** - * Append some users to a contact list. - * - * @param int $listID - * @param string $userList - * @access public - * @return void - */ - public function append2ContactList($listID, $userList) - { - $list = $this->getContactListByID($listID); - if($list->userList) $userList = array_merge($userList, explode(',', $list->userList)); - - $userList = array_unique($userList); - sort($userList); - $userList = join(',', $userList); - - $this->dao->update(TABLE_USERCONTACT)->set('userList')->eq($userList)->where('id')->eq($listID)->exec(); - } - /** * Update a contact list. * From 8345963cb4bb603d2e08e84b6fda8c3b28d57659 Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Mon, 18 Apr 2016 16:11:02 +0800 Subject: [PATCH 4/6] * fix error if bugs do not belong to same product when batch edit bugs. --- module/bug/control.php | 12 ++++++++---- module/bug/js/batchedit.js | 23 ++++++++++++++++++++++- module/bug/lang/en.php | 4 +++- module/bug/lang/zh-cn.php | 4 +++- module/bug/model.php | 2 +- module/bug/view/batchedit.html.php | 16 +++++++++++----- 6 files changed, 48 insertions(+), 13 deletions(-) diff --git a/module/bug/control.php b/module/bug/control.php index e2bc1396ef..cf7d25809c 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -602,10 +602,15 @@ class bug extends control { $product = $this->product->getByID($productID); + /* Set plans. */ + $plans = $this->loadModel('productplan')->getPairs($productID, $branch); + $plans['ditto'] = $this->lang->bug->ditto; + /* Set product menu. */ $this->bug->setMenu($this->products, $productID, $branch); $this->view->title = $product->name . $this->lang->colon . "BUG" . $this->lang->bug->batchEdit; $this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID&branch=$branch"), $this->products[$productID]); + $this->view->plans = $plans; } /* The bugs of my. */ else @@ -631,11 +636,11 @@ class bug extends control $this->view->customFields = $customFields; $this->view->showFields = $this->config->bug->custom->batchedit; - /* Set ditto option for users and type, severity, pri, resolution list. */ + /* Set users. */ $users = $this->user->getPairs('nodeleted,devfirst'); $users['ditto'] = $this->lang->bug->ditto; - $plans = $this->loadModel('productplan')->getPairs($productID, $branch); - $plans['ditto'] = $this->lang->bug->ditto; + + /* Set ditto option for users and type, severity, pri, resolution list. */ $this->lang->bug->typeList['ditto'] = $this->lang->bug->ditto; $this->lang->bug->priList['ditto'] = $this->lang->bug->ditto; $this->lang->bug->resolutionList['ditto'] = $this->lang->bug->ditto; @@ -656,7 +661,6 @@ class bug extends control $this->view->bugs = $bugs; $this->view->branch = $branch; $this->view->users = $users; - $this->view->plans = $plans; $this->display(); } diff --git a/module/bug/js/batchedit.js b/module/bug/js/batchedit.js index a66f0cf3f5..3b958af9c0 100644 --- a/module/bug/js/batchedit.js +++ b/module/bug/js/batchedit.js @@ -27,6 +27,8 @@ $(function() }); }) +$(document).on('click', '.chosen-with-drop', function(){oldValue = $(this).prev('select').val();}) + $(document).on('change', 'select', function() { if($(this).val() == 'ditto') @@ -49,7 +51,26 @@ $(document).on('change', 'select', function() if(value != 'ditto') break; } - $(this).val(value); + isPlans = $(this).attr('name').indexOf('plans') != -1; + + if(isPlans) + { + var valueStr = ',' + $(this).find('option').map(function(){return $(this).val();}).get().join(',') + ','; + if(valueStr.indexOf(',' + value + ',') != -1) + { + $(this).val(value); + } + else + { + alert(dittoNotice); + $(this).val(oldValue); + } + } + else + { + $(this).val(value); + } + $(this).trigger("chosen:updated"); $(this).trigger("change"); } diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index 33397c7b7e..46e8319ea0 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -107,7 +107,9 @@ $lang->bug->allBugs = 'Allbug'; $lang->bug->byQuery = 'Search'; $lang->bug->needConfirm = 'StoryChanged'; $lang->bug->allProduct = "All {$lang->productCommon}s"; -$lang->bug->ditto = 'Ditto'; + +$lang->bug->ditto = 'Ditto'; +$lang->bug->dittoNotice = 'Current bug and bug above it do not belong to same product!'; /* Labels. */ $lang->bug->lblAssignedTo = 'Assigned to'; diff --git a/module/bug/lang/zh-cn.php b/module/bug/lang/zh-cn.php index 7e480f403f..8120a2a019 100644 --- a/module/bug/lang/zh-cn.php +++ b/module/bug/lang/zh-cn.php @@ -107,7 +107,9 @@ $lang->bug->allBugs = '所有'; $lang->bug->byQuery = '搜索'; $lang->bug->needConfirm = '需求变动'; $lang->bug->allProduct = '所有' . $lang->productCommon; -$lang->bug->ditto = '同上'; + +$lang->bug->ditto = '同上'; +$lang->bug->dittoNotice = '该bug与上一bug不属于同一产品!'; /* 页面标签。*/ $lang->bug->lblAssignedTo = '当前指派'; diff --git a/module/bug/model.php b/module/bug/model.php index bbeaad9f0d..922470965f 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -543,7 +543,7 @@ class bugModel extends model $bug->pri = $data->pris[$bugID]; $bug->status = $data->statuses[$bugID]; $bug->title = $data->titles[$bugID]; - $bug->plan = $data->plan[$bugID]; + $bug->plan = empty($data->plans[$bugID]) ? 0 : $data->plans[$bugID]; $bug->assignedTo = $data->assignedTos[$bugID]; $bug->resolvedBy = $data->resolvedBys[$bugID]; $bug->keywords = $data->keywords[$bugID]; diff --git a/module/bug/view/batchedit.html.php b/module/bug/view/batchedit.html.php index 8453ed7587..0e4a090d47 100644 --- a/module/bug/view/batchedit.html.php +++ b/module/bug/view/batchedit.html.php @@ -11,6 +11,7 @@ */ ?> +lang->bug->dittoNotice);?>
    icons['bug']);?> @@ -40,16 +41,21 @@ $columns = count($hasFields) + 2;
    '>bug->productplan;?> '>bug->assignedTo;?> '>bug->status;?>'>bug->resolvedByAB;?>'>bug->resolutionAB;?> '>bug->os;?> '>bug->browser;?> '>bug->keywords;?>'>bug->resolvedByAB;?>'>bug->resolutionAB;?>
    ' style='overflow:visible'>plan, "class='form-control chosen'");?> ' style='overflow:visible'>assignedTo, "class='form-control chosen'");?> >bug->statusList, $bugs[$bugID]->status, 'class=form-control');?>>bug->osList, $bugs[$bugID]->os, 'class=form-control');?>>bug->browserList, $bugs[$bugID]->browser, 'class=form-control');?>>keywords, 'class=form-control');?> ' style='overflow:visible'>resolvedBy, "class='form-control chosen'");?> > @@ -80,9 +89,6 @@ $columns = count($hasFields) + 2;
    >bug->osList, $bugs[$bugID]->os, 'class=form-control');?>>bug->browserList, $bugs[$bugID]->browser, 'class=form-control');?>>keywords, 'class=form-control');?>
    -
    - edit, '', '');?> + createLink('bug', 'batchEdit'); + echo html::selectButton() . html::commonButton($lang->edit, "onclick=\"setFormAction('$actionLink')\""); + } + ?>
    - show();?>