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(); ?>