- ' . $lang->goback, '', "class='btn btn-secondary'");?>
+ ' . $lang->goback, '', "btn btn-secondary");?>
@@ -92,7 +91,7 @@
?>
-
-
+ ' . $lang->goback, "id='back' title='{$lang->goback}{$lang->backShortcutKey}'", 'btn');?>
deleted):?>
bug->buildOperateMenu($bug, 'view');?>
diff --git a/module/build/control.php b/module/build/control.php
index 8dc4494c0e..8e7e735d29 100644
--- a/module/build/control.php
+++ b/module/build/control.php
@@ -183,7 +183,8 @@ class build extends control
$builds = $this->build->getBuildPairs($build->product, 'all', 'noempty,notrunk,singled,separate', $build->project, 'project', $build->builds, false);
}
- $executions = $this->product->getExecutionPairsByProduct($build->product, $build->branch, 'id_desc', $this->session->project, 'stagefilter');
+ $executions = $this->product->getExecutionPairsByProduct($build->product, $build->branch, 'id_desc', $this->session->project, 'stagefilter');
+ $executionType = $build->execution ? $this->execution->getByID($build->execution) : '';
if($build->execution and !isset($executions[$build->execution])) $executions[$build->execution] = $this->loadModel('execution')->getById($build->execution)->name;
/* Get stories and bugs. */
@@ -218,6 +219,7 @@ class build extends control
$this->view->orderBy = $orderBy;
$this->view->oldBranch = $oldBranch;
$this->view->executions = $executions;
+ $this->view->executionType = (!empty($executionType) and $executionType->type == 'stage') ? 1 : 0;
$this->view->productGroups = $productGroups;
$this->view->products = $products;
$this->view->users = $this->loadModel('user')->getPairs('noletter', $build->builder);
@@ -302,7 +304,8 @@ class build extends control
$objectID = $build->execution;
}
- $executions = $this->loadModel('execution')->getPairs($this->session->project, 'all', 'empty');
+ $executions = $this->loadModel('execution')->getPairs($this->session->project, 'all', 'empty');
+ $executionType = $build->execution ? $this->execution->getByID($build->execution) : '';
$this->commonActions($build->project);
@@ -329,19 +332,20 @@ class build extends control
/* Assign. */
$this->view->canBeChanged = common::canBeChanged('build', $build); // Determines whether an object is editable.
$this->view->users = $this->loadModel('user')->getPairs('noletter');
- $this->view->build = $build;
- $this->view->buildPairs = $this->build->getBuildPairs(0, 'all', 'noempty,notrunk', $objectID, $objectType);
- $this->view->builds = $this->build->getByList(array_keys($this->view->buildPairs));
- $this->view->executions = $executions;
- $this->view->actions = $this->loadModel('action')->getList('build', $buildID);
- $this->view->link = $link;
- $this->view->param = $param;
- $this->view->orderBy = $orderBy;
- $this->view->bugs = $bugs;
- $this->view->type = $type;
- $this->view->bugPager = $bugPager;
- $this->view->branchName = empty($branchName) ? $this->lang->branch->main : $branchName;
- $this->view->childBuilds = empty($build->builds) ? array() : $this->dao->select('id,name,bugs,stories')->from(TABLE_BUILD)->where('id')->in($build->builds)->fetchAll();
+ $this->view->build = $build;
+ $this->view->buildPairs = $this->build->getBuildPairs(0, 'all', 'noempty,notrunk', $objectID, $objectType);
+ $this->view->builds = $this->build->getByList(array_keys($this->view->buildPairs));
+ $this->view->executions = $executions;
+ $this->view->actions = $this->loadModel('action')->getList('build', $buildID);
+ $this->view->link = $link;
+ $this->view->param = $param;
+ $this->view->orderBy = $orderBy;
+ $this->view->bugs = $bugs;
+ $this->view->type = $type;
+ $this->view->bugPager = $bugPager;
+ $this->view->branchName = empty($branchName) ? $this->lang->branch->main : $branchName;
+ $this->view->childBuilds = empty($build->builds) ? array() : $this->dao->select('id,name,bugs,stories')->from(TABLE_BUILD)->where('id')->in($build->builds)->fetchAll();
+ $this->view->executionType = (!empty($executionType) and $executionType->type == 'stage') ? 1 : 0;
if($this->app->getViewType() == 'json')
{
diff --git a/module/build/js/common.js b/module/build/js/common.js
index 8f0538b32f..1ab62a3d81 100644
--- a/module/build/js/common.js
+++ b/module/build/js/common.js
@@ -20,8 +20,7 @@ function loadBranches(productID)
oldBranch = productGroups[productID]['branches'];
}
- projectID = currentTab == 'execution' ? executionID : projectID;
- $.get(createLink('branch', 'ajaxGetBranches', 'productID=' + productID + '&oldBranch=0¶m=active&projectID=' + projectID + '&withMainBranch=true&isSiblings=no&fieldID=0&multiple=multiple'), function(data)
+ $.get(createLink('branch', 'ajaxGetBranches', 'productID=' + productID + '&oldBranch=0¶m=active&projectID=' + $('#execution').val() + '&withMainBranch=true&isSiblings=no&fieldID=0&multiple=multiple'), function(data)
{
if(data)
{
diff --git a/module/build/lang/de.php b/module/build/lang/de.php
index 658b48f285..17b15639f3 100644
--- a/module/build/lang/de.php
+++ b/module/build/lang/de.php
@@ -34,6 +34,7 @@ $lang->build->branch = 'Platform/Branch';
$lang->build->branchAll = 'All associated %s';
$lang->build->branchName = '%s';
$lang->build->execution = $lang->executionCommon;
+$lang->build->executionAB = 'execution';
$lang->build->integrated = 'Integrated';
$lang->build->singled = 'Singled';
$lang->build->builds = 'Included Builds';
diff --git a/module/build/lang/en.php b/module/build/lang/en.php
index c877b2bf25..f97e216c23 100644
--- a/module/build/lang/en.php
+++ b/module/build/lang/en.php
@@ -34,6 +34,7 @@ $lang->build->branch = 'Platform/Branch';
$lang->build->branchAll = 'All associated %s';
$lang->build->branchName = '%s';
$lang->build->execution = $lang->executionCommon;
+$lang->build->executionAB = 'execution';
$lang->build->integrated = 'Integrated';
$lang->build->singled = 'Singled';
$lang->build->builds = 'Included Builds';
diff --git a/module/build/lang/fr.php b/module/build/lang/fr.php
index 33f4168700..3fc321540b 100644
--- a/module/build/lang/fr.php
+++ b/module/build/lang/fr.php
@@ -34,6 +34,7 @@ $lang->build->branch = 'Plateforme/Branche';
$lang->build->branchAll = 'All associated %s';
$lang->build->branchName = '%s';
$lang->build->execution = $lang->executionCommon;
+$lang->build->executionAB = 'execution';
$lang->build->integrated = 'Integrated';
$lang->build->singled = 'Singled';
$lang->build->builds = 'Included Builds';
diff --git a/module/build/lang/zh-cn.php b/module/build/lang/zh-cn.php
index a8c80bbd5b..4ef08ed9c5 100644
--- a/module/build/lang/zh-cn.php
+++ b/module/build/lang/zh-cn.php
@@ -34,6 +34,7 @@ $lang->build->branch = '平台/分支';
$lang->build->branchAll = '所有关联%s';
$lang->build->branchName = '所属%s';
$lang->build->execution = '所属' . $lang->executionCommon;
+$lang->build->executionAB = '所属执行';
$lang->build->integrated = '集成版本';
$lang->build->singled = '单一版本';
$lang->build->builds = '包含版本';
diff --git a/module/build/model.php b/module/build/model.php
index 9781b36b30..bede74d1e4 100644
--- a/module/build/model.php
+++ b/module/build/model.php
@@ -256,10 +256,11 @@ class buildModel extends model
->beginIF(strpos($params, 'hasdeleted') === false)->andWhere('deleted')->eq(0)->fi()
->fetchPairs();
}
+ $branchPairs = $this->dao->select('id,name')->from(TABLE_BRANCH)->fetchPairs();
$shadows = $this->dao->select('shadow')->from(TABLE_RELEASE)->where('product')->in($products)->fetchPairs('shadow', 'shadow');
$branchs = strpos($params, 'separate') === false ? "0,$branch" : $branch;
- $allBuilds = $this->dao->select('t1.id, t1.name, t1.execution, t1.date, t1.deleted, t2.status as objectStatus, t3.id as releaseID, t3.status as releaseStatus, t4.name as branchName, t5.type as productType')->from(TABLE_BUILD)->alias('t1')
+ $allBuilds = $this->dao->select('t1.id, t1.name, t1.branch, t1.execution, t1.date, t1.deleted, t2.status as objectStatus, t3.id as releaseID, t3.status as releaseStatus, t5.type as productType')->from(TABLE_BUILD)->alias('t1')
->beginIF($objectType === 'execution')->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution = t2.id')->fi()
->beginIF($objectType === 'project')->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')->fi()
->leftJoin(TABLE_RELEASE)->alias('t3')->on("FIND_IN_SET(t1.id,t3.build)")
@@ -289,7 +290,29 @@ class buildModel extends model
if((strpos($params, 'withexecution') !== false) and $build->execution and isset($executions[$build->execution])) continue;
if($build->deleted == 1) $build->name .= ' (' . $this->lang->build->deleted . ')';
- $branchName = $build->branchName ? $build->branchName : $this->lang->branch->main;
+
+ if(!empty($build->branch))
+ {
+ $branchName = '';
+ foreach(explode(',', $build->branch) as $buildBranch)
+ {
+ if(empty($buildBranch))
+ {
+ $branchName .= $this->lang->branch->main;
+ }
+ else
+ {
+ $branchName .= isset($branchPairs[$buildBranch]) ? $branchPairs[$buildBranch] : '';
+ }
+ $branchName .= ',';
+ }
+
+ $branchName = trim($branchName, ',');
+ }
+ else
+ {
+ $branchName = $this->lang->branch->main;
+ }
$buildName = $build->name;
if(strpos($params, 'withbranch') !== false and $build->productType != 'normal') $buildName = $branchName . '/' . $buildName;
diff --git a/module/build/view/edit.html.php b/module/build/view/edit.html.php
index fdaa8edaa1..59945e5179 100644
--- a/module/build/view/edit.html.php
+++ b/module/build/view/edit.html.php
@@ -64,7 +64,7 @@
- build->execution;?>
+ build->executionAB : $lang->build->execution;?>
execution, "class='form-control chosen' required $disabled");?>
build->notice->changeExecution;?>
diff --git a/module/build/view/view.html.php b/module/build/view/view.html.php
index 47cb7cf6ce..ef74659025 100644
--- a/module/build/view/view.html.php
+++ b/module/build/view/view.html.php
@@ -384,7 +384,7 @@ tbody tr td:first-child input {display: none;}
execution):?>
- build->project : $lang->build->execution;?>
+ build->project :($executionType ? $lang->build->executionAB : $lang->build->execution);?>
execution);?>
diff --git a/module/common/view/kindeditor.html.php b/module/common/view/kindeditor.html.php
index ad7cf7631b..74626a21db 100755
--- a/module/common/view/kindeditor.html.php
+++ b/module/common/view/kindeditor.html.php
@@ -15,6 +15,11 @@ $editorLang = isset($editorLangs[$app->getClientLang()]) ? $editorLangs[$app->
/* set uid for upload. */
$uid = uniqid('');
?>
+
diff --git a/module/story/view/header.html.php b/module/story/view/header.html.php
index 8339e13792..6b6835039c 100644
--- a/module/story/view/header.html.php
+++ b/module/story/view/header.html.php
@@ -105,6 +105,7 @@ function loadProductBranches(productID)
$('.switchBranch').toggleClass('hidden');
$('.switchBranch').toggleClass('disable');
}
+ $('#storyNoticeBranch').closest('tr').addClass('hidden');
originProductType = newProductType;
$('tr[class^="addBranchesBox"]').remove();
@@ -215,7 +216,7 @@ function loadProductPlans(productID, branch)
var param = rawMethod == 'edit' ? 'skipParent|forStory' : 'skipParent';
var expired = config.currentMethod == 'create' ? 'unexpired' : '';
- var planLink = createLink('product', 'ajaxGetPlans', 'productID=' + productID + '&branch=' + branch + '&planID=' + $('#plan').val() + '&fieldID=&needCreate=true&expired='+ expired +'¶m=skipParent|forStory|' + config.currentMethod);
+ var planLink = createLink('product', 'ajaxGetPlans', 'productID=' + productID + '&branch=' + branch + '&planID=' + $('#plan').val() + '&fieldID=&needCreate=true&expired='+ expired +'¶m=skipParent,forStory,' + config.currentMethod);
var $planIdBox = rawMethod == 'create' ? $('.switchBranch #planIdBox') : $('#planIdBox');
$planIdBox.load(planLink, function()
diff --git a/module/task/model.php b/module/task/model.php
index fda347277f..80ea8832d6 100755
--- a/module/task/model.php
+++ b/module/task/model.php
@@ -2644,7 +2644,7 @@ class taskModel extends model
->beginIF($type == 'assignedTo' and $this->app->rawModule == 'my' and $this->app->rawMethod == 'work')->andWhere('t1.status')->notin('closed,cancel,pause')->fi()
->orderBy($orderBy)
->beginIF($limit > 0)->limit($limit)->fi()
- ->page($pager)
+ ->page($pager, 't1.id')
->fetchAll('id');
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'task', false);
diff --git a/module/task/view/create.html.php b/module/task/view/create.html.php
index a3fb8a3d31..12bf041b08 100644
--- a/module/task/view/create.html.php
+++ b/module/task/view/create.html.php
@@ -78,8 +78,8 @@ foreach(explode(',', $config->task->create->requiredFields) as $field)
task->team;?>
-
+
+ 0&&(s+="/"+a.join("/")),"/"==i&&(s+="/"),s+e.substr(t.length)}if(l=/^(.*)\//.exec(t))return o(l[1],++n)}if("#"===e[0])return e;if(t=_undef(t,"").toLowerCase(),"data:"!=e.substr(0,5)&&(e=e.replace(/([^:])\/\//g,"$1/")),_inArray(t,["absolute","relative","domain"])<0)return e;if(n=n||location.protocol+"//"+location.host,i===undefined){var r=location.pathname.match(/^(\/.*)\//);i=r?r[1]:""}var l;if(l=/^(\w+:\/\/[^\/]*)/.exec(e)){if(l[1]!==n)return e}else if(/^\w+:/.test(e))return e;return/^\//.test(e)?e=n+a(e.substr(1)):/^\w+:\/\//.test(e)||(e=n+a(i+"/"+e)),"relative"===t?e=o(n+i,0).substr(2):"absolute"===t&&e.substr(0,n.length)===n&&(e=e.substr(n.length)),e}function _formatHtml(e,t,n,i,a,o){null==e&&(e=""),n=n||"",i=_undef(i,!1),a=_undef(a,"\t");var r="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");e=e.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(e,t,n,i){return t+n.replace(/<(?:br|br\s[^>]*)>/gi,"\n")+i}),e=e.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/gi,""),e=e.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/gi,"$1
$2"),e=e.replace(/\u200B/g,""),e=e.replace(/\u00A9/g,"©"),e=e.replace(/<[^>]+>/g,function(e){return e.replace(/\s+/g," ")});var l={};t&&(_each(t,function(e,t){for(var n=e.split(","),i=0,a=n.length;i]*)>)([\s\S]*?)(<\/script>)/gi,"")),l.style||(e=e.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi,"")));var s=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g,d=[],c=null;return e=e.replace(s,function(e,s,u,p,h,f,m){var g=e,v=s||"",_=u||"",b=p.toLowerCase(),y=h||"",k=f?" "+f:"",w=m||"";if(t&&!l[b])return"";if(""===k&&_SINGLE_TAG_MAP[b]&&(k=" /"),_INLINE_TAG_MAP[b]&&(v&&(v=" "),w&&(w=" ")),_PRE_TAG_MAP[b]&&(_?w="\n":v="\n"),!i||"br"!=b&&"hr"!==b||o&&c!==!0||(w="\n"),_BLOCK_TAG_MAP[b]&&!_PRE_TAG_MAP[b])if(i){var C=!!(_&&d.length>0&&d[d.length-1]===b);if(C?(d.pop(),o&&(v="",w="\n")):(d.push(b),o&&(v="\n",w="")),o||(v="\n",w="\n"),!o||c===!1&&!C||c===!0)for(var S=0,x=_?d.length:d.length-1;S=0&&(E[e]=_formatUrl(i,n)),(t&&"style"!==e&&!l[b]["*"]&&!l[b][e]||"body"===b&&"contenteditable"===e||/^kindeditor_\d+$/.test(e))&&delete E[e],"style"===e&&""!==i)){var a=_getCssList(i);_each(a,function(e,n){!t||l[b].style||l[b]["."+e]||delete a[e]});var o="";_each(a,function(e,t){o+=e+":"+t+";"}),E.style=o}}),y="",_each(E,function(e,t){if(t!==!1&&("style"!==e||""!==t)){if(t===!0)return void(y+=" "+e);t=t.replace(/"/g,"""),y+=" "+e+'="'+t+'"'}})}return"font"===b&&(b="span"),v+"<"+_+b+y+k+">"+w}),e=e.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(e,t,n,i){return t+n.replace(/\n/g,'\n')+i}),e=e.replace(/\n\s*\n/g,"\n"),e=e.replace(/\n/g,"\n"),_trim(e)}function _clearMsWord(e,t){return e=e.replace(//gi,"").replace(//gi,"").replace(/"];return _isArray(n)||(n=[n]),_each(n,function(e,t){t&&a.push('')}),i&&a.push(""),a.push("
'>
task->modeList, !empty($task->mode) ? $task->mode: 'linear');?>
diff --git a/module/testcase/js/common.js b/module/testcase/js/common.js
index f08c4ac4d7..1f125519b9 100644
--- a/module/testcase/js/common.js
+++ b/module/testcase/js/common.js
@@ -138,7 +138,7 @@ function setStories()
var value = $('#story').val();
if(!stories) stories = '';
$('#story').replaceWith(stories);
- $('#story').val(value);
+ $('#story').val(value).attr('onchange', 'setPreview()');
$('#story_chosen').remove();
$('#story').next('.picker').remove();
$("#story").picker();
diff --git a/module/transfer/model.php b/module/transfer/model.php
index f9374a6bb8..c9172785c8 100644
--- a/module/transfer/model.php
+++ b/module/transfer/model.php
@@ -37,7 +37,7 @@ class transferModel extends model
}
/**
- * Commom Actions.
+ * Common Actions.
*
* @param int $model
* @access public
diff --git a/module/tree/control.php b/module/tree/control.php
index dc5c7d5285..1f5739dcaa 100644
--- a/module/tree/control.php
+++ b/module/tree/control.php
@@ -390,7 +390,7 @@ class tree extends control
}
else
{
- $this->view->optionMenu = $this->tree->getOptionMenu($module->root, $module->type, 0, $module->branch, 'noMainBranch');
+ $this->view->optionMenu = $this->tree->getOptionMenu($module->root, $module->type, 0, $module->branch, 'noMainBranch|nodeleted');
}
if($type == 'doc') $this->view->libs = $this->loadModel('doc')->getLibs('all', $extra = 'withObject', '', 0, 'book');
@@ -567,7 +567,7 @@ class tree extends control
$currentModuleID = (isset($currentModule->branch) and $currentModule->branch == 0) ? $currentModuleID : 0;
$output = html::select("$field", $optionMenu, $currentModuleID, "class='form-control' $changeFunc");
- if(count($optionMenu) == 1 and $needManage !== 'false')
+ if(count($optionMenu) == 1 and $needManage !== 'false' and $viewType != 'task')
{
$output .= "";
$output .= html::a($this->createLink('tree', 'browse', "rootID=$rootID&view=$viewType¤tModuleID=0&branch=$branch", '', true), $this->lang->tree->manage, '', "class='text-primary' data-toggle='modal' data-type='iframe' data-width='95%'");
diff --git a/module/tree/model.php b/module/tree/model.php
index 8b4da78ff1..010649a2d9 100644
--- a/module/tree/model.php
+++ b/module/tree/model.php
@@ -92,11 +92,14 @@ class treeModel extends model
->beginIF($type == 'task')->andWhere('type')->eq('task')->fi()
->beginIF($type != 'task')->andWhere('type')->in("story,$type")->fi()
->beginIF($startModulePath)->andWhere('path')->like($startModulePath)->fi()
- ->beginIF($branch !== 'all' and $branch !== '' and $branch !== false)
+ ->beginIF($branch !== 'all' and $branch !== '' and $branch !== false and strpos($param, 'noMainBranch') === false)
->andWhere("(branch")->eq(0)
->orWhere('branch')->eq($branch)
->markRight(1)
->fi()
+ ->beginIF($branch !== 'all' and $branch !== '' and $branch !== false and strpos($param, 'noMainBranch') !== false)
+ ->andWhere('branch')->eq($branch)
+ ->fi()
->beginIF(strpos($param, 'nodeleted') !== false)->andWhere('deleted')->eq(0)->fi()
->orderBy('grade desc, `order`, type desc')
->get();
@@ -178,7 +181,7 @@ class treeModel extends model
$treeMenu = array();
foreach($branches as $branchID => $branch)
- {
+ {
$stmt = $this->dbh->query($this->buildMenuQuery($rootID, $type, $startModule, $branchID, $param));
$modules = array();
while($module = $stmt->fetch())
diff --git a/module/tree/view/edit.html.php b/module/tree/view/edit.html.php
index 09e8713b54..7b014e9ed7 100644
--- a/module/tree/view/edit.html.php
+++ b/module/tree/view/edit.html.php
@@ -189,7 +189,7 @@ function loadModules(branch)
if(typeof(branchID) == 'undefined') branchID = 0;
if(typeof(moduleID) == 'undefined') moduleID = 0;
- link = createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=story&branch=' + branchID + '&rootModuleID=0&returnType=html&fieldID=&needManage=true&extra=excludeModuleID=' + id;?> + ',noMainBranch¤tModuleID=' + moduleID);
+ link = createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=' + type + '&branch=' + branchID + '&rootModuleID=0&returnType=html&fieldID=&needManage=true&extra=excludeModuleID=' + id;?> + ',noMainBranch,nodeleted¤tModuleID=' + moduleID);
$(moduleBox).load(link, function()
{
$(this).children('select').attr('id', 'parent').attr('name', 'parent');
diff --git a/module/upgrade/config.php b/module/upgrade/config.php
index 4d05a2c9cd..850894ba74 100644
--- a/module/upgrade/config.php
+++ b/module/upgrade/config.php
@@ -396,7 +396,7 @@ $config->delete['17_8'][] = 'extension/max/common/ext/lang/vi/crystal.php';
$config->delete['18_0'][] = 'extension/max/custom/ext/view/mode.zentaomax.html.hook.php';
$config->delete['18_0'][] = 'extension/max/my/ext/view/audit.html.php';
-$config->upgrade->openModules = array('action', 'admin', 'api', 'automation', 'backup', 'block', 'branch', 'budget', 'bug', 'build', 'caselib', 'ci', 'client', 'common', 'company', 'compile', 'convert', 'cron', 'custom', 'datatable', 'dept', 'design', 'dev', 'doc', 'durationestimation', 'entry', 'execution', 'extension', 'file', 'git', 'gitlab', 'group', 'holiday', 'im', 'index', 'index.html', 'install', 'issue', 'jenkins', 'job', 'kanban', 'license', 'mail', 'message', 'misc', 'mr', 'my', 'personnel', 'pipeline', 'product', 'productplan', 'productset', 'program', 'programplan', 'project', 'projectbuild', 'projectplan', 'projectrelease', 'projectstory', 'qa', 'release', 'repo', 'report', 'risk', 'score', 'search', 'setting', 'sonarqube', 'sso', 'stage', 'stakeholder', 'story', 'subject', 'svn', 'task', 'testcase', 'testreport', 'testsuite', 'testtask', 'todo', 'tree', 'tutorial', 'upgrade', 'user', 'webhook', 'weekly', 'workestimation', 'gitea', 'gogs', 'transfer', 'port', 'zahost');
+$config->upgrade->openModules = array('action', 'admin', 'api', 'automation', 'backup', 'block', 'branch', 'budget', 'bug', 'build', 'caselib', 'ci', 'client', 'common', 'company', 'compile', 'convert', 'cron', 'custom', 'datatable', 'dept', 'design', 'dev', 'doc', 'durationestimation', 'entry', 'execution', 'extension', 'file', 'git', 'gitlab', 'group', 'holiday', 'im', 'index', 'index.html', 'install', 'issue', 'jenkins', 'job', 'kanban', 'license', 'mail', 'message', 'misc', 'mr', 'my', 'personnel', 'pipeline', 'product', 'productplan', 'productset', 'program', 'programplan', 'project', 'projectbuild', 'projectplan', 'projectrelease', 'projectstory', 'qa', 'release', 'repo', 'report', 'risk', 'score', 'search', 'setting', 'sonarqube', 'sso', 'stage', 'stakeholder', 'story', 'subject', 'svn', 'task', 'testcase', 'testreport', 'testsuite', 'testtask', 'todo', 'tree', 'tutorial', 'upgrade', 'user', 'webhook', 'weekly', 'workestimation', 'gitea', 'gogs', 'transfer', 'port', 'zahost', 'zanode');
$config->upgrade->unsetModules = array('design', 'program', 'programplan', 'projectbuild', 'projectrelease', 'stage', 'stakeholder', 'product', 'branch', 'productplan', 'release', 'build', 'qa', 'bug', 'testcase', 'testtask', 'testreport', 'testsuite', 'caselib', 'automation', 'repo', 'ci', 'compile', 'jenkins', 'job', 'svn', 'gitlab', 'sonarqube', 'mr', 'git', 'report', 'sqlbuilder', 'feedback', 'faq', 'attend', 'holiday', 'leave', 'makeup', 'overtime', 'lieu', 'ops', 'host', 'serverroom', 'account', 'domain', 'service', 'deploy', 'conference', 'traincourse', 'pssp', 'baseline', 'classify', 'cm', 'cmcl', 'auditcl', 'reviewcl', 'process', 'activity', 'zoutput', 'auditplan', 'nc', 'subject', 'weekly', 'workestimation', 'issue', 'durationestimation', 'risk', 'opportunity', 'trainplan', 'gapanalysis', 'researchplan', 'researchreport', 'meeting', 'meetingroom', 'budget', 'reviewissue', 'reviewsetting', 'review', 'milestone', 'measurement', 'measrecord', 'assetlib', 'setting', 'im', 'client', 'ldap', 'dev', 'api', 'gitea', 'gogs', 'zanode', 'zahost');
diff --git a/www/index.php b/www/index.php
index 515de9159e..663fcbf618 100644
--- a/www/index.php
+++ b/www/index.php
@@ -38,7 +38,7 @@ if(!isset($config->installed) or !$config->installed) die(header('location: inst
/* Check for need upgrade. */
$config->installedVersion = $app->getInstalledVersion();
-if($config->version != $config->installedVersion && file_exists('upgrade.php')) die(header('location: upgrade.php'));
+if($config->version != $config->installedVersion) die(header('location: upgrade.php'));
/* Run the app. */
$common = $app->loadCommon();
diff --git a/www/js/kindeditor/kindeditor.css b/www/js/kindeditor/kindeditor.css
index c384ed498a..6488cfc134 100644
--- a/www/js/kindeditor/kindeditor.css
+++ b/www/js/kindeditor/kindeditor.css
@@ -277,10 +277,10 @@
border-radius: 2px;
}
.ke-container.focus {
- border-color: #0c64eb;
+ border-color: #2e7fff;
outline: 0;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(12, 100, 235, .6);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(12, 100, 235, .6);
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(46, 127, 255, .6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(46, 127, 255, .6);
}
.ke-container.ke-loading > .ke-toolbar,
.ke-container.ke-loading > .ke-edit,
@@ -327,7 +327,7 @@
.ke-toolbar .ke-on,
.ke-toolbar .ke-selected {
filter: alpha(opacity=100);
- border-color: #cbd0db;
+ border-color: #c4c4c4;
opacity: 1;
}
.ke-toolbar .ke-selected {
@@ -347,7 +347,7 @@
line-height: 0;
border-top: 0;
border-bottom: 0;
- border-left: 1px dotted #cbd0db;
+ border-left: 1px dotted #c4c4c4;
}
.ke-toolbar .ke-hr {
height: 1px;
@@ -369,7 +369,7 @@
overflow: auto;
font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
font-size: 12px;
- color: #3c4353;
+ color: #313c52;
resize: none;
background-color: #fff;
}
@@ -431,7 +431,7 @@
font-size: 12px;
text-align: left;
background-color: #fff;
- border: 1px solid #b6bdcc;
+ border: 1px solid #b2b2b2;
border: 1px solid rgba(0, 0, 0, .15);
border-radius: 4px;
}
@@ -443,7 +443,7 @@
.ke-menu-item-on {
color: #fff;
text-decoration: none;
- background-color: #0c64eb;
+ background-color: #2e7fff;
outline: 0;
}
.ke-menu-item-left {
@@ -482,7 +482,7 @@
/* colorpicker */
.ke-colorpicker {
background-color: #fff;
- border: 1px solid #b6bdcc;
+ border: 1px solid #b2b2b2;
border: 1px solid rgba(0, 0, 0, .15);
border-radius: 4px;
}
@@ -516,13 +516,13 @@
}
.ke-colorpicker-cell-on {
color: #fff;
- background-color: #0c64eb;
+ background-color: #2e7fff;
}
.ke-colorpicker-cell-on .ke-colorpicker-cell-color {
- border: 2px solid #3c4353;
+ border: 2px solid #313c52;
}
.ke-colorpicker-cell-selected .ke-colorpicker-cell-color {
- border: 2px solid #3c4353;
+ border: 2px solid #313c52;
}
/* dialog */
.ke-dialog {
@@ -719,11 +719,11 @@
padding: 0 12px;
margin: 0;
font-size: 12px;
- color: #3c4353;
+ color: #313c52;
text-decoration: none;
background-color: #fff;
- border: 1px solid #d6dae3;
- border-color: #d6dae3;
+ border: 1px solid #d8dbde;
+ border-color: #d8dbde;
border-radius: 4px;
}
.ke-button:hover,
@@ -731,9 +731,9 @@
.ke-button:active,
.ke-button.active,
.open .dropdown-toggle.ke-button {
- color: #3c4353;
+ color: #313c52;
background-color: #ebebeb;
- border-color: #b2b9ca;
+ border-color: #b7bcc2;
-webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
}
@@ -742,7 +742,7 @@
.open .dropdown-toggle.ke-button {
background-color: #d9d9d9;
background-image: none;
- border-color: #b8bfce;
+ border-color: #bcc2c7;
-webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
}
@@ -762,7 +762,7 @@ fieldset[disabled] .ke-button:active,
.ke-button[disabled].active,
fieldset[disabled] .ke-button.active {
background-color: #fff;
- border-color: #d6dae3;
+ border-color: #d8dbde;
}
/* inputbox */
.ke-input-text {
@@ -790,10 +790,10 @@ fieldset[disabled] .ke-button.active {
}
.ke-input-text:focus,
.ke-input-text.focus {
- border-color: #0c64eb;
+ border-color: #2e7fff;
outline: 0;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(12, 100, 235, .6);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(12, 100, 235, .6);
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(46, 127, 255, .6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(46, 127, 255, .6);
}
.ke-input-text[disabled] {
background: #eee;
diff --git a/www/js/kindeditor/kindeditor.js b/www/js/kindeditor/kindeditor.js
index 95020a6761..e6a2297d44 100644
--- a/www/js/kindeditor/kindeditor.js
+++ b/www/js/kindeditor/kindeditor.js
@@ -1,10 +1,3 @@
-/*!
- * ZUI: Zentao Kindeditor - v1.10.0 - 2022-04-19
- * http://openzui.com
- * GitHub: https://github.com/easysoft/zui.git
- * Copyright (c) 2022 cnezsoft.com; Licensed MIT
- */
-
/******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2013 kindsoft.net
@@ -304,7 +297,7 @@
],
fontSizeTable: ['9px', '10px', '12px', '14px', '16px', '18px', '24px', '32px'],
htmlTags: {
- font: ['id', 'class', 'color', 'size', 'face', '.background-color'],
+ font: ['id', 'class', 'color', 'size', 'face', '.background-color', '.color', '.font-size', '.font-family'],
span: [
'id', 'class', '.color', '.background-color', '.font-size', '.font-family', '.background',
'.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.line-height'
@@ -10359,14 +10352,17 @@ KindEditor.plugin('pasteimage', function(K) {
var original = ev.originalEvent;
var clipboardItems = original.clipboardData && original.clipboardData.items;
var clipboardItem = null;
- if(clipboardItems) {
+ if(clipboardItems)
+ {
var IMAGE_MIME_REGEX = /^image\/(p?jpeg|gif|png)$/i;
for (var i = 0; i < clipboardItems.length; i++)
{
- if (IMAGE_MIME_REGEX.test(clipboardItems[i].type))
+ var dataType = clipboardItems[i].type;
+ if(options.pasteTextFirst && dataType.indexOf('text/') === 0) return;
+ if (IMAGE_MIME_REGEX.test(dataType))
{
clipboardItem = clipboardItems[i];
- break;
+ if(!options.pasteTextFirst) break;
}
}
}
diff --git a/www/js/kindeditor/kindeditor.min.css b/www/js/kindeditor/kindeditor.min.css
index f1ae12dfb8..38aa69f30f 100644
--- a/www/js/kindeditor/kindeditor.min.css
+++ b/www/js/kindeditor/kindeditor.min.css
@@ -1 +1 @@
-/*! KindEditor Copyright (C) kindsoft.net, Licence: http://kindeditor.net/license.php */.ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;*display:inline}.ke-clearfix{zoom:1}.ke-clearfix:after{display:block;height:0;clear:both;font-size:0;line-height:0;visibility:hidden;content:"."}.ke-shadow{-webkit-box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1);box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1)}[class*=" ke-icon-"],[class^=ke-icon-]{width:16px;height:16px}.ke-icon-source{background-position:0 0}.ke-icon-preview{background-position:0 -16px}.ke-icon-print{background-position:0 -32px}.ke-icon-undo{background-position:0 -48px}.ke-icon-redo{background-position:0 -64px}.ke-icon-cut{background-position:0 -80px}.ke-icon-copy{background-position:0 -96px}.ke-icon-paste{background-position:0 -112px}.ke-icon-selectall{background-position:0 -128px}.ke-icon-justifyleft{background-position:0 -144px}.ke-icon-justifycenter{background-position:0 -160px}.ke-icon-justifyright{background-position:0 -176px}.ke-icon-justifyfull{background-position:0 -192px}.ke-icon-insertorderedlist{background-position:0 -208px}.ke-icon-insertunorderedlist{background-position:0 -224px}.ke-icon-indent{background-position:0 -240px}.ke-icon-outdent{background-position:0 -256px}.ke-icon-subscript{background-position:0 -272px}.ke-icon-superscript{background-position:0 -288px}.ke-icon-date{width:25px;background-position:0 -304px}.ke-icon-time{width:25px;background-position:0 -320px}.ke-icon-formatblock{width:25px;background-position:0 -336px}.ke-icon-fontname{width:21px;background-position:0 -352px}.ke-icon-fontsize{width:23px;background-position:0 -368px}.ke-icon-forecolor{width:20px;background-position:0 -384px}.ke-icon-hilitecolor{width:23px;background-position:0 -400px}.ke-icon-bold{background-position:0 -416px}.ke-icon-italic{background-position:0 -432px}.ke-icon-underline{background-position:0 -448px}.ke-icon-strikethrough{background-position:0 -464px}.ke-icon-removeformat{background-position:0 -480px}.ke-icon-image{background-position:0 -496px}.ke-icon-flash{background-position:0 -512px}.ke-icon-media{background-position:0 -528px}.ke-icon-div{background-position:0 -544px}.ke-icon-formula{background-position:0 -576px}.ke-icon-hr{background-position:0 -592px}.ke-icon-emoticons{background-position:0 -608px}.ke-icon-link{background-position:0 -624px}.ke-icon-unlink{background-position:0 -640px}.ke-icon-fullscreen{background-position:0 -656px}.ke-icon-about{background-position:0 -672px}.ke-icon-plainpaste{background-position:0 -704px}.ke-icon-wordpaste{background-position:0 -720px}.ke-icon-table{background-position:0 -784px}.ke-icon-tablemenu{background-position:0 -768px}.ke-icon-tableinsert{background-position:0 -784px}.ke-icon-tabledelete{background-position:0 -800px}.ke-icon-tablecolinsertleft{background-position:0 -816px}.ke-icon-tablecolinsertright{background-position:0 -832px}.ke-icon-tablerowinsertabove{background-position:0 -848px}.ke-icon-tablerowinsertbelow{background-position:0 -864px}.ke-icon-tablecoldelete{background-position:0 -880px}.ke-icon-tablerowdelete{background-position:0 -896px}.ke-icon-tablecellprop{background-position:0 -912px}.ke-icon-tableprop{background-position:0 -928px}.ke-icon-checked{background-position:0 -944px}.ke-icon-code{background-position:0 -960px}.ke-icon-map{background-position:0 -976px}.ke-icon-baidumap{background-position:0 -976px}.ke-icon-lineheight{background-position:0 -992px}.ke-icon-clearhtml{background-position:0 -1008px}.ke-icon-pagebreak{background-position:0 -1024px}.ke-icon-insertfile{background-position:0 -1040px}.ke-icon-quickformat{background-position:0 -1056px}.ke-icon-template{background-position:0 -1072px}.ke-icon-tablecellsplit{background-position:0 -1088px}.ke-icon-tablerowmerge{background-position:0 -1104px}.ke-icon-tablerowsplit{background-position:0 -1120px}.ke-icon-tablecolmerge{background-position:0 -1136px}.ke-icon-tablecolsplit{background-position:0 -1152px}.ke-icon-anchor{background-position:0 -1168px}.ke-icon-search{background-position:0 -1184px}.ke-icon-new{background-position:0 -1200px}.ke-icon-specialchar{background-position:0 -1216px}.ke-icon-multiimage{background-position:0 -1232px}.ke-container{position:relative;display:block;padding:0;margin:0;overflow:hidden;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px}.ke-container.focus{border-color:#0c64eb;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(12,100,235,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(12,100,235,.6)}.ke-container.ke-loading+textarea.kindeditor,.ke-container.ke-loading>.ke-edit,.ke-container.ke-loading>.ke-statusbar,.ke-container.ke-loading>.ke-toolbar{display:none}.ke-toolbar{padding:2px 5px;overflow:hidden;text-align:left;zoom:1;background-color:#fff;border-bottom:1px solid #dcdcdc}.ke-toolbar-icon{display:block;overflow:hidden;font-size:0;line-height:0;background-repeat:no-repeat}.ke-menu .ke-toolbar-icon{display:inline-block}.ke-toolbar-icon-url{background-image:url(themes/default/default.png)}.ke-toolbar .ke-outline{display:block;float:left;padding:1px 2px;margin:1px;overflow:hidden;font-size:0;line-height:0;cursor:pointer;filter:alpha(opacity=80);border:1px solid #fff;border-radius:2px;opacity:.8}.ke-toolbar .ke-on,.ke-toolbar .ke-selected{filter:alpha(opacity=100);border-color:#cbd0db;opacity:1}.ke-toolbar .ke-selected{background-color:#f1f1f1}.ke-toolbar .ke-disabled{cursor:default}.ke-toolbar .ke-separator{display:block;float:left;width:0;height:16px;margin:2px 3px;overflow:hidden;font-size:0;line-height:0;border-top:0;border-bottom:0;border-left:1px dotted #cbd0db}.ke-toolbar .ke-hr{height:1px;overflow:hidden;clear:both}.ke-edit{padding:0}.ke-edit-iframe,.ke-edit-textarea{padding:0;margin:0;overflow:auto;border:0}.ke-edit-textarea{overflow:auto;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#3c4353;resize:none;background-color:#fff}.ke-edit-textarea:focus{outline:0}.ke-statusbar{position:absolute;right:0;bottom:0;width:14px;height:14px;overflow:hidden;font-size:0;line-height:0;text-align:center;cursor:s-resize;background-color:#fff;filter:alpha(opacity=0);border-top:1px solid #dcdcdc;border-left:1px solid #dcdcdc;opacity:0;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.ke-statusbar .ke-statusbar-resize-icon{position:relative}.ke-statusbar .ke-statusbar-resize-icon:after,.ke-statusbar .ke-statusbar-resize-icon:before{position:absolute;top:2px;left:-4px;display:block;width:0;height:0;content:' ';border-color:transparent transparent #838a9d transparent;border-style:solid;border-width:0 4px 4px 4px}.ke-statusbar .ke-statusbar-resize-icon:after{top:7px;border-color:#838a9d transparent transparent transparent;border-width:4px 4px 0 4px}.ke-container:hover .ke-statusbar,.ke-statusbar.ke-dragging{filter:alpha(opacity=100);opacity:1}.ke-menu{padding:5px 0;overflow:hidden;font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:12px;text-align:left;background-color:#fff;border:1px solid #b6bdcc;border:1px solid rgba(0,0,0,.15);border-radius:4px}.ke-menu-item{height:24px;overflow:hidden;cursor:pointer}.ke-menu-item-on{color:#fff;text-decoration:none;background-color:#0c64eb;outline:0}.ke-menu-item-left{width:27px;overflow:hidden;text-align:center}.ke-menu-item-center{width:0;height:24px;border-top:0;border-right:1px solid #fff;border-bottom:0;border-left:1px solid #e3e3e3}.ke-menu-item-center-on{border-right:1px solid #e9eff6;border-left:1px solid #e9eff6}.ke-menu-item-right{padding:0 0 0 5px;overflow:hidden;line-height:24px;text-align:left;border:0}.ke-menu-separator{height:0;margin:2px 0;overflow:hidden;border-top:1px solid #ccc;border-right:0;border-bottom:1px solid #fff;border-left:0}.ke-colorpicker{background-color:#fff;border:1px solid #b6bdcc;border:1px solid rgba(0,0,0,.15);border-radius:4px}.ke-colorpicker-table{padding:0;margin:0;border-collapse:separate;border:0}.ke-colorpicker-cell{padding:0;font-size:0;line-height:0;cursor:pointer;border:none}.ke-colorpicker-cell-color{width:25px;height:25px;padding:0;border:0}.ke-colorpicker-cell-top{padding:0;margin:0;font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:12px;line-height:25px;text-align:center;cursor:pointer}.ke-colorpicker-cell-on{color:#fff;background-color:#0c64eb}.ke-colorpicker-cell-on .ke-colorpicker-cell-color{border:2px solid #3c4353}.ke-colorpicker-cell-selected .ke-colorpicker-cell-color{border:2px solid #3c4353}.ke-dialog{position:absolute;padding:0;margin:0}.ke-dialog .ke-header{width:100%;margin-bottom:10px}.ke-dialog .ke-header .ke-left{float:left}.ke-dialog .ke-header .ke-right{float:right}.ke-dialog .ke-header label{display:inline;margin-right:0;font-weight:400;vertical-align:top;cursor:pointer}.ke-dialog-content{width:100%;height:100%;overflow:hidden;background-color:#fff;border-radius:4px}.ke-dialog-shadow{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;background-color:#f0f0ee;border-radius:4px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.ke-dialog-header{min-height:16.43px;padding:7.5px 15px;margin:0;font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:13px;font-weight:700;text-align:left;cursor:move;background:#f1f1f1;border:0;border-bottom:1px solid #e5e5e5}.ke-dialog-icon-close{position:absolute;top:10px;right:8px;display:block;width:16px;height:16px;cursor:pointer;background:url(themes/default/default.png) no-repeat scroll 0 -688px;filter:alpha(opacity=60);opacity:.6}.ke-dialog-icon-close:hover{filter:alpha(opacity=100);opacity:1}.ke-dialog-body{width:100%;overflow:hidden;font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:12px;text-align:left}.ke-dialog-body textarea{display:block;padding:0;overflow:auto;resize:none}.ke-dialog-body input:focus,.ke-dialog-body select:focus,.ke-dialog-body textarea:focus{outline:0}.ke-dialog-body label{display:-moz-inline-stack;display:inline-block;margin-right:10px;vertical-align:middle;cursor:pointer;zoom:1;*display:inline}.ke-dialog-body img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;*display:inline}.ke-dialog-body select{display:-moz-inline-stack;display:inline-block;width:auto;vertical-align:middle;zoom:1;*display:inline}.ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.ke-dialog-body .ke-form{padding:0;margin:0}.ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog-loading-content{height:31px;padding-left:36px;font-size:14px;font-weight:700;line-height:31px;color:#666;background:url(../themes/common/loading.gif) no-repeat}.ke-dialog-row{margin-bottom:10px}.ke-dialog-footer{width:100%;padding:5px;text-align:right;border-top:1px solid #e5e5e5}.ke-dialog-preview,.ke-dialog-yes{margin:5px}.ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog-mask{background-color:#000;filter:alpha(opacity=50);opacity:.5}.ke-button-common{display:inline-block;height:22px;overflow:visible;line-height:21px;vertical-align:middle;cursor:pointer}.ke-button-outer{position:relative;display:-moz-inline-stack;display:inline-block;padding:0;vertical-align:middle;zoom:1;*display:inline}.ke-button{left:2px;padding:0 12px;margin:0;font-size:12px;color:#3c4353;text-decoration:none;background-color:#fff;border:1px solid #d6dae3;border-color:#d6dae3;border-radius:4px}.ke-button.active,.ke-button:active,.ke-button:focus,.ke-button:hover,.open .dropdown-toggle.ke-button{color:#3c4353;background-color:#ebebeb;border-color:#b2b9ca;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.ke-button.active,.ke-button:active,.open .dropdown-toggle.ke-button{background-color:#d9d9d9;background-image:none;border-color:#b8bfce;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.ke-button.disabled,.ke-button.disabled.active,.ke-button.disabled:active,.ke-button.disabled:focus,.ke-button.disabled:hover,.ke-button[disabled],.ke-button[disabled].active,.ke-button[disabled]:active,.ke-button[disabled]:focus,.ke-button[disabled]:hover,fieldset[disabled] .ke-button,fieldset[disabled] .ke-button.active,fieldset[disabled] .ke-button:active,fieldset[disabled] .ke-button:focus,fieldset[disabled] .ke-button:hover{background-color:#fff;border-color:#d6dae3}.ke-input-text{display:-moz-inline-stack;display:inline-block;height:22px;padding:0 4px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:22px;vertical-align:middle;zoom:1;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;*display:inline}.ke-input-text.focus,.ke-input-text:focus{border-color:#0c64eb;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(12,100,235,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(12,100,235,.6)}.ke-input-text[disabled]{background:#eee}.ke-input-number{width:50px}.ke-input-color,ke-dialog-content select{display:-moz-inline-stack;display:inline-block;width:60px;height:20px;padding-left:5px;overflow:hidden;font-size:12px;line-height:20px;vertical-align:middle;cursor:pointer;zoom:1;background-color:#fff;border:1px solid #dcdcdc;*display:inline}.ke-upload-button{position:relative}.ke-upload-area{position:relative;padding:0;margin:0;overflow:hidden}.ke-upload-area .ke-upload-file{position:absolute;top:0;right:0;z-index:811212;padding:0;margin:0;font-size:60px;filter:alpha(opacity=0);border:0 none;opacity:0}.ke-tabs{padding-left:5px;margin-bottom:20px;font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #a0a0a0}.ke-tabs-ul{padding:0;margin:0;list-style-position:outside;list-style-type:none;list-style-image:none}.ke-tabs-li{position:relative;float:left;padding:0 20px;margin:0 2px -1px 0;line-height:25px;color:#555;text-align:center;cursor:pointer;background-color:#f0f0ee;border:1px solid #a0a0a0}.ke-tabs-li-selected{color:#000;cursor:default;background-color:#fff;border-bottom:1px solid #fff}.ke-tabs-li-on{color:#000;background-color:#fff}.ke-progressbar{position:relative;padding:0;margin:0}.ke-progressbar-bar{width:80px;height:5px;padding:0;margin:10px 10px 0 10px;border:1px solid #6fa5db}.ke-progressbar-bar-inner{width:0;height:5px;padding:0;margin:0;overflow:hidden;background-color:#6fa5db}.ke-progressbar-percent{position:absolute;top:0;left:40%;display:none}.ke-swfupload-top{position:relative;margin-bottom:10px;_width:608px}.ke-swfupload-button{height:23px;line-height:23px}.ke-swfupload-desc{height:23px;padding:0 10px;line-height:23px}.ke-swfupload-startupload{position:absolute;top:0;right:0}.ke-swfupload-body{width:auto;height:370px;padding:5px;overflow:scroll;background-color:#fff;border:1px solid #dcdcdc}.ke-swfupload-body .ke-item{width:100px;margin:5px}.ke-swfupload-body .ke-photo{position:relative;padding:10px;background-color:#fff;border:1px solid #ddd}.ke-swfupload-body .ke-delete{position:absolute;top:0;right:0;display:block;width:16px;height:16px;cursor:pointer;background:url(themes/default/default.png) no-repeat scroll 0 -688px}.ke-swfupload-body .ke-status{position:absolute;bottom:5px;left:0;width:100px;height:17px}.ke-swfupload-body .ke-message{width:100px;height:17px;overflow:hidden;text-align:center}.ke-swfupload-body .ke-error{color:red}.ke-swfupload-body .ke-name{width:100px;height:16px;overflow:hidden;text-align:center}.ke-swfupload-body .ke-on{background-color:#e9eff6;border:1px solid #5690d2}.ke-plugin-emoticons{position:relative}.ke-plugin-emoticons .ke-preview{position:absolute;top:0;display:none;padding:10px;margin:2px;text-align:center;background-color:#fff;border:1px solid #a0a0a0}.ke-plugin-emoticons .ke-preview-img{padding:0;margin:0;border:0}.ke-plugin-emoticons .ke-table{padding:0;margin:0;border-collapse:separate;border:0}.ke-plugin-emoticons .ke-cell{padding:1px;margin:0;cursor:pointer;border:1px solid #f0f0ee}.ke-plugin-emoticons .ke-on{background-color:#e9eff6;border:1px solid #5690d2}.ke-plugin-emoticons .ke-img{display:block;width:24px;height:24px;padding:0;margin:2px;margin:0;overflow:hidden;background-repeat:no-repeat;border:0}.ke-plugin-emoticons .ke-page{padding:0;margin:5px;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-align:right;text-decoration:none;border:0}.ke-plugin-plainpaste-textarea,.ke-plugin-wordpaste-iframe{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #dcdcdc}.ke-plugin-filemanager-header{width:100%;margin-bottom:10px}.ke-plugin-filemanager-header .ke-left{float:left}.ke-plugin-filemanager-header .ke-right{float:right}.ke-plugin-filemanager-body{width:auto;height:370px;padding:5px;overflow:scroll;background-color:#fff;border:1px solid #dcdcdc}.ke-plugin-filemanager-body .ke-item{width:100px;margin:5px}.ke-plugin-filemanager-body .ke-photo{padding:10px;background-color:#fff;border:1px solid #ddd}.ke-plugin-filemanager-body .ke-name{width:100px;height:16px;overflow:hidden;text-align:center}.ke-plugin-filemanager-body .ke-on{background-color:#e9eff6;border:1px solid #5690d2}.ke-plugin-filemanager-body .ke-table{width:95%;padding:0;margin:0;border-collapse:separate;border:0}.ke-plugin-filemanager-body .ke-table .ke-cell{padding:0;margin:0;border:0}.ke-plugin-filemanager-body .ke-table .ke-name{width:55%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-size{width:15%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-datetime{width:30%;text-align:center}.ke-dialog input[type=number]::-webkit-inner-spin-button,.ke-dialog input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ke-dialog input[type=number]{-moz-appearance:textfield}
+/*! KindEditor Copyright (C) kindsoft.net, Licence: http://kindeditor.net/license.php */.ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;*display:inline}.ke-clearfix{zoom:1}.ke-clearfix:after{display:block;height:0;clear:both;font-size:0;line-height:0;visibility:hidden;content:"."}.ke-shadow{-webkit-box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1);box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1)}[class*=" ke-icon-"],[class^=ke-icon-]{width:16px;height:16px}.ke-icon-source{background-position:0 0}.ke-icon-preview{background-position:0 -16px}.ke-icon-print{background-position:0 -32px}.ke-icon-undo{background-position:0 -48px}.ke-icon-redo{background-position:0 -64px}.ke-icon-cut{background-position:0 -80px}.ke-icon-copy{background-position:0 -96px}.ke-icon-paste{background-position:0 -112px}.ke-icon-selectall{background-position:0 -128px}.ke-icon-justifyleft{background-position:0 -144px}.ke-icon-justifycenter{background-position:0 -160px}.ke-icon-justifyright{background-position:0 -176px}.ke-icon-justifyfull{background-position:0 -192px}.ke-icon-insertorderedlist{background-position:0 -208px}.ke-icon-insertunorderedlist{background-position:0 -224px}.ke-icon-indent{background-position:0 -240px}.ke-icon-outdent{background-position:0 -256px}.ke-icon-subscript{background-position:0 -272px}.ke-icon-superscript{background-position:0 -288px}.ke-icon-date{width:25px;background-position:0 -304px}.ke-icon-time{width:25px;background-position:0 -320px}.ke-icon-formatblock{width:25px;background-position:0 -336px}.ke-icon-fontname{width:21px;background-position:0 -352px}.ke-icon-fontsize{width:23px;background-position:0 -368px}.ke-icon-forecolor{width:20px;background-position:0 -384px}.ke-icon-hilitecolor{width:23px;background-position:0 -400px}.ke-icon-bold{background-position:0 -416px}.ke-icon-italic{background-position:0 -432px}.ke-icon-underline{background-position:0 -448px}.ke-icon-strikethrough{background-position:0 -464px}.ke-icon-removeformat{background-position:0 -480px}.ke-icon-image{background-position:0 -496px}.ke-icon-flash{background-position:0 -512px}.ke-icon-media{background-position:0 -528px}.ke-icon-div{background-position:0 -544px}.ke-icon-formula{background-position:0 -576px}.ke-icon-hr{background-position:0 -592px}.ke-icon-emoticons{background-position:0 -608px}.ke-icon-link{background-position:0 -624px}.ke-icon-unlink{background-position:0 -640px}.ke-icon-fullscreen{background-position:0 -656px}.ke-icon-about{background-position:0 -672px}.ke-icon-plainpaste{background-position:0 -704px}.ke-icon-wordpaste{background-position:0 -720px}.ke-icon-table{background-position:0 -784px}.ke-icon-tablemenu{background-position:0 -768px}.ke-icon-tableinsert{background-position:0 -784px}.ke-icon-tabledelete{background-position:0 -800px}.ke-icon-tablecolinsertleft{background-position:0 -816px}.ke-icon-tablecolinsertright{background-position:0 -832px}.ke-icon-tablerowinsertabove{background-position:0 -848px}.ke-icon-tablerowinsertbelow{background-position:0 -864px}.ke-icon-tablecoldelete{background-position:0 -880px}.ke-icon-tablerowdelete{background-position:0 -896px}.ke-icon-tablecellprop{background-position:0 -912px}.ke-icon-tableprop{background-position:0 -928px}.ke-icon-checked{background-position:0 -944px}.ke-icon-code{background-position:0 -960px}.ke-icon-map{background-position:0 -976px}.ke-icon-baidumap{background-position:0 -976px}.ke-icon-lineheight{background-position:0 -992px}.ke-icon-clearhtml{background-position:0 -1008px}.ke-icon-pagebreak{background-position:0 -1024px}.ke-icon-insertfile{background-position:0 -1040px}.ke-icon-quickformat{background-position:0 -1056px}.ke-icon-template{background-position:0 -1072px}.ke-icon-tablecellsplit{background-position:0 -1088px}.ke-icon-tablerowmerge{background-position:0 -1104px}.ke-icon-tablerowsplit{background-position:0 -1120px}.ke-icon-tablecolmerge{background-position:0 -1136px}.ke-icon-tablecolsplit{background-position:0 -1152px}.ke-icon-anchor{background-position:0 -1168px}.ke-icon-search{background-position:0 -1184px}.ke-icon-new{background-position:0 -1200px}.ke-icon-specialchar{background-position:0 -1216px}.ke-icon-multiimage{background-position:0 -1232px}.ke-container{position:relative;display:block;padding:0;margin:0;overflow:hidden;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px}.ke-container.focus{border-color:#2e7fff;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6)}.ke-container.ke-loading+textarea.kindeditor,.ke-container.ke-loading>.ke-edit,.ke-container.ke-loading>.ke-statusbar,.ke-container.ke-loading>.ke-toolbar{display:none}.ke-toolbar{padding:2px 5px;overflow:hidden;text-align:left;zoom:1;background-color:#fff;border-bottom:1px solid #dcdcdc}.ke-toolbar-icon{display:block;overflow:hidden;font-size:0;line-height:0;background-repeat:no-repeat}.ke-menu .ke-toolbar-icon{display:inline-block}.ke-toolbar-icon-url{background-image:url(themes/default/default.png)}.ke-toolbar .ke-outline{display:block;float:left;padding:1px 2px;margin:1px;overflow:hidden;font-size:0;line-height:0;cursor:pointer;filter:alpha(opacity=80);border:1px solid #fff;border-radius:2px;opacity:.8}.ke-toolbar .ke-on,.ke-toolbar .ke-selected{filter:alpha(opacity=100);border-color:#c4c4c4;opacity:1}.ke-toolbar .ke-selected{background-color:#f1f1f1}.ke-toolbar .ke-disabled{cursor:default}.ke-toolbar .ke-separator{display:block;float:left;width:0;height:16px;margin:2px 3px;overflow:hidden;font-size:0;line-height:0;border-top:0;border-bottom:0;border-left:1px dotted #c4c4c4}.ke-toolbar .ke-hr{height:1px;overflow:hidden;clear:both}.ke-edit{padding:0}.ke-edit-iframe,.ke-edit-textarea{padding:0;margin:0;overflow:auto;border:0}.ke-edit-textarea{overflow:auto;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#313c52;resize:none;background-color:#fff}.ke-edit-textarea:focus{outline:0}.ke-statusbar{position:absolute;right:0;bottom:0;width:14px;height:14px;overflow:hidden;font-size:0;line-height:0;text-align:center;cursor:s-resize;background-color:#fff;filter:alpha(opacity=0);border-top:1px solid #dcdcdc;border-left:1px solid #dcdcdc;opacity:0;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.ke-statusbar .ke-statusbar-resize-icon{position:relative}.ke-statusbar .ke-statusbar-resize-icon:after,.ke-statusbar .ke-statusbar-resize-icon:before{position:absolute;top:2px;left:-4px;display:block;width:0;height:0;content:' ';border-color:transparent transparent #838a9d transparent;border-style:solid;border-width:0 4px 4px 4px}.ke-statusbar .ke-statusbar-resize-icon:after{top:7px;border-color:#838a9d transparent transparent transparent;border-width:4px 4px 0 4px}.ke-container:hover .ke-statusbar,.ke-statusbar.ke-dragging{filter:alpha(opacity=100);opacity:1}.ke-menu{padding:5px 0;overflow:hidden;font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:12px;text-align:left;background-color:#fff;border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.15);border-radius:4px}.ke-menu-item{height:24px;overflow:hidden;cursor:pointer}.ke-menu-item-on{color:#fff;text-decoration:none;background-color:#2e7fff;outline:0}.ke-menu-item-left{width:27px;overflow:hidden;text-align:center}.ke-menu-item-center{width:0;height:24px;border-top:0;border-right:1px solid #fff;border-bottom:0;border-left:1px solid #e3e3e3}.ke-menu-item-center-on{border-right:1px solid #e9eff6;border-left:1px solid #e9eff6}.ke-menu-item-right{padding:0 0 0 5px;overflow:hidden;line-height:24px;text-align:left;border:0}.ke-menu-separator{height:0;margin:2px 0;overflow:hidden;border-top:1px solid #ccc;border-right:0;border-bottom:1px solid #fff;border-left:0}.ke-colorpicker{background-color:#fff;border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.15);border-radius:4px}.ke-colorpicker-table{padding:0;margin:0;border-collapse:separate;border:0}.ke-colorpicker-cell{padding:0;font-size:0;line-height:0;cursor:pointer;border:none}.ke-colorpicker-cell-color{width:25px;height:25px;padding:0;border:0}.ke-colorpicker-cell-top{padding:0;margin:0;font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:12px;line-height:25px;text-align:center;cursor:pointer}.ke-colorpicker-cell-on{color:#fff;background-color:#2e7fff}.ke-colorpicker-cell-on .ke-colorpicker-cell-color{border:2px solid #313c52}.ke-colorpicker-cell-selected .ke-colorpicker-cell-color{border:2px solid #313c52}.ke-dialog{position:absolute;padding:0;margin:0}.ke-dialog .ke-header{width:100%;margin-bottom:10px}.ke-dialog .ke-header .ke-left{float:left}.ke-dialog .ke-header .ke-right{float:right}.ke-dialog .ke-header label{display:inline;margin-right:0;font-weight:400;vertical-align:top;cursor:pointer}.ke-dialog-content{width:100%;height:100%;overflow:hidden;background-color:#fff;border-radius:4px}.ke-dialog-shadow{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;background-color:#f0f0ee;border-radius:4px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.ke-dialog-header{min-height:16.43px;padding:7.5px 15px;margin:0;font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:13px;font-weight:700;text-align:left;cursor:move;background:#f1f1f1;border:0;border-bottom:1px solid #e5e5e5}.ke-dialog-icon-close{position:absolute;top:10px;right:8px;display:block;width:16px;height:16px;cursor:pointer;background:url(themes/default/default.png) no-repeat scroll 0 -688px;filter:alpha(opacity=60);opacity:.6}.ke-dialog-icon-close:hover{filter:alpha(opacity=100);opacity:1}.ke-dialog-body{width:100%;overflow:hidden;font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:12px;text-align:left}.ke-dialog-body textarea{display:block;padding:0;overflow:auto;resize:none}.ke-dialog-body input:focus,.ke-dialog-body select:focus,.ke-dialog-body textarea:focus{outline:0}.ke-dialog-body label{display:-moz-inline-stack;display:inline-block;margin-right:10px;vertical-align:middle;cursor:pointer;zoom:1;*display:inline}.ke-dialog-body img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;*display:inline}.ke-dialog-body select{display:-moz-inline-stack;display:inline-block;width:auto;vertical-align:middle;zoom:1;*display:inline}.ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.ke-dialog-body .ke-form{padding:0;margin:0}.ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog-loading-content{height:31px;padding-left:36px;font-size:14px;font-weight:700;line-height:31px;color:#666;background:url(../themes/common/loading.gif) no-repeat}.ke-dialog-row{margin-bottom:10px}.ke-dialog-footer{width:100%;padding:5px;text-align:right;border-top:1px solid #e5e5e5}.ke-dialog-preview,.ke-dialog-yes{margin:5px}.ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog-mask{background-color:#000;filter:alpha(opacity=50);opacity:.5}.ke-button-common{display:inline-block;height:22px;overflow:visible;line-height:21px;vertical-align:middle;cursor:pointer}.ke-button-outer{position:relative;display:-moz-inline-stack;display:inline-block;padding:0;vertical-align:middle;zoom:1;*display:inline}.ke-button{left:2px;padding:0 12px;margin:0;font-size:12px;color:#313c52;text-decoration:none;background-color:#fff;border:1px solid #d8dbde;border-color:#d8dbde;border-radius:4px}.ke-button.active,.ke-button:active,.ke-button:focus,.ke-button:hover,.open .dropdown-toggle.ke-button{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.ke-button.active,.ke-button:active,.open .dropdown-toggle.ke-button{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.ke-button.disabled,.ke-button.disabled.active,.ke-button.disabled:active,.ke-button.disabled:focus,.ke-button.disabled:hover,.ke-button[disabled],.ke-button[disabled].active,.ke-button[disabled]:active,.ke-button[disabled]:focus,.ke-button[disabled]:hover,fieldset[disabled] .ke-button,fieldset[disabled] .ke-button.active,fieldset[disabled] .ke-button:active,fieldset[disabled] .ke-button:focus,fieldset[disabled] .ke-button:hover{background-color:#fff;border-color:#d8dbde}.ke-input-text{display:-moz-inline-stack;display:inline-block;height:22px;padding:0 4px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:22px;vertical-align:middle;zoom:1;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;*display:inline}.ke-input-text.focus,.ke-input-text:focus{border-color:#2e7fff;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6)}.ke-input-text[disabled]{background:#eee}.ke-input-number{width:50px}.ke-input-color,ke-dialog-content select{display:-moz-inline-stack;display:inline-block;width:60px;height:20px;padding-left:5px;overflow:hidden;font-size:12px;line-height:20px;vertical-align:middle;cursor:pointer;zoom:1;background-color:#fff;border:1px solid #dcdcdc;*display:inline}.ke-upload-button{position:relative}.ke-upload-area{position:relative;padding:0;margin:0;overflow:hidden}.ke-upload-area .ke-upload-file{position:absolute;top:0;right:0;z-index:811212;padding:0;margin:0;font-size:60px;filter:alpha(opacity=0);border:0 none;opacity:0}.ke-tabs{padding-left:5px;margin-bottom:20px;font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #a0a0a0}.ke-tabs-ul{padding:0;margin:0;list-style-position:outside;list-style-type:none;list-style-image:none}.ke-tabs-li{position:relative;float:left;padding:0 20px;margin:0 2px -1px 0;line-height:25px;color:#555;text-align:center;cursor:pointer;background-color:#f0f0ee;border:1px solid #a0a0a0}.ke-tabs-li-selected{color:#000;cursor:default;background-color:#fff;border-bottom:1px solid #fff}.ke-tabs-li-on{color:#000;background-color:#fff}.ke-progressbar{position:relative;padding:0;margin:0}.ke-progressbar-bar{width:80px;height:5px;padding:0;margin:10px 10px 0 10px;border:1px solid #6fa5db}.ke-progressbar-bar-inner{width:0;height:5px;padding:0;margin:0;overflow:hidden;background-color:#6fa5db}.ke-progressbar-percent{position:absolute;top:0;left:40%;display:none}.ke-swfupload-top{position:relative;margin-bottom:10px;_width:608px}.ke-swfupload-button{height:23px;line-height:23px}.ke-swfupload-desc{height:23px;padding:0 10px;line-height:23px}.ke-swfupload-startupload{position:absolute;top:0;right:0}.ke-swfupload-body{width:auto;height:370px;padding:5px;overflow:scroll;background-color:#fff;border:1px solid #dcdcdc}.ke-swfupload-body .ke-item{width:100px;margin:5px}.ke-swfupload-body .ke-photo{position:relative;padding:10px;background-color:#fff;border:1px solid #ddd}.ke-swfupload-body .ke-delete{position:absolute;top:0;right:0;display:block;width:16px;height:16px;cursor:pointer;background:url(themes/default/default.png) no-repeat scroll 0 -688px}.ke-swfupload-body .ke-status{position:absolute;bottom:5px;left:0;width:100px;height:17px}.ke-swfupload-body .ke-message{width:100px;height:17px;overflow:hidden;text-align:center}.ke-swfupload-body .ke-error{color:red}.ke-swfupload-body .ke-name{width:100px;height:16px;overflow:hidden;text-align:center}.ke-swfupload-body .ke-on{background-color:#e9eff6;border:1px solid #5690d2}.ke-plugin-emoticons{position:relative}.ke-plugin-emoticons .ke-preview{position:absolute;top:0;display:none;padding:10px;margin:2px;text-align:center;background-color:#fff;border:1px solid #a0a0a0}.ke-plugin-emoticons .ke-preview-img{padding:0;margin:0;border:0}.ke-plugin-emoticons .ke-table{padding:0;margin:0;border-collapse:separate;border:0}.ke-plugin-emoticons .ke-cell{padding:1px;margin:0;cursor:pointer;border:1px solid #f0f0ee}.ke-plugin-emoticons .ke-on{background-color:#e9eff6;border:1px solid #5690d2}.ke-plugin-emoticons .ke-img{display:block;width:24px;height:24px;padding:0;margin:2px;margin:0;overflow:hidden;background-repeat:no-repeat;border:0}.ke-plugin-emoticons .ke-page{padding:0;margin:5px;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-align:right;text-decoration:none;border:0}.ke-plugin-plainpaste-textarea,.ke-plugin-wordpaste-iframe{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #dcdcdc}.ke-plugin-filemanager-header{width:100%;margin-bottom:10px}.ke-plugin-filemanager-header .ke-left{float:left}.ke-plugin-filemanager-header .ke-right{float:right}.ke-plugin-filemanager-body{width:auto;height:370px;padding:5px;overflow:scroll;background-color:#fff;border:1px solid #dcdcdc}.ke-plugin-filemanager-body .ke-item{width:100px;margin:5px}.ke-plugin-filemanager-body .ke-photo{padding:10px;background-color:#fff;border:1px solid #ddd}.ke-plugin-filemanager-body .ke-name{width:100px;height:16px;overflow:hidden;text-align:center}.ke-plugin-filemanager-body .ke-on{background-color:#e9eff6;border:1px solid #5690d2}.ke-plugin-filemanager-body .ke-table{width:95%;padding:0;margin:0;border-collapse:separate;border:0}.ke-plugin-filemanager-body .ke-table .ke-cell{padding:0;margin:0;border:0}.ke-plugin-filemanager-body .ke-table .ke-name{width:55%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-size{width:15%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-datetime{width:30%;text-align:center}.ke-dialog input[type=number]::-webkit-inner-spin-button,.ke-dialog input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ke-dialog input[type=number]{-moz-appearance:textfield}
\ No newline at end of file
diff --git a/www/js/kindeditor/kindeditor.min.js b/www/js/kindeditor/kindeditor.min.js
index 8968869b53..eafaea7098 100644
--- a/www/js/kindeditor/kindeditor.min.js
+++ b/www/js/kindeditor/kindeditor.min.js
@@ -1,14 +1,8 @@
-/*!
- * ZUI: Zentao Kindeditor - v1.10.0 - 2022-04-19
- * http://openzui.com
- * GitHub: https://github.com/easysoft/zui.git
- * Copyright (c) 2022 cnezsoft.com; Licensed MIT
- */
/*! KindEditor Copyright (C) kindsoft.net, Licence: http://kindeditor.net/license.php */
if(function(window,undefined){function _isArray(e){return!!e&&"[object Array]"===Object.prototype.toString.call(e)}function _isFunction(e){return!!e&&"[object Function]"===Object.prototype.toString.call(e)}function _inArray(e,t){for(var n=0,i=t.length;n=0}function _addUnit(e,t){return t=t||"px",e&&/^[\d\.]+$/.test(e)?e+t:e}function _removeUnit(e){var t;return e&&(t=/([\d\.]+)/.exec(e))?parseInt(t[1],10):0}function _escape(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function _unescape(e){return e.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/&/g,"&")}function _toCamel(e){var t=e.split("-");return e="",_each(t,function(t,n){e+=t>0?n.charAt(0).toUpperCase()+n.substr(1):n}),e}function _toHex(e){function t(e){var t=parseInt(e,10).toString(16).toUpperCase();return t.length>1?t:"0"+t}return e.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/gi,function(e,n,i,a){return"#"+t(n)+t(i)+t(a)})}function _toMap(e,t){t=t===undefined?",":t;var n,i={},a=_isArray(e)?e:e.split(t);return _each(a,function(e,t){if(n=/^(\d+)\.\.(\d+)$/.exec(t))for(var a=parseInt(n[1],10);a<=parseInt(n[2],10);a++)i[a.toString()]=!0;else i[t]=!0}),i}function _toArray(e,t){return Array.prototype.slice.call(e,t||0)}function _undef(e,t){return e===undefined?t:e}function _invalidUrl(e){return!e||/[<>"]/.test(e)}function _addParam(e,t){return e.indexOf("?")>=0?e+"&"+t:e+"?"+t}function _extend(e,t,n){n||(n=t,t=null);var i;if(t){var a=function(){};a.prototype=t.prototype,i=new a,_each(n,function(e,t){i[e]=t})}else i=n;i.constructor=e,e.prototype=i,e.parent=t?t.prototype:null}function _json(text){var match;(match=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))&&(text=match[0]);var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+text+")");throw"JSON parse error"}function _getBasePath(){for(var e,t=document.getElementsByTagName("script"),n=0,i=t.length;n=0)return void _each(t.split(","),function(){_bind(e,this,n)});var i=_getId(e);i||(i=_setId(e)),_eventData[i]===undefined&&(_eventData[i]={});var a=_eventData[i][t];a&&a.length>0?_unbindEvent(e,t,a[0]):(_eventData[i][t]=[],_eventData[i].el=e),a=_eventData[i][t],0===a.length&&(a[0]=function(t){var n=t?new KEvent(e,t):undefined;_each(a,function(t,i){t>0&&i&&i.call(e,n)})}),_inArray(n,a)<0&&a.push(n),_bindEvent(e,t,a[0])}function _unbind(e,t,n){if(t&&t.indexOf(",")>=0)return void _each(t.split(","),function(){_unbind(e,this,n)});var i=_getId(e);if(i){if(t===undefined)return void(i in _eventData&&(_each(_eventData[i],function(t,n){"el"!=t&&n.length>0&&_unbindEvent(e,t,n[0])}),delete _eventData[i],_removeId(e)));if(_eventData[i]){var a=_eventData[i][t];if(a&&a.length>0){n===undefined?(_unbindEvent(e,t,a[0]),delete _eventData[i][t]):(_each(a,function(e,t){e>0&&t===n&&a.splice(e,1)}),1==a.length&&(_unbindEvent(e,t,a[0]),delete _eventData[i][t]));var o=0;_each(_eventData[i],function(){o++}),o<2&&(delete _eventData[i],_removeId(e))}}}}function _fire(e,t){if(t.indexOf(",")>=0)return void _each(t.split(","),function(){_fire(e,this)});var n=_getId(e);if(n){var i=_eventData[n][t];_eventData[n]&&i&&i.length>0&&i[0]()}}function _ctrl(e,t,n){t=/^\d{2,}$/.test(t)?t:t.toUpperCase().charCodeAt(0),_bind(e,"keydown",function(i){!i.ctrlKey||i.which!=t||i.shiftKey||i.altKey||(n.call(e),i.stop())})}function _ready(e){function t(){a||(a=!0,e(KindEditor),_readyFinished=!0)}function n(){if(!a){try{document.documentElement.doScroll("left")}catch(e){return void setTimeout(n,100)}t()}}function i(){"complete"===document.readyState&&t()}if(_readyFinished)return void e(KindEditor);var a=!1;if(document.addEventListener)_bind(document,"DOMContentLoaded",t);else if(document.attachEvent){_bind(document,"readystatechange",i);var o=!1;try{o=null==window.frameElement}catch(r){}document.documentElement.doScroll&&o&&n()}_bind(window,"load",t)}function _getCssList(e){for(var t,n={},i=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g;t=i.exec(e);){var a=_trim(t[1].toLowerCase()),o=_trim(_toHex(t[2]));n[a]=o}return n}function _getAttrList(e,t){var n,i={},a=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g;for(t===undefined&&(t="");n=a.exec(e);){var o=(n[1]||n[2]||n[4]||n[6]).toLowerCase(),r=(n[2]?n[3]:n[4]?n[5]:n[7])||t;i[o]=r}return i}function _addClassToTag(e,t){return e=/\s+class\s*=/.test(e)?e.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function(e,n,i,a){return(" "+i+" ").indexOf(" "+t+" ")<0?""===i?n+t+a:n+i+" "+t+a:e}):e.substr(0,e.length-1)+' class="'+t+'">'}function _formatCss(e){var t="";return _each(_getCssList(e),function(e,n){t+=e+":"+n+";"}),t}function _formatUrl(e,t,n,i){function a(e){for(var t=e.split("/"),n=[],i=0,a=t.length;i0&&n.pop():""!==o&&"."!=o&&n.push(o)}return"/"+n.join("/")}function o(t,n){if(e.substr(0,t.length)===t){for(var a=[],r=0;r$2"),e=e.replace(/\u200B/g,""),e=e.replace(/\u00A9/g,"©"),e=e.replace(/<[^>]+>/g,function(e){return e.replace(/\s+/g," ")});var l={};t&&(_each(t,function(e,t){for(var n=e.split(","),i=0,a=n.length;i]*)>)([\s\S]*?)(<\/script>)/gi,"")),l.style||(e=e.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi,"")));var s=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g,d=[],c=null;return e=e.replace(s,function(e,s,u,p,h,f,m){var g=e,v=s||"",_=u||"",b=p.toLowerCase(),y=h||"",k=f?" "+f:"",w=m||"";if(t&&!l[b])return"";if(""===k&&_SINGLE_TAG_MAP[b]&&(k=" /"),_INLINE_TAG_MAP[b]&&(v&&(v=" "),w&&(w=" ")),_PRE_TAG_MAP[b]&&(_?w="\n":v="\n"),!i||"br"!=b&&"hr"!==b||o&&c!==!0||(w="\n"),_BLOCK_TAG_MAP[b]&&!_PRE_TAG_MAP[b])if(i){var C=!!(_&&d.length>0&&d[d.length-1]===b);if(C?(d.pop(),o&&(v="",w="\n")):(d.push(b),o&&(v="\n",w="")),o||(v="\n",w="\n"),!o||c===!1&&!C||c===!0)for(var S=0,x=_?d.length:d.length-1;S