diff --git a/framework/base/control.class.php b/framework/base/control.class.php
index 6a888e308d..8a5211adb2 100644
--- a/framework/base/control.class.php
+++ b/framework/base/control.class.php
@@ -445,44 +445,114 @@ class baseControl
*/
public function getCSS($moduleName, $methodName)
{
- $moduleName = strtolower(trim($moduleName));
- $methodName = strtolower(trim($methodName));
+ $moduleName = strtolower(trim($moduleName));
+ $methodName = strtolower(trim($methodName));
- $modulePath = $this->app->getModulePath($this->appName, $moduleName);
- $cssExtPath = $this->app->getModuleExtPath($this->appName, $moduleName, 'css') ;
+ $modulePath = $this->app->getModulePath($this->appName, $moduleName);
+ $cssExtPath = $this->app->getModuleExtPath($this->appName, $moduleName, 'css') ;
- $css = '';
- $mainCssFile = $modulePath . 'css' . DS . $this->devicePrefix . 'common.css';
- $methodCssFile = $modulePath . 'css' . DS . $this->devicePrefix . $methodName . '.css';
- if(file_exists($mainCssFile)) $css .= file_get_contents($mainCssFile);
- if(is_file($methodCssFile)) $css .= file_get_contents($methodCssFile);
+ $clientLang = $this->app->getClientLang();
+ $notCNLang = strpos('|zh-cn|zh-tw|', "|{$clientLang}|") === false;
+
+ $css = '';
+ $devicePrefix = $this->devicePrefix;
+ $mainCssPath = $modulePath . 'css' . DS;
+
+ /* Common css file. like module/story/css/common.css. */
+ $mainCssFile = $mainCssPath . $devicePrefix . 'common.css';
+ if(is_file($mainCssFile)) $css .= file_get_contents($mainCssFile);
+
+ /* Common css file with lang. like module/story/css/common.en.css. */
+ $mainCssLangFile = $mainCssPath . $devicePrefix . "common.{$clientLang}.css";
+ if(!file_exists($mainCssLangFile) and $notCNLang) $mainCssLangFile = $mainCssPath . $devicePrefix . "common.en.css";
+ if(is_file($mainCssLangFile)) $css .= file_get_contents($mainCssLangFile);
+
+ /* Method css file. like module/story/css/create.css. */
+ $methodCssFile = $mainCssPath . $devicePrefix . $methodName . '.css';
+ if(is_file($methodCssFile)) $css .= file_get_contents($methodCssFile);
+
+ /* Method css file with lang. like module/story/css/create.en.css. */
+ $methodCssLangFile = $mainCssPath . $devicePrefix . "{$methodName}.{$clientLang}.css";
+ if(!file_exists($methodCssLangFile) and $notCNLang) $methodCssLangFile = $mainCssPath . $devicePrefix . "{$methodName}.en.css";
+ if(is_file($methodCssLangFile)) $css .= file_get_contents($methodCssLangFile);
if(!empty($cssExtPath))
{
$cssMethodExt = $cssExtPath['common'] . $methodName . DS;
$cssCommonExt = $cssExtPath['common'] . 'common' . DS;
- $cssExtFiles = glob($cssCommonExt . $this->devicePrefix . '*.css');
- if(!empty($cssExtFiles) and is_array($cssExtFiles)) foreach($cssExtFiles as $cssFile) $css .= file_get_contents($cssFile);
+ $cssExtFiles = glob($cssCommonExt . $devicePrefix . '*.css');
+ if(!empty($cssExtFiles) and is_array($cssExtFiles)) $css .= $this->getExtCSS($cssExtFiles);
- $cssExtFiles = glob($cssMethodExt . $this->devicePrefix . '*.css');
- if(!empty($cssExtFiles) and is_array($cssExtFiles)) foreach($cssExtFiles as $cssFile) $css .= file_get_contents($cssFile);
+ $cssExtFiles = glob($cssMethodExt . $devicePrefix . '*.css');
+ if(!empty($cssExtFiles) and is_array($cssExtFiles)) $css .= $this->getExtCSS($cssExtFiles);
if(!empty($cssExtPath['site']))
{
$cssMethodExt = $cssExtPath['site'] . $methodName . DS;
$cssCommonExt = $cssExtPath['site'] . 'common' . DS;
- $cssExtFiles = glob($cssCommonExt . $this->devicePrefix . '*.css');
- if(!empty($cssExtFiles) and is_array($cssExtFiles)) foreach($cssExtFiles as $cssFile) $css .= file_get_contents($cssFile);
+ $cssExtFiles = glob($cssCommonExt . $devicePrefix . '*.css');
+ if(!empty($cssExtFiles) and is_array($cssExtFiles)) $css .= $this->getExtCSS($cssExtFiles);
- $cssExtFiles = glob($cssMethodExt . $this->devicePrefix . '*.css');
- if(!empty($cssExtFiles) and is_array($cssExtFiles)) foreach($cssExtFiles as $cssFile) $css .= file_get_contents($cssFile);
+ $cssExtFiles = glob($cssMethodExt . $devicePrefix . '*.css');
+ if(!empty($cssExtFiles) and is_array($cssExtFiles)) $css .= $this->getExtCSS($cssExtFiles);
}
}
return $css;
}
+ /**
+ * Get extension css and extension css with lang.
+ *
+ * @param array $files
+ * @access public
+ * @return string
+ */
+ public function getExtCSS($files)
+ {
+ $clientLang = $this->app->getClientLang();
+ $notCNLang = strpos('|zh-cn|zh-tw|', "|{$clientLang}|") === false;
+
+ $filePairs = array();
+ foreach($files as $cssFile)
+ {
+ $fileName = basename($cssFile);
+ $filePairs[$fileName] = $cssFile;
+ }
+
+ $css = '';
+ $usedCodes = array();
+ foreach($filePairs as $fileName => $cssFile)
+ {
+ if(preg_match('/^\w+\.css$/', $fileName))
+ {
+ /* Method extension css file. like module/story/ext/css/create/effort.css. */
+ $css .= file_get_contents($cssFile);
+ list($code) = explode('.', $fileName);
+ }
+ else
+ {
+ list($code) = explode('.', $fileName);
+ if(isset($usedCodes[$code])) continue;
+ }
+
+
+ /* Method extension css file. like module/story/ext/css/create/effort.zh-cn.css. */
+ if(isset($filePairs["{$code}.{$clientLang}.css"]))
+ {
+ $css .= file_get_contents($filePairs["{$code}.{$clientLang}.css"]);
+ }
+ elseif($notCNLang and isset($filePairs["{$code}.en.css"]))
+ {
+ $css .= file_get_contents($filePairs["{$code}.en.css"]);
+ }
+ $usedCodes[$code] = $code;
+ }
+
+ return $css;
+ }
+
/**
* 获取适用于当前方法的js:该模块公用的js + 当前方法的js + 扩展的js。
* Get js codes applied to current method: module common js + method js + extension js.
diff --git a/framework/control.class.php b/framework/control.class.php
index 61b1e704b7..b98973b91f 100644
--- a/framework/control.class.php
+++ b/framework/control.class.php
@@ -21,10 +21,10 @@ include dirname(__FILE__) . '/base/control.class.php';
class control extends baseControl
{
/**
- * 加载指定模块的model文件。
- * Load the model file of one module.
- *
- * Extension: set appName as empty.
+ * 企业版部分功能是从然之合并过来的。然之代码中调用loadModel方法时传递了一个非空的appName,在禅道中会导致错误。
+ * 调用父类的loadModel方法来避免这个错误。
+ * Some codes merged from ranzhi called the function loadModel with a non-empty appName which causes an error in zentao.
+ * Call the parent function with empty appName to avoid this error.
*
* @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.
@@ -33,52 +33,7 @@ class control extends baseControl
*/
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;
+ return parent::loadModel($moduleName);
}
/**
diff --git a/framework/model.class.php b/framework/model.class.php
index caa3db33d1..5132163f4c 100644
--- a/framework/model.class.php
+++ b/framework/model.class.php
@@ -21,12 +21,10 @@ 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.
+ * 企业版部分功能是从然之合并过来的。然之代码中调用loadModel方法时传递了一个非空的appName,在禅道中会导致错误。
+ * 调用父类的loadModel方法来避免这个错误。
+ * Some codes merged from ranzhi called the function loadModel with a non-empty appName which causes an error in zentao.
+ * Call the parent function with empty appName to avoid this error.
*
* @param string $moduleName
* @access public
@@ -34,31 +32,7 @@ class model extends baseModel
*/
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;
+ return parent::loadModel($moduleName);
}
/**
diff --git a/framework/router.class.php b/framework/router.class.php
index 3879faeae1..fd1cbd4bdc 100755
--- a/framework/router.class.php
+++ b/framework/router.class.php
@@ -66,8 +66,10 @@ class router extends baseRouter
}
/**
- * 加载语言文件,返回全局$lang对象。
- * Load lang and return it as the global lang object.
+ * 企业版部分功能是从然之合并过来的。然之代码中调用loadLang方法时传递了一个非空的appName,在禅道中会导致错误。
+ * 把appName设置为空来避免这个错误。
+ * Some codes merged from ranzhi called the function loadLang with a non-empty appName which causes an error in zentao.
+ * Set the value of appName to empty to avoid this error.
*
* @param string $moduleName the module name
* @param string $appName the app name
@@ -176,13 +178,10 @@ class router extends baseRouter
}
/**
- * 加载模块的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.
+ * 企业版部分功能是从然之合并过来的。然之代码中调用loadModuleConfig方法时传递了一个非空的appName,在禅道中会导致错误。
+ * 把appName设置为空来避免这个错误。
+ * Some codes merged from ranzhi called the function loadModuleConfig with a non-empty appName which causes an error in zentao.
+ * Set the value of appName to empty to avoid this error.
*
* @param string $moduleName module name
* @param string $appName app name
diff --git a/lib/base/front/front.class.php b/lib/base/front/front.class.php
index 6fbe58ac12..4281932177 100644
--- a/lib/base/front/front.class.php
+++ b/lib/base/front/front.class.php
@@ -1075,6 +1075,7 @@ EOT;
$jsLang = new stdclass();
$jsLang->submitting = isset($lang->loading) ? $lang->loading : '';
$jsLang->save = $jsConfig->save;
+ $jsLang->expand = isset($lang->expand) ? $lang->expand : '';
$jsLang->timeout = isset($lang->timeout) ? $lang->timeout : '';
$js = self::start(false);
diff --git a/lib/filter/filter.class.php b/lib/filter/filter.class.php
index 9de422aca0..a6e1ae9d42 100644
--- a/lib/filter/filter.class.php
+++ b/lib/filter/filter.class.php
@@ -47,7 +47,19 @@ class fixer extends baseFixer
foreach($this->data as $field => $value)
{
/* Implode array when form has array. */
- if(isset($flowFields[$field]) and is_array($value)) $this->data->$field = implode(',', $value);
+ if(isset($flowFields[$field]) and is_array($value))
+ {
+ $canImplode = true;
+ foreach($value as $k => $v)
+ {
+ if(is_object($v) or is_array($v))
+ {
+ $canImplode = false;
+ break;
+ }
+ }
+ if($canImplode) $this->data->$field = implode(',', $value);
+ }
$this->specialChars($field);
}
diff --git a/lib/phpmailer/class.smtp.php b/lib/phpmailer/class.smtp.php
index d8bfd6f136..1d2aa89c82 100644
--- a/lib/phpmailer/class.smtp.php
+++ b/lib/phpmailer/class.smtp.php
@@ -617,7 +617,7 @@ class SMTP {
protected function parseHelloFields($type)
{
- $this->server_caps = [];
+ $this->server_caps = array();
$lines = explode("\n", $this->helo_rply);
foreach ($lines as $n => $s) {
@@ -639,7 +639,7 @@ class SMTP {
break;
case 'AUTH':
if (!is_array($fields)) {
- $fields = [];
+ $fields = array();
}
break;
default:
diff --git a/module/action/model.php b/module/action/model.php
index 4c6093d3f0..20231c749b 100755
--- a/module/action/model.php
+++ b/module/action/model.php
@@ -45,9 +45,11 @@ class actionModel extends model
$action->actor = $actor;
$action->action = $actionType;
$action->date = helper::now();
- $action->comment = trim(strip_tags($comment, $this->config->allowedTags));
$action->extra = $extra;
+ $_POST['comment'] = $comment;
+ $action->comment = fixer::input('post')->stripTags('comment')->get('comment');
+
/* Process action. */
$action = $this->loadModel('file')->processImgURL($action, 'comment', $this->post->uid);
if($autoDelete) $this->file->autoDelete($this->post->uid);
diff --git a/module/action/view/trash.html.php b/module/action/view/trash.html.php
index d38027d700..6e56576a07 100755
--- a/module/action/view/trash.html.php
+++ b/module/action/view/trash.html.php
@@ -53,7 +53,7 @@
$flow = $config->action->customFlows[$action->objectType];
$module = $flow->module;
}
- if(strpos(',doclib,module,webhook,workflowdatasource,workflowfield,workflowlabel,workflowlayout,workflowrule,', ",{$module},") !== false)
+ if(strpos(',doclib,module,webhook,', ",{$module},") !== false)
{
echo $action->objectName;
}
diff --git a/module/admin/css/safe.css b/module/admin/css/safe.css
deleted file mode 100644
index 940f4e5493..0000000000
--- a/module/admin/css/safe.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.thWidth{width:300px !important;}
-html[lang^='zh-'] .thWidth{width:130px !important;}
diff --git a/module/admin/css/safe.en.css b/module/admin/css/safe.en.css
new file mode 100644
index 0000000000..968bede65b
--- /dev/null
+++ b/module/admin/css/safe.en.css
@@ -0,0 +1 @@
+.thWidth{width:300px !important;}
diff --git a/module/admin/css/safe.zh-cn.css b/module/admin/css/safe.zh-cn.css
new file mode 100644
index 0000000000..82442a3745
--- /dev/null
+++ b/module/admin/css/safe.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:130px !important;}
diff --git a/module/admin/css/safe.zh-tw.css b/module/admin/css/safe.zh-tw.css
new file mode 100644
index 0000000000..82442a3745
--- /dev/null
+++ b/module/admin/css/safe.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:130px !important;}
diff --git a/module/backup/css/index.css b/module/backup/css/index.css
deleted file mode 100644
index e399fae36d..0000000000
--- a/module/backup/css/index.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.actionWidth{width:140px !important;}
-html[lang^='zh-'] .actionWidth{width:110px !important;}
diff --git a/module/backup/css/index.en.css b/module/backup/css/index.en.css
new file mode 100644
index 0000000000..e38ab72482
--- /dev/null
+++ b/module/backup/css/index.en.css
@@ -0,0 +1 @@
+.actionWidth{width:140px !important;}
diff --git a/module/backup/css/index.zh-cn.css b/module/backup/css/index.zh-cn.css
new file mode 100644
index 0000000000..451eb8c96e
--- /dev/null
+++ b/module/backup/css/index.zh-cn.css
@@ -0,0 +1 @@
+.actionWidth{width:110px !important;}
diff --git a/module/backup/css/index.zh-tw.css b/module/backup/css/index.zh-tw.css
new file mode 100644
index 0000000000..451eb8c96e
--- /dev/null
+++ b/module/backup/css/index.zh-tw.css
@@ -0,0 +1 @@
+.actionWidth{width:110px !important;}
diff --git a/module/bug/css/create.css b/module/bug/css/create.css
index f1e616083b..f006a70179 100644
--- a/module/bug/css/create.css
+++ b/module/bug/css/create.css
@@ -38,6 +38,7 @@ html[lang='en'] #deadlineTd .input-group-addon{padding: 5px 18px}
.title-group #severity + .chosen-container > .chosen-single {border-radius: 0!important;}
.title-group #pri + .chosen-container > .chosen-single {border-top-left-radius: 0!important; border-bottom-left-radius: 0!important;}
.title-group .has-icon-right{min-width:700px}
+#mainContent .center-block{padding-bottom:40px;}
#typeBox {width:180px;}
#osBox {width:190px;}
diff --git a/module/bug/css/edit.css b/module/bug/css/edit.css
index ddb55edfd8..581c88c64e 100644
--- a/module/bug/css/edit.css
+++ b/module/bug/css/edit.css
@@ -4,6 +4,3 @@
.col-side .chosen-container[id^="resolvedBuild"] {width: 172px!important}
.chosen-choices li.search-choice{word-break: break-all;}
#linkBugBox > li {margin-left:-56px}
-
-.thWidth{width:100px !important;}
-html[lang^='zh-'] .thWidth{width:80px !important;}
diff --git a/module/bug/css/edit.en.css b/module/bug/css/edit.en.css
new file mode 100644
index 0000000000..b0e274a3db
--- /dev/null
+++ b/module/bug/css/edit.en.css
@@ -0,0 +1 @@
+.thWidth{width:100px !important;}
diff --git a/module/bug/css/edit.zh-cn.css b/module/bug/css/edit.zh-cn.css
new file mode 100644
index 0000000000..585844a6f4
--- /dev/null
+++ b/module/bug/css/edit.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:80px !important;}
diff --git a/module/bug/css/edit.zh-tw.css b/module/bug/css/edit.zh-tw.css
new file mode 100644
index 0000000000..585844a6f4
--- /dev/null
+++ b/module/bug/css/edit.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:80px !important;}
diff --git a/module/bug/css/resolve.css b/module/bug/css/resolve.css
index eafaa6152e..097655b0a0 100644
--- a/module/bug/css/resolve.css
+++ b/module/bug/css/resolve.css
@@ -1,4 +1 @@
.chosen-container[id^="buildProject"] {max-width: 160px; border-radius: 0}
-
-.thWidth{width:130px !important;}
-html[lang^='zh-'] .thWidth{width:100px !important;}
diff --git a/module/bug/css/resolve.en.css b/module/bug/css/resolve.en.css
new file mode 100644
index 0000000000..82442a3745
--- /dev/null
+++ b/module/bug/css/resolve.en.css
@@ -0,0 +1 @@
+.thWidth{width:130px !important;}
diff --git a/module/bug/css/resolve.zh-cn.css b/module/bug/css/resolve.zh-cn.css
new file mode 100644
index 0000000000..b0e274a3db
--- /dev/null
+++ b/module/bug/css/resolve.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:100px !important;}
diff --git a/module/bug/css/resolve.zh-tw.css b/module/bug/css/resolve.zh-tw.css
new file mode 100644
index 0000000000..b0e274a3db
--- /dev/null
+++ b/module/bug/css/resolve.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:100px !important;}
diff --git a/module/bug/css/view.css b/module/bug/css/view.css
index 065bf82cc4..f426ccc058 100644
--- a/module/bug/css/view.css
+++ b/module/bug/css/view.css
@@ -3,8 +3,3 @@
.table-data tr > td{word-break: break-all; word-wrap: break-word;}
.side-col .cell{padding:0px;}
.tab-pane table {border: 1px solid #ddd; border-top: none;}
-
-#legendBasicInfo .thWidth{width:110px !important;}
-#legendLife .thWidth{width:100px !important;}
-html[lang^='zh-'] #legendBasicInfo .thWidth{width:70px !important;}
-html[lang^='zh-'] #legendLife .thWidth{width:90px !important;}
diff --git a/module/bug/css/view.en.css b/module/bug/css/view.en.css
new file mode 100644
index 0000000000..a12586a55b
--- /dev/null
+++ b/module/bug/css/view.en.css
@@ -0,0 +1,2 @@
+#legendBasicInfo .thWidth{width:110px !important;}
+#legendLife .thWidth{width:100px !important;}
diff --git a/module/bug/css/view.zh-cn.css b/module/bug/css/view.zh-cn.css
new file mode 100644
index 0000000000..ae536dd36e
--- /dev/null
+++ b/module/bug/css/view.zh-cn.css
@@ -0,0 +1,2 @@
+#legendBasicInfo .thWidth{width:70px !important;}
+#legendLife .thWidth{width:90px !important;}
diff --git a/module/bug/css/view.zh-tw.css b/module/bug/css/view.zh-tw.css
new file mode 100644
index 0000000000..ae536dd36e
--- /dev/null
+++ b/module/bug/css/view.zh-tw.css
@@ -0,0 +1,2 @@
+#legendBasicInfo .thWidth{width:70px !important;}
+#legendLife .thWidth{width:90px !important;}
diff --git a/module/company/css/edit.css b/module/company/css/edit.css
deleted file mode 100644
index be70b5a9c2..0000000000
--- a/module/company/css/edit.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.thWidth{width:120px !important;}
-html[lang^='zh-'] .thWidth{width:80px !important;}
diff --git a/module/company/css/edit.en.css b/module/company/css/edit.en.css
new file mode 100644
index 0000000000..62f3e6f10c
--- /dev/null
+++ b/module/company/css/edit.en.css
@@ -0,0 +1 @@
+.thWidth{width:120px !important;}
diff --git a/module/company/css/edit.zh-cn.css b/module/company/css/edit.zh-cn.css
new file mode 100644
index 0000000000..585844a6f4
--- /dev/null
+++ b/module/company/css/edit.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:80px !important;}
diff --git a/module/company/css/edit.zh-tw.css b/module/company/css/edit.zh-tw.css
new file mode 100644
index 0000000000..585844a6f4
--- /dev/null
+++ b/module/company/css/edit.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:80px !important;}
diff --git a/module/custom/css/required.css b/module/custom/css/required.css
deleted file mode 100644
index 9c5f944bf1..0000000000
--- a/module/custom/css/required.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.thWidth{width:250px !important;}
-html[lang^='zh-'] .thWidth{width:120px !important;}
diff --git a/module/custom/css/required.en.css b/module/custom/css/required.en.css
new file mode 100644
index 0000000000..3f91eb211b
--- /dev/null
+++ b/module/custom/css/required.en.css
@@ -0,0 +1 @@
+.thWidth{width:250px !important;}
diff --git a/module/custom/css/required.zh-cn.css b/module/custom/css/required.zh-cn.css
new file mode 100644
index 0000000000..62f3e6f10c
--- /dev/null
+++ b/module/custom/css/required.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:120px !important;}
diff --git a/module/custom/css/required.zh-tw.css b/module/custom/css/required.zh-tw.css
new file mode 100644
index 0000000000..62f3e6f10c
--- /dev/null
+++ b/module/custom/css/required.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:120px !important;}
diff --git a/module/custom/css/set.css b/module/custom/css/set.css
deleted file mode 100644
index b7f3c09196..0000000000
--- a/module/custom/css/set.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.thWidth{width:140px !important;}
-html[lang^='zh-'] .thWidth{width:80px !important;}
diff --git a/module/custom/css/set.en.css b/module/custom/css/set.en.css
new file mode 100644
index 0000000000..ba5d77e51b
--- /dev/null
+++ b/module/custom/css/set.en.css
@@ -0,0 +1 @@
+.thWidth{width:140px !important;}
diff --git a/module/custom/css/set.zh-cn.css b/module/custom/css/set.zh-cn.css
new file mode 100644
index 0000000000..585844a6f4
--- /dev/null
+++ b/module/custom/css/set.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:80px !important;}
diff --git a/module/custom/css/set.zh-tw.css b/module/custom/css/set.zh-tw.css
new file mode 100644
index 0000000000..585844a6f4
--- /dev/null
+++ b/module/custom/css/set.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:80px !important;}
diff --git a/module/dept/css/edit.css b/module/dept/css/edit.css
deleted file mode 100644
index ebe41c894d..0000000000
--- a/module/dept/css/edit.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.thWidth{width:130px !important;}
-html[lang^='zh-'] .thWidth{width:80px !important;}
diff --git a/module/dept/css/edit.en.css b/module/dept/css/edit.en.css
new file mode 100644
index 0000000000..82442a3745
--- /dev/null
+++ b/module/dept/css/edit.en.css
@@ -0,0 +1 @@
+.thWidth{width:130px !important;}
diff --git a/module/dept/css/edit.zh-cn.css b/module/dept/css/edit.zh-cn.css
new file mode 100644
index 0000000000..585844a6f4
--- /dev/null
+++ b/module/dept/css/edit.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:80px !important;}
diff --git a/module/dept/css/edit.zh-tw.css b/module/dept/css/edit.zh-tw.css
new file mode 100644
index 0000000000..585844a6f4
--- /dev/null
+++ b/module/dept/css/edit.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:80px !important;}
diff --git a/module/group/css/managepriv.css b/module/group/css/managepriv.css
index c82b07f179..a7d7b2b229 100644
--- a/module/group/css/managepriv.css
+++ b/module/group/css/managepriv.css
@@ -6,6 +6,3 @@
#mainMenu #groupName{line-height:33px; float: left}
.checkbox-right{padding-left:0px !important;}
-
-.thWidth{width:180px !important;}
-html[lang^='zh-'] .thWidth{width:150px !important;}
diff --git a/module/group/css/managepriv.en.css b/module/group/css/managepriv.en.css
new file mode 100644
index 0000000000..3852bbb549
--- /dev/null
+++ b/module/group/css/managepriv.en.css
@@ -0,0 +1 @@
+.thWidth{width:180px !important;}
diff --git a/module/group/css/managepriv.zh-cn.css b/module/group/css/managepriv.zh-cn.css
new file mode 100644
index 0000000000..6ea5450c92
--- /dev/null
+++ b/module/group/css/managepriv.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:150px !important;}
diff --git a/module/group/css/managepriv.zh-tw.css b/module/group/css/managepriv.zh-tw.css
new file mode 100644
index 0000000000..6ea5450c92
--- /dev/null
+++ b/module/group/css/managepriv.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:150px !important;}
diff --git a/module/group/css/manageview.css b/module/group/css/manageview.css
index 6f91b77ee0..acb6d7c648 100644
--- a/module/group/css/manageview.css
+++ b/module/group/css/manageview.css
@@ -4,6 +4,3 @@
.checkbox-primary>label{padding-left:20px;}
.pl-0px {padding-left:0px !important;}
.pt-0px {padding-top:0px !important;}
-
-.thWidth{width:130px !important;}
-html[lang^='zh-'] .thWidth{width:100px !important;}
diff --git a/module/group/css/manageview.en.css b/module/group/css/manageview.en.css
new file mode 100644
index 0000000000..82442a3745
--- /dev/null
+++ b/module/group/css/manageview.en.css
@@ -0,0 +1 @@
+.thWidth{width:130px !important;}
diff --git a/module/group/css/manageview.zh-cn.css b/module/group/css/manageview.zh-cn.css
new file mode 100644
index 0000000000..b0e274a3db
--- /dev/null
+++ b/module/group/css/manageview.zh-cn.css
@@ -0,0 +1 @@
+.thWidth{width:100px !important;}
diff --git a/module/group/css/manageview.zh-tw.css b/module/group/css/manageview.zh-tw.css
new file mode 100644
index 0000000000..b0e274a3db
--- /dev/null
+++ b/module/group/css/manageview.zh-tw.css
@@ -0,0 +1 @@
+.thWidth{width:100px !important;}
diff --git a/module/install/css/index.css b/module/install/css/index.css
index e6ebccd685..2a8bd39a7b 100644
--- a/module/install/css/index.css
+++ b/module/install/css/index.css
@@ -53,7 +53,6 @@ li{line-height: 2em}
.card>.card-reveal>.card-heading{padding:20px 10px}
.card:hover>.card-reveal{top:0}
-.card.ad{margin-bottom:0px;}
.card.ad > .img-wrapper {
background-position: center;
background-repeat: no-repeat;
diff --git a/module/install/lang/en.php b/module/install/lang/en.php
index c3c665ec05..d90fe141be 100644
--- a/module/install/lang/en.php
+++ b/module/install/lang/en.php
@@ -25,15 +25,17 @@ $lang->install->seeLatestRelease = 'View latest version';
$lang->install->welcome = 'Thanks for choosing ZenTao!';
$lang->install->license = 'ZenTao is under Z PUBLIC LICENSE(ZPL) 1.2';
$lang->install->desc = <<
Note: In order to get the latest news of ZenTao, please register in ZenTao(www.zentao.pm).
+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).
EOT; -$lang->install->product = array('chanzhi', 'ranzhi'); +$lang->install->product = array('chanzhi', 'ranzhi', 'ydisk', 'meshiot'); -$lang->install->promotion = "Products also from Nature Easy Soft team:"; -$lang->install->chanzhi = new stdclass(); -$lang->install->chanzhi->name = 'ZSITE Content Management System'; -$lang->install->chanzhi->logo = 'images/main/chanzhi_en.png'; -$lang->install->chanzhi->url = 'http://www.zsite.net'; -$lang->install->chanzhi->desc = <<需要创建目录%s。命令为:
mkdir %s
需要创建目录%s。
命令为:
mkdir -p %s
友情提示:为了您及时获得禅道的最新动态,请在禅道社区(www.zentao.net)进行登记。
EOT; -$lang->install->product = array('chanzhi', 'ranzhi', 'xuanxuan'); +$lang->install->product = array('chanzhi', 'ranzhi', 'xuanxuan', 'ydisk', 'meshiot'); -$lang->install->promotion = "为您推荐易软天创旗下其他产品:"; -$lang->install->chanzhi = new stdclass(); -$lang->install->chanzhi->name = '蝉知企业门户系统'; -$lang->install->chanzhi->logo = 'images/main/chanzhi.png'; -$lang->install->chanzhi->url = 'http://www.chanzhi.org'; -$lang->install->chanzhi->desc = <<