* @package misc
- * @version $Id: zh-tw.php 4129 2013-01-18 01:58:14Z wwccss $
+ * @version $Id: zh-tw.php 5128 2013-07-13 08:59:49Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
$lang->misc = new stdclass();
@@ -46,4 +46,5 @@ $lang->misc->zentao->service['install'] = '禪道安裝服務';
$lang->misc->zentao->service['fixissue'] = '禪道問題解決';
$lang->misc->zentao->service['servicemore']= '更多服務...';
+$lang->misc->noGDLib = "找不到GD庫,請用手機瀏覽器直接訪問:%s";
$lang->misc->copyright = "版權所有 ©2009-2013 青島易軟天創網絡科技有限公司";
diff --git a/module/my/view/testcase.html.php b/module/my/view/testcase.html.php
index be3985d65c..ca7a21ee59 100644
--- a/module/my/view/testcase.html.php
+++ b/module/my/view/testcase.html.php
@@ -62,7 +62,7 @@
| lastRunner];?> |
lastRunDate)) echo date(DT_MONTHTIME1, strtotime($case->lastRunDate));?> |
lastRunResult) echo $lang->testcase->resultList[$case->lastRunResult];?> |
- testcase->statusList[$case->status];?> |
+ testcase->statusList[$case->status];?> |
id&version=$case->version", '', 'list', '', '', 'iframe');
diff --git a/module/product/lang/zh-tw.php b/module/product/lang/zh-tw.php
index 225efec8ec..4355911ae9 100644
--- a/module/product/lang/zh-tw.php
+++ b/module/product/lang/zh-tw.php
@@ -6,23 +6,24 @@
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang
* @package product
- * @version $Id: zh-tw.php 5029 2013-07-06 03:00:01Z chencongzhi520@gmail.com $
+ * @version $Id: zh-tw.php 5091 2013-07-10 06:06:46Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
-$lang->product->common = '產品視圖';
-$lang->product->index = "產品首頁";
-$lang->product->browse = "瀏覽產品";
-$lang->product->dynamic= "動態";
-$lang->product->view = "產品信息";
-$lang->product->edit = "編輯產品";
-$lang->product->create = "新增產品";
-$lang->product->read = "產品詳情";
-$lang->product->delete = "刪除產品";
-$lang->product->close = "關閉";
-$lang->product->select = '--請選擇產品--';
-$lang->product->mine = '我負責:';
-$lang->product->other = '其他:';
-$lang->product->closed = '已關閉»';
+$lang->product->common = '產品視圖';
+$lang->product->index = "產品首頁";
+$lang->product->browse = "瀏覽產品";
+$lang->product->dynamic = "動態";
+$lang->product->view = "產品信息";
+$lang->product->edit = "編輯產品";
+$lang->product->batchEdit = "批量編輯";
+$lang->product->create = "新增產品";
+$lang->product->read = "產品詳情";
+$lang->product->delete = "刪除產品";
+$lang->product->close = "關閉";
+$lang->product->select = '--請選擇產品--';
+$lang->product->mine = '我負責:';
+$lang->product->other = '其他:';
+$lang->product->closed = '已關閉»';
$lang->product->basicInfo = '基本信息';
$lang->product->otherInfo = '其他信息';
@@ -86,5 +87,5 @@ $lang->product->aclList['open'] = '預設設置(有產品視圖權限,即
$lang->product->aclList['private'] = '私有產品(只有項目團隊成員才能訪問)';
$lang->product->aclList['custom'] = '自定義白名單(團隊成員和白名單的成員可以訪問)';
-$lang->product->storySummary = "本頁共 %s 個需求,預計 %s 個工時。";
-$lang->product->noMatchedProduct = '找不到與"%s"相關的產品';
+$lang->product->storySummary = "本頁共 %s 個需求,預計 %s 個工時,用例覆蓋率%s。";
+$lang->product->noMatched = '找不到包含"%s"的產品';
diff --git a/module/product/model.php b/module/product/model.php
index f9d71a4b30..7fa4e35290 100644
--- a/module/product/model.php
+++ b/module/product/model.php
@@ -604,8 +604,9 @@ class productModel extends model
}
$cases = $this->dao->select('DISTINCT story')->from(TABLE_CASE)->where('story')->in($storyIDs)->fetchAll();
+ $rate = count($stories) == 0 ? 0 : round(count($cases) / count($stories), 2);
- return sprintf($this->lang->product->storySummary, count($stories), $totalEstimate, round(count($cases) / count($stories), 2) * 100 . "%");
+ return sprintf($this->lang->product->storySummary, count($stories), $totalEstimate, $rate * 100 . "%");
}
/**
diff --git a/module/productplan/lang/zh-tw.php b/module/productplan/lang/zh-tw.php
index 9dc2426390..7b964729fe 100644
--- a/module/productplan/lang/zh-tw.php
+++ b/module/productplan/lang/zh-tw.php
@@ -9,23 +9,32 @@
* @version $Id: zh-tw.php 4659 2013-04-17 06:45:08Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
-$lang->productplan->common = '產品計劃';
-$lang->productplan->browse = "瀏覽計劃";
-$lang->productplan->index = "計劃列表";
-$lang->productplan->create = "創建計劃";
-$lang->productplan->edit = "編輯計劃";
-$lang->productplan->delete = "刪除計劃";
-$lang->productplan->view = "計劃詳情";
+$lang->productplan->common = '產品計劃';
+$lang->productplan->browse = "瀏覽計劃";
+$lang->productplan->index = "計劃列表";
+$lang->productplan->create = "創建計劃";
+$lang->productplan->edit = "編輯計劃";
+$lang->productplan->delete = "刪除計劃";
+$lang->productplan->view = "計劃詳情";
+$lang->productplan->bugSummary = "本頁共 %s 個Bug";
+$lang->productplan->basicInfo = '基本信息';
+
+$lang->productplan->batchUnlink = "批量移除";
$lang->productplan->linkStory = "關聯需求";
$lang->productplan->unlinkStory = "移除需求";
-$lang->productplan->batchUnlinkStory = "批量移除";
+$lang->productplan->batchUnlinkStory = "批量移除需求";
$lang->productplan->linkedStories = '已關聯需求列表';
$lang->productplan->unlinkedStories = '未關聯需求列表';
+$lang->productplan->linkBug = "關聯Bug";
+$lang->productplan->unlinkBug = "移除Bug";
+$lang->productplan->batchUnlinkBug = "批量移除Bug";
+$lang->productplan->linkedBugs = '已關聯Bug列表';
+$lang->productplan->unlinkedBugs = '未關聯Bug列表';
+
$lang->productplan->confirmDelete = "您確認刪除該計劃嗎?";
$lang->productplan->confirmUnlinkStory = "您確認移除該需求嗎?";
-
-$lang->productplan->basicInfo ='基本信息';
+$lang->productplan->confirmUnlinkBug = "您確認移除該Bug嗎?";
$lang->productplan->id = '編號';
$lang->productplan->product = '產品';
diff --git a/module/project/control.php b/module/project/control.php
index f7a9ed096d..569705e5d7 100644
--- a/module/project/control.php
+++ b/module/project/control.php
@@ -713,7 +713,7 @@ class project extends control
$baselineJSON = '[]';
if($projectInfo->days <= $maxDays)
{
- $firstBurn = reset($sets);
+ $firstBurn = empty($sets) ? 0 : reset($sets);
$firstTime = isset($firstBurn->value) ? $firstBurn->value : 0;
$days = count($dateList) - 1;
$rate = $firstTime / $days;
diff --git a/module/project/lang/zh-tw.php b/module/project/lang/zh-tw.php
index 50f995189b..d205b18809 100644
--- a/module/project/lang/zh-tw.php
+++ b/module/project/lang/zh-tw.php
@@ -6,7 +6,7 @@
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang
* @package project
- * @version $Id: zh-tw.php 5029 2013-07-06 03:00:01Z chencongzhi520@gmail.com $
+ * @version $Id: zh-tw.php 5094 2013-07-10 08:46:15Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
/* 欄位列表。*/
@@ -118,6 +118,7 @@ $lang->project->copy = "複製項目";
$lang->project->delete = "刪除項目";
$lang->project->browse = "瀏覽項目";
$lang->project->edit = "編輯項目";
+$lang->project->batchEdit = "批量編輯";
$lang->project->manageMembers = '團隊管理';
$lang->project->unlinkMember = '移除成員';
$lang->project->unlinkStory = '移除需求';
@@ -162,23 +163,23 @@ $lang->project->aboveAllProduct = '以上所有產品';
$lang->project->aboveAllProject = '以上所有項目';
/* 頁面提示。*/
-$lang->project->selectProject = "請選擇項目";
-$lang->project->beginAndEnd = '起止時間';
-$lang->project->lblStats = '工時統計';
-$lang->project->stats = '可用工時%s工時 總共預計%s工時 已經消耗%s工時 預計剩餘%s工時';
-$lang->project->oneLineStats = "項目%s, 代號為%s, 相關產品為%s,%s開始,%s結束,總預計%s工時,已消耗%s工時,預計剩餘%s工時。";
-$lang->project->taskSummary = "本頁共 %s 個任務,未開始%s,進行中%s,總預計%s工時,已消耗%s工時,剩餘%s工時。";
-$lang->project->memberHours = "%s共有 %s 個可用工時,";
-$lang->project->groupSummary = "本組共 %s 個任務,未開始%s,進行中%s,總預計%s工時,已消耗%s工時,剩餘%s工時。";
-$lang->project->wbs = "分解任務";
-$lang->project->batchWBS = "批量分解";
-$lang->project->largeBurnChart = '點擊查看大圖';
-$lang->project->howToUpdateBurn = "如何更新?";
-$lang->project->whyNoStories = "看起來沒有需求可以關聯。請檢查下項目關聯的產品中有沒有需求,而且要確保它們已經審核通過。";
-$lang->project->doneProjects = '已結束';
-$lang->project->unDoneProjects = '未結束';
-$lang->project->copyTeam = '複製團隊';
-$lang->product->noMatchedProject = '找不到與"%s"相關的項目';
+$lang->project->selectProject = "請選擇項目";
+$lang->project->beginAndEnd = '起止時間';
+$lang->project->lblStats = '工時統計';
+$lang->project->stats = '可用工時%s工時 總共預計%s工時 已經消耗%s工時 預計剩餘%s工時';
+$lang->project->oneLineStats = "項目%s, 代號為%s, 相關產品為%s,%s開始,%s結束,總預計%s工時,已消耗%s工時,預計剩餘%s工時。";
+$lang->project->taskSummary = "本頁共 %s 個任務,未開始%s,進行中%s,總預計%s工時,已消耗%s工時,剩餘%s工時。";
+$lang->project->memberHours = "%s共有 %s 個可用工時,";
+$lang->project->groupSummary = "本組共 %s 個任務,未開始%s,進行中%s,總預計%s工時,已消耗%s工時,剩餘%s工時。";
+$lang->project->wbs = "分解任務";
+$lang->project->batchWBS = "批量分解";
+$lang->project->largeBurnChart = '點擊查看大圖';
+$lang->project->howToUpdateBurn = "如何更新?";
+$lang->project->whyNoStories = "看起來沒有需求可以關聯。請檢查下項目關聯的產品中有沒有需求,而且要確保它們已經審核通過。";
+$lang->project->doneProjects = '已結束';
+$lang->project->unDoneProjects = '未結束';
+$lang->project->copyTeam = '複製團隊';
+$lang->product->noMatched = '找不到包含"%s"的項目';
/* 交互提示。*/
$lang->project->confirmDelete = '您確定刪除項目[%s]嗎?';
@@ -191,7 +192,10 @@ $lang->project->afterInfo = '項目添加成功,您現在可以進
$lang->project->setTeam = '設置團隊';
$lang->project->linkStory = '關聯需求';
$lang->project->createTask = '添加任務';
-$lang->project->goback = '返回項目首頁(5秒後將自動跳轉)';
+$lang->project->goback = '返回項目首頁';
+$lang->project->linkProduct = '選擇產品關聯...';
+$lang->project->withWeekend = '顯示周末';
+$lang->project->noWeekend = '去除周末';
/* 統計。*/
$lang->project->charts = new stdclass();
diff --git a/module/project/view/taskheader.html.php b/module/project/view/taskheader.html.php
index 87356a9b8a..826209656c 100644
--- a/module/project/view/taskheader.html.php
+++ b/module/project/view/taskheader.html.php
@@ -1,4 +1,4 @@
-
+app->getModuleRoot() . 'common/view/dropmenu.html.php';?>
qa = new stdclass();
$lang->qa->common = 'Test';
$lang->qa->index = "Index";
diff --git a/module/qa/lang/zh-cn.php b/module/qa/lang/zh-cn.php
index 6be68d0573..9335c6594a 100644
--- a/module/qa/lang/zh-cn.php
+++ b/module/qa/lang/zh-cn.php
@@ -9,5 +9,6 @@
* @version $Id: zh-cn.php 4129 2013-01-18 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
+$lang->qa = new stdclass();
$lang->qa->common = '测试视图';
$lang->qa->index = "测试首页";
diff --git a/module/qa/lang/zh-tw.php b/module/qa/lang/zh-tw.php
index 3dda2b596d..c512f9c2c7 100644
--- a/module/qa/lang/zh-tw.php
+++ b/module/qa/lang/zh-tw.php
@@ -9,5 +9,6 @@
* @version $Id: zh-tw.php 4129 2013-01-18 01:58:14Z wwccss $
* @link http://www.zentao.net
*/
+$lang->qa = new stdclass();
$lang->qa->common = '測試視圖';
$lang->qa->index = "測試首頁";
diff --git a/module/release/model.php b/module/release/model.php
index 49017c7d9f..1faf3d84bf 100644
--- a/module/release/model.php
+++ b/module/release/model.php
@@ -98,7 +98,7 @@ class releaseModel extends model
$this->dao->insert(TABLE_RELEASE)->data($release)->autoCheck()->batchCheck($this->config->release->create->requiredFields, 'notempty')->check('name','unique')->exec();
$releaseID = $this->dao->lastInsertID();
- $this->dao->update(TABLE_STORY)->set('stage')->eq('released')->where('id')->in($release->stories)->exec();
+ if($release->stories) $this->dao->update(TABLE_STORY)->set('stage')->eq('released')->where('id')->in($release->stories)->exec();
if(!dao::isError()) return $releaseID;
}
diff --git a/module/report/lang/zh-tw.php b/module/report/lang/zh-tw.php
index aa1f7304ed..bc24b08818 100644
--- a/module/report/lang/zh-tw.php
+++ b/module/report/lang/zh-tw.php
@@ -6,7 +6,7 @@
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang
* @package report
- * @version $Id: zh-tw.php 4955 2013-07-02 01:47:21Z chencongzhi520@gmail.com $
+ * @version $Id: zh-tw.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->report->common = '統計視圖';
@@ -69,7 +69,7 @@ $lang->report->taskTotal = "總任務數";
$lang->report->manhourTotal = "總工時";
$lang->report->bugTotal = "共%s個Bug";
$lang->report->validRate = "有效率";
-$lang->report->validRateTips = "方案為已解決或延期/狀態為已解決";
+$lang->report->validRateTips = "方案為已解決或延期/狀態為已解決或已關閉";
$lang->report->unplanned = '未計劃';
/* daily reminder. */
@@ -84,4 +84,4 @@ $lang->report->mailtitle->bug = " Bugs(%s),";
$lang->report->mailtitle->task = " 任務(%s),";
$lang->report->mailtitle->todo = " 待辦(%s),";
-$lang->report->proVersion = '更多精彩,盡在專業版!';
+$lang->report->proVersion = '更多精彩,盡在專業版!';
diff --git a/module/report/model.php b/module/report/model.php
index 966d2ca469..f7a5dba3cf 100644
--- a/module/report/model.php
+++ b/module/report/model.php
@@ -288,6 +288,7 @@ EOT;
{
if($bug->project)
{
+ $projects[$bug->project] = new stdclass();
$projects[$bug->project]->bugs = isset($projects[$bug->project]->bugs) ? $projects[$bug->project]->bugs + 1 : 1;
}
}
diff --git a/module/sso/config.php b/module/sso/config.php
index b8c85b1a0c..35f8e1b88b 100644
--- a/module/sso/config.php
+++ b/module/sso/config.php
@@ -1,3 +1,5 @@
sso->create = new stdclass();
$config->sso->create->requiredFields = 'title,code,key,ip';
+$config->sso->edit = new stdclass();
$config->sso->edit->requiredFields = 'title,key,ip';
diff --git a/module/sso/control.php b/module/sso/control.php
index 183863cab7..aae7fcceba 100644
--- a/module/sso/control.php
+++ b/module/sso/control.php
@@ -9,7 +9,7 @@ class sso extends control
*/
public function browse()
{
- $this->view->title = $this->lang->sso->common . $lang->colon . $this->lang->sso->browse;
+ $this->view->title = $this->lang->sso->common . $this->lang->colon . $this->lang->sso->browse;
$this->view->position[] = $this->lang->sso->common;
$this->view->position[] = $this->lang->sso->browse;
$this->view->auths = $this->sso->getAuths();
diff --git a/module/sso/css/create.css b/module/sso/css/create.css
new file mode 100644
index 0000000000..e53c6eb30c
--- /dev/null
+++ b/module/sso/css/create.css
@@ -0,0 +1 @@
+.instruction {margin-top:20px; padding:0 30px;}
diff --git a/module/sso/lang/en.php b/module/sso/lang/en.php
index 370bd7ff36..f00156a215 100644
--- a/module/sso/lang/en.php
+++ b/module/sso/lang/en.php
@@ -1,20 +1,20 @@
sso->common = 'SSO';
-$lang->sso->browse = 'Auth list';
-$lang->sso->create = 'Create auth';
-$lang->sso->edit = 'Edit auth';
-$lang->sso->delete = 'Delete auth';
+$lang->sso->browse = 'App list';
+$lang->sso->create = 'Create App';
+$lang->sso->edit = 'Edit App';
+$lang->sso->delete = 'Delete App';
$lang->sso->code = 'Code';
$lang->sso->title = 'Name';
$lang->sso->key = 'Key';
$lang->sso->ip = 'IP list';
-$lang->sso->createKey = 'Get new key';
+$lang->sso->createKey = 'New one';
-$lang->sso->confirmDelete = 'Are you sure to delete this auth?';
+$lang->sso->confirmDelete = 'Are you sure to delete this App?';
$lang->sso->note = new stdClass();
-$lang->sso->note->title = 'site name';
-$lang->sso->note->code = 'site code';
+$lang->sso->note->title = 'app name';
+$lang->sso->note->code = 'app code';
$lang->sso->note->ip = "Use comma between two IPs, and support IP segment, for example 192.168.1.*";
$lang->sso->error = new stdClass();
@@ -22,3 +22,22 @@ $lang->sso->error->title = 'Please input name';
$lang->sso->error->code = 'Please input code';
$lang->sso->error->key = 'Please input key';
$lang->sso->error->ip = 'Please input IP';
+
+$lang->sso->instruction = <<Example:Name is 'Test'", Code is 'test', Key is '20c8eb0d522d2e1a09d4ea18e4df3a59',IP list is "192.168.11.*,127.0.0.1"。
+1.User Auth
+Application request API of user auth, check if the account and password is correct, to realize single sign-on (SSO).
+The API is from sso module, auth method. POST data is account and encrypted string [md5(md5(password) + key)]. Return user info(json) if success, return fail if fail.
+Example: url is 'http:://www.demo.com/sso-auth-test',POST string is 'account=admin&authcode=c44c577432230ad8e67160d3f9f0b91c'.
+ Note: 'test' is App code, 'c44c577432230ad8e67160d3f9f0b91' is md5(md5('123456') + '20c8eb0d522d2e1a09d4ea18e4df3a59')
+2.Get User List
+Application request API of user list, get all user info of zentao.
+The API if from sso module, users method. POST data is key. Return user list (json) if success, return fail if fail.
+Example:url is 'http:://www.demo.com/sso-users-test', POST string is 'key=20c8eb0d522d2e1a09d4ea18e4df3a59'.
+ Note: 'test' is App code, '20c8eb0d522d2e1a09d4ea18e4df3a59' is App key.
+3.Get Dept List
+Application request API of dept list, get all dept info of zentao.
+The API if from sso module, depts method. POST data is key. Return dept list (json) if success, return fail if fail.
+Example:url is 'http:://www.demo.com/sso-depts-test', POST string is 'key=20c8eb0d522d2e1a09d4ea18e4df3a59'.
+ Note: 'test' is App code, '20c8eb0d522d2e1a09d4ea18e4df3a59' is App key.
+EOT;
diff --git a/module/sso/lang/zh-cn.php b/module/sso/lang/zh-cn.php
index 9adf48c5d3..5520d0237d 100644
--- a/module/sso/lang/zh-cn.php
+++ b/module/sso/lang/zh-cn.php
@@ -1,24 +1,43 @@
sso->common = '单点登录';
-$lang->sso->browse = '授权列表';
-$lang->sso->create = '创建授权';
-$lang->sso->edit = '编辑授权';
-$lang->sso->delete = '删除授权';
+$lang->sso->browse = '应用列表';
+$lang->sso->create = '添加应用';
+$lang->sso->edit = '编辑应用';
+$lang->sso->delete = '删除应用';
$lang->sso->code = '代号';
$lang->sso->title = '名称';
$lang->sso->key = '密钥';
$lang->sso->ip = 'IP列表';
$lang->sso->createKey = '重新生成密钥';
-$lang->sso->confirmDelete = '您确定删除该授权吗?';
+$lang->sso->confirmDelete = '您确定删除该应用吗?';
$lang->sso->note = new stdClass();
-$lang->sso->note->title = '授权站点名称';
-$lang->sso->note->code = '授权站点代号';
-$lang->sso->note->ip = "允许该站点使用这些ip访问,多个ip使用逗号隔开。支持IP段,如192.168.1.*";
+$lang->sso->note->title = '授权应用名称';
+$lang->sso->note->code = '授权应用代号';
+$lang->sso->note->ip = "允许该应用使用这些ip访问,多个ip使用逗号隔开。支持IP段,如192.168.1.*";
$lang->sso->error = new stdClass();
$lang->sso->error->title = '名称不能为空';
$lang->sso->error->code = '代号不能为空';
$lang->sso->error->key = '密钥不能为空';
$lang->sso->error->ip = 'IP列表不能为空';
+
+$lang->sso->instruction = <<示例应用:名称为"测试",代号为"test",密钥为"20c8eb0d522d2e1a09d4ea18e4df3a59",IP列表为"192.168.11.*,127.0.0.1"。
+1.用户验证
+授权应用请求禅道的用户验证API,检查用户在该应用输入的用户名和密码是否正确,实现单点登录。
+API地址为sso模块的auth方法,POST数据为登录用户的用户名account和密码与密钥形成的加密字符串md5(md5(password) + key),成功则返回用户信息(json格式),失败则返回fail。
+示例:请求地址 http:://www.demo.com/sso-auth-test,POST字符串 account=admin&authcode=c44c577432230ad8e67160d3f9f0b91c。
+ 注:test为应用代号,c44c577432230ad8e67160d3f9f0b91为md5(md5('123456') + '20c8eb0d522d2e1a09d4ea18e4df3a59')
+2.获取用户列表
+授权应用访问禅道的用户列表API,获取禅道所有用户信息。
+API地址为sso模块的users方法,POST数据为应用密钥,成功返回用户列表(json格式),失败返回fail。
+示例:请求地址 http:://www.demo.com/sso-users-test,POST字符串 key=20c8eb0d522d2e1a09d4ea18e4df3a59。
+ 注:test为应用代号,20c8eb0d522d2e1a09d4ea18e4df3a59为应用密钥
+3.获取部门列表
+授权应用访问禅道的部门列表API,获取禅道所有部门信息。
+API地址为sso模块的depts方法,POST数据为应用密钥,成功返回用户列表(json格式),失败返回fail。
+示例:请求地址 http:://www.demo.com/sso-depts-test,POST字符串 key=20c8eb0d522d2e1a09d4ea18e4df3a59。
+ 注:test为应用代号,20c8eb0d522d2e1a09d4ea18e4df3a59为应用密钥
+EOT;
diff --git a/module/sso/lang/zh-tw.php b/module/sso/lang/zh-tw.php
index e69de29bb2..b6b208c353 100644
--- a/module/sso/lang/zh-tw.php
+++ b/module/sso/lang/zh-tw.php
@@ -0,0 +1,43 @@
+sso->common = '單點登錄';
+$lang->sso->browse = '應用列表';
+$lang->sso->create = '添加應用';
+$lang->sso->edit = '編輯應用';
+$lang->sso->delete = '刪除應用';
+$lang->sso->code = '代號';
+$lang->sso->title = '名稱';
+$lang->sso->key = '密鑰';
+$lang->sso->ip = 'IP列表';
+$lang->sso->createKey = '重新生成密鑰';
+
+$lang->sso->confirmDelete = '您確定刪除該應用嗎?';
+
+$lang->sso->note = new stdClass();
+$lang->sso->note->title = '授權應用名稱';
+$lang->sso->note->code = '授權應用代號';
+$lang->sso->note->ip = "允許該應用使用這些ip訪問,多個ip使用逗號隔開。支持IP段,如192.168.1.*";
+
+$lang->sso->error = new stdClass();
+$lang->sso->error->title = '名稱不能為空';
+$lang->sso->error->code = '代號不能為空';
+$lang->sso->error->key = '密鑰不能為空';
+$lang->sso->error->ip = 'IP列表不能為空';
+
+$lang->sso->instruction = <<示例應用:名稱為"測試",代號為"test",密鑰為"20c8eb0d522d2e1a09d4ea18e4df3a59",IP列表為"192.168.11.*,127.0.0.1"。
+1.用戶驗證
+授權應用請求禪道的用戶驗證API,檢查用戶在該應用輸入的用戶名和密碼是否正確,實現單點登錄。
+API地址為sso模組的auth方法,POST數據為登錄用戶的用戶名account和密碼與密鑰形成的加密字元串md5(md5(password) + key),成功則返回用戶信息(json格式),失敗則返回fail。
+示例:請求地址 http:://www.demo.com/sso-auth-test,POST字元串 account=admin&authcode=c44c577432230ad8e67160d3f9f0b91c。
+ 註:test為應用代號,c44c577432230ad8e67160d3f9f0b91為md5(md5('123456') + '20c8eb0d522d2e1a09d4ea18e4df3a59')
+2.獲取用戶列表
+授權應用訪問禪道的用戶列表API,獲取禪道所有用戶信息。
+API地址為sso模組的users方法,POST數據為應用密鑰,成功返回用戶列表(json格式),失敗返回fail。
+示例:請求地址 http:://www.demo.com/sso-users-test,POST字元串 key=20c8eb0d522d2e1a09d4ea18e4df3a59。
+ 註:test為應用代號,20c8eb0d522d2e1a09d4ea18e4df3a59為應用密鑰
+3.獲取部門列表
+授權應用訪問禪道的部門列表API,獲取禪道所有部門信息。
+API地址為sso模組的depts方法,POST數據為應用密鑰,成功返回用戶列表(json格式),失敗返回fail。
+示例:請求地址 http:://www.demo.com/sso-depts-test,POST字元串 key=20c8eb0d522d2e1a09d4ea18e4df3a59。
+ 註:test為應用代號,20c8eb0d522d2e1a09d4ea18e4df3a59為應用密鑰
+EOT;
diff --git a/module/sso/view/browse.html.php b/module/sso/view/browse.html.php
index f1f4209202..8f127f6bc7 100644
--- a/module/sso/view/browse.html.php
+++ b/module/sso/view/browse.html.php
@@ -17,12 +17,12 @@
$auth):?>
-
+
| title?> |
|
key?> |
ip?> |
-
+ |
sso->ip;?>
| sso->note->ip}'");?> |
- |
+ | |
+sso->instruction;?>
diff --git a/module/story/lang/en.php b/module/story/lang/en.php
index 2d9fadf106..7efd42928b 100644
--- a/module/story/lang/en.php
+++ b/module/story/lang/en.php
@@ -30,6 +30,8 @@ $lang->story->bugs = "Bug";
$lang->story->linkStory = 'Related story';
$lang->story->export = "Export";
$lang->story->reportChart = "Report";
+$lang->story->batchChangePlan = "Batch change plan";
+$lang->story->batchChangeStage = "Batch change stage";
$lang->story->common = 'Story';
$lang->story->id = 'ID';
diff --git a/module/story/lang/zh-cn.php b/module/story/lang/zh-cn.php
index 52bd9502c1..0a0728d689 100644
--- a/module/story/lang/zh-cn.php
+++ b/module/story/lang/zh-cn.php
@@ -30,6 +30,8 @@ $lang->story->bugs = "Bug";
$lang->story->linkStory = '关联需求';
$lang->story->export = "导出";
$lang->story->reportChart = "统计报表";
+$lang->story->batchChangePlan = "批量修改计划";
+$lang->story->batchChangeStage = "批量修改阶段";
$lang->story->common = '需求';
$lang->story->id = '编号';
diff --git a/module/story/lang/zh-tw.php b/module/story/lang/zh-tw.php
index 3fddd06781..e182186108 100644
--- a/module/story/lang/zh-tw.php
+++ b/module/story/lang/zh-tw.php
@@ -6,7 +6,7 @@
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang
* @package story
- * @version $Id: zh-tw.php 4684 2013-04-27 05:49:28Z chencongzhi520@gmail.com $
+ * @version $Id: zh-tw.php 5141 2013-07-15 05:57:15Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
$lang->story->browse = "需求列表";
@@ -16,6 +16,7 @@ $lang->story->batchCreate = "批量添加";
$lang->story->change = "變更";
$lang->story->changed = '需求變更';
$lang->story->review = '評審';
+$lang->story->batchReview = '批量評審';
$lang->story->edit = "編輯";
$lang->story->batchEdit = "批量編輯";
$lang->story->close = '關閉';
@@ -29,6 +30,8 @@ $lang->story->bugs = "Bug";
$lang->story->linkStory = '關聯需求';
$lang->story->export = "導出";
$lang->story->reportChart = "統計報表";
+$lang->story->batchChangePlan = "批量修改計劃";
+$lang->story->batchChangeStage = "批量修改階段";
$lang->story->common = '需求';
$lang->story->id = '編號';
@@ -194,6 +197,7 @@ $lang->story->report = new stdclass();
$lang->story->report->common = '報表';
$lang->story->report->select = '請選擇報表類型';
$lang->story->report->create = '生成報表';
+$lang->story->report->value = '需求數';
$lang->story->report->charts['storysPerProduct'] = '產品需求數量';
$lang->story->report->charts['storysPerModule'] = '模組需求數量';
@@ -236,6 +240,19 @@ $lang->story->report->storysPerClosedReason = new stdclass();
$lang->story->report->storysPerEstimate = new stdclass();
$lang->story->report->storysPerChange = new stdclass();
+$lang->story->report->storysPerProduct->item = '產品';
+$lang->story->report->storysPerModule->item = '模組';
+$lang->story->report->storysPerSource->item = '來源';
+$lang->story->report->storysPerPlan->item = '計劃';
+$lang->story->report->storysPerStatus->item = '狀態';
+$lang->story->report->storysPerStage->item = '階段';
+$lang->story->report->storysPerPri->item = '優先順序';
+$lang->story->report->storysPerOpenedBy->item = '用戶';
+$lang->story->report->storysPerAssignedTo->item = '用戶';
+$lang->story->report->storysPerClosedReason->item = '原因';
+$lang->story->report->storysPerEstimate->item = '預計工時';
+$lang->story->report->storysPerChange->item = '變更次數';
+
$lang->story->report->storysPerProduct->graph = new stdclass();
$lang->story->report->storysPerModule->graph = new stdclass();
$lang->story->report->storysPerSource->graph = new stdclass();
@@ -264,4 +281,6 @@ $lang->story->report->storysPerChange->graph->xAxisName = '變更次數';
$lang->story->placeholder = new stdclass();
$lang->story->placeholder->estimate = "完成該需求的工作量";
-$lang->story->placeholder->mailto = '輸入用戶名自動完成';
+
+$lang->story->chosen = new stdClass();
+$lang->story->chosen->reviewedBy = '選擇評審人...';
diff --git a/module/story/model.php b/module/story/model.php
index 5e83273df1..79855d7c14 100644
--- a/module/story/model.php
+++ b/module/story/model.php
@@ -222,6 +222,7 @@ class storyModel extends model
$storyID = $this->dao->lastInsertID();
$this->setStage($storyID);
+ $specData[$i] = new stdclass();
$specData[$i]->story = $storyID;
$specData[$i]->version = 1;
$specData[$i]->title = htmlspecialchars($stories->title[$i]);
@@ -230,6 +231,7 @@ class storyModel extends model
$this->loadModel('action');
$actionID = $this->action->create('story', $storyID, 'Opened', '');
+ $mails[$i] = new stdclass();
$mails[$i]->storyID = $storyID;
$mails[$i]->actionID = $actionID;
}
diff --git a/module/task/control.php b/module/task/control.php
index f3150b8936..d5f78a1d42 100644
--- a/module/task/control.php
+++ b/module/task/control.php
@@ -616,6 +616,7 @@ class task extends control
$this->action->logHistory($actionID, $changes);
$this->sendmail($taskID, $actionID);
}
+ if(isonlybody()) die(js::closeColorbox('parent.parent'));
die(js::locate($this->createLink('task', 'view', "taskID=$taskID"), 'parent'));
}
diff --git a/module/task/lang/zh-tw.php b/module/task/lang/zh-tw.php
index 191fb1d9c2..8f6beef9e6 100644
--- a/module/task/lang/zh-tw.php
+++ b/module/task/lang/zh-tw.php
@@ -155,6 +155,7 @@ $lang->task->report = new stdclass();
$lang->task->report->common = '報表';
$lang->task->report->select = '請選擇報表類型';
$lang->task->report->create = '生成報表';
+$lang->task->report->value = '任務數';
$lang->task->report->charts['tasksPerProject'] = '項目任務數統計';
$lang->task->report->charts['tasksPerModule'] = '模組任務數統計';
@@ -199,6 +200,20 @@ $lang->task->report->tasksPerFinishedBy = new stdclass();
$lang->task->report->tasksPerClosedReason = new stdclass();
$lang->task->report->finishedTasksPerDay = new stdclass();
+$lang->task->report->tasksPerProject->item ='項目';
+$lang->task->report->tasksPerModule->item ='模組';
+$lang->task->report->tasksPerAssignedTo->item ='用戶';
+$lang->task->report->tasksPerType->item ='類型';
+$lang->task->report->tasksPerPri->item ='優先順序';
+$lang->task->report->tasksPerStatus->item ='狀態';
+$lang->task->report->tasksPerDeadline->item ='日期';
+$lang->task->report->tasksPerEstimate->item ='預計';
+$lang->task->report->tasksPerLeft->item ='剩餘';
+$lang->task->report->tasksPerConsumed->item ='消耗';
+$lang->task->report->tasksPerFinishedBy->item ='用戶';
+$lang->task->report->tasksPerClosedReason->item ='原因';
+$lang->task->report->finishedTasksPerDay->item ='日期';
+
$lang->task->report->tasksPerProject->graph = new stdclass();
$lang->task->report->tasksPerModule->graph = new stdclass();
$lang->task->report->tasksPerAssignedTo->graph = new stdclass();
@@ -233,4 +248,3 @@ $lang->task->report->finishedTasksPerDay->graph->rotateNames = '1';
$lang->task->placeholder = new stdclass();
$lang->task->placeholder->estimate = '對該任務最初的預計';
-$lang->task->placeholder->mailto = '輸入用戶名進行選擇';
diff --git a/module/task/model.php b/module/task/model.php
index fc538ee2b4..4491733050 100644
--- a/module/task/model.php
+++ b/module/task/model.php
@@ -196,6 +196,7 @@ class taskModel extends model
$this->dao->update(TABLE_TASK)->data($task)
->autoCheck()
->batchCheckIF($task->status != 'cancel', $this->config->task->edit->requiredFields, 'notempty')
+ ->checkIF($task->deadline != '', 'deadline', 'ge', $task->estStarted)
->checkIF($task->estimate != false, 'estimate', 'float')
->checkIF($task->left != false, 'left', 'float')
@@ -238,6 +239,7 @@ class taskModel extends model
{
$oldTask = $this->getById($taskID);
+ $task = new stdclass();
$task->name = htmlspecialchars($this->post->names[$taskID]);
$task->module = isset($this->post->modules[$taskID]) ? $this->post->modules[$taskID] : 0;
$task->type = $this->post->types[$taskID];
@@ -438,6 +440,7 @@ class taskModel extends model
{
if(!$record->consumed[$id]) die(js::alert($this->lang->task->error->consumedThisTime));
if($record->left[$id] === '') die(js::alert($this->lang->task->error->left));
+ $estimates[$id] = new stdclass();
$estimates[$id]->date = $record->dates[$id];
$estimates[$id]->task = $taskID;
$estimates[$id]->consumed = $record->consumed[$id];
diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php
index da4c2833f2..5b2a8a9d42 100644
--- a/module/testcase/lang/en.php
+++ b/module/testcase/lang/en.php
@@ -66,7 +66,6 @@ $lang->testcase->importID = "Linenum";
$lang->testcase->showImport = "Show import";
$lang->testcase->exportTemplet = "Export templet";
$lang->testcase->export = "Export";
-$lang->testcase->export = "Export";
$lang->testcase->confirmChange = 'Confirm case change';
$lang->testcase->confirmStoryChange = 'Confirm story change';
diff --git a/module/testcase/lang/zh-tw.php b/module/testcase/lang/zh-tw.php
index 93fd0e11bd..4f18d5b153 100644
--- a/module/testcase/lang/zh-tw.php
+++ b/module/testcase/lang/zh-tw.php
@@ -28,6 +28,7 @@ $lang->testcase->lastEditedBy = '最後修改者';
$lang->testcase->lastEditedDate = '最後修改日期';
$lang->testcase->version = '用例版本';
$lang->testcase->result = '測試結果';
+$lang->testcase->lastRunResult = '結果';
$lang->testcase->real = '實際情況';
$lang->testcase->keywords = '關鍵詞';
$lang->testcase->files = '附件';
@@ -43,6 +44,7 @@ $lang->testcase->lastEditedDateAB = '修改日期';
$lang->testcase->allProduct = '所有產品';
$lang->testcase->fromBug = '來源Bug';
$lang->testcase->toBug = '生成Bug';
+$lang->testcase->changed = '用例變更';
$lang->case = $lang->testcase; // 用於DAO檢查時使用。因為case是系統關鍵字,所以無法定義該模組為case,只能使用testcase,但表還是使用的case。
$lang->testcase->stepID = '編號';
@@ -59,10 +61,19 @@ $lang->testcase->edit = "編輯";
$lang->testcase->batchEdit = "批量編輯 ";
$lang->testcase->delete = "刪除";
$lang->testcase->browse = "用例列表";
-$lang->testcase->import = "導入用例";
+$lang->testcase->import = "導入";
+$lang->testcase->importID = "行號";
+$lang->testcase->showImport = "顯示導入內容";
+$lang->testcase->exportTemplet = "導出模板";
$lang->testcase->export = "導出";
+$lang->testcase->confirmChange = '確認用例變動';
$lang->testcase->confirmStoryChange = '確認需求變動';
+$lang->testcase->editHaved = '修改已有用例';
+$lang->testcase->addNew = '添加新用例';
+
+$lang->testcase->num = '導入用例個數:';
+
$lang->testcase->deleteStep = '刪除';
$lang->testcase->insertBefore = '之前添加';
$lang->testcase->insertAfter = '之後添加';
@@ -143,3 +154,5 @@ $lang->testcase->resultList['blocked'] = '阻塞';
$lang->testcase->buttonEdit = '編輯';
$lang->testcase->buttonToList = '返回';
+
+$lang->testcase->errorEncode = '無數據,請選擇正確的編碼重新上傳!';
diff --git a/module/testcase/model.php b/module/testcase/model.php
index 02ac94668f..9ffa244a84 100644
--- a/module/testcase/model.php
+++ b/module/testcase/model.php
@@ -285,14 +285,15 @@ class testcaseModel extends model
/* Initialize cases from the post data.*/
foreach($caseIDList as $caseID)
{
+ $case = new stdclass();
$case->lastEditedBy = $this->app->user->account;
- $caee->lastEditedDate = $now;
+ $case->lastEditedDate = $now;
$case->pri = $this->post->pris[$caseID];
$case->status = $this->post->statuses[$caseID];
$case->module = $this->post->modules[$caseID];
$case->title = htmlspecialchars($this->post->titles[$caseID]);
$case->type = $this->post->types[$caseID];
- $case->stage = implode(',', $this->post->stages[$caseID]);
+ $case->stage = empty($this->post->stages[$caseID]) ? '' : implode(',', $this->post->stages[$caseID]);
$cases[$caseID] = $case;
unset($case);
diff --git a/module/testtask/lang/zh-tw.php b/module/testtask/lang/zh-tw.php
index 35344b19f7..641e6d3102 100644
--- a/module/testtask/lang/zh-tw.php
+++ b/module/testtask/lang/zh-tw.php
@@ -49,6 +49,10 @@ $lang->testtask->lastRunTime = '執行時間';
$lang->testtask->lastRunResult = '結果';
$lang->testtask->report = '測試總結';
+$lang->testtask->legendDesc = '任務描述';
+$lang->testtask->legendReport = '測試總結';
+$lang->testtask->legendBasicInfo = '基本信息';
+
$lang->testtask->statusList['wait'] = '未開始';
$lang->testtask->statusList['doing'] = '進行中';
$lang->testtask->statusList['done'] = '已完成';
@@ -64,11 +68,13 @@ $lang->testtask->unlinkedCases = '未關聯';
$lang->testtask->linkedCases = '已關聯';
$lang->testtask->linkByStory = '按需求關聯';
$lang->testtask->linkByBug = '按Bug關聯';
-$lang->testtask->confirmDelete = '您確認要刪除該測試任務嗎?';
$lang->testtask->passAll = '全部通過';
$lang->testtask->pass = '通過';
$lang->testtask->fail = '失敗';
+$lang->testtask->confirmDelete = '您確認要刪除該測試任務嗎?';
+$lang->testtask->confirmUnlinkCase = '您確認要移除該用例嗎?';
+
$lang->testtask->byModule = '按模組';
$lang->testtask->assignedToMe = '指派給我';
$lang->testtask->allCases = '所有用例';
diff --git a/module/testtask/model.php b/module/testtask/model.php
index 1a7454110b..b217ee495d 100644
--- a/module/testtask/model.php
+++ b/module/testtask/model.php
@@ -44,7 +44,13 @@ class testtaskModel extends model
$task = fixer::input('post')
->stripTags('name')
->get();
- $this->dao->insert(TABLE_TESTTASK)->data($task)->autoCheck()->batchcheck($this->config->testtask->create->requiredFields, 'notempty')->exec();
+ $this->dao->insert(TABLE_TESTTASK)->data($task)
+ ->autoCheck($skipFields = 'begin,end')
+ ->batchcheck($this->config->testtask->create->requiredFields, 'notempty')
+ ->checkIF($task->begin != '', 'begin', 'date')
+ ->checkIF($task->end != '', 'end', 'date')
+ ->checkIF($task->end != '', 'end', 'gt', $task->begin)
+ ->exec();
if(!dao::isError()) return $this->dao->lastInsertID();
}
@@ -143,7 +149,12 @@ class testtaskModel extends model
{
$oldTask = $this->getById($taskID);
$task = fixer::input('post')->stripTags('name')->get();
- $this->dao->update(TABLE_TESTTASK)->data($task)->autoCheck()->batchcheck($this->config->testtask->edit->requiredFields, 'notempty')->where('id')->eq($taskID)->exec();
+ $this->dao->update(TABLE_TESTTASK)->data($task)
+ ->autoCheck()
+ ->batchcheck($this->config->testtask->edit->requiredFields, 'notempty')
+ ->checkIF($task->end != '', 'end', 'ge', $task->begin)
+ ->where('id')->eq($taskID)
+ ->exec();
if(!dao::isError()) return common::createChanges($oldTask, $task);
}
diff --git a/module/testtask/view/results.html.php b/module/testtask/view/results.html.php
index d214a25bc0..999c2111a7 100644
--- a/module/testtask/view/results.html.php
+++ b/module/testtask/view/results.html.php
@@ -35,9 +35,9 @@
?>
|
- |
- |
- stepResults)):?>
+ |
+ |
+
a-center'>testcase->resultList[$stepResult['result']];?> |
|
diff --git a/module/testtask/view/view.html.php b/module/testtask/view/view.html.php
index 31dc19ebaa..9dc7d84c91 100644
--- a/module/testtask/view/view.html.php
+++ b/module/testtask/view/view.html.php
@@ -13,7 +13,7 @@
- deleted) echo "class='deleted'";?>>TESTTASK #id . ' ' . $task->title;?>
+ deleted) echo "class='deleted'";?>>TESTTASK #id . ' ' . $task->name;?>
session->testtaskList ? $this->session->testtaskList : $this->createLink('testtask', 'browse', "productID=$task->product");
diff --git a/module/todo/control.php b/module/todo/control.php
index e63d5ea566..c6ced3db44 100644
--- a/module/todo/control.php
+++ b/module/todo/control.php
@@ -59,7 +59,7 @@ class todo extends control
$this->view->position[] = $this->lang->todo->common;
$this->view->position[] = $this->lang->todo->create;
$this->view->date = strftime("%Y-%m-%d", strtotime($date));
- $this->view->time = date::buildTimeList($this->config->todo->times->begin, $this->config->todo->times->end, $this->config->todo->times->delta);
+ $this->view->times = date::buildTimeList($this->config->todo->times->begin, $this->config->todo->times->end, $this->config->todo->times->delta);
$this->view->time = date::now();
$this->display();
}
diff --git a/module/todo/lang/zh-tw.php b/module/todo/lang/zh-tw.php
index bbc16c1110..0a5ed76c85 100644
--- a/module/todo/lang/zh-tw.php
+++ b/module/todo/lang/zh-tw.php
@@ -23,6 +23,7 @@ $lang->todo->export = "導出";
$lang->todo->delete = "刪除待辦";
$lang->todo->browse = "瀏覽待辦";
$lang->todo->import2Today = "導入到今天";
+$lang->todo->import = "導入到";
$lang->todo->changeStatus = "更改";
$lang->todo->id = '編號';
diff --git a/module/upgrade/lang/en.php b/module/upgrade/lang/en.php
index e15810cddf..330c1d004f 100644
--- a/module/upgrade/lang/en.php
+++ b/module/upgrade/lang/en.php
@@ -38,6 +38,7 @@ $lang->upgrade->toVersion = 'To version';
$lang->upgrade->confirm = 'Confirm the sql to executed.';
$lang->upgrade->sureExecute = 'Execute';
$lang->upgrade->forbiddenExt = 'Because it is incompatible with this version, the following extension automatically disabled, :';
+$lang->upgrade->checkExtension = 'Checking plugin compatibility, please wait ...';
$lang->upgrade->fromVersions['0_3beta'] = '0.3 BETA';
$lang->upgrade->fromVersions['0_4beta'] = '0.4 BETA';
diff --git a/module/upgrade/lang/zh-tw.php b/module/upgrade/lang/zh-tw.php
index 6ebb1c8865..36e3161374 100644
--- a/module/upgrade/lang/zh-tw.php
+++ b/module/upgrade/lang/zh-tw.php
@@ -6,7 +6,7 @@
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang
* @package upgrade
- * @version $Id: zh-tw.php 4989 2013-07-03 07:05:45Z zhujinyonging@gmail.com $
+ * @version $Id: zh-tw.php 5119 2013-07-12 08:06:42Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->upgrade->common = '升級';
@@ -37,6 +37,8 @@ $lang->upgrade->fromVersion = '原來的版本';
$lang->upgrade->toVersion = '升級到';
$lang->upgrade->confirm = '確認要執行的SQL語句';
$lang->upgrade->sureExecute = '確認執行';
+$lang->upgrade->forbiddenExt = '以下插件與新版本不兼容,已經自動禁用:';
+$lang->upgrade->checkExtension = '正在檢查插件的兼容性,請稍後 ...';
$lang->upgrade->fromVersions['0_3beta'] = '0.3 BETA';
$lang->upgrade->fromVersions['0_4beta'] = '0.4 BETA';
@@ -69,3 +71,4 @@ $lang->upgrade->fromVersions['4_0_beta2'] = '4.0 BETA2';
$lang->upgrade->fromVersions['4_0'] = '4.0';
$lang->upgrade->fromVersions['4_0_1'] = '4.0.1';
$lang->upgrade->fromVersions['4_1'] = '4.1';
+$lang->upgrade->fromVersions['4_2_beta'] = '4.2.beta';
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index e797e71033..27edd4eba1 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -142,6 +142,7 @@ class upgradeModel extends model
case '4_0': $confirmContent .= file_get_contents($this->getUpgradeFile('4.0'));
case '4_0_1': $confirmContent .= file_get_contents($this->getUpgradeFile('4.0.1'));
case '4_1': $confirmContent .= file_get_contents($this->getUpgradeFile('4.1'));
+ case '4_2_beta': $confirmContent .= file_get_contents($this->getUpgradeFile('4.2'));
}
return str_replace('zt_', $this->config->db->prefix, $confirmContent);
}
diff --git a/module/user/css/common.css b/module/user/css/common.css
deleted file mode 100644
index b7355c499c..0000000000
--- a/module/user/css/common.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.todoheader {margin-bottom:5px;}
-.todoheader .active{color:#009900; font-weight:bold;}
diff --git a/module/user/lang/zh-tw.php b/module/user/lang/zh-tw.php
index 6f6ef280a7..c8af0508c1 100644
--- a/module/user/lang/zh-tw.php
+++ b/module/user/lang/zh-tw.php
@@ -124,6 +124,8 @@ $lang->user->loginWithDemoUser = '使用demo賬號登錄:';
$lang->user->placeholder = new stdclass();
$lang->user->placeholder->account = '英文、數字和下劃線的組合,三位以上';
$lang->user->placeholder->password1 = '六位以上';
+$lang->user->placeholder->role = '角色影響內容和用戶列表的順序。';
+$lang->user->placeholder->group = '分組決定用戶的權限列表。';
$lang->user->placeholder->join = '入職日期';
$lang->user->placeholder->commiter = '版本控制系統(subversion)中的帳號';
diff --git a/module/user/model.php b/module/user/model.php
index 8565a4f9c4..b1cd4077fb 100644
--- a/module/user/model.php
+++ b/module/user/model.php
@@ -329,6 +329,7 @@ class userModel extends model
$this->dao->delete()->from(TABLE_USERGROUP)->where('account')->eq($oldUser->account)->exec();
foreach($this->post->groups as $groupID)
{
+ $data = new stdclass();
$data->account = $this->post->account;
$data->group = $groupID;
$this->dao->insert(TABLE_USERGROUP)->data($data)->exec();
diff --git a/module/user/view/dynamic.html.php b/module/user/view/dynamic.html.php
index aa49a51b1e..debb912874 100644
--- a/module/user/view/dynamic.html.php
+++ b/module/user/view/dynamic.html.php
@@ -13,52 +13,47 @@
-
-
- |
- user->dynamic;?>
-
- action->dynamic->today) . ' ';
- echo html::a(inLink('dynamic', "period=yesterday&account=$account"), $lang->action->dynamic->yesterday) . ' ';
- echo html::a(inLink('dynamic', "period=twodaysago&account=$account"), $lang->action->dynamic->twoDaysAgo) . ' ';
- echo html::a(inLink('dynamic', "period=thisweek&account=$account"), $lang->action->dynamic->thisWeek) . ' ';
- echo html::a(inLink('dynamic', "period=lastweek&account=$account"), $lang->action->dynamic->lastWeek) . ' ';
- echo html::a(inLink('dynamic', "period=thismonth&account=$account"), $lang->action->dynamic->thisMonth) . ' ';
- echo html::a(inLink('dynamic', "period=lastmonth&account=$account"), $lang->action->dynamic->lastMonth) . ' ';
- echo html::a(inLink('dynamic', "period=all&account=$account"), $lang->action->dynamic->all) . ' ';
- ?>
-
- |
- |
-
-
-
-
- | action->date;?> |
- action->actor;?> |
- action->action;?> |
- action->objectType;?> |
- idAB;?> |
- action->objectName;?> |
-
-
-
-
- objectType == 'case' ? 'testcase' : $action->objectType;?>
-
- | date;?> |
- actor];?> |
- actionLabel;?> |
- action->objectTypes[$action->objectType];?> |
- objectID;?> |
- objectLink, $action->objectName);?> |
-
-
-
- | show();?> |
-
- |
+
+
+ " . html::a(inLink('dynamic', "period=today&account=$account"), $lang->action->dynamic->today) . '';
+ echo "" . html::a(inLink('dynamic', "period=yesterday&account=$account"), $lang->action->dynamic->yesterday) . '';
+ echo "" . html::a(inLink('dynamic', "period=twodaysago&account=$account"), $lang->action->dynamic->twoDaysAgo) . '';
+ echo "" . html::a(inLink('dynamic', "period=thisweek&account=$account"), $lang->action->dynamic->thisWeek) . '';
+ echo "" . html::a(inLink('dynamic', "period=lastweek&account=$account"), $lang->action->dynamic->lastWeek) . '';
+ echo "" . html::a(inLink('dynamic', "period=thismonth&account=$account"), $lang->action->dynamic->thisMonth) . '';
+ echo "" . html::a(inLink('dynamic', "period=lastmonth&account=$account"), $lang->action->dynamic->lastMonth) . '';
+ echo "" . html::a(inLink('dynamic', "period=all&account=$account"), $lang->action->dynamic->all) . '';
+ ?>
+
+
+
+
+
+ | action->date;?> |
+ action->actor;?> |
+ action->action;?> |
+ action->objectType;?> |
+ idAB;?> |
+ action->objectName;?> |
+
+
+
+ objectType == 'case' ? 'testcase' : $action->objectType;?>
+
+ | date;?> |
+ actor];?> |
+ actionLabel;?> |
+ action->objectTypes[$action->objectType];?> |
+ objectID;?> |
+ objectLink, $action->objectName);?> |
+
+
+
+ | show();?> |
+
diff --git a/module/user/view/todo.html.php b/module/user/view/todo.html.php
index 2229d24a24..1e7e1c66b1 100644
--- a/module/user/view/todo.html.php
+++ b/module/user/view/todo.html.php
@@ -14,15 +14,17 @@
- |