diff --git a/db/zentao.sql b/db/zentao.sql index fbaf02c0a3..12b8856122 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -1550,11 +1550,12 @@ INSERT INTO `zt_groupPriv` (`company`, `group`, `module`, `method`) VALUES (1, 5, 'my', 'changePassword'), (1, 1, 'story', 'batchClose'), (1, 2, 'story', 'batchClose'), -(1, 3, 'story', 'batchClose'), -(1, 4, 'story', 'batchClose'), (1, 5, 'story', 'batchClose'), (1, 1, 'task', 'batchEdit'), (1, 2, 'task', 'batchEdit'), (1, 3, 'task', 'batchEdit'), (1, 4, 'task', 'batchEdit'), -(1, 5, 'task', 'batchEdit'); +(1, 5, 'task', 'batchEdit'), +(1, 1, 'release', 'exportStoriesAndBugs'), +(1, 2, 'release', 'exportStoriesAndBugs'), +(1, 5, 'release', 'exportStoriesAndBugs'); diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 1afeacaeca..79f7e8b832 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -85,6 +85,7 @@ $lang->resource->release->edit = 'edit'; $lang->resource->release->delete = 'delete'; $lang->resource->release->view = 'view'; $lang->resource->release->ajaxGetStoriesAndBugs = 'ajaxGetStoriesAndBugs'; +$lang->resource->release->exportStoriesAndBugs = 'exportStoriesAndBugs'; /* Project. */ $lang->resource->project->index = 'index'; @@ -374,3 +375,4 @@ $lang->changelog['3.1'][] = 'todo-batchCreate'; $lang->changelog['3.2'][] = 'my-changePassword'; $lang->changelog['3.2'][] = 'story-batchClose'; $lang->changelog['3.2'][] = 'task-batchEdit'; +$lang->changelog['3.2'][] = 'release-exportStoriesAndBugs'; diff --git a/module/release/control.php b/module/release/control.php index 9b72338a77..f91e305192 100644 --- a/module/release/control.php +++ b/module/release/control.php @@ -195,4 +195,54 @@ class release extends control $this->view->orderBy = $orderBy; die($this->display()); } + + /** + * Export the stories of release to HTML. + * + * @param string $type story | bug + * @access public + * @return void + */ + public function exportStoriesAndBugs($type) + { + if(!empty($_POST)) + { + if($type == 'story') + { + $this->loadModel('story'); + + $stories = $this->dao->select('id, title')->from(TABLE_STORY)->where($this->session->storyQueryCondition) + ->beginIF($this->session->storyOrderBy != false)->orderBy($this->session->storyOrderBy)->fi() + ->fetchAll('id'); + + foreach($stories as $story) + { + $story->title = "id") . "' target='_blank'>$story->title"; + } + + $this->post->set('fields', array('id' => $this->lang->story->id, 'title' => $this->lang->story->title)); + $this->post->set('rows', $stories); + $this->fetch('file', 'export2HTML', $_POST); + } + else if($type == 'bug') + { + $this->loadModel('bug'); + + $bugs = $this->dao->select('id, title')->from(TABLE_BUG)->where($this->session->bugQueryCondition) + ->beginIF($this->session->bugOrderBy != false)->orderBy($this->session->bugOrderBy)->fi() + ->fetchAll('id'); + + foreach($bugs as $bug) + { + $bug->title = "id") . "' target='_blank'>$bug->title"; + } + + $this->post->set('fields', array('id' => $this->lang->bug->id, 'title' => $this->lang->bug->title)); + $this->post->set('rows', $bugs); + $this->fetch('file', 'export2HTML', $_POST); + } + } + + $this->display(); + } } diff --git a/module/release/lang/en.php b/module/release/lang/en.php index ef682f0871..f08032e688 100644 --- a/module/release/lang/en.php +++ b/module/release/lang/en.php @@ -34,3 +34,4 @@ $lang->release->bugs = 'Linked bugs'; $lang->release->ajaxGetStoriesAndBugs = 'API: Get storeis and bugs'; $lang->release->finishStories = 'The total demand for a complete %s'; $lang->release->resolvedBugs = 'The total solution of bug%s'; +$lang->release->exportStoriesAndBugs = 'Export as HTML'; diff --git a/module/release/lang/zh-cn.php b/module/release/lang/zh-cn.php index 5c543b7723..21ba76f2a8 100644 --- a/module/release/lang/zh-cn.php +++ b/module/release/lang/zh-cn.php @@ -35,3 +35,4 @@ $lang->release->bugs = '已关联Bugs'; $lang->release->ajaxGetStoriesAndBugs = '接口:获得需求和Bug'; $lang->release->finishStories = '本次共完成需求%s个'; $lang->release->resolvedBugs = '本次共解决Bug%s个'; +$lang->release->exportStoriesAndBugs = '导出HTML'; diff --git a/module/release/view/exportstoriesandbugs.html.php b/module/release/view/exportstoriesandbugs.html.php new file mode 100755 index 0000000000..20c1cb2296 --- /dev/null +++ b/module/release/view/exportstoriesandbugs.html.php @@ -0,0 +1,49 @@ + + * @package file + * @version $Id$ + * @link http://www.zentao.net + */ +?> + + + +

+
+ + + + + +
export;?>
+ setFileName;?> + + +
+
+ diff --git a/module/release/view/view.html.php b/module/release/view/view.html.php index 3199427e83..ce0d1f08e7 100644 --- a/module/release/view/view.html.php +++ b/module/release/view/view.html.php @@ -20,19 +20,22 @@
desc;?>
-
- session->releaseList ? $this->session->releaseList : inlink('browse', "productID=$release->product"); - if(!$release->deleted) - { - common::printLink('release', 'edit', "releaseID=$release->id", $lang->edit); - common::printLink('release', 'delete', "releaseID=$release->id", $lang->delete, 'hiddenwin'); - } - echo html::a($browseLink, $lang->goback); - ?> -
- - +
+ session->releaseList ? $this->session->releaseList : inlink('browse', "productID=$release->product"); + if(!$release->deleted) + { + common::printLink('release', 'edit', "releaseID=$release->id", $lang->edit); + common::printLink('release', 'delete', "releaseID=$release->id", $lang->delete, 'hiddenwin'); + } + echo html::a($browseLink, $lang->goback); + ?> +
+
release->stories;?>
+ @@ -54,12 +57,13 @@ - - - +
+ release->stories;?> +
release->exportStoriesAndBugs, '', "class='export'");?>
+
idAB;?> priAB;?>story->stageList[$story->stage];?>
release->finishStories, count($stories));?>
release->finishStories, count($stories));?>
- + @@ -81,35 +85,33 @@ + +
release->bugs;?> + release->bugs;?> +
release->exportStoriesAndBugs, '', "class='export'");?>
+
idAB;?> bug->title;?>resolvedDate, 5, 11)?>
release->resolvedBugs, count($bugs));?>
+ + + +
+ release->basicInfo?> + - + + + + + + + + + + + + + +
release->resolvedBugs, count($bugs));?>release->product;?>productName;?>
release->name;?>'>name;?>
release->build;?>buildName;?>
release->date;?>date;?>
- - - -
- release->basicInfo?> - - - - - - - - - - - - - - - - + + -
release->product;?>productName;?>
release->name;?>'>name;?>
release->build;?>buildName;?>
release->date;?>date;?>
-
- -