diff --git a/config/zentaopms.php b/config/zentaopms.php index 4aef192956..064f99a08f 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -197,6 +197,7 @@ if(!defined('TABLE_LANG')) define('TABLE_LANG', '`' . $config->db- if(!defined('TABLE_STAGE')) define('TABLE_STAGE', '`' . $config->db->prefix . 'stage`'); if(!defined('TABLE_DESIGN')) define('TABLE_DESIGN', '`' . $config->db->prefix . 'design`'); if(!defined('TABLE_DESIGNSPEC')) define('TABLE_DESIGNSPEC', '`' . $config->db->prefix . 'designspec`'); +if(!defined('TABLE_ISSUE')) define('TABLE_ISSUE', '`' . $config->db->prefix . 'issue`'); if(!defined('TABLE_RISK')) define('TABLE_RISK', '`' . $config->db->prefix . 'risk`'); if(!defined('TABLE_PROJECTSPEC')) define('TABLE_PROJECTSPEC', '`' . $config->db->prefix . 'projectspec`'); if(!defined('TABLE_WORKESTIMATION')) define('TABLE_WORKESTIMATION', '`' . $config->db->prefix . 'workestimation`'); diff --git a/db/update20.0.sql b/db/update20.0.sql index 835511a32f..314c705814 100644 --- a/db/update20.0.sql +++ b/db/update20.0.sql @@ -95,6 +95,78 @@ CREATE TABLE `zt_designspec` ( UNIQUE KEY `design` (`design`,`version`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; +<<<<<<< HEAD +-- DROP TABLE IF EXISTS `zt_issue`; +CREATE TABLE `zt_issue` ( + `id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT, + `program` varchar(255) NOT NULL, + `product` varchar(255) NOT NULL, + `commit` varchar(30) NOT NULL, + `project` mediumint(9) NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `parent` mediumint(8) unsigned NOT NULL, + `status` varchar(30) NOT NULL, + `subStatus` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `commitBy` varchar(30) NOT NULL, + `commitDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `story` char(30) NOT NULL, + `desc` text NOT NULL, + `version` smallint(6) NOT NULL, + `type` char(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `zt_designspec` ( + `design` mediumint(8) NOT NULL, + `version` smallint(6) NOT NULL, + `name` varchar(255) NOT NULL, + `desc` text NOT NULL, + `files` varchar(255) NOT NULL, + UNIQUE KEY `design` (`design`,`version`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- DROP TABLE IF EXISTS `zt_issue`; +CREATE TABLE `zt_issue` ( + `id` mediumint(8) UNSIGNED NOT NULL, + `resolvedBy` varchar(30) NOT NULL, + `program` varchar(255) NOT NULL, + `title` varchar(255) NOT NULL, + `desc` text NOT NULL, + `pri` char(30) NOT NULL, + `severity` char(30) NOT NULL, + `type` char(30) NOT NULL, + `activity` varchar(255) NOT NULL, + `effectedArea` varchar(255) NOT NULL, + `deadline` date NOT NULL, + `resolution` char(30) NOT NULL, + `resolutionComment` text NOT NULL, + `objectID` varchar(255) NOT NULL, + `resolvedDate` date NOT NULL, + `status` varchar(30) NOT NULL, + `owner` varchar(255) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `activateBy` varchar(30) NOT NULL, + `activateDate` date NOT NULL, + `closeBy` varchar(30) NOT NULL, + `closedDate` date NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + CREATE TABLE `zt_risk` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `program` varchar(255) NOT NULL, @@ -115,15 +187,15 @@ CREATE TABLE `zt_risk` ( `addedDate` date NOT NULL, `resolution` text NOT NULL, `resolvedBy` varchar(30) NOT NULL, - `createdBy` varchar(30) NOT NULL, - `createdDate` datetime NOT NULL, - `editedBy` varchar(30) NOT NULL, - `editedDate` datetime NOT NULL, - `cancelReason` char(30) NOT NULL, + `activateBy` varchar(30) NOT NULL, + `activateDate` date NOT NULL, + `closeBy` varchar(30) NOT NULL, + `closedDate` date NOT NULL, `assignedTo` varchar(30) NOT NULL, + `assignedBy` varchar(30) NOT NULL, `assignedDate` datetime NOT NULL, `deleted` enum('0','1') NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) + PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_projectspec`; diff --git a/module/issue/config.php b/module/issue/config.php new file mode 100644 index 0000000000..7ed6ebfba3 --- /dev/null +++ b/module/issue/config.php @@ -0,0 +1,6 @@ +issue->create = new stdclass(); +$config->issue->create->requiredFields = 'title,type,severity'; + +$config->issue->editor = new stdclass(); +$config->issue->editor->create = array('id' => 'desc', 'tools' => 'simpleTools'); diff --git a/module/issue/control.php b/module/issue/control.php new file mode 100644 index 0000000000..d6c4231c56 --- /dev/null +++ b/module/issue/control.php @@ -0,0 +1,56 @@ + + * @package issue + * @version $Id: control.php 5145 2013-07-15 06:47:26Z chencongzhi520@gmail.com $ + * @link http://www.zentao.net + */ +class issue extends control +{ + /** + * Get issue list data. + * + * @param string $browseType + * @param string orderBy + * @param int recTotal + * @param int recPerPage + * @param int pageID + * @access public + * @return void + */ + public function browse($browseType = 'all', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) + { + $this->view->title = $this->lang->issue->common . $this->lang->colon . $this->lang->issue->browse; + $this->view->position[] = $this->lang->issue->browse; + + $this->display(); + } + + /** + * Create a issue. + * + * @access public + * @return void + */ + public function create() + { + if($_POST) + { + $result = $this->issue->create(); + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); + $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('browse', 'browseType=all'))); + } + + $this->view->title = $this->lang->issue->common . $this->lang->colon . $this->lang->issue->create; + $this->view->position[] = $this->lang->issue->common; + $this->view->position[] = $this->lang->issue->create; + + $this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted'); + + $this->display(); + } +} diff --git a/module/issue/lang/zh-cn.php b/module/issue/lang/zh-cn.php new file mode 100644 index 0000000000..fda597551e --- /dev/null +++ b/module/issue/lang/zh-cn.php @@ -0,0 +1,75 @@ +issue->common = '项目问题'; +$lang->issue->browse = '问题列表'; +$lang->issue->resolvedBy = '解决者'; +$lang->issue->program = '所属项目'; +$lang->issue->title = '标题'; +$lang->issue->desc = '描述'; +$lang->issue->pri = '优先级'; +$lang->issue->severity = '严重程度'; +$lang->issue->type = '类别'; +$lang->issue->effectedArea = '受影响的活动'; +$lang->issue->activity = '活动列表'; +$lang->issue->deadline = '计划解决日期'; +$lang->issue->resolution = '解决方式'; +$lang->issue->resolutionComment = '解决方案'; +$lang->issue->resolvedDate = '实际解决日期'; +$lang->issue->status = '结果'; +$lang->issue->createdBy = '由谁创建'; +$lang->issue->createdDate = '创建日期'; +$lang->issue->owner = '提出人'; +$lang->issue->editedBy = '由谁编辑'; +$lang->issue->editedDate = '编辑日期'; +$lang->issue->activateBy = '由谁激活'; +$lang->issue->activateDate = '激活日期'; +$lang->issue->closeBy = '由谁关闭'; +$lang->issue->closedDate = '关闭日期'; +$lang->issue->assignedTo = '指派给'; +$lang->issue->assignedBy = '由谁指派'; +$lang->issue->assignedDate = '指派时间'; +$lang->issue->resolved = '解决'; + +$lang->issue->create = '新建'; +$lang->issue->batchCreate = '批量新建'; + +$lang->issue->labelList['open'] = '开放'; +$lang->issue->labelList['assignTo'] = '指派给我'; +$lang->issue->labelList['closed'] = '已关闭'; +$lang->issue->labelList['suspended'] = '已挂起'; +$lang->issue->labelList['cancelled'] = '已取消'; + +$lang->issue->priList[''] = ''; +$lang->issue->priList['1'] = 1; +$lang->issue->priList['2'] = 2; +$lang->issue->priList['3'] = 3; +$lang->issue->priList['4'] = 4; + +$lang->issue->serverityList[''] = ''; +$lang->issue->serverityList['1'] = '严重'; +$lang->issue->serverityList['2'] = '较严重'; +$lang->issue->serverityList['3'] = '较小'; +$lang->issue->serverityList['4'] = '建议'; + +$lang->issue->typeList[''] = ''; +$lang->issue->typeList['design'] = '设计问题'; +$lang->issue->typeList['code'] = '程序缺陷'; +$lang->issue->typeList['performance'] = '性能问题'; +$lang->issue->typeList['version'] = '版本控制'; +$lang->issue->typeList['storyadd'] = '需求新增'; +$lang->issue->typeList['storychanged'] = '需求修改'; +$lang->issue->typeList['storyremoved'] = '需求删除'; +$lang->issue->typeList['data'] = '数据问题'; + +$lang->issue->resolutionList['resolved'] = '已解决'; +$lang->issue->resolutionList['tostory'] = '转需求'; +$lang->issue->resolutionList['tobug'] = '转BUG'; +$lang->issue->resolutionList['torisk'] = '转风险'; +$lang->issue->resolutionList['totask'] = '转任务'; + +$lang->issue->statusList['unconfirmed'] = '待确认'; +$lang->issue->statusList['confirmed'] = '已确认'; +$lang->issue->statusList['unresolved'] = '正解决'; +$lang->issue->statusList['resolved'] = '已解决'; +$lang->issue->statusList['canceled'] = '取消'; +$lang->issue->statusList['closed'] = '已关闭'; + diff --git a/module/issue/model.php b/module/issue/model.php new file mode 100644 index 0000000000..7e2e8cc72c --- /dev/null +++ b/module/issue/model.php @@ -0,0 +1,48 @@ + + * @package issue + * @version $Id: model.php 5145 2013-07-15 06:47:26Z chencongzhi520@gmail.com $ + * @link http://www.zentao.net + */ +?> +add('createdBy', $this->app->user->account) + ->add('createdDate', $now) + ->addIF($this->post->assignedTo, 'assignedBy', $this->app->user->account) + ->addIF($this->post->assignedTo, 'assignedDate', $now) + ->stripTags($this->config->issue->editor->create['id'], $this->config->allowedTags) + ->get(); + + if(strpos($this->config->issue->create->requiredFields, 'type') !== false and !$this->post->type) + { + dao::$errors[] = sprintf($this->lang->error->notempty, $this->lang->issue->type); + return false; + } + + if(strpos($this->config->issue->create->requiredFields, 'title') !== false and !$this->post->title) + { + dao::$errors[] = sprintf($this->lang->error->notempty, $this->lang->issue->title); + return false; + } + + if(strpos($this->config->issue->create->requiredFields, 'severity') !== false and !$this->post->severity) + { + dao::$errors[] = sprintf($this->lang->error->notempty, $this->lang->issue->severity); + return false; + } + + $this->dao->insert(TABLE_ISSUE)->data($data)->exec(); + return true; + } +} diff --git a/module/issue/view/browse.html.php b/module/issue/view/browse.html.php new file mode 100644 index 0000000000..20b13a2d71 --- /dev/null +++ b/module/issue/view/browse.html.php @@ -0,0 +1,24 @@ + + * @package story + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +