From 0f2eb04f6aa0fbe36e5f746e52ff52cc311d3b0a Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 27 Oct 2017 14:21:12 +0800 Subject: [PATCH 1/6] =?UTF-8?q?Fix=20bug#1258=20=E6=AF=8F=E6=97=A5?= =?UTF-8?q?=E6=8F=90=E9=86=92=E6=9C=89=E9=94=99=E8=AF=AF=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/report/control.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/report/control.php b/module/report/control.php index 3b39da197c..83ac588831 100644 --- a/module/report/control.php +++ b/module/report/control.php @@ -210,6 +210,8 @@ class report extends control /* Get email content and title.*/ $this->view->mail = $mail; + $this->view->mailTitle = $mailTitle; + $oldViewType = $this->viewType; if($oldViewType == 'json') $this->viewType = 'html'; $mailContent = $this->parse('report', 'dailyreminder'); From 1b82933c0db4c77654f7edb2f242bcb2f1c4a6ad Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 30 Oct 2017 11:32:53 +0800 Subject: [PATCH 2/6] =?UTF-8?q?Finish=20task#3237=20=E6=89=80=E6=9C=89?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=20/=E6=89=80=E6=9C=89=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD,cost:2=20left:0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/filter.php | 2 ++ module/product/config.php | 3 ++ module/product/control.php | 49 +++++++++++++++++++++++++++ module/product/lang/en.php | 8 +++++ module/product/lang/zh-cn.php | 9 +++++ module/product/view/all.html.php | 16 +++++---- module/product/view/export.html.php | 13 ++++++++ module/project/config.php | 3 ++ module/project/control.php | 52 +++++++++++++++++++++++++++++ module/project/lang/en.php | 1 + module/project/lang/zh-cn.php | 1 + module/project/view/all.html.php | 1 + module/project/view/export.html.php | 13 ++++++++ 13 files changed, 165 insertions(+), 6 deletions(-) create mode 100644 module/product/view/export.html.php create mode 100644 module/project/view/export.html.php diff --git a/config/filter.php b/config/filter.php index 99e4c601cd..ee9d0880b3 100644 --- a/config/filter.php +++ b/config/filter.php @@ -111,6 +111,7 @@ $filter->product->browse->cookie['storyModule'] = 'int'; $filter->product->default->cookie['lastProduct'] = 'int'; $filter->product->default->cookie['preProductID'] = 'int'; $filter->product->index->cookie['preBranch'] = 'int'; +$filter->product->export->cookie['checkedItem'] = 'reg::checked'; $filter->project->default->cookie['lastProject'] = 'int'; $filter->project->default->cookie['projectMode'] = 'code'; @@ -120,6 +121,7 @@ $filter->project->task->cookie['preProjectID'] = 'int'; $filter->project->task->cookie['productBrowseParam'] = 'int'; $filter->project->task->cookie['projectTaskOrder'] = 'reg::orderBy'; $filter->project->task->cookie['windowWidth'] = 'int'; +$filter->project->export->cookie['checkedItem'] = 'reg::checked'; $filter->qa->default->cookie['lastProduct'] = 'int'; $filter->qa->default->cookie['preBranch'] = 'int'; diff --git a/module/product/config.php b/module/product/config.php index f0b1a036d8..b47f613d0c 100644 --- a/module/product/config.php +++ b/module/product/config.php @@ -7,6 +7,9 @@ $config->product->customBatchEditFields = 'PO,QD,RD,status,type,desc'; $config->product->custom = new stdclass(); $config->product->custom->batchEditFields = 'PO,QD,RD,status'; +$config->product->list = new stdclass(); +$config->product->list->exportFields = 'id,name,activeStories,changedStories,draftStories,closedStories,plans,releases,bugs,unResolvedBugs,assignToNullBugs'; + global $lang, $app; $app->loadLang('story'); $config->product->search['module'] = 'story'; diff --git a/module/product/control.php b/module/product/control.php index 9b2977fade..67894978b1 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -660,6 +660,55 @@ class product extends control $this->display(); } + /** + * Export product. + * + * @param string $status + * @param string $orderBy + * @access public + * @return void + */ + public function export($status, $orderBy) + { + if($_POST) + { + $productLang = $this->lang->product; + $productConfig = $this->config->product; + + /* Create field lists. */ + $fields = $this->post->exportFields ? $this->post->exportFields : explode(',', $productConfig->list->exportFields); + foreach($fields as $key => $fieldName) + { + $fieldName = trim($fieldName); + $fields[$fieldName] = zget($productLang, $fieldName); + unset($fields[$key]); + } + + $productStats = $this->product->getStats($orderBy, null, $status); + foreach($productStats as $i => $product) + { + $product->activeStories = (int)$product->stories['active']; + $product->changedStories = (int)$product->stories['changed']; + $product->draftStories = (int)$product->stories['draft']; + $product->closedStories = (int)$product->stories['closed']; + $product->unResolvedBugs = (int)$product->unResolved; + $product->assignToNullBugs = (int)$product->assignToNull; + + if($this->post->exportType == 'selected') + { + $checkedItem = $this->cookie->checkedItem; + if(strpos(",$checkedItem,", ",{$product->id},") === false) unset($productStats[$i]); + } + } + + $this->post->set('fields', $fields); + $this->post->set('rows', $productStats); + $this->post->set('kind', 'product'); + $this->fetch('file', 'export2' . $this->post->fileType, $_POST); + } + $this->display(); + } + /** * Doc for compatible. * diff --git a/module/product/lang/en.php b/module/product/lang/en.php index 563b50f988..6d2a7c0556 100644 --- a/module/product/lang/en.php +++ b/module/product/lang/en.php @@ -26,6 +26,7 @@ $lang->product->other = 'Other:'; $lang->product->closed = 'Closed'; $lang->product->updateOrder = 'Ranking'; $lang->product->all = "All {$lang->productCommon}"; +$lang->product->export = "Export"; $lang->product->basicInfo = 'Basic Info'; $lang->product->otherInfo = 'Other Info'; @@ -42,6 +43,13 @@ $lang->product->doc = 'Documents'; $lang->product->project = $lang->projectCommon . 'List'; $lang->product->build = 'Build List'; +$lang->product->activeStories = 'Activated Story'; +$lang->product->changedStories = 'Changed Story'; +$lang->product->draftStories = 'Draft Story'; +$lang->product->closedStories = 'Closed Story'; +$lang->product->unResolvedBugs = 'Unresolved Bug'; +$lang->product->assignToNullBugs = 'No Assigned Bug'; + $lang->product->confirmDelete = " Do you want to delete {$lang->productCommon}?"; $lang->product->errorNoProduct = "{$lang->productCommon} is not created yet!"; diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index d0be9f125e..a9e87d8f87 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -26,6 +26,7 @@ $lang->product->other = '其他:'; $lang->product->closed = '已关闭'; $lang->product->updateOrder = "排序"; $lang->product->all = "所有{$lang->productCommon}"; +$lang->product->export = "导出"; $lang->product->basicInfo = '基本信息'; $lang->product->otherInfo = '其他信息'; @@ -42,11 +43,19 @@ $lang->product->doc = '文档列表'; $lang->product->project = $lang->projectCommon . '列表'; $lang->product->build = '版本列表'; +$lang->product->activeStories = '激活需求'; +$lang->product->changedStories = '已变更需求'; +$lang->product->draftStories = '草稿需求'; +$lang->product->closedStories = '已关闭需求'; +$lang->product->unResolvedBugs = '未解决Bug'; +$lang->product->assignToNullBugs = '未指派Bug'; + $lang->product->confirmDelete = " 您确定删除该{$lang->productCommon}吗?"; $lang->product->errorNoProduct = "还没有创建{$lang->productCommon}!"; $lang->product->accessDenied = "您无权访问该{$lang->productCommon}"; +$lang->product->id = "编号"; $lang->product->name = "{$lang->productCommon}名称"; $lang->product->code = "{$lang->productCommon}代号"; $lang->product->order = '排序'; diff --git a/module/product/view/all.html.php b/module/product/view/all.html.php index f1cf762c1b..250e5133d0 100644 --- a/module/product/view/all.html.php +++ b/module/product/view/all.html.php @@ -13,6 +13,10 @@
+ createLink('product', 'export', "status=$status&orderBy=$orderBy"); + if(common::hasPriv('product', 'export'))echo html::a($link, " " . $lang->export, '', "class='export btn'"); + ?> createLink('product', 'create'), " " . $lang->product->create,'', "class='btn'") ?>