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())