diff --git a/VERSION b/VERSION
index 6060b96fa1..c9333734bd 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-17.5
+17.6
diff --git a/api/v1/entries/execution.php b/api/v1/entries/execution.php
index cc9add74e9..3d66f624a0 100644
--- a/api/v1/entries/execution.php
+++ b/api/v1/entries/execution.php
@@ -20,9 +20,8 @@ class executionEntry extends Entry
*/
public function get($executionID)
{
- $fields = $this->param('fields');
- $productID = $this->param('productID');
- $status = $this->param('status', 'all');
+ $fields = $this->param('fields');
+ $status = $this->param('status', 'all');
$control = $this->loadController('execution', 'view');
$control->view($executionID);
@@ -47,8 +46,8 @@ class executionEntry extends Entry
foreach($executionProduct->plans as $planID)
{
$plan = new stdclass();
- $plan->id = $planID;
- $plan->name = $data->data->planGroups->{$productID}->{$planID};
+ $plan->id = trim($planID, ',');
+ $plan->name = $data->data->planGroups->{$productID}->{$plan->id};
$product->plans[] = $plan;
}
$execution->products[] = $product;
diff --git a/api/v1/entries/program.php b/api/v1/entries/program.php
index 22a9469687..e7394f9d45 100644
--- a/api/v1/entries/program.php
+++ b/api/v1/entries/program.php
@@ -60,7 +60,7 @@ class programEntry extends Entry
public function delete($programID)
{
$control = $this->loadController('program', 'delete');
- $control->delete(0, $programID, 'true');
+ $control->delete($programID, 'true');
$data = $this->getData();
if(isset($data->result) and $data->result == 'fail') return $this->sendError(400, $data->message);
diff --git a/api/v1/entries/tabs.php b/api/v1/entries/tabs.php
index 9078299d8c..af0c938f46 100644
--- a/api/v1/entries/tabs.php
+++ b/api/v1/entries/tabs.php
@@ -29,7 +29,7 @@ class tabsEntry extends baseEntry
foreach($tabs as $menuKey)
{
if(!isset($this->lang->my->$menuKey)) continue;
- if(!common::hasPriv('my', $menuKey)) continue;
+ if(!common::hasPriv('my', 'work')) continue;
$label = $this->lang->my->$menuKey;
if($menuKey == 'calendar') $label = $this->lang->my->calendarAction;
diff --git a/api/v1/entries/user.php b/api/v1/entries/user.php
index 5a77a6b2af..8940d9ee05 100644
--- a/api/v1/entries/user.php
+++ b/api/v1/entries/user.php
@@ -254,7 +254,7 @@ class userEntry extends Entry
if(!common::hasPriv('my', 'todo')) break;
$control = $this->loadController('my', 'todo');
- $control->todo($this->param('date', 'all'), '', 'all', 'date_desc', 0, 0, $this->param('limit', 5), 1);
+ $control->todo($this->param('date', 'before'), '', 'all', 'date_desc', 0, $this->param('limit', 5), 1);
$data = $this->getData();
if($data->status == 'success')
@@ -313,7 +313,7 @@ class userEntry extends Entry
{
$this->config->openMethods[] = 'my.risk';
$control = $this->loadController('my', 'risk');
- $control->risk('createdBy', 0, 'id_desc', 0, $this->param('limit', 5), 1);
+ $control->risk('assignedTo', 0, 'id_desc', 0, $this->param('limit', 5), 1);
$data = $this->getData();
if($data->status == 'success')
@@ -331,7 +331,7 @@ class userEntry extends Entry
{
$this->config->openMethods[] = 'my.myMeeting';
$control = $this->loadController('my', 'myMeeting');
- $control->myMeeting('all', '', 'id_desc', 0, $this->param('limit', 5), 1);
+ $control->myMeeting('futureMeeting', '', 'id_desc', 0, $this->param('limit', 5), 1);
$data = $this->getData();
if($data->status == 'success')
diff --git a/bin/ztcli b/bin/ztcli
index 38252d263b..b6352cf9e9 100755
--- a/bin/ztcli
+++ b/bin/ztcli
@@ -50,7 +50,7 @@ if($config->requestType == 'PATH_INFO')
{
$_SERVER['PATH_INFO'] = $path['basename'];
}
- else
+ else
{
/* url like http://pms.zentao.net/zentao/my/, PATH_INFO is 'my'. */
if(is_dir('./module/' . $path['basename']))
diff --git a/config/config.php b/config/config.php
index 29e435d02b..e8d0dbd010 100644
--- a/config/config.php
+++ b/config/config.php
@@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}}
if(!function_exists('getWebRoot')){function getWebRoot(){}}
/* 基本设置。Basic settings. */
-$config->version = '17.5'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
+$config->version = '17.6'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->liteVersion = '1.2'; // 迅捷版版本。 The version of Lite.
$config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP.
$config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time.
diff --git a/config/zentaopms.php b/config/zentaopms.php
index a59c81cb38..a10d6a941c 100644
--- a/config/zentaopms.php
+++ b/config/zentaopms.php
@@ -398,3 +398,6 @@ $config->programPriv->waterfall = array_merge($config->programPriv->scrum, array
$config->waterfallModules = array('workestimation', 'durationestimation', 'budget', 'programplan', 'review', 'reviewissue', 'weekly', 'cm', 'milestone', 'design', 'opportunity', 'auditplan', 'trainplan', 'gapanalysis', 'pssp', 'researchplan', 'researchreport');
$config->showMainMenu = true;
+$config->maxPriValue = '256';
+
+$config->importWhiteList = array('user', 'task', 'story', 'bug', 'testcase', 'feedback');
\ No newline at end of file
diff --git a/db/demo.sql b/db/demo.sql
index d2d0550d63..2277a6a1d4 100644
--- a/db/demo.sql
+++ b/db/demo.sql
@@ -15,7 +15,7 @@ INSERT INTO `zt_action` (`id`, `objectType`, `objectID`, `product`, `project`, `
(11, 'story', 1, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:09:49', '', '', '0'),
(12, 'story', 2, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:16:37', '', '', '0'),
(13, 'story', 3, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:18:10', '', '', '0'),
-(14, 'story', 3, ',1,', 0, 0, 'productManager', 'changed', '2012-06-05 10:19:06', '', '', '0'),
+(14, 'story', 3, ',1,', 0, 0, 'productManager', 'changing', '2012-06-05 10:19:06', '', '', '0'),
(15, 'story', 4, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:20:16', '', '', '0'),
(16, 'story', 5, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:21:39', '', '', '0'),
(17, 'story', 6, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:23:11', '', '', '0'),
@@ -589,9 +589,9 @@ INSERT INTO `zt_story` (`id`, `parent`, `product`, `branch`, `module`, `plan`, `
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0'),
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
-(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
-(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
-(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
+(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
+(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
+(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
INSERT INTO `zt_storyspec` (`story`, `version`, `title`, `spec`, `verify`) VALUES
(1, 1, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。
', '开发并通过验收
'),
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。
', ''),
diff --git a/db/endemo.sql b/db/endemo.sql
index d2d0550d63..2277a6a1d4 100644
--- a/db/endemo.sql
+++ b/db/endemo.sql
@@ -15,7 +15,7 @@ INSERT INTO `zt_action` (`id`, `objectType`, `objectID`, `product`, `project`, `
(11, 'story', 1, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:09:49', '', '', '0'),
(12, 'story', 2, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:16:37', '', '', '0'),
(13, 'story', 3, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:18:10', '', '', '0'),
-(14, 'story', 3, ',1,', 0, 0, 'productManager', 'changed', '2012-06-05 10:19:06', '', '', '0'),
+(14, 'story', 3, ',1,', 0, 0, 'productManager', 'changing', '2012-06-05 10:19:06', '', '', '0'),
(15, 'story', 4, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:20:16', '', '', '0'),
(16, 'story', 5, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:21:39', '', '', '0'),
(17, 'story', 6, ',1,', 0, 0, 'productManager', 'opened', '2012-06-05 10:23:11', '', '', '0'),
@@ -589,9 +589,9 @@ INSERT INTO `zt_story` (`id`, `parent`, `product`, `branch`, `module`, `plan`, `
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0'),
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
-(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
-(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
-(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
+(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
+(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
+(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
INSERT INTO `zt_storyspec` (`story`, `version`, `title`, `spec`, `verify`) VALUES
(1, 1, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。
', '开发并通过验收
'),
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。
', ''),
diff --git a/db/update17.5.sql b/db/update17.5.sql
index f985aa8c85..8b3f2aafd5 100644
--- a/db/update17.5.sql
+++ b/db/update17.5.sql
@@ -1,3 +1,7 @@
+ALTER TABLE `zt_story` MODIFY `status` enum('','changed','active','draft','closed','reviewing') NOT NULL DEFAULT '' AFTER `estimate`;
+UPDATE `zt_story` SET `status` = 'reviewing' WHERE `status` = 'changed';
+ALTER TABLE `zt_story` MODIFY `status` enum('','changing','active','draft','closed','reviewing') NOT NULL DEFAULT '' AFTER `estimate`;
+
ALTER TABLE `zt_feedback` ADD `repeatFeedback` mediumint(8) NOT NULL DEFAULT 0 AFTER `feedbackBy`;
ALTER TABLE `zt_assetlib` ADD `order` SMALLINT UNSIGNED NOT NULL DEFAULT '0' AFTER `desc`;
diff --git a/db/zentao.sql b/db/zentao.sql
index 155d4056cf..ac6389009a 100755
--- a/db/zentao.sql
+++ b/db/zentao.sql
@@ -791,6 +791,7 @@ CREATE TABLE IF NOT EXISTS `zt_job` (
`lastExec` datetime DEFAULT NULL,
`lastStatus` varchar(255) DEFAULT NULL,
`lastTag` varchar(255) DEFAULT NULL,
+ `lastSyncDate` datetime DEFAULT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -1442,7 +1443,7 @@ CREATE TABLE IF NOT EXISTS `zt_story` (
`category` varchar(30) NOT NULL default 'feature',
`pri` tinyint(3) unsigned NOT NULL default '3',
`estimate` float unsigned NOT NULL,
- `status` enum('','changed','active','draft','closed') NOT NULL default '',
+ `status` enum('','changing','active','draft', 'reviewing', 'closed') NOT NULL default '',
`subStatus` varchar(30) NOT NULL default '',
`color` char(7) NOT NULL,
`stage` enum('','wait','planned','projected','developing','developed','testing','tested','verified','released', 'closed') NOT NULL DEFAULT 'wait',
@@ -1908,7 +1909,8 @@ INSERT INTO `zt_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type
('1', '0', '*', '*', '*', 'moduleName=ci&methodName=initQueue', '创建周期性任务', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
('*/5', '*', '*', '*', '*', 'moduleName=ci&methodName=checkCompileStatus', '同步DevOps构建任务状态', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
('*/5', '*', '*', '*', '*', 'moduleName=ci&methodName=exec', '执行DevOps构建任务', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
-('*/5', '*', '*', '*', '*', 'moduleName=mr&methodName=syncMR', '定时同步GitLab合并数据到禅道数据库', 'zentao', 1, 'normal', '0000-00-00 00:00:00');
+('*/5', '*', '*', '*', '*', 'moduleName=mr&methodName=syncMR', '定时同步GitLab合并数据到禅道数据库', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
+('*/5', '*', '*', '*', '*', 'moduleName=compile&methodName=syncCompile', '定时同步构建记录', 'zentao', 1, 'normal', '0000-00-00 00:00:00');
INSERT INTO `zt_group` (`id`, `vision`, `name`, `role`, `desc`) VALUES
(1, 'rnd', 'ADMIN', 'admin', 'for administrator'),
@@ -7089,6 +7091,7 @@ CREATE TABLE IF NOT EXISTS `zt_feedback` (
`assignedTo` varchar(255) NOT NULL,
`assignedDate` datetime NOT NULL,
`feedbackBy` varchar(100) NOT NULL,
+ `repeatFeedback` mediumint(8) NOT NULL DEFAULT 0,
`mailto` varchar(255) NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
diff --git a/doc/CHANGELOG b/doc/CHANGELOG
index f701b65279..eacaf00de5 100644
--- a/doc/CHANGELOG
+++ b/doc/CHANGELOG
@@ -1,3 +1,124 @@
+2022-08-25 17.6
+完成的需求
+开源版:
+30520 用户需求和研发需求权限区分
+30718 我的地盘软件需求列表区块软件需求列表中将草稿状态调整为评审中,新增草稿状态的需求展示
+30721 贡献列表中用户需求和软件需求列表中将草稿状态调整为评审中
+30722 提软件需求和提用户需求页面中增加存为草稿按钮
+30724 草稿状态的需求详情中增加提交评审操作
+30725 软件需求和用户需求列表筛选标签中将草稿标签调整为评审中
+30726 软件需求和用户需求列表筛选标签中增加草稿标签
+30727 计划关联需求时搜索列表中将草稿调整为评审中
+30729 需求报表中按状态进行统计表中将草稿调整为评审中,新增草稿状态的统计
+30730 release关联需求时过滤掉草稿和评审中状态的需求
+30731 项目关联需求时过滤掉草稿和评审中状态的需求
+30732 项目需求列表中通过新增需求,可以展示草稿和评审中的需求
+30733 执行关联需求时过滤掉草稿和评审中状态的需求
+30734 执行需求列表中通过新增需求后可以展示草稿和评审中状态的需求
+30735 Scrum看板的需求类泳道中通过新增需求可以展示草稿和评审中状态的需求
+30736 专业研发看板的需求类泳道中通过新增需求可以展示草稿和评审中状态的需求
+30737 build关联需求时过滤掉草稿和评审中状态的需求
+30738 年度总结报表中需求状态分布中将草稿状态调整为评审中,新增草稿状态
+30739 产品统计报表中产品汇总表中将草稿状态调整为评审中,新增草稿状态
+30740 产品统计报表中产品需求状态分布表中将草稿状态调整为评审中,新增草稿状态
+30741 项目统计报表中项目需求状态分布表中将草稿状态调整为评审中,新增草稿状态
+30743 草稿状态对应需求阶段的规则
+31134 新增的草稿状态需求不受强制评审流程控制
+31251 实现草稿状态需求的提交评审功能
+34650 产品列表中用户需求和研发需求增加评审中状态
+34651 产品概况中其他信息模块软需维度优化
+34896 软件需求状态“已变更”调整为“变更中”
+34897 用户需求状态“已变更”调整为“变更中”
+34898 已关闭的软件需求激活后状态可以选择“激活”或者关闭前的状态
+34899 已关闭的用户需求激活后状态可以选择“激活”或者关闭前的状态
+34900 软需从草稿提交评审,根据不同评审结果进行后续处理
+34901 用需从草稿提交评审,根据不同评审结果进行后续处理
+34902 软件需求草稿状态时按钮调整
+34903 软件需求评审中状态时按钮调整
+34904 软件需求变更中状态时按钮调整
+34922 软件需求激活状态时按钮调整
+34924 用户需求草稿状态时按钮调整
+34925 用户需求评审中状态时按钮调整
+34926 用户需求变更中状态时按钮调整
+34927 用户需求激活状态时按钮调整
+34931 Bug转需求时可以保存为草稿
+34933 已关闭的需求激活后指派人不能选择closed
+34934 需求变更评审时,系统根据需求不同评审结果进行后续处理
+34935 草稿需求评审时,评审人可选择确认通过、有待明确、拒绝
+35080 创建bug页面操作系统、浏览器支持多选
+35278 执行中转入任务页面增加分页展示
+35301 回收站的执行列表中增加所属项目字段
+35320 需求草稿状态时可以修改草稿内容
+35321 发起人对变更流程提交至”评审中“的需求选择撤销后需求根据状态回溯到不同内容
+35356 父阶段状态跟随子阶段状态自动更改
+35413 文档切换所属文档库时需要同步附件
+35821 回收站的任务列表中增加所属执行字段
+35887 关闭的bug指派人显示closed,不可编辑
+35908 在搜索表单中通过日期字段检索时去掉00:00:00的格式
+35935 修改零用例软需和矩阵的权限位置
+35998 更新bug中操作系统码值
+35999 更新bug中浏览器码值
+36111 bug编辑页面可以关联用例
+36184 测试单列表增加项目信息展示
+36188 需求按照优先级排序时,空值放最后
+36189 Bug按照优先级或严重程度排序时,空值放最后
+36190 用例关联bug和用例页增加分页
+36522 注册系统管理员的密码规则同系统中中级密码强度
+企业版:
+28045 反馈关闭原因为重复时,增加重复反馈输入的选项
+30523 反馈转Bug时取消选择项目弹窗直接进入提Bug页面
+30912 地盘日志列表新建日志时可以搜索该用户参与的所有执行
+31984 反馈增加批量导入功能
+33940 反馈增加导出模板功能
+34296 提交反馈默认公开
+34844 组织日志菜单下增加增加未填写日志成员的选项
+34998 反馈导出时的时间支持精确到分秒
+35024 用户需求和研发需求的导出数据增加类别字段
+35083 执行甘特图支持在图上用连接的方式维护任务关系
+35861 甘特图全屏样式优化
+36185 执行甘特图查看任务关系维护按钮、设置按钮、甘特图按钮优化
+36581 任务工时明细表的横向滚动条置顶显示
+36618 有编辑他人反馈权限,可以批量编辑他人反馈
+旗舰版:
+30432 瀑布项目设计功能类型支持自定义功能
+34682 资产库可以排序
+修复的Bug
+26232 执行软件需求列表简单表格下横向滚动条显示遮挡
+26272 地盘待处理/贡献研发需求列表中,子需求的名称和所属产品未显示title
+26380 复制项目时项目计划起止日期还是受项目集计划起止日期限制
+26448 列表设置弹窗界面高度需要优化
+26614 编辑项目页面计划起止日期/预算提示文案样式优化
+26618 创建测试任务时可以选择到已创建测试任务的需求
+26644 超出项目集计划起止日期提示换行
+26645 鼠标悬浮在附上时页面抖动
+25925 执行信息确认页面,日期选择后控件没有自动收起
+25929 敏捷项目和迭代设置中的白名单列表没有被复制
+25969 阶段信息确认页面没有显示已有的阶段负责人和阶段类型
+25974 阶段信息确认页面修改负责人后,没有按照修改后的负责人进行显示
+25989 英文下迭代信息确认页面表头显示优化
+25996 复制项目时,执行信息确认页面执行的状态默认设置应该为未开始
+25999 复制项目时,执行信息确认页面没有校验计划开始结束时间的先后
+26032 项目中发起评审,弹窗字段未居中
+26034 英文下项目中发起审批,文本换行
+26054 英德法下甘特图页面报错
+26057 英德法下甘特图页面没有显示分组选项
+26303 复制迭代时间控件一直显示
+26326 甘特图阶段工期计算错误
+26327 阶段甘特图中任务工期计算错误
+26365 项目计划评审页面自定义表单设置样式问题
+26580 评审项目计划页面甘特图切换为按指派给分组跳转到了阶段甘特图页面
+26638 甘特图拖动排序历史记录没有写中文语言项
+26655 瀑布项目设计三级导航不高亮了
+25961 迅捷页面用户授权异常
+26200 自定义库目录修改所属文档库到wiki库不能查看
+26221 导出数据的excel中,“抄送给”显示成了用户名
+26265 导入大数据测试用例页面有报错
+26278 导入文件超出PHP最大上传大小时没有提示
+26364 编辑项目页面有代码报错
+26371 导出的需求,用户名的显示不一致
+26424 导入用例页面无影响,提示PHPExcel原因
+26657 不能批量编辑他人反馈
+
2022-08-11 17.5
完成的需求
开源版:
diff --git a/extension/lite/group/ext/lang/resource.php b/extension/lite/group/ext/lang/resource.php
index 7fe9577dbd..45d77bcd6f 100644
--- a/extension/lite/group/ext/lang/resource.php
+++ b/extension/lite/group/ext/lang/resource.php
@@ -261,6 +261,7 @@ $lang->resource->story->delete = 'deleteAction';
$lang->resource->story->view = 'view';
$lang->resource->story->change = 'changeAction';
$lang->resource->story->review = 'reviewAction';
+$lang->resource->story->submitReview = 'submitReview';
$lang->resource->story->batchReview = 'batchReview';
$lang->resource->story->recall = 'recall';
$lang->resource->story->assignTo = 'assignAction';
@@ -289,6 +290,7 @@ $lang->story->methodOrder[25] = 'delete';
$lang->story->methodOrder[30] = 'view';
$lang->story->methodOrder[35] = 'change';
$lang->story->methodOrder[40] = 'review';
+$lang->story->methodOrder[44] = 'submitReview';
$lang->story->methodOrder[45] = 'batchReview';
$lang->story->methodOrder[50] = 'recall';
$lang->story->methodOrder[55] = 'close';
diff --git a/extension/lite/my/ext/view/task.html.php b/extension/lite/my/ext/view/task.html.php
index 032ccfee7a..01f53c561d 100644
--- a/extension/lite/my/ext/view/task.html.php
+++ b/extension/lite/my/ext/view/task.html.php
@@ -95,8 +95,9 @@
}
else
{
- $class = ($task->executionType == 'kanban') ? 'iframe' : '';
- echo html::a($this->createLink('task', 'view', "taskID=$task->id", '', true, $task->project), $task->name, null, "class='$class' data-width='80%' style='color: $task->color'");
+ $onlybody = $task->executionType == 'kanban' ? true : '';
+ $class = $task->executionType == 'kanban' ? 'iframe' : '';
+ echo html::a($this->createLink('task', 'view', "taskID=$task->id", '', $onlybody, $task->project), $task->name, null, "class='$class' data-width='80%' style='color: $task->color'");
}
?>
children)) echo '';?>
diff --git a/extension/lite/story/ext/view/batchcreate.html.php b/extension/lite/story/ext/view/batchcreate.html.php
index 99a33b5476..d94de7cee7 100644
--- a/extension/lite/story/ext/view/batchcreate.html.php
+++ b/extension/lite/story/ext/view/batchcreate.html.php
@@ -85,7 +85,8 @@