From 2267a99a65cab791a0e9c9c9fdd6ea88604e8f89 Mon Sep 17 00:00:00 2001 From: liugang Date: Mon, 8 Jul 2019 10:15:48 +0800 Subject: [PATCH 01/15] * Add default error lang for url. --- module/common/lang/en.php | 1 + module/common/lang/zh-cn.php | 1 + 2 files changed, 2 insertions(+) diff --git a/module/common/lang/en.php b/module/common/lang/en.php index d5fe367050..9e3d32e65a 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -480,6 +480,7 @@ $lang->error->equal = "『%s』has to be『%s』."; $lang->error->int = array("『%s』should be numbers", "『%s』should be 『%s-%s』."); $lang->error->float = "『%s』should have numbers, decimals."; $lang->error->email = "『%s』should be valid Email."; +$lang->error->URL = "『%s』should be url."; $lang->error->date = "『%s』should be valid date."; $lang->error->datetime = "『%s』should be valid date."; $lang->error->code = "『%s』should be letters or numbers."; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 9356bc5b79..1de60748c6 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -480,6 +480,7 @@ $lang->error->equal = "『%s』必须为『%s』。"; $lang->error->int = array("『%s』应当是数字。", "『%s』应当介于『%s-%s』之间。"); $lang->error->float = "『%s』应当是数字,可以是小数。"; $lang->error->email = "『%s』应当为合法的EMAIL。"; +$lang->error->URL = "『%s』应当为合法的URL。"; $lang->error->date = "『%s』应当为合法的日期。"; $lang->error->datetime = "『%s』应当为合法的日期。"; $lang->error->code = "『%s』应当为字母或数字的组合。"; From a3e86de815d2fa12d31d77ef53dbade1715e1f55 Mon Sep 17 00:00:00 2001 From: reneeteng Date: Mon, 8 Jul 2019 10:48:13 +0800 Subject: [PATCH 02/15] * Lang file update. --- module/bug/lang/en.php | 4 ++-- module/doc/lang/en.php | 4 ++-- module/project/lang/en.php | 4 ++-- module/report/lang/en.php | 2 +- module/search/lang/en.php | 2 +- module/story/lang/en.php | 6 +++--- module/task/lang/en.php | 8 ++++---- module/testcase/lang/en.php | 2 +- module/testreport/lang/en.php | 8 ++++---- 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index 4aff31ddc7..3253a16876 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -59,7 +59,7 @@ $lang->bug->plan = 'Plan'; $lang->bug->closedBy = 'ClosedBy'; $lang->bug->closedDate = 'ClosedDate'; $lang->bug->duplicateBug = 'Duplicated Bug ID'; -$lang->bug->lastEditedBy = 'ModifiedBy'; +$lang->bug->lastEditedBy = 'EditedBy'; $lang->bug->linkBug = 'Linked Bugs'; $lang->bug->linkBugs = 'Link Bug'; $lang->bug->unlinkBug = 'Unlink'; @@ -137,7 +137,7 @@ $lang->bug->delayWarning = " Delay %s days bug->lblAssignedTo = 'AssignTo'; $lang->bug->lblMailto = 'Mailto'; -$lang->bug->lblLastEdited = 'ModifiedBy'; +$lang->bug->lblLastEdited = 'EditedBy'; $lang->bug->lblResolved = 'ResolvedBy'; $lang->bug->allUsers = 'Load All Users'; $lang->bug->allBuilds = 'All Builds'; diff --git a/module/doc/lang/en.php b/module/doc/lang/en.php index 67b30e37db..816a82678f 100644 --- a/module/doc/lang/en.php +++ b/module/doc/lang/en.php @@ -58,8 +58,8 @@ $lang->doc->openedByMe = 'My'; $lang->doc->orderByOpen = 'Recent Added'; $lang->doc->orderByEdit = 'Recent Edited'; $lang->doc->orderByVisit = 'Last Visited'; -$lang->doc->todayEdited = 'Update Today'; -$lang->doc->pastEdited = 'Total Updated'; +$lang->doc->todayEdited = 'Edited Today'; +$lang->doc->pastEdited = 'Total Edited'; $lang->doc->myDoc = 'My Documents'; $lang->doc->myCollection = 'My Favorites'; diff --git a/module/project/lang/en.php b/module/project/lang/en.php index 62452184aa..4108a427ad 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -319,8 +319,8 @@ $lang->project->featureBar['task']['status'] = $lang->project->statusSelec $lang->project->treeLevel = array(); $lang->project->treeLevel['all'] = 'Expand All'; $lang->project->treeLevel['root'] = 'Collapse All'; -$lang->project->treeLevel['task'] = 'Show All'; -$lang->project->treeLevel['story'] = 'Show Story'; +$lang->project->treeLevel['task'] = 'Stories&Tasks'; +$lang->project->treeLevel['story'] = 'Only Stories'; global $config; if($config->global->flow == 'onlyTask') diff --git a/module/report/lang/en.php b/module/report/lang/en.php index b08f4d15fd..18465fcce6 100644 --- a/module/report/lang/en.php +++ b/module/report/lang/en.php @@ -69,7 +69,7 @@ $lang->report->to = 'to'; $lang->report->taskTotal = "Total Tasks"; $lang->report->manhourTotal = "Total Hours"; $lang->report->validRate = "Valid Rate"; -$lang->report->validRateTips = "Solution is Resolved/Postponed or status is Resolved/Closed."; +$lang->report->validRateTips = "Resolution is Resolved/Postponed or status is Resolved/Closed."; $lang->report->unplanned = 'Unplanned'; $lang->report->workday = 'Hours/Day'; $lang->report->diffDays = 'days'; diff --git a/module/search/lang/en.php b/module/search/lang/en.php index 1e61e1e350..6cf01a39d5 100644 --- a/module/search/lang/en.php +++ b/module/search/lang/en.php @@ -23,7 +23,7 @@ $lang->search->setQueryTitle = 'Enter a title. Search then the query is saved.'; $lang->search->select = 'Story/Task Filter'; $lang->search->me = 'Me'; $lang->search->noQuery = 'No query is saved yet!'; -$lang->search->onMenuBar = 'Show in the Menu'; +$lang->search->onMenuBar = 'Show in Menu'; $lang->search->custom = 'Custom'; $lang->search->account = 'Account'; diff --git a/module/story/lang/en.php b/module/story/lang/en.php index c6f238bcbd..195f9a96a1 100644 --- a/module/story/lang/en.php +++ b/module/story/lang/en.php @@ -77,8 +77,8 @@ $lang->story->openedBy = 'CreatedBy'; $lang->story->openedDate = 'CreatedDate'; $lang->story->assignedTo = 'AssignTo'; $lang->story->assignedDate = 'AssignedDate'; -$lang->story->lastEditedBy = 'ModifiedBy'; -$lang->story->lastEditedDate = 'ModifiedDate'; +$lang->story->lastEditedBy = 'EditedBy'; +$lang->story->lastEditedDate = 'EditedDate'; $lang->story->closedBy = 'ClosedBy'; $lang->story->closedDate = 'ClosedDate'; $lang->story->closedReason = 'Reason'; @@ -179,7 +179,7 @@ $lang->story->legendBugs = 'Linked Bugs'; $lang->story->legendFromBug = 'From Bug'; $lang->story->legendCases = 'Linked Cases'; $lang->story->legendLinkStories = 'Linked Stories'; -$lang->story->legendChildStories = 'Children Stories'; +$lang->story->legendChildStories = 'Child Stories'; $lang->story->legendSpec = 'Description'; $lang->story->legendVerify = 'Acceptance'; $lang->story->legendMisc = 'Misc.'; diff --git a/module/task/lang/en.php b/module/task/lang/en.php index 664b821835..67243deb2e 100644 --- a/module/task/lang/en.php +++ b/module/task/lang/en.php @@ -62,7 +62,7 @@ $lang->task->estimate = 'Estimates'; $lang->task->estimateAB = 'Est.'; $lang->task->left = 'Hours Left'; $lang->task->leftAB = 'Left'; -$lang->task->consumed = 'Hours Cost'; +$lang->task->consumed = 'Total Cost'; $lang->task->currentConsumed = 'Current Cost'; $lang->task->myConsumed = 'My Cost'; $lang->task->consumedAB = 'Cost'; @@ -96,9 +96,9 @@ $lang->task->canceledDate = 'CancelledDate'; $lang->task->closedBy = 'ClosedBy'; $lang->task->closedDate = 'ClosedDate'; $lang->task->closedReason = 'CloseReason'; -$lang->task->lastEditedBy = 'ModifiedBy'; -$lang->task->lastEditedDate = 'ModifiedDate'; -$lang->task->lastEdited = 'Last Edited'; +$lang->task->lastEditedBy = 'EditedBy'; +$lang->task->lastEditedDate = 'EditedDate'; +$lang->task->lastEdited = 'EditedBy'; $lang->task->recordEstimate = 'Effort'; $lang->task->editEstimate = 'Edit Estimates'; $lang->task->deleteEstimate = 'Delete Estimates'; diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php index 9cf165ba8a..2207d13891 100644 --- a/module/testcase/lang/en.php +++ b/module/testcase/lang/en.php @@ -130,7 +130,7 @@ $lang->testcase->bySearch = 'Search'; $lang->testcase->unexecuted = 'Pending'; $lang->testcase->lblStory = 'Linked Story'; -$lang->testcase->lblLastEdited = 'Last Edited'; +$lang->testcase->lblLastEdited = 'EditedBy'; $lang->testcase->lblTypeValue = 'Type Value'; $lang->testcase->lblStageValue = 'Phase Value'; $lang->testcase->lblStatusValue = 'Status Value'; diff --git a/module/testreport/lang/en.php b/module/testreport/lang/en.php index 25aef9e308..ec4b94e1ab 100644 --- a/module/testreport/lang/en.php +++ b/module/testreport/lang/en.php @@ -62,9 +62,9 @@ $lang->testreport->confirmDelete = 'Do you want to delete this report?'; $lang->testreport->moreNotice = 'More features can be extended with reference to the ZenTao extension manual, or you can contact us at renee@easysoft.ltd for customization.'; $lang->testreport->exportNotice = "Exported By ZenTao"; $lang->testreport->noReport = "No report has been generated. Please check it later."; -$lang->testreport->foundBugTip = "Bugs generated in this build and generated in the test period."; +$lang->testreport->foundBugTip = "Bugs found in this build period and the affected build is in this test period."; $lang->testreport->legacyBugTip = "Active bugs, or resolved bugs that are not in the test period."; -$lang->testreport->fromCaseBugTip = "Bugs generated due to the failed case run in the test period."; +$lang->testreport->fromCaseBugTip = "Bugs found from the running of cases in the test period."; $lang->testreport->errorTrunk = "You cannot create a Testing report for the trunk. Please modify the linked build!"; $lang->testreport->noTestTask = "No test requests for this {$lang->productCommon}, so no reports can be generated. Please go to {$lang->productCommon} which has test requests and then generate the report."; $lang->testreport->noObjectID = "No test request or {$lang->projectCommon} is selected, so no report can be generated."; @@ -73,6 +73,6 @@ $lang->testreport->moreProduct = "Testing reports can only be generated for t $lang->testreport->bugSummary = <<%s Bugs reported , %s Bugs remained unresolved , -%s Bugs generated due to the failure of case run . -Bug Effective Rate : %s,Bugs reported from case rate: %s +%s Bugs found from the running of cases. +Bug Effective Rate : %s,Bugs-reported-from-cases rate: %s EOD; From 308bb3d1bef5eca596aea52a8a046722c166fa64 Mon Sep 17 00:00:00 2001 From: liugang Date: Mon, 8 Jul 2019 10:56:47 +0800 Subject: [PATCH 03/15] * If the module and method if defined in workflow, run workflow engine. --- framework/base/router.class.php | 2 +- framework/control.class.php | 61 +++++++++++++ framework/model.class.php | 43 ++++++++- framework/router.class.php | 156 ++++++++++++++++++++++++++++++-- 4 files changed, 250 insertions(+), 12 deletions(-) diff --git a/framework/base/router.class.php b/framework/base/router.class.php index 5e083621ed..214451ade0 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -1599,8 +1599,8 @@ class baseRouter $moduleName = isset($_GET[$this->config->moduleVar]) ? strtolower($_GET[$this->config->moduleVar]) : $this->config->default->module; $methodName = isset($_GET[$this->config->methodVar]) ? strtolower($_GET[$this->config->methodVar]) : $this->config->default->method; $this->setModuleName($moduleName); - $this->setControlFile(); $this->setMethodName($methodName); + $this->setControlFile(); } /** diff --git a/framework/control.class.php b/framework/control.class.php index 0415ebb1ab..e0cd41b5b8 100644 --- a/framework/control.class.php +++ b/framework/control.class.php @@ -20,6 +20,67 @@ include dirname(__FILE__) . '/base/control.class.php'; class control extends baseControl { + /** + * 加载指定模块的model文件。 + * Load the model file of one module. + * + * Extension: set appName as empty. + * + * @param string $moduleName 模块名,如果为空,使用当前模块。The module name, if empty, use current module's name. + * @param string $appName The app name, if empty, use current app's name. + * @access public + * @return object|bool 如果没有model文件,返回false,否则返回model对象。If no model file, return false, else return the model object. + */ + public function loadModel($moduleName = '', $appName = '') + { + $appName = ''; + + if(empty($moduleName)) $moduleName = $this->moduleName; + if(empty($appName)) $appName = $this->appName; + + global $loadedModels; + if(isset($loadedModels[$appName][$moduleName])) + { + $this->$moduleName = $loadedModels[$appName][$moduleName]; + $this->dao = $this->$moduleName->dao; + return $this->$moduleName; + } + + $modelFile = $this->app->setModelFile($moduleName, $appName); + + /** + * 如果没有model文件,尝试加载config配置信息。 + * If no model file, try load config. + */ + if(!helper::import($modelFile)) + { + $this->app->loadModuleConfig($moduleName, $appName); + $this->app->loadLang($moduleName, $appName); + $this->dao = new dao(); + return false; + } + + /** + * 如果没有扩展文件,model类名是$moduleName + 'model',如果有扩展,还需要增加ext前缀。 + * If no extension file, model class name is $moduleName + 'model', else with 'ext' as the prefix. + */ + $modelClass = class_exists('ext' . $appName . $moduleName. 'model') ? 'ext' . $appName . $moduleName . 'model' : $appName . $moduleName . 'model'; + if(!class_exists($modelClass)) + { + $modelClass = class_exists('ext' . $moduleName. 'model') ? 'ext' . $moduleName . 'model' : $moduleName . 'model'; + if(!class_exists($modelClass)) $this->app->triggerError(" The model $modelClass not found", __FILE__, __LINE__, $exit = true); + } + + /** + * 初始化model对象,在control对象中可以通过$this->$moduleName来引用。同时将dao对象赋为control对象的成员变量,方便引用。 + * Init the model object thus you can try $this->$moduleName to access it. Also assign the $dao object as a member of control object. + */ + $loadedModels[$appName][$moduleName] = new $modelClass($appName); + $this->$moduleName = $loadedModels[$appName][$moduleName]; + $this->dao = $this->$moduleName->dao; + return $this->$moduleName; + } + /** * 设置视图文件:主视图文件,扩展视图文件, 站点扩展视图文件,以及钩子脚本。 * Set view files: the main file, extension view file, site extension view file and hook files. diff --git a/framework/model.class.php b/framework/model.class.php index 2335d5dd18..f7fb367e93 100644 --- a/framework/model.class.php +++ b/framework/model.class.php @@ -20,10 +20,51 @@ include dirname(__FILE__) . '/base/model.class.php'; class model extends baseModel { + /** + * 加载一个模块的model。加载完成后,使用$this->$moduleName来访问这个model对象。 + * 比如:loadModel('user')引入user模块的model实例对象,可以通过$this->user来访问它。 + * + * Load the model of one module. After loaded, can use $this->$moduleName to visit the model object. + * + * Extension: set appName as empty. + * + * @param string $moduleName + * @access public + * @return object|bool the model object or false if model file not exists. + */ + public function loadModel($moduleName, $appName = '') + { + $appName = ''; + + if(empty($moduleName)) return false; + if(empty($appName)) $appName = $this->appName; + + global $loadedModels; + if(isset($loadedModels[$appName][$moduleName])) + { + $this->$moduleName = $loadedModels[$appName][$moduleName]; + return $this->$moduleName; + } + + $modelFile = $this->app->setModelFile($moduleName, $appName); + + if(!helper::import($modelFile)) return false; + $modelClass = class_exists('ext' . $appName . $moduleName. 'model') ? 'ext' . $appName . $moduleName . 'model' : $appName . $moduleName . 'model'; + if(!class_exists($modelClass)) + { + $modelClass = class_exists('ext' . $moduleName. 'model') ? 'ext' . $moduleName . 'model' : $moduleName . 'model'; + if(!class_exists($modelClass)) $this->app->triggerError(" The model $modelClass not found", __FILE__, __LINE__, $exit = true); + } + + $loadedModels[$appName][$moduleName] = new $modelClass($appName); + $this->$moduleName = $loadedModels[$appName][$moduleName]; + return $this->$moduleName; + } + /** * 删除记录 * Delete one record. - * + * * @param string $table the table name * @param string $id the id value of the record to be deleted * @access public diff --git a/framework/router.class.php b/framework/router.class.php index dae5246afe..8bb5971aa1 100755 --- a/framework/router.class.php +++ b/framework/router.class.php @@ -20,6 +20,24 @@ include dirname(__FILE__) . '/base/router.class.php'; class router extends baseRouter { + /** + * 工作流模块名。 + * The module name of a flow. + * + * @var string + * @access public + */ + public $workflowModule; + + /** + * 工作流方法名。 + * The method name of a flow. + * + * @var string + * @access public + */ + public $workflowMethod; + /** * Add custom langs when set client lang. * @@ -38,7 +56,7 @@ class router extends baseRouter /** * 加载语言文件,返回全局$lang对象。 * Load lang and return it as the global lang object. - * + * * @param string $moduleName the module name * @param string $appName the app name * @access public @@ -49,6 +67,8 @@ class router extends baseRouter global $lang; if(!is_object($lang)) $lang = new language(); + $appName = ''; + /* Set productCommon and projectCommon for flow. */ if($moduleName == 'common') { @@ -123,11 +143,11 @@ class router extends baseRouter /** * Save error info. - * - * @param int $level - * @param string $message - * @param string $file - * @param int $line + * + * @param int $level + * @param string $message + * @param string $file + * @param int $line * @access public * @return void */ @@ -141,22 +161,83 @@ class router extends baseRouter parent::saveError($level, $message, $file, $line); } + /** + * 加载模块的config文件,返回全局$config对象。 + * 如果该模块是common,加载$configRoot的配置文件,其他模块则加载其模块的配置文件。 + * + * Load config and return it as the global config object. + * If the module is common, search in $configRoot, else in $modulePath. + * + * Extension: set appName as empty. + * + * @param string $moduleName module name + * @param string $appName app name + * @param bool $exitIfNone exit or not + * @access public + * @return object|bool the config object or false. + */ + public function loadModuleConfig($moduleName, $appName = '') + { + global $config; + + $appName = ''; + + if($config and (!isset($config->$moduleName) or !is_object($config->$moduleName))) $config->$moduleName = new stdclass(); + + /* 初始化数组。Init the variables. */ + $extConfigFiles = array(); + $commonExtConfigFiles = array(); + $siteExtConfigFiles = array(); + + /* 先获得模块的主配置文件。Get the main config file for current module first. */ + $mainConfigFile = $this->getModulePath($appName, $moduleName) . 'config.php'; + + /* 查找扩展配置文件。Get extension config files. */ + if($config->framework->extensionLevel > 0) $extConfigPath = $this->getModuleExtPath($appName, $moduleName, 'config'); + if($config->framework->extensionLevel >= 1 and !empty($extConfigPath['common'])) $commonExtConfigFiles = helper::ls($extConfigPath['common'], '.php'); + if($config->framework->extensionLevel == 2 and !empty($extConfigPath['site'])) $siteExtConfigFiles = helper::ls($extConfigPath['site'], '.php'); + $extConfigFiles = array_merge($commonExtConfigFiles, $siteExtConfigFiles); + + /* 将主配置文件和扩展配置文件合并在一起。Put the main config file and extension config files together. */ + $configFiles = array_merge(array($mainConfigFile), $extConfigFiles); + + /* 加载每一个配置文件。Load every config file. */ + static $loadedConfigs = array(); + foreach($configFiles as $configFile) + { + if(in_array($configFile, $loadedConfigs)) continue; + if(file_exists($configFile)) include $configFile; + $loadedConfigs[] = $configFile; + } + + /* 加载数据库中与本模块相关的配置项。Merge from the db configs. */ + if($moduleName != 'common') + { + if(isset($config->system->$moduleName)) $this->mergeConfig($config->system->$moduleName, $moduleName); + if(isset($config->personal->$moduleName)) $this->mergeConfig($config->personal->$moduleName, $moduleName); + } + } + /** * Alias load module config. - * - * @param string $moduleName - * @param string $appName + * + * Extension: set appName as empty. + * + * @param string $moduleName + * @param string $appName * @access public * @return void */ public function loadConfig($moduleName, $appName = '') { + $appName = ''; + return parent::loadModuleConfig($moduleName, $appName); } /** * Export config. - * + * * @access public * @return void */ @@ -173,6 +254,46 @@ class router extends baseRouter echo json_encode($view); } + /** + * 设置要被调用的控制器文件。 + * Set the control file of the module to be called. + * + * Extension: If the module and method is defined in workflow, run workflow engine. + * + * @param bool $exitIfNone 没有找到该控制器文件的情况:如果该参数为true,则终止程序;如果为false,则打印错误日志 + * If control file not foundde, how to do. True, die the whole app. false, log error. + * @access public + * @return bool + */ + public function setControlFile($exitIfNone = true) + { + /* If the module and method is defined in workflow, run workflow engine. */ + if(defined('TABLE_WORKFLOW')) + { + $flow = $this->dbh->query("SELECT * FROM " . TABLE_WORKFLOW . " WHERE `module` = '$this->moduleName'")->fetch(); + if($flow) + { + $action = $this->dbh->query("SELECT * FROM " . TABLE_WORKFLOWACTION . " WHERE `module` = '$this->moduleName' AND `action` = '$this->methodName'")->fetch(); + if($action) + { + $this->workflowModule = $this->moduleName; + $this->workflowMethod = $this->methodName; + + $this->loadModuleConfig('workflowaction'); + + $moduleName = 'flow'; + $methodName = in_array($this->methodName, $this->config->workflowaction->default->actions) ? $this->methodName : 'operate'; + + $this->setModuleName($moduleName); + $this->setMethodName($methodName); + } + } + } + + /* Call method of parent. */ + return parent::setControlFile($exitIfNone); + } + /** * PATH_INFO方式解析,获取$URI和$viewType。 * Parse PATH_INFO, get the $URI and $viewType. @@ -205,6 +326,8 @@ class router extends baseRouter * 合并请求的参数和默认参数,这样就可以省略已经有默认值的参数了。 * Merge the params passed in and the default params. Thus the params which have default values needn't pass value, just like a function. * + * Extension: If the workflowmodule and workflowmethod is not empty, reset the passed params. + * * @param array $defaultParams the default params defined by the method. * @param array $passedParams the params passed in through url. * @access public @@ -212,6 +335,19 @@ class router extends baseRouter */ public function mergeParams($defaultParams, $passedParams) { + /* If the workflowmodule and workflowmethod is not empty, reset the passed params. */ + if($this->workflowModule && $this->workflowMethod) + { + $passedParams = array_reverse($passedParams); + if(!in_array($this->workflowMethod, $this->config->workflowaction->default->actions)) + { + $passedParams['method'] = $this->workflowMethod; + } + $passedParams['module'] = $this->workflowModule; + + $passedParams = array_reverse($passedParams); + } + unset($passedParams['display']); return parent::mergeParams($defaultParams, $passedParams); } From 3122bab037bfcdf8c0e95a6f797390a15e9bcc9a Mon Sep 17 00:00:00 2001 From: reneeteng Date: Mon, 8 Jul 2019 11:30:43 +0800 Subject: [PATCH 04/15] * Lang file updated. --- module/admin/lang/en.php | 16 ++++++++-------- module/project/lang/en.php | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/module/admin/lang/en.php b/module/admin/lang/en.php index 2503720f73..4fd778abc9 100644 --- a/module/admin/lang/en.php +++ b/module/admin/lang/en.php @@ -53,15 +53,15 @@ $lang->admin->bind->success = "Account is linked!"; $lang->admin->safe = new stdclass(); $lang->admin->safe->common = 'Security Policy'; -$lang->admin->safe->set = 'Strong Password'; -$lang->admin->safe->password = 'Strong Password'; +$lang->admin->safe->set = 'Password Settings'; +$lang->admin->safe->password = 'Strong Password Required'; $lang->admin->safe->weak = 'Weak Password'; $lang->admin->safe->reason = 'Type'; -$lang->admin->safe->checkWeak = 'Weak Password'; +$lang->admin->safe->checkWeak = 'Weak Password Scan'; $lang->admin->safe->changeWeak = 'Require to change weak password'; $lang->admin->safe->modifyPasswordFirstLogin = 'Require to change password after first login'; -$lang->admin->safe->modeList[0] = 'N/A'; +$lang->admin->safe->modeList[0] = 'I don\'t care.'; $lang->admin->safe->modeList[1] = 'Medium'; $lang->admin->safe->modeList[2] = 'Strong'; @@ -69,10 +69,10 @@ $lang->admin->safe->modeRuleList[1] = ' >= 6 upper and lower case, and numbers'; $lang->admin->safe->modeRuleList[2] = ' >= 10 upper and lower case, numbers and special characters.'; $lang->admin->safe->reasonList['weak'] = 'Common Weak Password'; -$lang->admin->safe->reasonList['account'] = 'Same as your account'; -$lang->admin->safe->reasonList['mobile'] = 'Same as your cellphone number'; -$lang->admin->safe->reasonList['phone'] = 'Same as your phone number'; -$lang->admin->safe->reasonList['birthday'] = 'Same as your DOB'; +$lang->admin->safe->reasonList['account'] = 'Same as account'; +$lang->admin->safe->reasonList['mobile'] = 'Same as mobilephone number'; +$lang->admin->safe->reasonList['phone'] = 'Same as phone number'; +$lang->admin->safe->reasonList['birthday'] = 'Same as DOB'; $lang->admin->safe->modifyPasswordList[1] = 'Yes'; $lang->admin->safe->modifyPasswordList[0] = 'No'; diff --git a/module/project/lang/en.php b/module/project/lang/en.php index 4108a427ad..fc2d668049 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -247,7 +247,7 @@ $lang->project->goback = "Go Back"; $lang->project->noweekend = 'Exclude Weekend'; $lang->project->withweekend = 'Include Weekend'; $lang->project->interval = 'Intervals'; -$lang->project->fixFirstWithLeft = 'Update hours left'; +$lang->project->fixFirstWithLeft = 'Update hours left too'; $lang->project->action = new stdclass(); $lang->project->action->opened = '$date, created by $actor .' . "\n"; @@ -271,7 +271,7 @@ $lang->project->charts->burn->graph->actuality = 'Actual'; $lang->project->placeholder = new stdclass(); $lang->project->placeholder->code = "Abbreviation of {$lang->projectCommon} name"; -$lang->project->placeholder->totalLeft = "Estimates at the beginning of the {$lang->projectCommon}."; +$lang->project->placeholder->totalLeft = "Hours estimated on the first day of the {$lang->projectCommon}."; $lang->project->selectGroup = new stdclass(); $lang->project->selectGroup->done = '(Done)'; From f5f110702625ce0024919d160c8bbddc6805dd06 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 8 Jul 2019 14:14:23 +0800 Subject: [PATCH 05/15] * finish task #6019. --- module/admin/view/sso.html.php | 2 +- module/sso/lang/en.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/admin/view/sso.html.php b/module/admin/view/sso.html.php index 54cbd57a41..d1c50a9596 100644 --- a/module/admin/view/sso.html.php +++ b/module/admin/view/sso.html.php @@ -24,7 +24,7 @@
- + diff --git a/module/sso/lang/en.php b/module/sso/lang/en.php index 67eb18421e..40e96a2a77 100644 --- a/module/sso/lang/en.php +++ b/module/sso/lang/en.php @@ -12,7 +12,7 @@ $lang->sso = new stdclass(); $lang->sso->settings = 'Settings'; $lang->sso->turnon = 'Zdoo'; -$lang->sso->redirect = 'Back to Zdoo'; +$lang->sso->redirect = 'Auto Jump to Zdoo'; $lang->sso->code = 'Code'; $lang->sso->key = 'Secret Key'; $lang->sso->addr = 'Address'; From e5a0a6c859a9d7ff7898b215818c69ce2cf7ee5c Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 8 Jul 2019 14:21:12 +0800 Subject: [PATCH 06/15] * finish task #6013. --- module/project/view/managemembers.html.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/module/project/view/managemembers.html.php b/module/project/view/managemembers.html.php index 08817c95ca..72d5bb39a4 100644 --- a/module/project/view/managemembers.html.php +++ b/module/project/view/managemembers.html.php @@ -56,7 +56,7 @@ - @@ -73,7 +73,7 @@ - @@ -91,7 +91,7 @@ - @@ -109,7 +109,7 @@ - @@ -133,7 +133,7 @@ - From 45cfad82d65545128b9f79aafe28ea7d21d132f0 Mon Sep 17 00:00:00 2001 From: reneeteng Date: Mon, 8 Jul 2019 14:25:48 +0800 Subject: [PATCH 07/15] * Lang files update. --- module/admin/lang/en.php | 8 ++++---- module/bug/lang/en.php | 2 +- module/common/lang/en.php | 4 ++-- module/doc/lang/en.php | 12 ++++++------ module/project/lang/en.php | 2 +- module/release/lang/en.php | 10 +++++----- module/story/lang/en.php | 2 +- module/testreport/lang/en.php | 2 +- module/tree/lang/en.php | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/module/admin/lang/en.php b/module/admin/lang/en.php index 4fd778abc9..db747ddf00 100644 --- a/module/admin/lang/en.php +++ b/module/admin/lang/en.php @@ -54,12 +54,12 @@ $lang->admin->bind->success = "Account is linked!"; $lang->admin->safe = new stdclass(); $lang->admin->safe->common = 'Security Policy'; $lang->admin->safe->set = 'Password Settings'; -$lang->admin->safe->password = 'Strong Password Required'; -$lang->admin->safe->weak = 'Weak Password'; +$lang->admin->safe->password = 'Password Strength'; +$lang->admin->safe->weak = 'Common Weak Password'; $lang->admin->safe->reason = 'Type'; $lang->admin->safe->checkWeak = 'Weak Password Scan'; -$lang->admin->safe->changeWeak = 'Require to change weak password'; -$lang->admin->safe->modifyPasswordFirstLogin = 'Require to change password after first login'; +$lang->admin->safe->changeWeak = 'Force to change weak password'; +$lang->admin->safe->modifyPasswordFirstLogin = 'Force to change password after first login'; $lang->admin->safe->modeList[0] = 'I don\'t care.'; $lang->admin->safe->modeList[1] = 'Medium'; diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index 3253a16876..b076d65b42 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -276,7 +276,7 @@ $lang->bug->report->charts['openedBugsPerUser'] = 'Reported Bugs Per User'; $lang->bug->report->charts['resolvedBugsPerUser'] = 'Resolved Bugs Per User'; $lang->bug->report->charts['closedBugsPerUser'] = 'Closed Bugs Per User'; $lang->bug->report->charts['bugsPerSeverity'] = 'Bug Severity Report'; -$lang->bug->report->charts['bugsPerResolution'] = 'Bug Solution Report'; +$lang->bug->report->charts['bugsPerResolution'] = 'Bug Resolution Report'; $lang->bug->report->charts['bugsPerStatus'] = 'Bug Status Report'; $lang->bug->report->charts['bugsPerActivatedCount'] = 'Bug Activation Times Report'; $lang->bug->report->charts['bugsPerPri'] = 'Bug Priority Report'; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 84b77b2e70..5e4e38a31e 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -71,8 +71,8 @@ $lang->saveSuccess = 'Saved'; $lang->fail = 'Fail'; $lang->addFiles = 'Added Files'; $lang->files = 'Files '; -$lang->pasteText = 'Paste Multi-Items'; -$lang->uploadImages = 'Upload Multi-Images'; +$lang->pasteText = 'Multi-lines Paste'; +$lang->uploadImages = 'Multi-images Upload'; $lang->timeout = 'Timeout. Check your newtwork connections, or try it again!'; $lang->repairTable = 'Database table might be damaged. Run phpmyadmin or myisamchk to fix it.'; $lang->duplicate = '%s has the same title as a file existed.'; diff --git a/module/doc/lang/en.php b/module/doc/lang/en.php index 816a82678f..f93ab2a6bf 100644 --- a/module/doc/lang/en.php +++ b/module/doc/lang/en.php @@ -16,7 +16,7 @@ $lang->doc->product = $lang->productCommon; $lang->doc->project = $lang->projectCommon; $lang->doc->lib = 'Library'; $lang->doc->module = 'Category'; -$lang->doc->title = 'Documents'; +$lang->doc->title = 'Name'; $lang->doc->digest = 'Summary'; $lang->doc->comment = 'Comment'; $lang->doc->type = 'Type'; @@ -26,8 +26,8 @@ $lang->doc->url = 'URL'; $lang->doc->files = 'Files'; $lang->doc->addedBy = 'Author'; $lang->doc->addedDate = 'Added'; -$lang->doc->editedBy = 'EditBy'; -$lang->doc->editedDate = 'EditedDate'; +$lang->doc->editedBy = 'UpdatedBy'; +$lang->doc->editedDate = 'UpdatedDate'; $lang->doc->version = 'Version'; $lang->doc->basicInfo = 'Basic Info'; $lang->doc->deleted = 'Deleted'; @@ -56,10 +56,10 @@ $lang->doc->fast = 'Qucik Entry'; $lang->doc->allDoc = 'All Documents'; $lang->doc->openedByMe = 'My'; $lang->doc->orderByOpen = 'Recent Added'; -$lang->doc->orderByEdit = 'Recent Edited'; +$lang->doc->orderByEdit = 'Recent Updated'; $lang->doc->orderByVisit = 'Last Visited'; -$lang->doc->todayEdited = 'Edited Today'; -$lang->doc->pastEdited = 'Total Edited'; +$lang->doc->todayEdited = 'Updated Today'; +$lang->doc->pastEdited = 'Total Updated'; $lang->doc->myDoc = 'My Documents'; $lang->doc->myCollection = 'My Favorites'; diff --git a/module/project/lang/en.php b/module/project/lang/en.php index fc2d668049..845f0be632 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -210,7 +210,7 @@ $lang->project->countSummary = '
Estimates
%s
Cost
%s
Left
%s
'; $lang->project->groupSummaryAB = "
Tasks %s :Waiting %s   Doing %s
Estimates %s :Cost %s   Left %s
"; $lang->project->wbs = "Create Task"; -$lang->project->batchWBS = "Batch Create"; +$lang->project->batchWBS = "Batch Create Tasks"; $lang->project->howToUpdateBurn = "Help "; $lang->project->whyNoStories = "No story can be linked. Please check whether there is any story in {$lang->projectCommon} which is linked to {$lang->productCommon} and make sure it has been reviewed."; $lang->project->productStories = "Stories linked to {$lang->projectCommon} are the subeset of stories linked to {$lang->productCommon}. Stories can only be linked after they pass the review. Link Stories now."; diff --git a/module/release/lang/en.php b/module/release/lang/en.php index 1d5f9f7303..6b467181d3 100644 --- a/module/release/lang/en.php +++ b/module/release/lang/en.php @@ -45,10 +45,10 @@ $lang->release->unlinkStory = 'Unlink Story'; $lang->release->unlinkBug = 'Unlink Bug'; $lang->release->stories = 'Finished Story'; $lang->release->bugs = 'Resolved Bug'; -$lang->release->leftBugs = 'Unresolved Bug'; -$lang->release->generatedBugs = 'Unresolved Bug'; -$lang->release->finishStories = 'Finished %s Story'; -$lang->release->resolvedBugs = 'Resolved %s Bug'; +$lang->release->leftBugs = 'Active Bug'; +$lang->release->generatedBugs = 'Active Bug'; +$lang->release->finishStories = 'Finished %s Stories'; +$lang->release->resolvedBugs = 'Resolved %s Bugs'; $lang->release->createdBugs = 'Unresolved %s Bug'; $lang->release->export = 'Export as HTML'; $lang->release->yesterday = 'Released Yesterday'; @@ -59,7 +59,7 @@ $lang->release->scmPath = 'SCM Path : '; $lang->release->exportTypeList['all'] = 'All'; $lang->release->exportTypeList['story'] = 'Story'; $lang->release->exportTypeList['bug'] = 'Bug'; -$lang->release->exportTypeList['leftbug'] = 'Unresolved Bug'; +$lang->release->exportTypeList['leftbug'] = 'Active Bug'; $lang->release->statusList[''] = ''; $lang->release->statusList['normal'] = 'Normal'; diff --git a/module/story/lang/en.php b/module/story/lang/en.php index 195f9a96a1..27aad88283 100644 --- a/module/story/lang/en.php +++ b/module/story/lang/en.php @@ -41,7 +41,7 @@ $lang->story->linkStory = 'Link Story'; $lang->story->unlinkStory = 'UnLinked'; $lang->story->export = "Export"; $lang->story->zeroCase = "Stories without cases"; -$lang->story->zeroTask = "Stories without tasks"; +$lang->story->zeroTask = "Only list stories without tasks"; $lang->story->reportChart = "Report"; $lang->story->copyTitle = "Copy Title"; $lang->story->batchChangePlan = "Batch Change Plans"; diff --git a/module/testreport/lang/en.php b/module/testreport/lang/en.php index ec4b94e1ab..ec49a36b7c 100644 --- a/module/testreport/lang/en.php +++ b/module/testreport/lang/en.php @@ -36,7 +36,7 @@ $lang->testreport->all = 'All Reports'; $lang->testreport->deleted = 'Deleted'; $lang->testreport->selectTask = 'Create report by request'; -$lang->testreport->legendBasic = 'Basic Info.'; +$lang->testreport->legendBasic = 'Basic Info'; $lang->testreport->legendStoryAndBug = 'Test Scope'; $lang->testreport->legendBuild = 'Test Rounds'; $lang->testreport->legendCase = 'Linked Cases'; diff --git a/module/tree/lang/en.php b/module/tree/lang/en.php index d6a1cfff49..7985aa9062 100644 --- a/module/tree/lang/en.php +++ b/module/tree/lang/en.php @@ -32,7 +32,7 @@ $lang->tree->manageBugChild = 'Manage Child Bugs'; $lang->tree->manageCaseChild = 'Manage Child Cases'; $lang->tree->manageCaselibChild = 'Manage Child Libraries'; $lang->tree->manageTaskChild = "Manage Child {$lang->projectCommon} Modules"; -$lang->tree->syncFromProduct = 'Copy Other Product Modules'; +$lang->tree->syncFromProduct = 'Copy from Other Products'; $lang->tree->dragAndSort = "Drag to order"; $lang->tree->sort = "Order"; $lang->tree->addChild = "Add Child Module"; From bbd9ffdb0778469fc94d48db3bf0b7f5b82d6e01 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 8 Jul 2019 14:33:14 +0800 Subject: [PATCH 08/15] * finish task #6012. --- module/group/view/manageview.html.php | 2 +- module/group/view/privbygroup.html.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/group/view/manageview.html.php b/module/group/view/manageview.html.php index b5e60ab94d..d773178940 100644 --- a/module/group/view/manageview.html.php +++ b/module/group/view/manageview.html.php @@ -14,7 +14,7 @@

- name;?> + name;?> arrow . $lang->group->manageView;?>

diff --git a/module/group/view/privbygroup.html.php b/module/group/view/privbygroup.html.php index d9b6da5a14..5c8989487d 100644 --- a/module/group/view/privbygroup.html.php +++ b/module/group/view/privbygroup.html.php @@ -49,7 +49,7 @@
- getClientLang() == 'en' ? 'w-90px' : 'w-70px';?> From 4aad227e76a37c97d7f1d66f6c34406f08c57bca Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 8 Jul 2019 16:20:03 +0800 Subject: [PATCH 14/15] * finish task #5997. --- module/project/lang/en.php | 8 ++++---- module/project/lang/zh-cn.php | 6 +++--- module/project/view/grouptask.html.php | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/module/project/lang/en.php b/module/project/lang/en.php index 845f0be632..f7aa780c7e 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -180,12 +180,12 @@ $lang->project->groups['finishedBy'] = 'Group by FinishedBy'; $lang->project->groups['closedBy'] = 'Group by ClosedBy'; $lang->project->groups['type'] = 'Group by Type'; -$lang->project->groupFilter['story']['all'] = $lang->project->all; -$lang->project->groupFilter['story']['linked'] = 'LinkedtoStory Task'; -$lang->project->groupFilter['pri']['all'] = $lang->project->all; +$lang->project->groupFilter['story']['all'] = 'All'; +$lang->project->groupFilter['story']['linked'] = 'Tasks of linked story'; +$lang->project->groupFilter['pri']['all'] = 'All'; $lang->project->groupFilter['pri']['noset'] = 'Not Set'; $lang->project->groupFilter['assignedTo']['undone'] = 'Unfinished'; -$lang->project->groupFilter['assignedTo']['all'] = $lang->project->all; +$lang->project->groupFilter['assignedTo']['all'] = 'All'; $lang->project->byQuery = 'Search'; diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index 1f11e7b934..9e41818c27 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -180,12 +180,12 @@ $lang->project->groups['finishedBy'] = '完成者分组'; $lang->project->groups['closedBy'] = '关闭者分组'; $lang->project->groups['type'] = '类型分组'; -$lang->project->groupFilter['story']['all'] = $lang->project->all; +$lang->project->groupFilter['story']['all'] = '所有'; $lang->project->groupFilter['story']['linked'] = '已关联需求的任务'; -$lang->project->groupFilter['pri']['all'] = $lang->project->all; +$lang->project->groupFilter['pri']['all'] = '所有'; $lang->project->groupFilter['pri']['noset'] = '未设置'; $lang->project->groupFilter['assignedTo']['undone'] = '未完成'; -$lang->project->groupFilter['assignedTo']['all'] = $lang->project->all; +$lang->project->groupFilter['assignedTo']['all'] = '所有'; $lang->project->byQuery = '搜索'; diff --git a/module/project/view/grouptask.html.php b/module/project/view/grouptask.html.php index d442750c76..4fcc20cdb3 100644 --- a/module/project/view/grouptask.html.php +++ b/module/project/view/grouptask.html.php @@ -118,7 +118,7 @@ - + From 6e1774bdc2be3193048e74395ed8b7c4535c3072 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 8 Jul 2019 16:22:56 +0800 Subject: [PATCH 15/15] * finish task #5996. --- module/project/css/grouptask.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/project/css/grouptask.css b/module/project/css/grouptask.css index b84261504e..db07791412 100644 --- a/module/project/css/grouptask.css +++ b/module/project/css/grouptask.css @@ -1,6 +1,6 @@ .table-group-btns {width: 200px;} .group-menu {padding: 1px 5px!important;} -.group-menu .btn {font-size: 15px; color: #3C4353;} +.group-menu .btn {font-size: 14px; color: #3C4353;} .fixed-header-copy .group-menu .btn {background-color: transparent; color: #fff;} .fixed-header-copy .group-menu .btn .icon {background: transparent!important; color: #fff; opacity: .5;} .icon-caret-right.text-muted {color: #CBD0DB;} @@ -23,4 +23,4 @@ .c-side-lg .group-header {display: flex; flex-direction: column; position: absolute; top: 0; right: 0; left: 0; bottom: 0; justify-content: space-between;} .is-firefox .group-header:before {content: ' '; position: absolute; top: 0; right: 0; left: 0; bottom: 0; background: #fff; z-index: 0;} .is-firefox .group-header > a, -.is-firefox .group-header > .groupSummary {position: relative; z-index: 1;} \ No newline at end of file +.is-firefox .group-header > .groupSummary {position: relative; z-index: 1;}
sso->turnon; ?>sso->turnon; ?> sso->turnonList, $turnon);?>
team->limitedList, $member->limited);?> + team->limitedList, 'no');?> + team->limitedList, 'no');?> + team->limitedList, 'no');?> + team->limitedList, $member->realname ? $member->limited : 'no');?> +
idAB;?> task->date;?>task->consumed;?> task->left;?> comment;?>task->estimateAB;?> task->consumedAB;?> task->leftAB;?>task->progress;?>task->progressAB;?> typeAB;?> task->deadlineAB;?> actions;?>