diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 9bf9bf8739..e67b079dbc 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -322,6 +322,42 @@ if($config->systemMode == 'new') $lang->projectrelease->methodOrder[60] = 'unlinkBug'; $lang->projectrelease->methodOrder[65] = 'batchUnlinkBug'; $lang->projectrelease->methodOrder[70] = 'changeStatus'; + + /* Stakeholer. */ + $lang->resource->stakeholder = new stdclass(); + $lang->resource->stakeholder->browse = 'browse'; + $lang->resource->stakeholder->create = 'create'; + $lang->resource->stakeholder->batchCreate = 'batchCreate'; + $lang->resource->stakeholder->edit = 'edit'; + $lang->resource->stakeholder->delete = 'delete'; + $lang->resource->stakeholder->view = 'viewAction'; + $lang->resource->stakeholder->issue = 'issue'; + $lang->resource->stakeholder->viewIssue = 'viewIssueAction'; + $lang->resource->stakeholder->communicate = 'communicate'; + $lang->resource->stakeholder->expect = 'expect'; + $lang->resource->stakeholder->expectation = 'expectation'; + $lang->resource->stakeholder->deleteExpect = 'deleteExpect'; + $lang->resource->stakeholder->createExpect = 'createExpect'; + $lang->resource->stakeholder->editExpect = 'editExpect'; + $lang->resource->stakeholder->viewExpect = 'viewExpect'; + $lang->resource->stakeholder->userIssue = 'userIssue'; + + $lang->stakeholder->methodOrder[5] = 'browse'; + $lang->stakeholder->methodOrder[10] = 'create'; + $lang->stakeholder->methodOrder[13] = 'batchCreate'; + $lang->stakeholder->methodOrder[15] = 'edit'; + $lang->stakeholder->methodOrder[25] = 'delete'; + $lang->stakeholder->methodOrder[30] = 'view'; + $lang->stakeholder->methodOrder[35] = 'issue'; + $lang->stakeholder->methodOrder[40] = 'viewIssue'; + $lang->stakeholder->methodOrder[45] = 'communicate'; + $lang->stakeholder->methodOrder[50] = 'expect'; + $lang->stakeholder->methodOrder[55] = 'expectation'; + $lang->stakeholder->methodOrder[60] = 'deleteExpect'; + $lang->stakeholder->methodOrder[65] = 'createExpect'; + $lang->stakeholder->methodOrder[70] = 'editExpect'; + $lang->stakeholder->methodOrder[75] = 'viewExpect'; + $lang->stakeholder->methodOrder[80] = 'userIssue'; } /* Product. */ @@ -378,42 +414,6 @@ $lang->branch->methodOrder[0] = 'manage'; $lang->branch->methodOrder[5] = 'sort'; $lang->branch->methodOrder[10] = 'delete'; -/* Stakeholer. */ -$lang->resource->stakeholder = new stdclass(); -$lang->resource->stakeholder->browse = 'browse'; -$lang->resource->stakeholder->create = 'create'; -$lang->resource->stakeholder->batchCreate = 'batchCreate'; -$lang->resource->stakeholder->edit = 'edit'; -$lang->resource->stakeholder->delete = 'delete'; -$lang->resource->stakeholder->view = 'viewAction'; -$lang->resource->stakeholder->issue = 'issue'; -$lang->resource->stakeholder->viewIssue = 'viewIssueAction'; -$lang->resource->stakeholder->communicate = 'communicate'; -$lang->resource->stakeholder->expect = 'expect'; -$lang->resource->stakeholder->expectation = 'expectation'; -$lang->resource->stakeholder->deleteExpect = 'deleteExpect'; -$lang->resource->stakeholder->createExpect = 'createExpect'; -$lang->resource->stakeholder->editExpect = 'editExpect'; -$lang->resource->stakeholder->viewExpect = 'viewExpect'; -$lang->resource->stakeholder->userIssue = 'userIssue'; - -$lang->stakeholder->methodOrder[5] = 'browse'; -$lang->stakeholder->methodOrder[10] = 'create'; -$lang->stakeholder->methodOrder[13] = 'batchCreate'; -$lang->stakeholder->methodOrder[15] = 'edit'; -$lang->stakeholder->methodOrder[25] = 'delete'; -$lang->stakeholder->methodOrder[30] = 'view'; -$lang->stakeholder->methodOrder[35] = 'issue'; -$lang->stakeholder->methodOrder[40] = 'viewIssue'; -$lang->stakeholder->methodOrder[45] = 'communicate'; -$lang->stakeholder->methodOrder[50] = 'expect'; -$lang->stakeholder->methodOrder[55] = 'expectation'; -$lang->stakeholder->methodOrder[60] = 'deleteExpect'; -$lang->stakeholder->methodOrder[65] = 'createExpect'; -$lang->stakeholder->methodOrder[70] = 'editExpect'; -$lang->stakeholder->methodOrder[75] = 'viewExpect'; -$lang->stakeholder->methodOrder[80] = 'userIssue'; - /* Story. */ $lang->resource->story = new stdclass(); $lang->resource->story->create = 'create'; diff --git a/module/group/model.php b/module/group/model.php index f2ca1e9d02..9e3b720773 100644 --- a/module/group/model.php +++ b/module/group/model.php @@ -475,6 +475,8 @@ class groupModel extends model ksort($this->lang->moduleOrder, SORT_ASC); foreach($this->lang->moduleOrder as $moduleName) { + if(!isset($resources->$moduleName)) continue; + $resource = $resources->$moduleName; unset($resources->$moduleName); $this->lang->resource->$moduleName = $resource; diff --git a/module/my/view/execution.html.php b/module/my/view/execution.html.php index fc0872121a..bb0101911e 100644 --- a/module/my/view/execution.html.php +++ b/module/my/view/execution.html.php @@ -34,7 +34,9 @@ idAB;?> my->name;?> + systemMode == 'new'):?> my->projects;?> + execution->begin;?> execution->end;?> statusAB;?> @@ -54,7 +56,9 @@ execution->typeList, $execution->type);?> name, '', "title='$execution->name'");?> + systemMode == 'new'):?> createLink('project', 'browse', "id=$execution->project", '', '', $execution->project), $execution->projectName, '', "title='$execution->projectName'");?> + begin;?> end;?> diff --git a/module/product/config.php b/module/product/config.php index b9573db2b5..d40990b01a 100644 --- a/module/product/config.php +++ b/module/product/config.php @@ -24,6 +24,7 @@ $config->product->search['fields']['pri'] = $lang->story->pri; $config->product->search['fields']['product'] = $lang->story->product; $config->product->search['fields']['branch'] = ''; $config->product->search['fields']['module'] = $lang->story->module; +$config->product->search['fields']['plan'] = $lang->story->plan; $config->product->search['fields']['estimate'] = $lang->story->estimate; $config->product->search['fields']['source'] = $lang->story->source; @@ -56,6 +57,7 @@ $config->product->search['params']['pri'] = array('operator' => '=', $config->product->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->product->search['params']['branch'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->product->search['params']['module'] = array('operator' => 'belong', 'control' => 'select', 'values' => ''); +$config->product->search['params']['plan'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->product->search['params']['estimate'] = array('operator' => '=', 'control' => 'input', 'values' => ''); $config->product->search['params']['source'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->story->sourceList); diff --git a/module/product/control.php b/module/product/control.php index 5e2c5bcef2..dcf20ca7ed 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -159,7 +159,7 @@ class product extends control $queryID = ($browseType == 'bysearch') ? (int)$param : 0; /* Set menu. The projectstory module does not execute. */ - if($this->app->rawModule == 'product') + if($this->app->openApp == 'product') { /* Save session. */ $this->session->set('storyList', $this->app->getURI(true), 'product'); @@ -245,6 +245,7 @@ class product extends control $this->lang->story->title = str_replace($this->lang->SRCommon, $this->lang->URCommon, $this->lang->story->title); $this->lang->story->create = str_replace($this->lang->SRCommon, $this->lang->URCommon, $this->lang->story->create); $this->config->product->search['fields']['title'] = $this->lang->story->title; + unset($this->config->product->search['fields']['plan']); } /* Build search form. */ diff --git a/module/testsuite/css/browse.css b/module/testsuite/css/browse.css index 1a36b974aa..270231864f 100644 --- a/module/testsuite/css/browse.css +++ b/module/testsuite/css/browse.css @@ -1 +1,2 @@ -.c-desc {overflow-x: scroll;} +.table td.c-desc div {height: 25px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; float: left; max-width: calc(100% - 20px);} +.table td.c-desc .more {height: 25px; float: left;} diff --git a/module/testsuite/js/common.js b/module/testsuite/js/common.js index 0c109aebfb..37eb430a8f 100644 --- a/module/testsuite/js/common.js +++ b/module/testsuite/js/common.js @@ -7,4 +7,32 @@ $(function() $(this).parent().toggleClass('active'); }); } + + $('#suiteList tbody tr').each(function() + { + var $content = $(this).find('td.c-desc'); + var content = $content.find('div').html(); + if(content.indexOf('= 0) + { + $content.append(""); + } + }); }) +$(document).on('click', 'td.c-desc .more', function(e) +{ + var $toggle = $(this); + if($toggle.hasClass('open')) + { + $toggle.removeClass('open'); + $toggle.closest('.c-desc').find('div').css('height', '25px'); + $toggle.css('padding-top', 0); + $toggle.find('i').removeClass('icon-chevron-double-up').addClass('icon-chevron-double-down'); + } + else + { + $toggle.addClass('open'); + $toggle.closest('.c-desc').find('div').css('height', 'auto'); + $toggle.css('padding-top', ($toggle.closest('.c-desc').find('div').height() - $toggle.height()) / 2); + $toggle.find('i').removeClass('icon-chevron-double-down').addClass('icon-chevron-double-up'); + } +}); diff --git a/module/testsuite/view/browse.html.php b/module/testsuite/view/browse.html.php index aed71746c0..d1c2ed956c 100644 --- a/module/testsuite/view/browse.html.php +++ b/module/testsuite/view/browse.html.php @@ -62,7 +62,10 @@ type == 'private') echo "{$lang->testsuite->authorList['private']} ";?> id"), $suite->name);?> - desc;?> + + ', '
', '
', '
'), "\n", str_replace(array("\n", "\r"), '', $suite->desc)), ''));?> +
+ addedBy);?> addedDate;?> " . $this->loadModel('flow')->getFieldValue($extendField, $suite) . "";?> diff --git a/module/tree/model.php b/module/tree/model.php index e22603223c..62478190d9 100644 --- a/module/tree/model.php +++ b/module/tree/model.php @@ -1018,7 +1018,7 @@ class treeModel extends model */ public function createStoryLink($type, $module, $extra = array()) { - if(isset($extra['projectID'])) + if(isset($extra['projectID']) and !empty($extra['projectID'])) { $productID = zget($extra , 'productID', 0); $projectID = $extra['projectID']; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index e35412500e..1a1f4d7b9d 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -3973,7 +3973,21 @@ class upgradeModel extends model */ public function adjustPriv15_0() { - $this->dao->update(TABLE_GROUPPRIV)->set('module')->eq('execution')->where('module')->eq('project')->exec(); + $executionPriv = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('execution')->limit(1)->fetch(); + if(empty($executionPriv)) $this->dao->update(TABLE_GROUPPRIV)->set('module')->eq('execution')->where('module')->eq('project')->exec(); + + $groups = $this->dao->select('id')->from(TABLE_GROUP)->fetchPairs('id', 'id'); + foreach($groups as $groupID) + { + $groupPriv = new stdclass(); + $groupPriv->group = $groupID; + $groupPriv->module = 'my'; + $groupPriv->method = 'work'; + $this->dao->replace(TABLE_GROUPPRIV)->data($groupPriv)->exec(); + + $groupPriv->method = 'contribute'; + $this->dao->replace(TABLE_GROUPPRIV)->data($groupPriv)->exec(); + } $stmt = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('program')->andWhere('method')->like('PGM%')->query(); while($grouppriv = $stmt->fetch())