From 118fc78d2556c152e7b799f105b3cc15f779c02a Mon Sep 17 00:00:00 2001
From: reneeteng
Date: Sun, 8 Mar 2020 16:02:49 +0800
Subject: [PATCH 01/19] * CI, Jenkins lang updated.
---
module/ci/lang/en.php | 6 +++---
module/compile/lang/en.php | 20 ++++++++++----------
module/jenkins/lang/en.php | 6 +++---
3 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/module/ci/lang/en.php b/module/ci/lang/en.php
index 4d1df04d71..704e64b730 100644
--- a/module/ci/lang/en.php
+++ b/module/ci/lang/en.php
@@ -1,6 +1,6 @@
ci->common = 'CI';
-$lang->ci->job = 'Construction';
-$lang->ci->task = 'Task';
-$lang->ci->history = 'History';
+$lang->ci->job = 'Build';
+$lang->ci->task = 'Build Task';
+$lang->ci->history = 'Build History';
diff --git a/module/compile/lang/en.php b/module/compile/lang/en.php
index b25f49c449..31ff9891e5 100644
--- a/module/compile/lang/en.php
+++ b/module/compile/lang/en.php
@@ -1,15 +1,15 @@
compile->browse = 'Build Histories';
-$lang->compile->logs = 'Build Logs';
+$lang->compile->browse = 'Build History';
+$lang->compile->logs = 'Build Log';
$lang->compile->id = 'ID';
$lang->compile->name = 'Name';
-$lang->compile->status = 'Build Status';
-$lang->compile->time = 'Build Time';
+$lang->compile->status = 'Status';
+$lang->compile->time = 'Time';
-$lang->compile->statusList['success'] = 'Success';
-$lang->compile->statusList['failure'] = 'Fail';
-$lang->compile->statusList['created'] = 'Created';
-$lang->compile->statusList['building'] = 'Building';
-$lang->compile->statusList['create_fail'] = 'Fail to create';
-$lang->compile->statusList['timeout'] = 'Exec Timeout';
+$lang->compile->statusList['success'] = 'Done';
+$lang->compile->statusList['failure'] = 'Failed';
+$lang->compile->statusList['created'] = 'Create';
+$lang->compile->statusList['building'] = 'Creating';
+$lang->compile->statusList['create_fail'] = 'Failed to create';
+$lang->compile->statusList['timeout'] = 'Timeout';
diff --git a/module/jenkins/lang/en.php b/module/jenkins/lang/en.php
index 4e2c99ff52..1f00f56672 100644
--- a/module/jenkins/lang/en.php
+++ b/module/jenkins/lang/en.php
@@ -1,6 +1,6 @@
jenkins->common = 'Jenkins';
-$lang->jenkins->browse = 'Browse Jenkins';
+$lang->jenkins->browse = 'Jenkins';
$lang->jenkins->create = 'Create Jenkins';
$lang->jenkins->edit = 'Edit Jenkins';
$lang->jenkins->delete = 'Delete';
@@ -8,9 +8,9 @@ $lang->jenkins->confirmDelete = 'Do you want to delete this Jenkins server?';
$lang->jenkins->id = 'ID';
$lang->jenkins->name = 'Name';
-$lang->jenkins->url = 'Service URL';
+$lang->jenkins->url = 'URL';
$lang->jenkins->token = 'Token';
-$lang->jenkins->account = 'UserName';
+$lang->jenkins->account = 'Username';
$lang->jenkins->password = 'Password';
$lang->jenkins->lblCreate = 'Create Jenkins Server';
From 8a5a175f2cf5f212a2423b14b29825962e9ff204 Mon Sep 17 00:00:00 2001
From: reneeteng
Date: Thu, 12 Mar 2020 16:22:47 +0800
Subject: [PATCH 02/19] * Updated compile lang file.
---
module/compile/lang/en.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module/compile/lang/en.php b/module/compile/lang/en.php
index d05829ecde..0b0dbb8d0b 100644
--- a/module/compile/lang/en.php
+++ b/module/compile/lang/en.php
@@ -10,7 +10,7 @@ $lang->compile->time = 'Time';
$lang->compile->statusList['success'] = 'Done';
$lang->compile->statusList['failure'] = 'Failed';
-$lang->compile->statusList['created'] = 'Create';
+$lang->compile->statusList['created'] = 'Created';
$lang->compile->statusList['building'] = 'Creating';
$lang->compile->statusList['create_fail'] = 'Failed to create';
$lang->compile->statusList['timeout'] = 'Timeout';
From bc08702d32ae948b3267503379e37208a4e24b15 Mon Sep 17 00:00:00 2001
From: wangyidong
Date: Mon, 16 Mar 2020 09:16:31 +0800
Subject: [PATCH 03/19] * finish task #6970.
---
xuanxuan/module/setting/ext/control/xuanxuan.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/xuanxuan/module/setting/ext/control/xuanxuan.php b/xuanxuan/module/setting/ext/control/xuanxuan.php
index eadc14652a..af584d0d93 100644
--- a/xuanxuan/module/setting/ext/control/xuanxuan.php
+++ b/xuanxuan/module/setting/ext/control/xuanxuan.php
@@ -24,9 +24,9 @@ class setting extends control
if(empty($setting->sslkey)) $errors['sslkey'] = $this->lang->im->errorSSLKey;
}
- if($setting->turnon and strpos($setting->server, '127.0.0.1') !== false) $errors[] = $this->lang->im->xxdServerError;
- if(strpos($setting->server, 'https://') !== 0 and strpos($setting->server, 'http://') !== 0) $errors[] = $this->lang->im->xxdSchemeError;
- if(empty($setting->server)) $errors[] = $this->lang->im->xxdServerEmpty;
+ if($setting->turnon and strpos($setting->server, '127.0.0.1') !== false) $errors['server'] = $this->lang->im->xxdServerError;
+ if(strpos($setting->server, 'https://') !== 0 and strpos($setting->server, 'http://') !== 0) $errors['server'] = $this->lang->im->xxdSchemeError;
+ if(empty($setting->server)) $errors['server'] = $this->lang->im->xxdServerEmpty;
if($errors) $this->send(array('result' => 'fail', 'message' => $errors));
From adc3b3c1c4053cf862ea5adaa8bf58e10215890c Mon Sep 17 00:00:00 2001
From: reneeteng
Date: Mon, 16 Mar 2020 14:16:29 +0800
Subject: [PATCH 04/19] * Lang file update for ci and my.
---
module/ci/lang/en.php | 6 +++---
module/my/lang/en.php | 4 ++--
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/module/ci/lang/en.php b/module/ci/lang/en.php
index 704e64b730..6222482a2a 100644
--- a/module/ci/lang/en.php
+++ b/module/ci/lang/en.php
@@ -1,6 +1,6 @@
ci->common = 'CI';
-$lang->ci->job = 'Build';
-$lang->ci->task = 'Build Task';
-$lang->ci->history = 'Build History';
+$lang->ci->job = 'Job';
+$lang->ci->task = 'Task';
+$lang->ci->history = 'History';
diff --git a/module/my/lang/en.php b/module/my/lang/en.php
index c5a6defba5..3361c15e74 100644
--- a/module/my/lang/en.php
+++ b/module/my/lang/en.php
@@ -14,13 +14,13 @@ $lang->my->requirement = 'My Requirements';
$lang->my->myProject = "My {$lang->projectCommon}s";
$lang->my->profile = 'My Profile';
$lang->my->dynamic = 'My Dynamics';
-$lang->my->editProfile = 'Edit Profile';
+$lang->my->editProfile = 'Edit';
$lang->my->changePassword = 'Edit Password';
$lang->my->unbind = 'Unbind from Zdoo';
$lang->my->manageContacts = 'Manage Contact';
$lang->my->deleteContacts = 'Delete Contact';
$lang->my->shareContacts = 'Public';
-$lang->my->limited = 'Limited Actions (Users can only edit the content that is involved themselves.)';
+$lang->my->limited = 'Limited Actions (Users can only edit what involves them.)';
$lang->my->score = 'My Points';
$lang->my->scoreRule = 'Point Rules';
$lang->my->noTodo = 'No todos yet. ';
From d2d138869de9415a448c9edc781fac72b17daf01 Mon Sep 17 00:00:00 2001
From: Yagami <976204163@qq.com>
Date: Mon, 16 Mar 2020 15:28:45 +0800
Subject: [PATCH 05/19] * Fix makefile and sql.
---
Makefile | 1 -
db/zentao.sql | 17 -----------------
2 files changed, 18 deletions(-)
diff --git a/Makefile b/Makefile
index 583a790dda..8e9c365f94 100644
--- a/Makefile
+++ b/Makefile
@@ -81,7 +81,6 @@ zentaoxx:
cp -r xuan/xxb/config/ext/maps.php zentaoxx/config/ext/
cp -r xuan/xxb/apischeme.json zentaoxx/
cp $(XUANPATH)/xxb/config/ext/maps.php zentaoxx/config/ext/
- cp $(XUANPATH)/xxb/apischeme.json zentaoxx/
cp -r xuanxuan/config/* zentaoxx/config/
cp -r xuanxuan/module/* zentaoxx/module/
cp -r xuanxuan/www/* zentaoxx/www/
diff --git a/db/zentao.sql b/db/zentao.sql
index abb15224af..3144399922 100644
--- a/db/zentao.sql
+++ b/db/zentao.sql
@@ -1138,23 +1138,6 @@ CREATE TABLE IF NOT EXISTS `zt_repo` (
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--- DROP TABLE IF EXISTS `zt_relation`;
-CREATE TABLE `zt_relation` (
- `id` int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
- `program` mediumint(8) NOT NULL,
- `product` mediumint(8) NOT NULL,
- `project` mediumint(8) NOT NULL,
- `AType` char(30) NOT NULL,
- `AID` mediumint(8) NOT NULL,
- `AVersion` char(30) NOT NULL,
- `relation` char(30) NOT NULL,
- `BType` char(30) NOT NULL,
- `BID` mediumint(8) NOT NULL,
- `BVersion` char(30) NOT NULL,
- `extra` char(30) NOT NULL,
- UNIQUE KEY `relation` (`relation`,`AType`,`BType`, `AID`, `BID`)
-) ENGINE='MyISAM' DEFAULT CHARSET=utf8;
-
-- DROP TABLE IF EXISTS `zt_repobranch`;
CREATE TABLE IF NOT EXISTS `zt_repobranch` (
`repo` mediumint(8) unsigned NOT NULL,
From 9e21c8638915699055130c5f3a6f845e896fcf2b Mon Sep 17 00:00:00 2001
From: reneeteng
Date: Tue, 17 Mar 2020 15:38:35 +0800
Subject: [PATCH 06/19] * Install lang updated.
---
module/admin/lang/en.php | 10 +++++-----
module/install/lang/en.php | 40 +++++++++++++++++++-------------------
2 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/module/admin/lang/en.php b/module/admin/lang/en.php
index f14dd5fb21..09de919c0c 100644
--- a/module/admin/lang/en.php
+++ b/module/admin/lang/en.php
@@ -20,7 +20,7 @@ $lang->admin->certifyMobile = 'Verify your cellphone';
$lang->admin->certifyEmail = 'Verify your Email';
$lang->admin->ztCompany = 'Verify your company';
$lang->admin->captcha = 'Verification Code';
-$lang->admin->getCaptcha = 'Get Verification Code';
+$lang->admin->getCaptcha = 'Send Verification Code';
$lang->admin->api = 'API';
$lang->admin->log = 'Log';
@@ -40,13 +40,13 @@ $lang->admin->notice->int = "『%s』should be a positive integer.";
$lang->admin->register = new stdclass();
$lang->admin->register->common = 'Bind Account';
-$lang->admin->register->caption = 'Register in ZenTao Community';
-$lang->admin->register->click = 'Register here';
+$lang->admin->register->caption = 'ZenTao Community Signup';
+$lang->admin->register->click = 'Sign Up';
$lang->admin->register->lblAccount = '>= 3 letters and numbers';
$lang->admin->register->lblPasswd = '>= 6 letters and numbers';
-$lang->admin->register->submit = 'Register';
+$lang->admin->register->submit = 'Submit';
$lang->admin->register->bind = "Bind Exsiting Account";
-$lang->admin->register->success = "You have registered!";
+$lang->admin->register->success = "You have signed up!";
$lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Link Account';
diff --git a/module/install/lang/en.php b/module/install/lang/en.php
index 19b9c73137..6d938f56ad 100644
--- a/module/install/lang/en.php
+++ b/module/install/lang/en.php
@@ -21,13 +21,13 @@ $lang->install->officeDomain = 'https://www.zentao.pm';
$lang->install->start = 'Start';
$lang->install->keepInstalling = 'Continue installing this version';
-$lang->install->seeLatestRelease = 'View latest version';
+$lang->install->seeLatestRelease = 'View the latest version';
$lang->install->welcome = 'Thanks for choosing ZenTao!';
$lang->install->license = 'ZenTao is under Z PUBLIC LICENSE(ZPL) 1.2';
$lang->install->desc = <<Z Public License. It integrates with Product Management, Project Management, QA Management, Document Management, Todo Management, Company Management etc. ZenTao is a perfect choice for managing software development projects.
+ZenTao ALM is an open source software released under Z Public License. It integrates with Product Management, Project Management, Test Management, Document Management, CI Management, etc. ZenTao is a perfect choice for managing software development projects.
-ZenTao ALM is built on PHP + MySQL + zentaoPHP which is an independent framework developed by Nature Easy Soft. Third-party developers/organizations can develop extensions or customize ZenTao accordingly.
+ZenTao ALM is built on PHP + MySQL + zentaoPHP which is an independent framework developed by EasyCorp. Third-party developers/organizations can develop extensions or customize ZenTao accordingly.
EOT;
$lang->install->links = <<EasyCorp.
@@ -46,11 +46,11 @@ $lang->install->checking = 'System Checkup';
$lang->install->ok = 'Passed(√)';
$lang->install->fail = 'Failed(×)';
$lang->install->loaded = 'Loaded';
-$lang->install->unloaded = 'Not Loaded';
+$lang->install->unloaded = 'Not loaded';
$lang->install->exists = 'Found ';
$lang->install->notExists = 'Not found ';
$lang->install->writable = 'Writable ';
-$lang->install->notWritable= 'Not Writable ';
+$lang->install->notWritable= 'Not writable ';
$lang->install->phpINI = 'PHP ini File';
$lang->install->checkItem = 'Item';
$lang->install->current = 'Current Setting';
@@ -114,14 +114,14 @@ $lang->install->workingList['onlyTask'] = 'Only Task Management';
$lang->install->errorConnectDB = 'Connection to the database Failed. ';
$lang->install->errorDBName = 'Database name should exclude “.” ';
$lang->install->errorCreateDB = 'Failed to create the database.';
-$lang->install->errorTableExists = 'The data table has existed. If ZenTao has been installed before, please return to last step and clear data. Then continue the installation.';
+$lang->install->errorTableExists = 'The data table has existed. If ZenTao has been installed before, please return to the previous step and clear data, then continue the installation.';
$lang->install->errorCreateTable = 'Failed to create the table.';
-$lang->install->errorImportDemoData = 'Failed to import demo data.';
+$lang->install->errorImportDemoData = 'Failed to import the demo data.';
-$lang->install->setConfig = 'Create configuration file';
+$lang->install->setConfig = 'Create config file';
$lang->install->key = 'Item';
$lang->install->value = 'Value';
-$lang->install->saveConfig = 'Save config';
+$lang->install->saveConfig = 'Save config file';
$lang->install->save2File = 'Copy the content in the text box above and save it to " %s ". You can change this configuration file later.
';
$lang->install->saved2File = 'The configuration file has been saved to " %s ". You can change this file later.';
$lang->install->errorNotSaveConfig = 'The configuration file is not saved.';
@@ -161,32 +161,32 @@ $lang->install->cronList['moduleName=report&methodName=remind'] = 'Daily T
$lang->install->cronList['moduleName=svn&methodName=run'] = 'Synchronize SVN';
$lang->install->cronList['moduleName=git&methodName=run'] = 'Synchronize GIT';
$lang->install->cronList['moduleName=backup&methodName=backup'] = 'Backup Data';
-$lang->install->cronList['moduleName=mail&methodName=asyncSend'] = 'Asynchronize sending Message';
-$lang->install->cronList['moduleName=webhook&methodName=asyncSend'] = 'Asynchronize sending Webhook';
-$lang->install->cronList['moduleName=admin&methodName=deleteLog'] = 'Delete overdue logs';
+$lang->install->cronList['moduleName=mail&methodName=asyncSend'] = 'Asynchronize sending message';
+$lang->install->cronList['moduleName=webhook&methodName=asyncSend'] = 'Asynchronize sending webhook';
+$lang->install->cronList['moduleName=admin&methodName=deleteLog'] = 'Delete expired logs';
$lang->install->cronList['moduleName=todo&methodName=createCycle'] = 'Create recurring todos';
-$lang->install->cronList['moduleName=ci&methodName=initQueue'] = 'Create recurring jenkins';
+$lang->install->cronList['moduleName=ci&methodName=initQueue'] = 'Create recurring Jenkins';
$lang->install->cronList['moduleName=ci&methodName=checkBuildStatus'] = 'Synchronize Jenkins Status';
$lang->install->cronList['moduleName=ci&methodName=exec'] = 'Execute Jenkins';
$lang->install->success = "Installed!";
-$lang->install->login = 'Login ZenTao';
-$lang->install->register = 'Register in ZenTao Community';
+$lang->install->login = 'ZenTao Login';
+$lang->install->register = 'ZenTao Community Signup';
$lang->install->joinZentao = <<You have installed ZenTao %s. Please delete install.php asap.
Note: In order to get the latest news of ZenTao, please register on ZenTao(www.zentao.pm).
+You have installed ZenTao %s. Please delete install.php.
Note: In order to get the latest news of ZenTao, please sign up on ZenTao Community(www.zentao.pm).
EOT;
$lang->install->product = array('chanzhi', 'ranzhi', 'ydisk', 'meshiot');
-$lang->install->promotion = "Products also from Nature Easy Soft:";
+$lang->install->promotion = "Products also from EasyCorp:";
$lang->install->chanzhi = new stdclass();
$lang->install->chanzhi->name = 'ZSITE';
$lang->install->chanzhi->logo = 'images/main/chanzhi.ico';
$lang->install->chanzhi->url = 'http://www.zsite.net';
$lang->install->chanzhi->desc = <<
- Article, Blog, Manual, Member, Shop, Forum, Feedback……
+ Article, Blog, Manual, Member, Shop, Forum, Feedback
Customize page at will by Theme, Effect, Widget, CSS, JS and layout
Support both desktop and mobile in one system
Highly optimized for search engines
@@ -200,8 +200,8 @@ $lang->install->ranzhi->url = 'http://www.zdoo.org';
$lang->install->ranzhi->desc = <<
CRM: Customer Management and Order Tracking
- OA: Approve, Announce, Trip, Leave and so on.
- Project,Task and Document management
+ OA: Approve, Announce, Trip, Leave and more
+ Project, Task and Document management
Cash: Income, Expense, Transfer, Invest and Debt
EOD;
From b0966e0faf46556a33ebb18d75bf2b2f788adde3 Mon Sep 17 00:00:00 2001
From: leiyong <1549684884@qq.com>
Date: Tue, 17 Mar 2020 16:32:45 +0800
Subject: [PATCH 07/19] Wechat can recursively obtain department users.
---
lib/wechatapi/wechatapi.class.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/wechatapi/wechatapi.class.php b/lib/wechatapi/wechatapi.class.php
index 80b4f1bb93..ae867a2117 100644
--- a/lib/wechatapi/wechatapi.class.php
+++ b/lib/wechatapi/wechatapi.class.php
@@ -59,7 +59,7 @@ class wechatapi
$users = array();
foreach($depts->deptList as $deptID)
{
- $response = $this->queryAPI($this->apiUrl . "user/simplelist?access_token={$this->token}&department_id={$deptID}");
+ $response = $this->queryAPI($this->apiUrl . "user/simplelist?access_token={$this->token}&department_id={$deptID}&fetch_child=1");
if($this->isError()) return array('result' => 'fail', 'message' => $this->errors);
foreach($response->userlist as $user) $users[$user->name] = $user->userid;
From cfa5261960e4294d62ad94997cd7f6c5b79b78cf Mon Sep 17 00:00:00 2001
From: wangyidong
Date: Tue, 17 Mar 2020 16:38:44 +0800
Subject: [PATCH 08/19] * finish task #6902 and merge xuanxuan.
---
Makefile | 4 +---
module/block/view/dashboard.html.php | 9 +++----
module/misc/lang/zh-cn.php | 1 +
module/misc/model.php | 18 ++++++++++++++
module/product/model.php | 21 ++++++++++++++--
module/productplan/control.php | 3 +++
module/story/model.php | 8 +++++++
module/task/view/create.html.php | 24 -------------------
module/upgrade/model.php | 13 ++++++++++
xuanxuan/config/ext/xuanxuanfilter.php | 2 ++
.../ext/view/dashboard.xuanxuan.html.hook.php | 19 ---------------
.../ext/model/class/xuanxuan.class.php | 4 ++--
xuanxuan/module/misc/ext/model/xuanxuan.php | 24 +++++++++++++++++++
13 files changed, 94 insertions(+), 56 deletions(-)
create mode 100644 xuanxuan/module/misc/ext/model/xuanxuan.php
diff --git a/Makefile b/Makefile
index 583a790dda..b53a1c6e0d 100644
--- a/Makefile
+++ b/Makefile
@@ -65,6 +65,7 @@ zentaoxx:
cp -r xuan/xxb/module/im zentaoxx/module/
cp -r xuan/xxb/module/client zentaoxx/module/
cp -r xuan/xxb/module/license zentaoxx/module/
+ cp -r xuan/xxb/module/owt zentaoxx/module/
mkdir -p zentaoxx/module/common/view
cp -r xuan/xxb/module/common/view/header.modal.html.php zentaoxx/module/common/view
cp -r xuan/xxb/module/common/view/marked.html.php zentaoxx/module/common/view
@@ -79,9 +80,6 @@ zentaoxx:
cp -r xuan/xxb/module/action/ext zentaoxx/module/action
cp -r xuan/xxb/config/ext/xxb.php zentaoxx/config/ext/
cp -r xuan/xxb/config/ext/maps.php zentaoxx/config/ext/
- cp -r xuan/xxb/apischeme.json zentaoxx/
- cp $(XUANPATH)/xxb/config/ext/maps.php zentaoxx/config/ext/
- cp $(XUANPATH)/xxb/apischeme.json zentaoxx/
cp -r xuanxuan/config/* zentaoxx/config/
cp -r xuanxuan/module/* zentaoxx/module/
cp -r xuanxuan/www/* zentaoxx/www/
diff --git a/module/block/view/dashboard.html.php b/module/block/view/dashboard.html.php
index 4dffa8ede6..9e5d990734 100644
--- a/module/block/view/dashboard.html.php
+++ b/module/block/view/dashboard.html.php
@@ -122,14 +122,11 @@ $(function()
})
-
-global->showAnnual) and empty($config->global->annualShowed)):?>
-app->loadLang('misc');?>
-var myModalTrigger = new $.zui.ModalTrigger({title:'misc->showAnnual;?>', custom: function(){return misc->annualDesc, $this->createLink('report', 'annualData')));?>}});
+loadModel('misc')->getRemind();?>
+
+var myModalTrigger = new $.zui.ModalTrigger({title:'misc->remind;?>', custom: function(){return }, width:'600px'});
var result = myModalTrigger.show();
$('#showAnnual').click(function(){myModalTrigger.close()});
-loadModel('setting')->setItem("{$this->app->user->account}.common.global.annualShowed", 1);?>
-
getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php
index 38cb470646..1755bf1efc 100644
--- a/module/misc/lang/zh-cn.php
+++ b/module/misc/lang/zh-cn.php
@@ -72,6 +72,7 @@ $lang->misc->tableStatus = "状态";
$lang->misc->novice = "您可能初次使用禅道,是否进入新手模式?";
$lang->misc->showAnnual = '新增年度总结功能';
$lang->misc->annualDesc = '12.0版本后,新增年度总结功能,可以到『统计->年度总结』页面查看。 是否现在查看';
+$lang->misc->remind = '新功能提醒';
$lang->misc->noticeRepair = "普通用户请联系管理员进行修复
管理员请登录禅道所在的服务器,创建%s文件。
diff --git a/module/misc/model.php b/module/misc/model.php
index cc0dff3cbf..865de78bb7 100644
--- a/module/misc/model.php
+++ b/module/misc/model.php
@@ -42,4 +42,22 @@ class miscModel extends model
}
return $tables;
}
+
+ /**
+ * Get remind.
+ *
+ * @access public
+ * @return string
+ */
+ public function getRemind()
+ {
+ $remind = '';
+ if(!empty($this->config->global->showAnnual) and empty($this->config->global->annualShowed))
+ {
+ $remind = '' . $this->lang->misc->showAnnual . '
';
+ $remind .= '' . sprintf($this->lang->misc->annualDesc, helper::createLink('report', 'annualData')) . '
';
+ $this->loadModel('setting')->setItem("{$this->app->user->account}.common.global.annualShowed", 1);
+ }
+ return $remind;
+ }
}
diff --git a/module/product/model.php b/module/product/model.php
index a8139a2964..6dca55e7a3 100644
--- a/module/product/model.php
+++ b/module/product/model.php
@@ -986,6 +986,7 @@ class productModel extends model
$totalEstimate = 0.0;
$storyIdList = array();
+ $count = 0;
foreach($stories as $key => $story)
{
$totalEstimate += $story->estimate;
@@ -997,12 +998,28 @@ class productModel extends model
{
$storyIdList[] = $story->id;
}
+
+ $count ++;
+ if(!empty($story->children))
+ {
+ foreach($story->children as $child)
+ {
+ if(
+ $child->status != 'closed' or
+ ($child->status == 'closed' and ($child->closedReason == 'done' or $child->closedReason == 'postponed'))
+ )
+ {
+ $storyIdList[] = $child->id;
+ }
+ $count ++;
+ }
+ }
}
$cases = $this->dao->select('DISTINCT story')->from(TABLE_CASE)->where('story')->in($storyIdList)->andWhere('deleted')->eq(0)->fetchAll();
- $rate = count($stories) == 0 ? 0 : round(count($cases) / count($stories), 2);
+ $rate = count($stories) == 0 ? 0 : round(count($cases) / $count, 2);
- return sprintf($this->lang->product->storySummary, count($stories), $totalEstimate, $rate * 100 . "%");
+ return sprintf($this->lang->product->storySummary, $count, $totalEstimate, $rate * 100 . "%");
}
/**
diff --git a/module/productplan/control.php b/module/productplan/control.php
index 1af6202c4f..c17e14bb1d 100644
--- a/module/productplan/control.php
+++ b/module/productplan/control.php
@@ -270,8 +270,11 @@ class productplan extends control
foreach($order as $id)
{
if(empty($id)) continue;
+ if(!isset($planStories[$id])) continue;
$stories[$id] = $planStories[$id];
+ unset($planStories[$id]);
}
+ if($planStories) $stories += $planStories;
$planStories = $stories;
unset($stories);
}
diff --git a/module/story/model.php b/module/story/model.php
index 6c7cce951e..0adcbc600a 100644
--- a/module/story/model.php
+++ b/module/story/model.php
@@ -2062,6 +2062,14 @@ class storyModel extends model
->fetchAll();
}
+ /**
+ * Get parent story pairs.
+ *
+ * @param int $productID
+ * @param string $append
+ * @access public
+ * @return void
+ */
public function getParentStoryPairs($productID, $append = '')
{
$stories = $this->dao->select('id, title')->from(TABLE_STORY)
diff --git a/module/task/view/create.html.php b/module/task/view/create.html.php
index 305defd393..d63148c5bd 100644
--- a/module/task/view/create.html.php
+++ b/module/task/view/create.html.php
@@ -101,7 +101,6 @@
-
$storyTitle):?>
@@ -123,30 +122,7 @@
-
- = 5) break;?>
-
-
- |
- task->priList, $task->pri, "class='form-control chosen'");?> |
-
-
- estStarted, "class='form-control form-date' placeholder='{$lang->task->estStarted}'");?>
- ~
- deadline, "class='form-control form-date' placeholder='{$lang->task->deadline}'");?>
-
- |
- assignedTo, "class='form-control chosen'");?> |
- |
-
-
-
-
-
- |
-
-
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index 132446b170..e0261f1a27 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -568,6 +568,19 @@ class upgradeModel extends model
$this->execSQL($this->getUpgradeFile('12.0.1'));
$this->importRepoFromConfig();
$this->appendExec('12_0_1');
+ case '12_1':
+ $this->saveLogs('Execute 12_1');
+
+ if(!isset($this->config->isINT) or !($this->config->isINT))
+ {
+ if(!$executeXuanxuan)
+ {
+ $xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan3.1.1.sql';
+ $this->execSQL($xuanxuanSql);
+ }
+ }
+
+ $this->appendExec('12_1');
}
$this->deletePatch();
diff --git a/xuanxuan/config/ext/xuanxuanfilter.php b/xuanxuan/config/ext/xuanxuanfilter.php
index 19058f64eb..fa6a7dc3ab 100644
--- a/xuanxuan/config/ext/xuanxuanfilter.php
+++ b/xuanxuan/config/ext/xuanxuanfilter.php
@@ -4,3 +4,5 @@ $filter->default->get['display'] = 'code';
$filter->entry = new stdclass();
$filter->entry->visit = new stdclass();
$filter->entry->visit->get['referer'] = 'reg::any';
+
+$config->owt = new stdclass();
diff --git a/xuanxuan/module/block/ext/view/dashboard.xuanxuan.html.hook.php b/xuanxuan/module/block/ext/view/dashboard.xuanxuan.html.hook.php
index 2afc68886a..e69de29bb2 100755
--- a/xuanxuan/module/block/ext/view/dashboard.xuanxuan.html.hook.php
+++ b/xuanxuan/module/block/ext/view/dashboard.xuanxuan.html.hook.php
@@ -1,19 +0,0 @@
-
diff --git a/xuanxuan/module/message/ext/model/class/xuanxuan.class.php b/xuanxuan/module/message/ext/model/class/xuanxuan.class.php
index 3db68b4d13..4c8177fae9 100644
--- a/xuanxuan/module/message/ext/model/class/xuanxuan.class.php
+++ b/xuanxuan/module/message/ext/model/class/xuanxuan.class.php
@@ -19,13 +19,13 @@ class xuanxuanMessage extends messageModel
$server = $this->loadModel('im')->getServer('zentao');
$onlybody = isset($_GET['onlybody']) ? $_GET['onlybody'] : '';
unset($_GET['onlybody']);
- $url = $server . helper::createLink($objectType, 'view', "id=$objectID", 'html');
+ $url = $server . helper::createLink($objectType, 'view', "id=$objectID", 'xhtml');
$target = '';
if(!empty($object->assignedTo)) $target .= $object->assignedTo;
if(!empty($object->mailto)) $target .= ",{$object->mailto}";
$target = trim($target, ',');
- $target = $this->dao->select('id')->from(TABLE_USER)->where('account')->in($target)->fetchAll('id');
+ $target = $this->dao->select('id')->from(TABLE_USER)->where('account')->in($target)->andWhere('account')->ne($this->app->user->account)->fetchAll('id');
$target = array_keys($target);
if($target) $this->loadModel('im')->messageCreateNotify($target, $text, '', '', 'text', $url, array(), array('id' => 'zentao', 'realname' => $this->lang->message->sender, 'name' => $this->lang->message->sender));
diff --git a/xuanxuan/module/misc/ext/model/xuanxuan.php b/xuanxuan/module/misc/ext/model/xuanxuan.php
new file mode 100644
index 0000000000..bfcc0502ba
--- /dev/null
+++ b/xuanxuan/module/misc/ext/model/xuanxuan.php
@@ -0,0 +1,24 @@
+app->loadLang('im');
+ $account = str_replace('.', '_', $this->app->user->account);
+ $xxInstalled = $account . 'installed';
+
+ if(isset($this->config->xxserver->installed) and $this->config->xuanxuan->turnon and !isset($this->config->xxclient->$xxInstalled) and $this->config->global->flow == 'full')
+ {
+ $remind .= '' . $this->lang->im->zentaoClient . '
';
+ $remind .= '' . $this->lang->im->xxClientConfirm . '
';
+ $this->loadModel('setting')->setItem("system.common.xxclient.{$account}installed", 1);
+ }
+ elseif(!isset($this->config->xxserver->noticed) and $this->app->user->admin and $this->config->global->flow == 'full' and $this->config->$module->block->initVersion >= '2')
+ {
+ $remind .= '' . $this->lang->im->zentaoClient . '
';
+ $remind .= '' . $this->lang->im->xxServerConfirm . '
';
+ $this->loadModel('setting')->setItem("system.common.xxserver.noticed", 1);
+ }
+
+ return $remind;
+}
From c7a1e71d27b05759860983e23eea6beccf703543 Mon Sep 17 00:00:00 2001
From: wangyidong
Date: Tue, 17 Mar 2020 17:16:29 +0800
Subject: [PATCH 09/19] * finish task #6991.
---
module/bug/css/x.view.css | 1 +
module/doc/css/x.view.css | 1 +
module/story/css/x.view.css | 1 +
module/task/css/x.view.css | 1 +
module/testcase/css/x.view.css | 1 +
5 files changed, 5 insertions(+)
diff --git a/module/bug/css/x.view.css b/module/bug/css/x.view.css
index c1881f1868..794f3a1db3 100644
--- a/module/bug/css/x.view.css
+++ b/module/bug/css/x.view.css
@@ -1,4 +1,5 @@
.main-actions{display: none}
+#main{margin-bottom: 40px;}
#mainMenu .pull-left>a{display: none}
#mainMenu .pull-left .divider{display: none}
#mainMenu .pull-right{display: none}
diff --git a/module/doc/css/x.view.css b/module/doc/css/x.view.css
index 70379046b6..ce26eaf5ff 100644
--- a/module/doc/css/x.view.css
+++ b/module/doc/css/x.view.css
@@ -1,4 +1,5 @@
.side-col.col-4{display:none;}
+#main{margin-bottom: 40px;}
#mainMenu{margin-top:0px;}
#mainMenu .btn{display:none;}
#mainMenu .divider{display:none;}
diff --git a/module/story/css/x.view.css b/module/story/css/x.view.css
index 4918984bbf..f567019326 100644
--- a/module/story/css/x.view.css
+++ b/module/story/css/x.view.css
@@ -2,6 +2,7 @@
#mainMenu .pull-left .divider{display: none}
#mainMenu .pull-right{display: none}
#mainContent .col-4{display: none}
+#main{margin-bottom: 40px;}
.main-actions{display:none;}
.col-8>.cell{min-height: 300px}
.modal-dialog{width: 90%}
diff --git a/module/task/css/x.view.css b/module/task/css/x.view.css
index 4918984bbf..f567019326 100644
--- a/module/task/css/x.view.css
+++ b/module/task/css/x.view.css
@@ -2,6 +2,7 @@
#mainMenu .pull-left .divider{display: none}
#mainMenu .pull-right{display: none}
#mainContent .col-4{display: none}
+#main{margin-bottom: 40px;}
.main-actions{display:none;}
.col-8>.cell{min-height: 300px}
.modal-dialog{width: 90%}
diff --git a/module/testcase/css/x.view.css b/module/testcase/css/x.view.css
index 68b94df015..bc52089a7a 100644
--- a/module/testcase/css/x.view.css
+++ b/module/testcase/css/x.view.css
@@ -1,4 +1,5 @@
.side-col.col-4{display:none;}
+#main{margin-bottom: 40px;}
#mainMenu{margin-top:0px;}
#mainMenu .btn{display:none;}
#mainMenu .divider{display:none;}
From 3f608337a0fae20dece7db9461db619024d32d36 Mon Sep 17 00:00:00 2001
From: Catouse
Date: Wed, 18 Mar 2020 09:35:35 +0800
Subject: [PATCH 10/19] * fix js error in french language.
---
module/common/view/footer.html.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module/common/view/footer.html.php b/module/common/view/footer.html.php
index e628acd883..68cec35337 100755
--- a/module/common/view/footer.html.php
+++ b/module/common/view/footer.html.php
@@ -22,7 +22,7 @@ $.initSidebar();
loadModel('score')->getNotice(); ?>