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
+ */
+?>
+
+
+
+
+
+
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);
- ?>
-
-
- release->stories;?>
+
+ 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;?>
+ release->exportStoriesAndBugs, '', "class='export'");?>
+
| idAB;?> |
priAB;?> |
@@ -54,12 +57,13 @@
story->stageList[$story->stage];?> |
-
- | release->finishStories, count($stories));?> |
-
+ | release->finishStories, count($stories));?> |
- release->bugs;?>
+
+ release->bugs;?>
+ release->exportStoriesAndBugs, '', "class='export'");?>
+
| idAB;?> |
bug->title;?> |
@@ -81,35 +85,33 @@
resolvedDate, 5, 11)?> |
+ | release->resolvedBugs, count($bugs));?> |
+
+
+ |
+
+ |
- |
-
-
- |
-