diff --git a/VERSION b/VERSION index d1c0682f9d..c05b5267dc 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -9.6.3 +9.7.stable diff --git a/config/config.php b/config/config.php index b01c02e9c7..8befc3e86c 100644 --- a/config/config.php +++ b/config/config.php @@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}} if(!function_exists('getWebRoot')){function getWebRoot(){}} /* 基本设置。Basic settings. */ -$config->version = '9.6.3'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. +$config->version = '9.7'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. $config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP. $config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time. $config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php. diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index dad314be53..7a30d7cced 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -77,7 +77,8 @@ $lang->bug->confirmBug = 'Confirm'; $lang->bug->batchConfirm = 'Batch Confirm'; $lang->bug->edit = 'Edit'; $lang->bug->batchEdit = 'Batch Edit'; -$lang->bug->batchChangeModule = 'Batch Modify'; +$lang->bug->batchChangeModule = 'Batch Modify Module'; +$lang->bug->batchChangeBranch = 'Batch Modify Branch'; $lang->bug->batchClose = 'Batch Close'; $lang->bug->assignTo = 'Assign'; $lang->bug->batchAssignTo = 'Batch Assign'; @@ -367,6 +368,9 @@ $lang->bug->mySelects['resolvedbyme'] = $lang->bug->resolvedByMe; $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed; $lang->bug->featureBar['browse']['all'] = $lang->bug->allBugs; + + + $lang->bug->featureBar['browse']['my'] = $lang->bug->my; $lang->bug->featureBar['browse']['unconfirmed'] = $lang->bug->confirmedList[0]; $lang->bug->featureBar['browse']['assigntonull'] = $lang->bug->assignToNull; diff --git a/module/bug/lang/zh-cn.php b/module/bug/lang/zh-cn.php index 90b0fc7337..6b891f3303 100644 --- a/module/bug/lang/zh-cn.php +++ b/module/bug/lang/zh-cn.php @@ -78,6 +78,7 @@ $lang->bug->batchConfirm = '批量确认'; $lang->bug->edit = '编辑'; $lang->bug->batchEdit = '批量编辑'; $lang->bug->batchChangeModule = '批量修改模块'; +$lang->bug->batchChangeBranch = '批量修改分支'; $lang->bug->batchClose = '批量关闭'; $lang->bug->assignTo = '指派'; $lang->bug->batchAssignTo = '批量指派'; @@ -361,11 +362,16 @@ $lang->bug->placeholder = new stdclass(); $lang->bug->placeholder->chooseBuilds = '选择相关版本...'; $lang->bug->placeholder->newBuildName = '新版本名称'; + + + + $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed; $lang->bug->featureBar['browse']['all'] = $lang->bug->allBugs; $lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe; $lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe; $lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe; + $lang->bug->featureBar['browse']['unconfirmed'] = $lang->bug->confirmedList[0]; $lang->bug->featureBar['browse']['assigntonull'] = $lang->bug->assignToNull; $lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 2946a1b829..b38493eb76 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -337,6 +337,7 @@ $lang->user->menu = $lang->company->menu; $lang->admin = new stdclass(); $lang->admin->menu = new stdclass(); $lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); + $lang->admin->menu->custom = array('link' => 'Custom|custom|set', 'subModule' => 'custom'); $lang->admin->menu->mail = array('link' => 'Email|mail|index', 'subModule' => 'mail'); $lang->admin->menu->backup = array('link' => 'Backup|backup|index', 'subModule' => 'backup'); @@ -346,7 +347,6 @@ $lang->admin->menu->trashes = array('link' => 'Recycle|action|trash', 'subModu $lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor'); $lang->admin->menu->api = array('link' => 'API|webhook|browse', 'alias' => 'create,edit', 'subModule' => 'entry,webhook'); $lang->admin->menu->sso = 'RangerTeam|admin|sso'; -//$lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension'); $lang->convert = new stdclass(); $lang->upgrade = new stdclass(); diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 437461f233..763705c285 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -483,6 +483,7 @@ $lang->resource->bug->saveTemplate = 'saveTemplate'; $lang->resource->bug->deleteTemplate = 'deleteTemplate'; $lang->resource->bug->setPublic = 'setPublic'; $lang->resource->bug->batchChangeModule = 'batchChangeModule'; +$lang->resource->bug->batchChangeBranch = 'batchChangeBranch'; $lang->bug->methodOrder[0] = 'index'; $lang->bug->methodOrder[5] = 'browse'; @@ -511,6 +512,7 @@ $lang->bug->methodOrder[110] = 'setPublic'; $lang->bug->methodOrder[115] = 'linkBugs'; $lang->bug->methodOrder[120] = 'unlinkBug'; $lang->bug->methodOrder[125] = 'batchChangeModule'; +$lang->bug->methodOrder[130] = 'batchChangeBranch'; /* Test case. */ $lang->resource->testcase = new stdclass(); @@ -534,6 +536,7 @@ $lang->resource->testcase->showImport = 'showImport'; $lang->resource->testcase->confirmChange = 'confirmChange'; $lang->resource->testcase->confirmStoryChange = 'confirmStoryChange'; $lang->resource->testcase->batchChangeModule = 'batchChangeModule'; +$lang->resource->testcase->batchChangeBranch = 'batchChangeBranch'; $lang->resource->testcase->bugs = 'bugs'; $lang->resource->testcase->review = 'review'; $lang->resource->testcase->batchReview = 'batchReview'; @@ -556,9 +559,10 @@ $lang->testcase->methodOrder[55] = 'confirmStoryChange'; $lang->testcase->methodOrder[60] = 'batchEdit'; $lang->testcase->methodOrder[65] = 'batchDelete'; $lang->testcase->methodOrder[70] = 'batchChangeModule'; -$lang->testcase->methodOrder[75] = 'linkCases'; -$lang->testcase->methodOrder[80] = 'unlinkCase'; -$lang->testcase->methodOrder[85] = 'bugs'; +$lang->testcase->methodOrder[75] = 'batchChangeBranch'; +$lang->testcase->methodOrder[80] = 'linkCases'; +$lang->testcase->methodOrder[85] = 'unlinkCase'; +$lang->testcase->methodOrder[90] = 'bugs'; $lang->testcase->methodOrder[95] = 'review'; $lang->testcase->methodOrder[100] = 'batchReview'; $lang->testcase->methodOrder[105] = 'batchConfirmStoryChange'; diff --git a/module/misc/lang/en.php b/module/misc/lang/en.php index 93cd9a2034..6c096acfc2 100644 --- a/module/misc/lang/en.php +++ b/module/misc/lang/en.php @@ -30,13 +30,24 @@ $lang->misc->zentao->about['official'] = "Official Website"; $lang->misc->zentao->about['changelog'] = "Change Log"; $lang->misc->zentao->about['license'] = "License"; + + $lang->misc->zentao->support['vip'] = "VIP Technical Support"; $lang->misc->zentao->support['manual'] = "User Manual"; + + + + + $lang->misc->zentao->cowin['reportbug'] = "Report Bug "; $lang->misc->zentao->cowin['feedback'] = "Feedback"; + $lang->misc->zentao->cowin['cowinmore'] = "More"; + + + $lang->misc->zentao->service['servicemore']= 'More'; $lang->misc->mobile = "Mobile Access"; diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php index d91f6fe451..12867b03a8 100644 --- a/module/misc/lang/zh-cn.php +++ b/module/misc/lang/zh-cn.php @@ -44,6 +44,7 @@ $lang->misc->zentao->cowin['reportbug'] = "汇报Bug"; $lang->misc->zentao->cowin['feedback'] = "反馈需求"; $lang->misc->zentao->cowin['recommend'] = "推荐给朋友"; + $lang->misc->zentao->service['zentaotrain']= '禅道使用培训'; $lang->misc->zentao->service['idc'] = '禅道在线托管'; $lang->misc->zentao->service['custom'] = '禅道定制开发'; diff --git a/module/product/lang/en.php b/module/product/lang/en.php index b80d3e5ee3..2662684846 100644 --- a/module/product/lang/en.php +++ b/module/product/lang/en.php @@ -120,6 +120,9 @@ $lang->product->mySelects['resolvedbyme'] = $lang->product->reviewedByMe; $lang->product->featureBar['browse']['unclosed'] = $lang->product->unclosed; $lang->product->featureBar['browse']['unplan'] = $lang->product->unplan; $lang->product->featureBar['browse']['allstory'] = $lang->product->allStory; + + + $lang->product->featureBar['browse']['my'] = $lang->product->my; $lang->product->featureBar['browse']['closedbyme'] = $lang->product->closedByMe; $lang->product->featureBar['browse']['draftstory'] = $lang->product->draftStory; diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index e5fadf1a90..c47a0f512c 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -83,6 +83,7 @@ $lang->product->closedStory = '已关闭'; $lang->product->unclosed = '未关闭'; $lang->product->unplan = '未计划'; + $lang->product->allStory = '全部需求'; $lang->product->allProduct = '全部' . $lang->productCommon; $lang->product->allProductsOfProject = '全部关联' . $lang->productCommon; @@ -112,12 +113,17 @@ $lang->product->storySummary = "本页共 %s 个需求,预 $lang->product->checkedSummary = "选中 %total% 个需求,预计 %estimate% 个工时,用例覆盖率%rate%。"; $lang->product->noMatched = '找不到包含"%s"的' . $lang->productCommon; + + + + $lang->product->featureBar['browse']['unclosed'] = $lang->product->unclosed; $lang->product->featureBar['browse']['unplan'] = $lang->product->unplan; $lang->product->featureBar['browse']['allstory'] = $lang->product->allStory; $lang->product->featureBar['browse']['assignedtome'] = $lang->product->assignedToMe; $lang->product->featureBar['browse']['openedbyme'] = $lang->product->openedByMe; $lang->product->featureBar['browse']['reviewedbyme'] = $lang->product->reviewedByMe; + $lang->product->featureBar['browse']['closedbyme'] = $lang->product->closedByMe; $lang->product->featureBar['browse']['draftstory'] = $lang->product->draftStory; $lang->product->featureBar['browse']['activestory'] = $lang->product->activeStory; diff --git a/module/release/config.php b/module/release/config.php index 7e52377cd7..464702d309 100644 --- a/module/release/config.php +++ b/module/release/config.php @@ -3,7 +3,7 @@ $config->release = new stdclass(); $config->release->create = new stdclass(); $config->release->edit = new stdclass(); $config->release->create->requiredFields = 'name,date'; -$config->release->edit->requiredFields = 'name,date'; +$config->release->edit->requiredFields = 'name,date,build'; $config->release->editor = new stdclass(); $config->release->editor->create = array('id' => 'desc', 'tools' => 'simpleTools'); diff --git a/module/release/model.php b/module/release/model.php index ef6b28cd13..b9e5f341e4 100644 --- a/module/release/model.php +++ b/module/release/model.php @@ -172,7 +172,7 @@ class releaseModel extends model $this->dao->update(TABLE_RELEASE)->data($release) ->autoCheck() ->batchCheck($this->config->release->edit->requiredFields, 'notempty') - ->check('name', 'unique', "id != $releaseID AND product = {$release->product} AND branch = $branch AND deleted = '0'") + ->check('name', 'unique', "id != '$releaseID' AND product = '{$release->product}' AND branch = '$branch' AND deleted = '0'") ->where('id')->eq((int)$releaseID) ->exec(); if(!dao::isError()) diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php index 0776e58901..931e92ba6d 100644 --- a/module/testcase/lang/en.php +++ b/module/testcase/lang/en.php @@ -78,6 +78,7 @@ $lang->testcase->batchReview = "Batch Review"; $lang->testcase->edit = "Edit"; $lang->testcase->batchEdit = "Batch Edit "; $lang->testcase->batchChangeModule = "Batch Change Module"; +$lang->testcase->batchChangeBranch = "Batch Change Branch"; $lang->testcase->delete = "Delete"; $lang->testcase->batchDelete = "Batch Delete "; $lang->testcase->batchConfirmStoryChange = "Batch Confirm Story Change"; diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php index 6647574ac3..8015cf76d4 100644 --- a/module/testcase/lang/zh-cn.php +++ b/module/testcase/lang/zh-cn.php @@ -78,6 +78,7 @@ $lang->testcase->batchReview = "批量评审"; $lang->testcase->edit = "编辑"; $lang->testcase->batchEdit = "批量编辑 "; $lang->testcase->batchChangeModule = "批量修改模块"; +$lang->testcase->batchChangeBranch = "批量修改分支"; $lang->testcase->delete = "删除"; $lang->testcase->batchDelete = "批量删除 "; $lang->testcase->batchConfirmStoryChange = "批量确认变更"; diff --git a/module/upgrade/lang/en.php b/module/upgrade/lang/en.php index 84a645e2f5..e135153752 100644 --- a/module/upgrade/lang/en.php +++ b/module/upgrade/lang/en.php @@ -129,3 +129,4 @@ $lang->upgrade->fromVersions['9_5_1'] = '9.5.1'; $lang->upgrade->fromVersions['9_6'] = '9.6'; $lang->upgrade->fromVersions['9_6_1'] = '9.6.1'; $lang->upgrade->fromVersions['9_6_2'] = '9.6.2'; +$lang->upgrade->fromVersions['9_6_3'] = '9.6.3'; diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php index cfbc9a4ab8..871050c61a 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -129,3 +129,4 @@ $lang->upgrade->fromVersions['9_5_1'] = '9.5.1'; $lang->upgrade->fromVersions['9_6'] = '9.6'; $lang->upgrade->fromVersions['9_6_1'] = '9.6.1'; $lang->upgrade->fromVersions['9_6_2'] = '9.6.2'; +$lang->upgrade->fromVersions['9_6_3'] = '9.6.3'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 6ea04e8f06..b2f5c2535a 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -195,6 +195,12 @@ class upgradeModel extends model $this->fixDatatableColsConfig(); case '9_6_1': $this->addLimitedGroup(); + case '9_6_2': + case '9_6_3': + $this->execSQL($this->getUpgradeFile('9.6.3')); + $this->changeLimitedName(); + $this->adjustPriv9_7(); + $this->changeStoryWidth(); } $this->deletePatch(); @@ -294,6 +300,9 @@ class upgradeModel extends model case '9_5': $confirmContent .= file_get_contents($this->getUpgradeFile('9.5')); case '9_5_1': $confirmContent .= file_get_contents($this->getUpgradeFile('9.5.1')); case '9_6': $confirmContent .= file_get_contents($this->getUpgradeFile('9.6')); + case '9_6_1': + case '9_6_2': + case '9_6_3': $confirmContent .= file_get_contents($this->getUpgradeFile('9.6.3')); } return str_replace('zt_', $this->config->db->prefix, $confirmContent); } diff --git a/module/user/control.php b/module/user/control.php index 27e4df9819..0dbe8e1df5 100644 --- a/module/user/control.php +++ b/module/user/control.php @@ -626,31 +626,6 @@ class user extends control } } - /** - * Check Tmp dir. - * - * @access public - * @return void - */ - public function checkTmp() - { - if(!is_dir($this->app->tmpRoot)) mkdir($this->app->tmpRoot, 0755, true); - if(!is_dir($this->app->cacheRoot)) mkdir($this->app->cacheRoot, 0755, true); - if(!is_dir($this->app->logRoot)) mkdir($this->app->logRoot, 0755, true); - if(!is_dir($this->app->logRoot)) return false; - - $file = $this->app->logRoot . DS . 'demo.txt'; - if($fp = @fopen($file, 'a+')) - { - @fclose($fp); - @unlink($file); - } - else - { - return false; - } - return true; - } /** * User login, identify him and authorize him. @@ -663,7 +638,7 @@ class user extends control */ public function login($referer = '', $from = '') { - if($this->checkTmp() === false) + if($this->user->checkTmp() === false) { echo ""; echo "
"; diff --git a/module/user/model.php b/module/user/model.php index d124add45d..3e0acf77d2 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -1188,4 +1188,30 @@ class userModel extends model return $strength; } + + /** + * Check Tmp dir. + * + * @access public + * @return void + */ + public function checkTmp() + { + if(!is_dir($this->app->tmpRoot)) mkdir($this->app->tmpRoot, 0755, true); + if(!is_dir($this->app->cacheRoot)) mkdir($this->app->cacheRoot, 0755, true); + if(!is_dir($this->app->logRoot)) mkdir($this->app->logRoot, 0755, true); + if(!is_dir($this->app->logRoot)) return false; + + $file = $this->app->logRoot . DS . 'demo.txt'; + if($fp = @fopen($file, 'a+')) + { + @fclose($fp); + @unlink($file); + } + else + { + return false; + } + return true; + } } diff --git a/tools/check.php b/tools/check.php index d0b398aba4..843f16fd6b 100755 --- a/tools/check.php +++ b/tools/check.php @@ -193,11 +193,9 @@ foreach(glob($moduleRoot . '*') as $modulePath) $lines = file($langFile); foreach($mainLines as $lineNO => $line) { - if(strpos($line, '$lang') === false) - { - //if($line != $lines[$lineNO]) echo $moduleName . ' ' . $langKey . ' ' . $lineNO . "\n"; - } - else + if(!isset($lines[$lineNO]) OR empty(trim($lines[$lineNO]))) continue; + if(empty(trim($line))) continue; + if(strpos($line, '$lang') === 0) { if(strpos($line, '=') !== false) {