From fec2bc506e4092cd9d4be361aefa05dc64c1810c Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Thu, 3 Dec 2020 11:00:17 +0800 Subject: [PATCH 29/82] * Fix bug#3678. --- module/bug/css/browse.css | 1 + module/release/css/view.css | 2 +- module/release/view/view.html.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/module/bug/css/browse.css b/module/bug/css/browse.css index a69a925a74..3bf7945898 100644 --- a/module/bug/css/browse.css +++ b/module/bug/css/browse.css @@ -20,3 +20,4 @@ td.delayed{color:#fff; background: #e84e0f!important;} .dropdown-list > li > a:focus {color: #1a4f85;text-decoration: none;background-color: #ddd;} th.c-confirmed {text-align: center;} +.c-id {text-overflow:ellipsis; white-space:nowrap;} diff --git a/module/release/css/view.css b/module/release/css/view.css index ac7072bb65..82fd050f64 100644 --- a/module/release/css/view.css +++ b/module/release/css/view.css @@ -1,4 +1,3 @@ - .checkbox.btn{margin-top:0px} #releaseInfo > div {padding-top: 15px;} @@ -9,3 +8,4 @@ #tabsNav .nav-tabs > li.pull-right {margin-right: 120px; margin-top: -5px} #tabsNav .nav-tabs > li.active + li.pull-right {margin-right: 0;} ol, ul { padding-left: 20px; } +.c-id {overflow:hidden; text-overflow:ellipsis; white-space:nowrap;} diff --git a/module/release/view/view.html.php b/module/release/view/view.html.php index d2f193d38f..347fe2a8eb 100644 --- a/module/release/view/view.html.php +++ b/module/release/view/view.html.php @@ -79,7 +79,7 @@ id}&type=story&link=$link¶m=$param&orderBy=%s";?> - +
From e427d764b45fc0d95d5b115341582ff90479d598 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Thu, 3 Dec 2020 11:04:52 +0800 Subject: [PATCH 30/82] * Fix bug #3719. --- module/build/control.php | 1 + module/build/lang/de.php | 3 ++- module/build/lang/en.php | 3 ++- module/build/lang/fr.php | 3 ++- module/build/lang/vi.php | 3 ++- module/build/lang/zh-cn.php | 3 ++- module/build/view/edit.html.php | 6 ++++-- 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/module/build/control.php b/module/build/control.php index c605570476..23cec1c435 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -179,6 +179,7 @@ class build extends control $this->view->products = $products; $this->view->users = $this->loadModel('user')->getPairs('noletter', $build->builder); $this->view->build = $build; + $this->view->testtask = $this->dao->select('id')->from(TABLE_TESTTASK)->where('build')->eq($build->id)->andWhere('deleted')->eq(0)->fetch('id'); $this->display(); } diff --git a/module/build/lang/de.php b/module/build/lang/de.php index 3bdbe5bf99..783c5c889b 100644 --- a/module/build/lang/de.php +++ b/module/build/lang/de.php @@ -49,7 +49,8 @@ $lang->build->noProduct = " Dieses {$lang->projectCo $lang->build->noBuild = 'Keine Builds. '; $lang->build->notice = new stdclass(); -$lang->build->notice->changeProduct = "The {$lang->storyCommon} or Bug has been associated, and its product cannot be modified"; +$lang->build->notice->changeProduct = "The {$lang->storyCommon}, bug, or the version of the submitted test order has been linked, and its {$lang->productCommon} cannot be modified"; +$lang->build->notice->changeProject = "The version of the submitted test order cannot be modified {$lang->projectCommon}"; $lang->build->finishStories = " %s {$lang->storyCommon} sind abgeschlossen."; $lang->build->resolvedBugs = ' %s Bugs sind gelöst.'; diff --git a/module/build/lang/en.php b/module/build/lang/en.php index 52f915eb58..576f07971c 100644 --- a/module/build/lang/en.php +++ b/module/build/lang/en.php @@ -49,7 +49,8 @@ $lang->build->noProduct = " This {$lang->projectComm $lang->build->noBuild = 'No builds yet.'; $lang->build->notice = new stdclass(); -$lang->build->notice->changeProduct = "The {$lang->storyCommon} or Bug has been associated, and its product cannot be modified"; +$lang->build->notice->changeProduct = "The {$lang->storyCommon}, bug, or the version of the submitted test order has been linked, and its {$lang->productCommon} cannot be modified"; +$lang->build->notice->changeProject = "The version of the submitted test order cannot be modified {$lang->projectCommon}"; $lang->build->finishStories = " Finished {$lang->storyCommon} %s"; $lang->build->resolvedBugs = ' Resolved Bug %s'; diff --git a/module/build/lang/fr.php b/module/build/lang/fr.php index 50280a99e4..11cf3e1b2a 100644 --- a/module/build/lang/fr.php +++ b/module/build/lang/fr.php @@ -49,7 +49,8 @@ $lang->build->noProduct = " Ce {$lang->projectCommon $lang->build->noBuild = 'Aucun builds.'; $lang->build->notice = new stdclass(); -$lang->build->notice->changeProduct = "La {$lang->storyCommon} ou le Bug a été associé et son product ne peut pas être modifié"; +$lang->build->notice->changeProduct = "The {$lang->storyCommon}, bug, or the version of the submitted test order has been linked, and its {$lang->productCommon} cannot be modified"; +$lang->build->notice->changeProject = "The version of the submitted test order cannot be modified {$lang->projectCommon}"; $lang->build->finishStories = " {$lang->storyCommon} Terminées %s"; $lang->build->resolvedBugs = ' Bugs Résolus %s'; diff --git a/module/build/lang/vi.php b/module/build/lang/vi.php index f1bc4bf077..bbd95dcdd0 100644 --- a/module/build/lang/vi.php +++ b/module/build/lang/vi.php @@ -49,7 +49,8 @@ $lang->build->noProduct = " {$lang->projectCommon} n $lang->build->noBuild = 'Không có bản dựng nào'; $lang->build->notice = new stdclass(); -$lang->build->notice->changeProduct = "{$lang->storyCommon} này hoặc Bug đã được kết hợp, và sản phẩm của nó không thể bị sửa đổi"; +$lang->build->notice->changeProduct = "The {$lang->storyCommon}, bug, or the version of the submitted test order has been linked, and its {$lang->productCommon} cannot be modified"; +$lang->build->notice->changeProject = "The version of the submitted test order cannot be modified {$lang->projectCommon}"; $lang->build->finishStories = " {$lang->storyCommon} đã kết thúc %s"; $lang->build->resolvedBugs = ' Bug đã giải quyết %s'; diff --git a/module/build/lang/zh-cn.php b/module/build/lang/zh-cn.php index bd399b1527..5c81597c98 100644 --- a/module/build/lang/zh-cn.php +++ b/module/build/lang/zh-cn.php @@ -49,7 +49,8 @@ $lang->build->noProduct = " 该{$lang->projectCommon $lang->build->noBuild = '暂时没有版本。'; $lang->build->notice = new stdclass(); -$lang->build->notice->changeProduct = "已经关联{$lang->storyCommon}或Bug的版本,不能修改其所属产品"; +$lang->build->notice->changeProduct = "已经关联{$lang->storyCommon}、Bug或提交测试单的版本,不能修改其所属{$lang->productCommon}"; +$lang->build->notice->changeProject = "提交测试单的版本,不能修改其所属{$lang->projectCommon}"; $lang->build->finishStories = " 本次共完成 %s 个{$lang->storyCommon}"; $lang->build->resolvedBugs = ' 本次共解决 %s 个Bug'; diff --git a/module/build/view/edit.html.php b/module/build/view/edit.html.php index 78386ca79a..f4a16a210b 100644 --- a/module/build/view/edit.html.php +++ b/module/build/view/edit.html.php @@ -28,7 +28,7 @@ stories or $build->bugs) $disabled = 'disabled'; + if($build->stories or $build->bugs or $testtask) $disabled = 'disabled'; ?>
product, "onchange='loadBranches(this.value);' class='form-control chosen' $disabled required");?> @@ -45,8 +45,10 @@ config->global->flow != 'onlyTest'):?> + build->project;?> - project, "class='form-control chosen' required");?> + project, "class='form-control chosen' required $disabled");?> + build->notice->changeProject;?> From 41f8d0fbd3117bcee4561ee2d99d39acc9356fe6 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Thu, 3 Dec 2020 11:16:39 +0800 Subject: [PATCH 31/82] * Fix bug#3678. --- module/release/view/view.html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/release/view/view.html.php b/module/release/view/view.html.php index 347fe2a8eb..b5dd8296f1 100644 --- a/module/release/view/view.html.php +++ b/module/release/view/view.html.php @@ -79,7 +79,7 @@ id}&type=story&link=$link¶m=$param&orderBy=%s";?> - +
@@ -174,7 +174,7 @@ id}&type=bug&link=$link¶m=$param&orderBy=%s";?> - +
From e1e314c297a649663dbe536570db182dfe858aa8 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Thu, 3 Dec 2020 13:24:46 +0800 Subject: [PATCH 32/82] * Fix bug #3668. --- module/testcase/control.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/module/testcase/control.php b/module/testcase/control.php index d5b4912faf..9b89a27025 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -1243,9 +1243,10 @@ class testcase extends control $childId ++; } } - $case->stepDesc = trim($case->stepDesc); - $case->stepExpect = trim($case->stepExpect); - $case->real = trim($case->real); + $case->stepDesc = trim($case->stepDesc); + $case->stepExpect = trim($case->stepExpect); + $case->real = trim($case->real); + $case->precondition = html_entity_decode($case->precondition, ENT_QUOTES); if($this->post->fileType == 'csv') { From 58ed917b466a365f01db27e3739eea382859622f Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Thu, 3 Dec 2020 14:05:15 +0800 Subject: [PATCH 33/82] * Adjust code style. --- module/testcase/control.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/module/testcase/control.php b/module/testcase/control.php index 9b89a27025..0e91207dff 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -451,7 +451,9 @@ class testcase extends control */ public function createBug($productID, $branch = 0, $extras = '') { - parse_str(str_replace(array(',', ' '), array('&', ''), $extras)); + $extras = str_replace(array(',', ' '), array('&', ''), $extras); + parse_str($extras, $params); + extract($params); $this->loadModel('testtask'); $case = ''; From 7c5381cadec20fbdddc1f7c34bce8ebe4f3a8fca Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Thu, 3 Dec 2020 15:45:06 +0800 Subject: [PATCH 34/82] * Fix bug#3677. --- module/testreport/control.php | 1 + module/testreport/view/view.html.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/module/testreport/control.php b/module/testreport/control.php index e51a5e5bdb..abde4d2f66 100644 --- a/module/testreport/control.php +++ b/module/testreport/control.php @@ -72,6 +72,7 @@ class testreport extends control $tasks = explode(',', $report->tasks); if(count($tasks) != count($taskIdList) or array_diff($tasks, $taskIdList)) unset($reports[$reportID]); } + $pager->setRecTotal(count($reports)); } if(empty($reports) and common::hasPriv('testreport', 'create')) diff --git a/module/testreport/view/view.html.php b/module/testreport/view/view.html.php index 363066263b..69545c7882 100644 --- a/module/testreport/view/view.html.php +++ b/module/testreport/view/view.html.php @@ -114,7 +114,7 @@ objectID&objectType=$report->objectType"), "", '', "class='btn' title='{$lang->testreport->recreate}'"); + if(common::hasPriv('testreport', 'create')) echo html::a(inLink('create', "objectID=$report->objectID&objectType=$report->objectType&extra=$report->id"), "", '', "class='btn' title='{$lang->testreport->recreate}'"); common::printIcon('testreport', 'edit', "reportID=$report->id", '', 'button'); common::printIcon('testreport', 'delete', "reportID=$report->id", '', 'button', 'trash', 'hiddenwin'); } From 5d394844d657251342f66674390b99764d9faa74 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 3 Dec 2020 16:23:32 +0800 Subject: [PATCH 35/82] * fix bug #3688. --- module/story/model.php | 2 +- module/task/model.php | 16 +++++++++++----- module/testtask/css/cases.css | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/module/story/model.php b/module/story/model.php index 4e8e0ae884..d3ba53c5fe 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -2398,7 +2398,7 @@ class storyModel extends model */ public function getProjectMembers($storyID) { - $projects = $this->dao->select('project') + $projects = $this->dao->select('t1.project') ->from(TABLE_PROJECTSTORY)->alias('t1')->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') ->where('t1.story')->eq((int)$storyID) ->andWhere('t2.status')->eq('doing') diff --git a/module/task/model.php b/module/task/model.php index 69a5e343f5..ed41d336d7 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1057,7 +1057,7 @@ class taskModel extends model $task->left = 0; if(!$task->finishedBy) $task->finishedBy = $this->app->user->account; if($task->closedReason) $task->closedDate = $now; - $task->finishedDate = $oldTask->status == 'done' ? $oldTask->finishedDate : $now; + $task->finishedDate = $oldTask->status == 'done' ? $oldTask->finishedDate : $now; $task->canceledBy = ''; $task->canceledDate = ''; @@ -1066,15 +1066,21 @@ class taskModel extends model $task->assignedTo = $oldTask->openedBy; $task->assignedDate = $now; - if(!$task->canceledBy) $task->canceledBy = $this->app->user->account; - if(!$task->canceledDate) $task->canceledDate = $now; + if(!$task->canceledBy) + { + $task->canceledBy = $this->app->user->account; + $task->canceledDate = $now; + } $task->finishedBy = ''; $task->finishedDate = ''; break; case 'closed': - if(!$task->closedBy) $task->closedBy = $this->app->user->account; - if(!$task->closedDate) $task->closedDate = $now; + if(!$task->closedBy) + { + $task->closedBy = $this->app->user->account; + $task->closedDate = $now; + } break; case 'wait': if($task->consumed > 0 and $task->left > 0) $task->status = 'doing'; diff --git a/module/testtask/css/cases.css b/module/testtask/css/cases.css index cfefe76e94..c3c989c82c 100644 --- a/module/testtask/css/cases.css +++ b/module/testtask/css/cases.css @@ -12,6 +12,7 @@ tbody > tr > td .icon-share{font-size: 9px;} .table-footer .table-actions .input-group #assignedTo_chosen .chosen-single div{line-height:10px;} td.c-story{overflow: hidden; text-overflow:ellipsis; white-space: nowrap;} td .warning{color: red;} +#modules .active{font-weight: bolder;} .fail .result-fail, .blocked .result-blocked{color:#f00;} .pass .result-pass{color:green;} From 16b9563c2f8a62f9e8c4e6f74cde7b076f71a179 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 4 Dec 2020 13:51:41 +0800 Subject: [PATCH 36/82] * Fix bug#3674. --- module/tree/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/tree/model.php b/module/tree/model.php index 14f6b8566e..2107a4139a 100644 --- a/module/tree/model.php +++ b/module/tree/model.php @@ -1450,7 +1450,7 @@ class treeModel extends model if(isset($module->root) and $module->root != $self->root) { $this->dao->update(TABLE_MODULE)->set('root')->eq($module->root)->where('id')->in($childs)->exec(); - $this->dao->update(TABLE_MODULE)->set('branch')->eq(0)->where('id')->in($childs)->exec(); + $this->dao->update(TABLE_MODULE)->set('branch')->eq($module->branch)->where('id')->in($childs)->exec(); if($self->type == 'doc') $this->dao->update(TABLE_DOC)->set('`lib`')->eq($module->root)->where('module')->eq($moduleID)->exec(); } $this->fixModulePath(isset($module->root) ? $module->root : $self->root, $self->type); From 870dafd92fce394f4fc02b45b5ed5e6ce26d740f Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Mon, 7 Dec 2020 08:59:11 +0800 Subject: [PATCH 37/82] * Fix bug #3722. --- module/doc/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/doc/model.php b/module/doc/model.php index c334b329f7..0e7f0757d5 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -1325,7 +1325,7 @@ class docModel extends model $searchTitle = $this->get->title; if($type == 'product') { - $storyIdList = $this->dao->select('id')->from(TABLE_STORY)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->andWhere('type')->eq('story')->get(); + $storyIdList = $this->dao->select('id')->from(TABLE_STORY)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->andWhere('type')->in('story,requirement')->get(); $bugIdList = $this->dao->select('id')->from(TABLE_BUG)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->get(); $releaseIdList = $this->dao->select('id')->from(TABLE_RELEASE)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->get(); $planIdList = $this->dao->select('id')->from(TABLE_PRODUCTPLAN)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->get(); From b7fc85e6212a16fc0ac48dcb6b920d8446867bd0 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Mon, 7 Dec 2020 10:17:47 +0800 Subject: [PATCH 38/82] * Fix bug#3667. --- module/block/model.php | 1 - module/bug/model.php | 1 - 2 files changed, 2 deletions(-) diff --git a/module/block/model.php b/module/block/model.php index 3d01b8ce1a..501e8ca514 100644 --- a/module/block/model.php +++ b/module/block/model.php @@ -172,7 +172,6 @@ class blockModel extends model $data['tasks'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_TASK)->where('assignedTo')->eq($this->app->user->account)->andWhere('deleted')->eq(0)->fetch('count'); $data['bugs'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_BUG) ->where('assignedTo')->eq($this->app->user->account) - ->beginIF(!$this->app->user->admin)->andWhere('project')->in('0,' . $this->app->user->view->projects)->fi() //Fix bug #2373. ->andWhere('deleted')->eq(0) ->fetch('count'); $data['stories'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_STORY)->where('assignedTo')->eq($this->app->user->account)->andWhere('deleted')->eq(0)->andWhere('type')->eq('story')->fetch('count'); diff --git a/module/bug/model.php b/module/bug/model.php index bc3e6302c4..c736c9cbbd 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -1406,7 +1406,6 @@ class bugModel extends model if(!$this->loadModel('common')->checkField(TABLE_BUG, $type)) return array(); $bugs = $this->dao->select('*')->from(TABLE_BUG) ->where('deleted')->eq(0) - ->beginIF(!$this->app->user->admin)->andWhere('project')->in('0,' . $this->app->user->view->projects)->fi() ->beginIF($type != 'closedBy' and $this->app->moduleName == 'block')->andWhere('status')->ne('closed')->fi() ->beginIF($type != 'all')->andWhere("`$type`")->eq($account)->fi() ->orderBy($orderBy) From f0a4efa0ad0c6a026fe1662ab36da9553bb3b3a8 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 7 Dec 2020 11:38:18 +0800 Subject: [PATCH 39/82] * Fix bug #3627. --- module/task/control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/task/control.php b/module/task/control.php index c6318e31c6..0b883e8856 100644 --- a/module/task/control.php +++ b/module/task/control.php @@ -160,7 +160,7 @@ class task extends control elseif($this->post->after == 'toTaskList') { setcookie('moduleBrowseParam', 0, 0, $this->config->webRoot, '', false, false); - $taskLink = $this->createLink('project', 'task', "projectID=$projectID&status=unclosed¶m=0&orderBy=id_desc"); + $taskLink = $this->createLink('project', 'task', "projectID=$projectID&status=bymodule¶m=$moduleID&orderBy=id_desc"); $response['locate'] = $taskLink; $this->send($response); } From d9ab0caef0cf5ad4d9ad29894147d0bd68fbbd1d Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 7 Dec 2020 13:07:59 +0800 Subject: [PATCH 40/82] * Fix bug #3720. --- module/build/model.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/build/model.php b/module/build/model.php index 76f674387c..311e92a7dc 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -387,6 +387,7 @@ class buildModel extends model { $build = $this->getByID($buildID); $build->stories = trim(str_replace(",$storyID,", ',', ",$build->stories,"), ','); + if($build->stories) $build->stories = ',' . $build->stories; $this->dao->update(TABLE_BUILD)->set('stories')->eq($build->stories)->where('id')->eq((int)$buildID)->exec(); $this->loadModel('action')->create('story', $storyID, 'unlinkedfrombuild', '', $buildID); } @@ -449,6 +450,7 @@ class buildModel extends model { $build = $this->getByID($buildID); $build->bugs = trim(str_replace(",$bugID,", ',', ",$build->bugs,"), ','); + if($build->bugs) $build->bugs = ',' . $build->bugs; $this->dao->update(TABLE_BUILD)->set('bugs')->eq($build->bugs)->where('id')->eq((int)$buildID)->exec(); $this->loadModel('action')->create('bug', $bugID, 'unlinkedfrombuild', '', $buildID, '', false); } From 9cdcd2a428686c50d501fba5fce935107111bbbd Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Mon, 7 Dec 2020 13:10:59 +0800 Subject: [PATCH 41/82] * Fix bug #3636. --- module/task/view/batchedit.html.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/module/task/view/batchedit.html.php b/module/task/view/batchedit.html.php index 9bc469e2ad..0925f4f923 100755 --- a/module/task/view/batchedit.html.php +++ b/module/task/view/batchedit.html.php @@ -101,6 +101,11 @@ } else { + if(!isset($taskMembers[$tasks[$taskID]->assignedTo])) + { + $members = $this->project->getTeamMemberPairs($tasks[$taskID]->project, 'nodeleted'); + $members = array('' => '', 'ditto' => $this->lang->task->ditto) + $members; + } $taskMembers = $members; } ?> From f5f3dcfc99ade15642ea77aa83200a17ce756a2c Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 7 Dec 2020 14:37:24 +0800 Subject: [PATCH 42/82] * Fix bug #3707. --- module/todo/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/todo/model.php b/module/todo/model.php index 4af2b7da86..7fa113bd2a 100644 --- a/module/todo/model.php +++ b/module/todo/model.php @@ -33,7 +33,7 @@ class todoModel extends model ->setIF($this->post->type == 'feedback' and $this->post->feedback, 'idvalue', $this->post->feedback) ->setIF($this->post->date == false, 'date', '2030-01-01') ->setIF($this->post->begin == false, 'begin', '2400') - ->setIF($this->post->end == false, 'end', '2400') + ->setIF($this->post->begin == false or $this->post->end == false, 'end', '2400') ->stripTags($this->config->todo->editor->create['id'], $this->config->allowedTags) ->remove('bug, task, story, uid, feedback') ->get(); From 2b26da8044460dcc04635b5f01e34ace13fa2b17 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 7 Dec 2020 15:20:24 +0800 Subject: [PATCH 43/82] * Fix bug #3730. --- module/user/view/story.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/user/view/story.html.php b/module/user/view/story.html.php index 213a0f2737..fef1977900 100644 --- a/module/user/view/story.html.php +++ b/module/user/view/story.html.php @@ -51,7 +51,7 @@ $story):?> createLink('story', 'view', "id=$story->id");?> - + id));?> story->priList, $story->pri, $story->pri);?>'>story->priList, $story->pri, $story->pri);?> productTitle;?> From badeb97dcac6d42ceca63d2f5174eceefceafb6f Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 7 Dec 2020 18:08:35 +0800 Subject: [PATCH 44/82] * adjust for encrypt password. --- bin/init.bat | 7 ++++ bin/init.sh | 7 ++++ framework/base/helper.class.php | 60 +++++++++++++++++++++++++++++++++ framework/base/router.class.php | 4 ++- 4 files changed, 77 insertions(+), 1 deletion(-) diff --git a/bin/init.bat b/bin/init.bat index 5a8597e102..19fc718fbf 100644 --- a/bin/init.bat +++ b/bin/init.bat @@ -164,6 +164,13 @@ if %requestType% == 'PATH_INFO' ( echo %deletelog% > %baseDir%deletelog.bat echo deletelog.bat ok +:: encrypt. +if exist "%baseDir%php\encrypt.php" ( + SET encrypt= %phpcli% %baseDir%php\encrypt.php %%* + echo %encrypt% > %baseDir%encrypt.bat + echo encrypt.bat ok +) + :: create crond.bat SET cron= %phpcli% %baseDir%php\crond.php echo %cron% > %baseDir%crond.bat diff --git a/bin/init.sh b/bin/init.sh index ae1aeb3d47..ae18cd6aa9 100755 --- a/bin/init.sh +++ b/bin/init.sh @@ -167,6 +167,13 @@ fi echo $deletelog > $basePath/deletelog.sh echo "deletelog.sh ok" +# encrypt. +if [ -f "$basePath/php/encrypt.php" ]; then + encrypt="$phpcli $basePath/php/encrypt.php \$*" + echo $encrypt > $basePath/encrypt.sh + echo "encrypt.sh ok" +fi + # cron if [ ! -d "$basePath/cron" ]; then mkdir $basePath/cron diff --git a/framework/base/helper.class.php b/framework/base/helper.class.php index 1f5d488053..16fd13a7c9 100644 --- a/framework/base/helper.class.php +++ b/framework/base/helper.class.php @@ -267,6 +267,66 @@ class baseHelper return (function_exists('get_magic_quotes_gpc') and get_magic_quotes_gpc()) ? addslashes(json_encode($data)) : json_encode($data); } + /** + * Encrypt password + * + * @param string $password + * @static + * @access public + * @return string + */ + public static function encryptPassword($password) + { + global $config; + + $encrypted = ''; + if(!empty($config->encryptSecret) and $password) + { + $secret = $config->encryptSecret; + if(function_exists('mcrypt_encrypt')) + { + $encrypted = base64_encode(@mcrypt_encrypt(MCRYPT_DES, $secret, $password, MCRYPT_MODE_CBC)); + } + elseif(function_exists('openssl_encrypt')) + { + $encrypted = @openssl_encrypt($password, 'des-cbc', $secret); + } + } + if(empty($encrypted)) $encrypted = $password; + + return $encrypted; + } + + /** + * Decrypt password. + * + * @param string $password + * @static + * @access public + * @return string + */ + public static function decryptPassword($password) + { + global $config; + + $decryptedPassword = ''; + if(!empty($config->encryptSecret) and $password) + { + $secret = $config->encryptSecret; + if(function_exists('mcrypt_decrypt')) + { + $decryptedPassword = mcrypt_decrypt(MCRYPT_DES, $secret, base64_decode($password), MCRYPT_MODE_CBC); + } + elseif(function_exists('openssl_decrypt')) + { + $decryptedPassword = openssl_decrypt($password, 'des-cbc', $secret); + } + } + if(empty($decryptedPassword)) $decryptedPassword = $password; + + return $decryptedPassword; + } + /** * 判断是否是utf8编码 * Judge a string is utf-8 or not. diff --git a/framework/base/router.class.php b/framework/base/router.class.php index 2cdf1f303b..1e04967ed5 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -2147,7 +2147,9 @@ class baseRouter } try { - $dbh = new PDO($dsn, $params->user, $params->password, array(PDO::ATTR_PERSISTENT => $params->persistant)); + $dbPassword = helper::decryptPassword($params->password); + + $dbh = new PDO($dsn, $params->user, $dbPassword, array(PDO::ATTR_PERSISTENT => $params->persistant)); $dbh->exec("SET NAMES {$params->encoding}"); /* From 99359da6fd2e6f43b648d3566fcd7d30363b30ee Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Tue, 8 Dec 2020 08:29:08 +0800 Subject: [PATCH 45/82] * Fix bug. --- module/user/view/task.html.php | 2 +- module/user/view/testcase.html.php | 2 +- module/user/view/todo.html.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/module/user/view/task.html.php b/module/user/view/task.html.php index b4fa0b3e95..58e4b5ccb0 100644 --- a/module/user/view/task.html.php +++ b/module/user/view/task.html.php @@ -53,7 +53,7 @@ - + createLink('task', 'view', "taskID=$task->id"), sprintf('%03d', $task->id));?> task->priList, $task->pri, $task->pri);?>'>pri == '0' ? '' : zget($lang->task->priList, $task->pri, $task->pri)?> createLink('project', 'browse', "projectid=$task->projectID"), $task->projectName);?> diff --git a/module/user/view/testcase.html.php b/module/user/view/testcase.html.php index 7648ef036b..ec0b77f711 100755 --- a/module/user/view/testcase.html.php +++ b/module/user/view/testcase.html.php @@ -49,7 +49,7 @@ case : $case->id?> - + createLink('testcase', 'view', "testcaseID=$caseID&version=$case->version"), sprintf('%03d', $caseID));?> testcase->priList, $case->pri, $case->pri)?>'>testcase->priList, $case->pri, $case->pri)?> createLink('testcase', 'view', "testcaseID=$caseID&version=$case->version"), $case->title);?> diff --git a/module/user/view/todo.html.php b/module/user/view/todo.html.php index 6cdb23fc57..bd08be7eb2 100644 --- a/module/user/view/todo.html.php +++ b/module/user/view/todo.html.php @@ -47,7 +47,7 @@ - + id;?> date == '2030-01-01' ? $lang->todo->periods['future'] : $todo->date;?> todo->typeList[$todo->type];?> From de8e4fc5ab7082fb525914be9acde7688fa03047 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Tue, 8 Dec 2020 09:11:11 +0800 Subject: [PATCH 46/82] * Fix bug#3715. --- module/story/control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/story/control.php b/module/story/control.php index e749aaa095..6bdf188b92 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -1182,7 +1182,7 @@ class story extends control $this->executeHooks($storyID); - if(isonlybody()) die(js::closeModal('parent.parent', 'this')); + if(isonlybody()) die(js::closeModal('parent.parent', 'this', 'function(){parent.parent.$(\'[data-ride="searchList"]\').searchList();}')); die(js::locate($this->createLink('story', 'view', "storyID=$storyID"), 'parent')); } From 8de5f93c2be12c403388db114ab4d5d3b32db319 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 8 Dec 2020 09:21:32 +0800 Subject: [PATCH 47/82] * fix bug #3693. --- module/block/view/todoblock.html.php | 2 +- module/bug/control.php | 10 +- module/company/control.php | 27 +++-- module/company/view/browse.html.php | 8 +- module/company/view/dynamic.html.php | 4 +- module/dept/model.php | 7 +- module/my/control.php | 14 ++- module/my/view/todo.html.php | 8 +- module/product/control.php | 21 +++- module/product/view/dynamic.html.php | 16 +-- module/project/control.php | 64 ++++++----- module/project/model.php | 15 +-- module/project/view/dynamic.html.php | 16 +-- module/project/view/team.html.php | 4 +- module/story/control.php | 10 +- module/task/control.php | 9 +- module/todo/control.php | 33 ++++-- module/todo/js/common.js | 2 +- module/todo/view/footer.html.php | 2 +- module/todo/view/view.html.php | 2 +- module/user/control.php | 159 ++++++++++++++------------- module/user/js/todo.js | 2 +- module/user/model.php | 36 ++---- module/user/view/bug.html.php | 8 +- module/user/view/dynamic.html.php | 6 +- module/user/view/edit.html.php | 2 +- module/user/view/featurebar.html.php | 16 +-- module/user/view/story.html.php | 8 +- module/user/view/task.html.php | 10 +- module/user/view/testcase.html.php | 8 +- module/user/view/testtask.html.php | 8 +- module/user/view/todo.html.php | 6 +- 32 files changed, 290 insertions(+), 253 deletions(-) diff --git a/module/block/view/todoblock.html.php b/module/block/view/todoblock.html.php index 44b71b7384..ef86a5e7cc 100644 --- a/module/block/view/todoblock.html.php +++ b/module/block/view/todoblock.html.php @@ -38,7 +38,7 @@ if(!$selfCall) die(include('./todolist.html.php'));
-
'> + '>

todo->create;?>

diff --git a/module/bug/control.php b/module/bug/control.php index ba3704f287..77147f8061 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -1388,15 +1388,17 @@ class bug extends control /** * AJAX: get bugs of a user in html select. * - * @param string $account + * @param int $userID * @param string $id the id of the select control. * @access public * @return string */ - public function ajaxGetUserBugs($account = '', $id = '') + public function ajaxGetUserBugs($userID = '', $id = '') { - if($account == '') $account = $this->app->user->account; - $bugs = $this->bug->getUserBugPairs($account); + if($userID == '') $userID = $this->app->user->id; + $user = $this->loadModel('user')->getById($userID, 'id'); + $account = $user->account; + $bugs = $this->bug->getUserBugPairs($account); if($id) die(html::select("bugs[$id]", $bugs, '', 'class="form-control"')); die(html::select('bug', $bugs, '', 'class=form-control')); diff --git a/module/company/control.php b/module/company/control.php index 4c1c107308..f71cea1b2e 100644 --- a/module/company/control.php +++ b/module/company/control.php @@ -140,10 +140,10 @@ class company extends control * Company dynamic. * * @param string $browseType - * @param string $orderBy + * @param string $param * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * @param string $date + * @param string $direction next|pre * @access public * @return void */ @@ -176,7 +176,13 @@ class company extends control $sort = $this->loadModel('common')->appendOrder($orderBy); /* Set the user and type. */ - $account = $browseType == 'account' ? $param : 'all'; + $account = 'all'; + $user = ''; + if($browseType == 'account') + { + $user = $this->loadModel('user')->getById((int)$param, 'id'); + if($user) $account = $user->account; + } $product = $browseType == 'product' ? $param : 'all'; $project = $browseType == 'project' ? $param : 'all'; $period = ($browseType == 'account' or $browseType == 'product' or $browseType == 'project') ? 'all' : $browseType; @@ -194,9 +200,12 @@ class company extends control $this->view->projects = $projects; /* Get users.*/ - $users = $this->loadModel('user')->getPairs('noclosed|nodeleted|noletter'); - $users[''] = $this->lang->company->user; - $this->view->users = $users; + $userIdPairs = $this->loadModel('user')->getPairs('noclosed|nodeleted|noletter|useid'); + $userIdPairs[''] = $this->lang->company->user; + $this->view->userIdPairs = $userIdPairs; + + $accountPairs = $this->user->getPairs('noclosed|nodeleted|noletter'); + $accountPairs[''] = ''; /* The header and position. */ $this->view->title = $this->lang->company->common . $this->lang->colon . $this->lang->company->dynamic; @@ -215,7 +224,6 @@ class company extends control /* Build search form. */ $projects[0] = ''; $products[0] = ''; - $users[''] = ''; ksort($projects); ksort($products); $projects['all'] = $this->lang->project->allProject; @@ -231,7 +239,7 @@ class company extends control $this->config->company->dynamic->search['params']['action']['values'] = $this->lang->action->search->label; $this->config->company->dynamic->search['params']['project']['values'] = $projects; $this->config->company->dynamic->search['params']['product']['values'] = $products; - $this->config->company->dynamic->search['params']['actor']['values'] = $users; + $this->config->company->dynamic->search['params']['actor']['values'] = $accountPairs; $this->loadModel('search')->setSearchParams($this->config->company->dynamic->search); /* Assign. */ @@ -242,6 +250,7 @@ class company extends control $this->view->queryID = $queryID; $this->view->orderBy = $orderBy; $this->view->pager = $pager; + $this->view->user = $user; $this->view->param = $param; $this->view->dateGroups = $this->action->buildDateGroup($actions, $direction, $browseType); $this->view->direction = $direction; diff --git a/module/company/view/browse.html.php b/module/company/view/browse.html.php index 1bd5cadff4..000075db08 100644 --- a/module/company/view/browse.html.php +++ b/module/company/view/browse.html.php @@ -84,12 +84,12 @@ js::set('confirmDelete', $lang->user->confirmDelete); - account => '')) . html::a(helper::createLink('user', 'view', "account=$user->account"), sprintf('%03d', $user->id));?> + account => '')) . html::a(helper::createLink('user', 'view', "userID=$user->id"), sprintf('%03d', $user->id));?> id);?> - account", $user->realname, '', "title='$user->realname'")) echo $user->realname;?> + id", $user->realname, '', "title='$user->realname'")) echo $user->realname;?> account;?> '>user->roleList, $user->role, '');?> email);?> @@ -100,8 +100,8 @@ js::set('confirmDelete', $lang->user->confirmDelete); visits;?> sso->turnon)) common::printIcon('user', 'unbind', "userID=$user->account", $user, 'list', 'unlink', "hiddenwin"); - common::printIcon('user', 'unlock', "userID=$user->account", $user, 'list', 'unlock', "hiddenwin"); + if(!empty($config->sso->turnon)) common::printIcon('user', 'unbind', "userID=$user->id", $user, 'list', 'unlink', "hiddenwin"); + common::printIcon('user', 'unlock', "userID=$user->id", $user, 'list', 'unlock', "hiddenwin"); common::printIcon('user', 'edit', "userID=$user->id&from=company", '', 'list'); $deleteClass = (strpos($this->app->company->admins, ",{$user->account},") === false and common::hasPriv('user', 'delete')) ? 'btn iframe' : 'btn disabled'; diff --git a/module/company/view/dynamic.html.php b/module/company/view/dynamic.html.php index a2465c1753..3ca1aad52d 100644 --- a/module/company/view/dynamic.html.php +++ b/module/company/view/dynamic.html.php @@ -25,7 +25,7 @@ echo html::a(inlink('dynamic', "browseType=$period"), $label, '', "class='btn btn-link $active' id='{$period}'") ?> -
+
id : '', 'onchange=changeUser(this.value) class="form-control chosen"');?>
global->flow != 'onlyTest'):?>
@@ -56,7 +56,7 @@
time?> - actor);?> + actor);?> actionLabel;?> action != 'login' and $action->action != 'logout'):?> objectLabel;?> diff --git a/module/dept/model.php b/module/dept/model.php index badce32d02..2fbee55e05 100644 --- a/module/dept/model.php +++ b/module/dept/model.php @@ -354,13 +354,16 @@ class deptModel extends model * Get user pairs of a department. * * @param int $deptID + * @param string $params * @access public * @return array */ - public function getDeptUserPairs($deptID = 0) + public function getDeptUserPairs($deptID = 0, $params = '') { $childDepts = $this->getAllChildID($deptID); - return $this->dao->select('account, realname')->from(TABLE_USER) + $keyField = strpos($params, 'useid') !== false ? 'id' : 'account'; + + return $this->dao->select("$keyField, realname")->from(TABLE_USER) ->where('deleted')->eq(0) ->beginIF($deptID)->andWhere('dept')->in($childDepts)->fi() ->orderBy('account') diff --git a/module/my/control.php b/module/my/control.php index 516ef202fc..e2d25de6e3 100644 --- a/module/my/control.php +++ b/module/my/control.php @@ -71,7 +71,7 @@ class my extends control * My todos. * * @param string $type - * @param string $account + * @param int $userID * @param string $status * @param int $recTotal * @param int $recPerPage @@ -79,7 +79,7 @@ class my extends control * @access public * @return void */ - public function todo($type = 'all', $account = '', $status = 'all', $orderBy = "date_desc,status,begin", $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function todo($type = 'all', $userID = '', $status = 'all', $orderBy = "date_desc,status,begin", $recTotal = 0, $recPerPage = 20, $pageID = 1) { /* Save session. */ $uri = $this->app->getURI(true); @@ -95,6 +95,10 @@ class my extends control if($this->app->getViewType() == 'mhtml') $recPerPage = 10; $pager = pager::init($recTotal, $recPerPage, $pageID); + if(empty($userID)) $userID = $this->app->user->id; + $user = $this->loadModel('user')->getById($userID, 'id'); + $account = $user->account; + /* The title and position. */ $this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->todo; $this->view->position[] = $this->lang->my->todo; @@ -110,6 +114,7 @@ class my extends control $this->view->recPerPage = $recPerPage; $this->view->pageID = $pageID; $this->view->status = $status; + $this->view->user = $user; $this->view->account = $this->app->user->account; $this->view->orderBy = $orderBy == 'date_desc,status,begin,id_desc' ? '' : $orderBy; $this->view->pager = $pager; @@ -544,10 +549,9 @@ class my extends control * My dynamic. * * @param string $type - * @param string $orderBy * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * @param string $date + * @param string $direction next|pre * @access public * @return void */ diff --git a/module/my/view/todo.html.php b/module/my/view/todo.html.php index e111b1c577..3c73e4bb2a 100644 --- a/module/my/view/todo.html.php +++ b/module/my/view/todo.html.php @@ -18,7 +18,7 @@ todo->periods as $period => $label):?> user->account}&status=undone"; + if($period == 'before') $vars .= "&userID={$app->user->id}&status=undone"; $label = "$label"; $active = ''; if($period == $type) @@ -35,7 +35,7 @@
- " . $lang->todo->export, '', "class='btn btn-link export'");?> + id}&orderBy=$orderBy", 'html', true), " " . $lang->todo->export, '', "class='btn btn-link export'");?> " . $lang->todo->batchCreate, '', "id='batchCreate' class='btn btn-secondary iframe' data-width='80%'", '', 'true');?> " . $lang->todo->create, '', "id='create' class='btn btn-primary iframe' data-width='80%'", '', 'true');?>
@@ -60,7 +60,7 @@ $canbatchAction = ($type != 'cycle' and ($canBatchEdit or $canBatchFinish or $canBatchClose or (common::hasPriv('todo', 'import2Today') and $importFuture))); ?> - + id}&status=$status&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?> "],s=n.find("tbody>tr:first").children(),c=0;s.each(function(){var e=$(this),t=e.attr("colspan");c+=t?parseInt(t):1});for(var u=0;u'+(e.IE?" ":"
")+"");l.push("
"),r=$(l.join("")),n.prepend(r)}}else r.remove()}i&&i("header",t.header)}if(void 0!==t.stripedRows){var p=n.find("tbody>tr");p.each(function(e){$(this).css("background-color",t.stripedRows&&e%2===0?"#f9f9f9":"")}),i&&i("stripedRows",t.stripedRows)}void 0!==t.autoWidth&&(n.css(t.autoWidth?{width:"auto",maxWidth:"100%"}:{width:"100%"}),i&&i("autoWidth",t.autoWidth)),void 0!==t.borderColor&&(n.find("td,th").css("border-color",t.borderColor),i&&i("borderColor",t.borderColor))}}function l(t,n,i,a){if(t*n){for(var o="ke-table-"+d.tableIdIndex++,r=$('
@@ -142,7 +142,7 @@ createLink('todo', 'batchEdit', "from=myTodo&type=$type&account=$account&status=$status"); + $actionLink = $this->createLink('todo', 'batchEdit', "from=myTodo&type=$type&userID={$user->id}&status=$status"); echo html::commonButton($lang->edit, "onclick=\"setFormAction('$actionLink')\""); } if($canBatchFinish) diff --git a/module/product/control.php b/module/product/control.php index fce5845b9d..0858cc5da9 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -535,11 +535,12 @@ class product extends control /** * Product dynamic. * + * @param int $productID * @param string $type - * @param string $orderBy + * @param string $param * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * @param string $date + * @param string $direction next|pre * @access public * @return void */ @@ -569,7 +570,12 @@ class product extends control $pager = new pager($recTotal, $recPerPage = 50, $pageID = 1); /* Set the user and type. */ - $account = $type == 'account' ? $param : 'all'; + $account = 'all'; + if($type == 'account') + { + $user = $this->loadModel('user')->getById((int)$param, 'id'); + if($user) $account = $user->account; + } $period = $type == 'account' ? 'all' : $type; $date = empty($date) ? '' : date('Y-m-d', $date); $actions = $this->loadModel('action')->getDynamic($account, $period, $sort, $pager, $productID, 'all', $date, $direction); @@ -579,12 +585,15 @@ class product extends control $this->view->position[] = html::a($this->createLink($this->moduleName, 'browse'), $this->products[$productID]); $this->view->position[] = $this->lang->product->dynamic; + $this->view->userIdPairs = $this->loadModel('user')->getPairs('noletter|nodeleted|noclosed|useid'); + $this->view->accountPairs = $this->user->getPairs('noletter|nodeleted|noclosed'); + /* Assign. */ $this->view->productID = $productID; $this->view->type = $type; - $this->view->users = $this->loadModel('user')->getPairs('noletter|nodeleted|noclosed'); - $this->view->account = $account; $this->view->orderBy = $orderBy; + $this->view->account = $account; + $this->view->user = isset($user) ? $user : ''; $this->view->param = $param; $this->view->pager = $pager; $this->view->dateGroups = $this->action->buildDateGroup($actions, $direction, $type); diff --git a/module/product/view/dynamic.html.php b/module/product/view/dynamic.html.php index 0d995517e9..ef5f703625 100755 --- a/module/product/view/dynamic.html.php +++ b/module/product/view/dynamic.html.php @@ -27,9 +27,9 @@
8; + $withSearch = count($accountPairs) > 8; $active = $param ? 'btn-active-text' : ''; - $current = $param ? zget($users, $param, $param) : $lang->product->viewByUser; + $current = $param ? zget($accountPairs, $account) : $lang->product->viewByUser; $current = "" . $current . '' . ' '; ?> @@ -43,12 +43,12 @@
$name) + $usersPinYin = common::convert2Pinyin($userIdPairs); + foreach($userIdPairs as $userID => $name) { - if(!$account) continue; - $searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $account, '') . '"') : ''; - echo html::a($this->createLink('product', 'dynamic', "productID=$productID&type=account¶m=$account"), $name, '', $searchKey); + if(!$userID) continue; + $searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $userID, '') . '"') : ''; + echo html::a($this->createLink('product', 'dynamic', "productID=$productID&type=account¶m=$userID"), $name, '', $searchKey); } ?>
@@ -82,7 +82,7 @@
time?> - actor);?> + actor);?> actionLabel;?> objectLabel;?> objectID;?> diff --git a/module/project/control.php b/module/project/control.php index 66885dd5f0..793deb8762 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -2023,38 +2023,36 @@ class project extends control * Unlink a memeber. * * @param int $projectID - * @param string $account + * @param int $userID * @param string $confirm yes|no * @access public * @return void */ - public function unlinkMember($projectID, $account, $confirm = 'no') + public function unlinkMember($projectID, $userID, $confirm = 'no') { - if($confirm == 'no') - { - die(js::confirm($this->lang->project->confirmUnlinkMember, $this->inlink('unlinkMember', "projectID=$projectID&account=$account&confirm=yes"))); - } - else - { - $this->project->unlinkMember($projectID, $account); + if($confirm == 'no') die(js::confirm($this->lang->project->confirmUnlinkMember, $this->inlink('unlinkMember', "projectID=$projectID&userID=$userID&confirm=yes"))); - /* if ajax request, send result. */ - if($this->server->ajax) + $user = $this->loadModel('user')->getById($userID, 'id'); + $account = $user->account; + + $this->project->unlinkMember($projectID, $account); + + /* if ajax request, send result. */ + if($this->server->ajax) + { + if(dao::isError()) { - if(dao::isError()) - { - $response['result'] = 'fail'; - $response['message'] = dao::getError(); - } - else - { - $response['result'] = 'success'; - $response['message'] = ''; - } - $this->send($response); + $response['result'] = 'fail'; + $response['message'] = dao::getError(); } - die(js::locate($this->inlink('team', "projectID=$projectID"), 'parent')); + else + { + $response['result'] = 'success'; + $response['message'] = ''; + } + $this->send($response); } + die(js::locate($this->inlink('team', "projectID=$projectID"), 'parent')); } /** @@ -2226,11 +2224,12 @@ class project extends control /** * Project dynamic. * + * @param int $projectID * @param string $type - * @param string $orderBy + * @param string $param * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * @param string $date + * @param string $direction next|pre * @access public * @return void */ @@ -2271,7 +2270,12 @@ class project extends control $pager = new pager($recTotal, $recPerPage = 50, $pageID = 1); /* Set the user and type. */ - $account = $type == 'account' ? $param : 'all'; + $account = 'all'; + if($type == 'account') + { + $user = $this->loadModel('user')->getById((int)$param, 'id'); + if($user) $account = $user->account; + } $period = $type == 'account' ? 'all' : $type; $date = empty($date) ? '' : date('Y-m-d', $date); $actions = $this->loadModel('action')->getDynamic($account, $period, $sort, $pager, 'all', $projectID, $date, $direction); @@ -2282,13 +2286,15 @@ class project extends control $this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $project->name); $this->view->position[] = $this->lang->project->dynamic; + $this->view->userIdPairs = $this->loadModel('user')->getPairs('noletter|nodeleted|useid'); + $this->view->accountPairs = $this->user->getPairs('noletter|nodeleted'); + /* Assign. */ $this->view->projectID = $projectID; $this->view->type = $type; - $this->view->users = $this->loadModel('user')->getPairs('noletter|nodeleted'); - $this->view->account = $account; $this->view->orderBy = $orderBy; $this->view->pager = $pager; + $this->view->account = $account; $this->view->param = $param; $this->view->dateGroups = $this->action->buildDateGroup($actions, $direction, $type); $this->view->direction = $direction; diff --git a/module/project/model.php b/module/project/model.php index 757cd2e74f..b1e1985e96 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1765,7 +1765,7 @@ class projectModel extends model public function getTeamMembers($projectID) { if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getTeamMembers(); - return $this->dao->select("t1.*, t1.hours * t1.days AS totalHours, if(t2.deleted='0', t2.realname, t1.account) as realname")->from(TABLE_TEAM)->alias('t1') + return $this->dao->select("t1.*, t1.hours * t1.days AS totalHours, t2.id as userID, if(t2.deleted='0', t2.realname, t1.account) as realname")->from(TABLE_TEAM)->alias('t1') ->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account') ->where('t1.root')->eq((int)$projectID) ->andWhere('t1.type')->eq('project') @@ -1786,24 +1786,25 @@ class projectModel extends model { if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getTeamMembersPairs(); $this->app->loadConfig('user'); - $users = $this->dao->select('t1.account, t2.realname')->from(TABLE_TEAM)->alias('t1') + $keyField = strpos($params, 'useid') !== false ? 'id' : 'account'; + $users = $this->dao->select("t2.id, t2.account, t2.realname")->from(TABLE_TEAM)->alias('t1') ->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account') ->where('t1.root')->eq((int)$projectID) ->andWhere('t1.type')->eq('project') ->beginIF($params == 'nodeleted' or empty($this->config->user->showDeleted)) ->andWhere('t2.deleted')->eq(0) ->fi() - ->fetchPairs(); + ->fetchAll($keyField); - if($usersToAppended) $users += $this->dao->select('account, realname')->from(TABLE_USER)->where('account')->in($usersToAppended)->fetchPairs(); + if($usersToAppended) $users += $this->dao->select("id, account, realname")->from(TABLE_USER)->where('account')->in($usersToAppended)->fetchPairs($keyField); if(!$users) return array('' => ''); - foreach($users as $account => $realName) + foreach($users as $account => $user) { - $firstLetter = ucfirst(substr($account, 0, 1)) . ':'; + $firstLetter = ucfirst(substr($user->account, 0, 1)) . ':'; if(!empty($this->config->isINT)) $firstLetter = ''; - $users[$account] = $firstLetter . ($realName ? $realName : $account); + $users[$account] = $firstLetter . ($user->realname ? $user->realname : $user->account); } return array('' => '') + $users; } diff --git a/module/project/view/dynamic.html.php b/module/project/view/dynamic.html.php index 2b7770dbdd..1d1af4a2fd 100755 --- a/module/project/view/dynamic.html.php +++ b/module/project/view/dynamic.html.php @@ -27,9 +27,9 @@
8; + $withSearch = count($accountPairs) > 8; $active = $param ? 'btn-active-text' : ''; - $current = $param ? zget($users, $param, $param) : $lang->project->viewByUser; + $current = $param ? zget($accountPairs, $account, $account) : $lang->project->viewByUser; $current = "" . $current . '' . ' '; ?> @@ -43,12 +43,12 @@
$name) + $usersPinYin = common::convert2Pinyin($userIdPairs); + foreach($userIdPairs as $userID => $name) { - if(!$account) continue; - $searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $account, '') . '"') : ''; - echo html::a($this->createLink('project', 'dynamic', "productID=$projectID&type=account¶m=$account"), $name); + if(!$userID) continue; + $searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $userID, '') . '"') : ''; + echo html::a($this->createLink('project', 'dynamic', "productID=$projectID&type=account¶m=$userID"), $name); } ?>
@@ -83,7 +83,7 @@
time?> - actor);?> + actor);?> actionLabel;?> objectLabel;?> objectID;?> diff --git a/module/project/view/team.html.php b/module/project/view/team.html.php index cffb070a32..af2df8add4 100644 --- a/module/project/view/team.html.php +++ b/module/project/view/team.html.php @@ -66,7 +66,7 @@
account", $member->realname)) print $member->realname; + if(!common::printLink('user', 'view', "userID={$member->userID}", $member->realname)) print $member->realname; $memberHours = $member->days * $member->hours; $totalHours += $memberHours; ?> @@ -82,7 +82,7 @@ createLink('project', 'unlinkMember', "projectID=$project->id&account=$member->account&confirm=yes"); + $unlinkURL = $this->createLink('project', 'unlinkMember', "projectID=$project->id&userID=$member->userID&confirm=yes"); echo html::a("javascript:ajaxDelete(\"$unlinkURL\", \"mainContent\", confirmUnlinkMember)", '', '', "class='btn' title='{$lang->project->unlinkMember}'"); } ?> diff --git a/module/story/control.php b/module/story/control.php index e749aaa095..6dc8e46e53 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -1822,15 +1822,17 @@ class story extends control /** * AJAX: get storys of a user in html select. * - * @param string $account + * @param int $userID * @param string $id the id of the select control. * @access public * @return string */ - public function ajaxGetUserStorys($account = '', $id = '') + public function ajaxGetUserStorys($userID = '', $id = '') { - if($account == '') $account = $this->app->user->account; - $storys = $this->story->getUserStoryPairs($account); + if($userID == '') $userID = $this->app->user->id; + $user = $this->loadModel('user')->getById($userID, 'id'); + $account = $user->account; + $storys = $this->story->getUserStoryPairs($account); if($id) die(html::select("storys[$id]", $storys, '', 'class="form-control"')); die(html::select('story', $storys, '', 'class=form-control')); diff --git a/module/task/control.php b/module/task/control.php index c6318e31c6..22309e2fc5 100644 --- a/module/task/control.php +++ b/module/task/control.php @@ -1247,15 +1247,18 @@ class task extends control /** * AJAX: return tasks of a user in html select. * - * @param string $account + * @param int $userID * @param string $id * @param string $status * @access public * @return string */ - public function ajaxGetUserTasks($account = '', $id = '', $status = 'wait,doing') + public function ajaxGetUserTasks($userID = '', $id = '', $status = 'wait,doing') { - if($account == '') $account = $this->app->user->account; + if($userID == '') $userID = $this->app->user->id; + $user = $this->loadModel('user')->getById($userID, 'id'); + $account = $user->account; + $tasks = $this->task->getUserTaskPairs($account, $status); if($id) die(html::select("tasks[$id]", $tasks, '', 'class="form-control"')); diff --git a/module/todo/control.php b/module/todo/control.php index 13c4c2ba91..c0d867bf34 100644 --- a/module/todo/control.php +++ b/module/todo/control.php @@ -30,14 +30,18 @@ class todo extends control * Create a todo. * * @param string|date $date - * @param string $account + * @param int $userID * @access public * @return void */ - public function create($date = 'today', $account = '', $from = 'todo') + public function create($date = 'today', $userID = '', $from = 'todo') { if($date == 'today') $date = date::today(); - if($account == '') $account = $this->app->user->account; + if($userID == '') $userID = $this->app->user->id; + + $user = $this->loadModel('user')->getById($userID, 'id'); + $account = $user->account; + if(!empty($_POST)) { $todoID = $this->todo->create($date, $account); @@ -65,7 +69,7 @@ class todo extends control if($this->app->getViewType() == 'xhtml') die(js::locate($this->createLink('todo', 'view', "todoID=$todoID"), 'parent')); if(isonlybody()) die(js::locate($this->createLink('my', 'todo', "type=$date"), 'parent.parent')); - die(js::locate($this->createLink('my', 'todo', "type=all&account=&status=all&orderBy=id_desc"), 'parent')); + die(js::locate($this->createLink('my', 'todo', "type=all&userID=&status=all&orderBy=id_desc"), 'parent')); } unset($this->lang->todo->typeList['cycle']); @@ -82,11 +86,10 @@ class todo extends control * Batch create todo * * @param string $date - * @param string $account * @access public * @return void */ - public function batchCreate($date = 'today', $account = '') + public function batchCreate($date = 'today') { if($date == 'today') $date = date(DT_DATE1, time()); if(!empty($_POST)) @@ -164,12 +167,12 @@ class todo extends control * * @param string $from example:myTodo, todoBatchEdit. * @param string $type - * @param string $account + * @param int $userID * @param string $status * @access public * @return void */ - public function batchEdit($from = '', $type = 'today', $account = '', $status = 'all') + public function batchEdit($from = '', $type = 'today', $userID = '', $status = 'all') { /* Get form data for my-todo. */ if($from == 'myTodo') @@ -179,7 +182,10 @@ class todo extends control $todoIDList = array(); $columns = 7; - if($account == '') $account = $this->app->user->account; + if($userID == '') $userID = $this->app->user->id; + $user = $this->loadModel('user')->getById($userID, 'id'); + $account = $user->account; + $bugs = $this->bug->getUserBugPairs($account); $tasks = $this->task->getUserTaskPairs($account, $status); $storys = $this->loadModel('story')->getUserStoryPairs($account); @@ -356,7 +362,6 @@ class todo extends control { $this->lang->todo->menu = $this->lang->user->menu; $this->lang->todo->menuOrder = $this->lang->user->menuOrder; - $this->user->setMenu($this->user->getPairs(), $todo->account); $this->lang->company->menu->browseUser['subModule'] = 'todo'; $this->lang->set('menugroup.todo', $from); } @@ -374,6 +379,7 @@ class todo extends control $this->view->todo = $todo; $this->view->times = date::buildTimeList($this->config->todo->times->begin, $this->config->todo->times->end, $this->config->todo->times->delta); $this->view->users = $this->user->getPairs('noletter'); + $this->view->user = $this->user->getById($todo->account); $this->view->actions = $this->loadModel('action')->getList('todo', $todoID); $this->view->from = $from; $this->view->projects = $this->loadModel('project')->getPairs(); @@ -502,15 +508,18 @@ class todo extends control /** * Get data to export * - * @param string $productID + * @param int $userID * @param string $orderBy * @access public * @return void */ - public function export($account, $orderBy) + public function export($userID, $orderBy) { if($_POST) { + $user = $this->loadModel('user')->getById($userID, 'id'); + $account = $user->account; + $todoLang = $this->lang->todo; $todoConfig = $this->config->todo; diff --git a/module/todo/js/common.js b/module/todo/js/common.js index a579536014..d846ab20b7 100644 --- a/module/todo/js/common.js +++ b/module/todo/js/common.js @@ -23,7 +23,7 @@ function loadList(type, id) divID = '#nameBox'; } - var param = 'account=' + account; + var param = 'userID=' + userID; if(id) param += '&id=' + id; if(type == 'bug') { diff --git a/module/todo/view/footer.html.php b/module/todo/view/footer.html.php index f82d350974..a2eca96d2b 100644 --- a/module/todo/view/footer.html.php +++ b/module/todo/view/footer.html.php @@ -1,2 +1,2 @@ -user->account)?> +user->id)?> diff --git a/module/todo/view/view.html.php b/module/todo/view/view.html.php index 72c7aadf41..a68fc76fc5 100644 --- a/module/todo/view/view.html.php +++ b/module/todo/view/view.html.php @@ -52,7 +52,7 @@ } else { - $browseLink = $this->createLink('user', 'todo', "account=$todo->account"); + $browseLink = $this->createLink('user', 'todo', "userID=$user->id"); } if($this->app->user->admin or ($this->app->user->account == $todo->account) or ($this->app->user->account == $todo->assignedTo)) diff --git a/module/user/control.php b/module/user/control.php index fb944967c1..3fdde4b52c 100644 --- a/module/user/control.php +++ b/module/user/control.php @@ -31,22 +31,22 @@ class user extends control /** * View a user. * - * @param string $account + * @param string $userID * @access public * @return void */ - public function view($account) + public function view($userID) { - if($this->config->global->flow == 'onlyStory') $this->locate($this->createLink('user', 'dynamic', "period=today&account=$account")); - if($this->config->global->flow == 'onlyTask') $this->locate($this->createLink('user', 'task', "account=$account")); - if($this->config->global->flow == 'onlyTest') $this->locate($this->createLink('user', 'bug', "account=$account")); - $this->locate($this->createLink('user', 'todo', "account=$account")); + if($this->config->global->flow == 'onlyStory') $this->locate($this->createLink('user', 'dynamic', "period=today&userID=$userID")); + if($this->config->global->flow == 'onlyTask') $this->locate($this->createLink('user', 'task', "userID=$userID")); + if($this->config->global->flow == 'onlyTest') $this->locate($this->createLink('user', 'bug', "userID=$userID")); + $this->locate($this->createLink('user', 'todo', "userID=$userID")); } /** * Todos of a user. * - * @param string $account + * @param string $userID * @param string $type the todo type, today|lastweek|thisweek|all|undone, or a date. * @param string $status * @param string $orderBy @@ -56,7 +56,7 @@ class user extends control * @access public * @return void */ - public function todo($account, $type = 'today', $status = 'all', $orderBy='date,status,begin', $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function todo($userID, $type = 'today', $status = 'all', $orderBy='date,status,begin', $recTotal = 0, $recPerPage = 20, $pageID = 1) { /* Set thie url to session. */ $uri = $this->app->getURI(true); @@ -72,14 +72,14 @@ class user extends control $sort = $this->loadModel('common')->appendOrder($orderBy); /* Get user, totos. */ - $user = $this->user->getById($account); + $user = $this->user->getById($userID, 'id'); $account = $user->account; $todos = $this->todo->getList($type, $account, $status, 0, $pager, $sort); $date = (int)$type == 0 ? helper::today() : $type; /* set menus. */ $this->lang->set('menugroup.user', 'company'); - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted'), $account); + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted|useid'), $userID); $this->view->title = $this->lang->user->common . $this->lang->colon . $this->lang->user->todo; $this->view->position[] = $this->lang->user->todo; @@ -87,7 +87,6 @@ class user extends control $this->view->date = $date; $this->view->todos = $todos; $this->view->user = $user; - $this->view->account = $account; $this->view->type = $type; $this->view->status = $status; $this->view->orderBy = $orderBy; @@ -99,7 +98,7 @@ class user extends control /** * Story of a user. * - * @param string $account + * @param int $userID * @param string $type * @param int $recTotal * @param int $recPerPage @@ -107,7 +106,7 @@ class user extends control * @access public * @return void */ - public function story($account, $type = 'assignedTo', $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function story($userID, $type = 'assignedTo', $recTotal = 0, $recPerPage = 20, $pageID = 1) { /* Save session. */ $this->session->set('storyList', $this->app->getURI(true)); @@ -116,9 +115,11 @@ class user extends control $this->app->loadClass('pager', $static = true); $pager = pager::init($recTotal, $recPerPage, $pageID); + $user = $this->user->getById($userID, 'id'); + $account = $user->account; + /* Set menu. */ $this->lang->set('menugroup.user', 'company'); - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted'), $account); /* Assign. */ $this->view->title = $this->lang->user->common . $this->lang->colon . $this->lang->user->story; @@ -126,9 +127,9 @@ class user extends control $this->view->stories = $this->loadModel('story')->getUserStories($account, $type, 'id_desc', $pager); $this->view->users = $this->user->getPairs('noletter'); $this->view->type = $type; - $this->view->account = $account; - $this->view->user = $this->user->getById($account); + $this->view->user = $user; $this->view->pager = $pager; + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted|useid'), $userID); $this->display(); } @@ -136,7 +137,7 @@ class user extends control /** * Tasks of a user. * - * @param string $account + * @param int $userID * @param string $type * @param int $recTotal * @param int $recPerPage @@ -144,7 +145,7 @@ class user extends control * @access public * @return void */ - public function task($account, $type = 'assignedTo', $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function task($userID, $type = 'assignedTo', $recTotal = 0, $recPerPage = 20, $pageID = 1) { /* Save the session. */ $this->session->set('taskList', $this->app->getURI(true)); @@ -153,9 +154,12 @@ class user extends control $this->app->loadClass('pager', $static = true); $pager = pager::init($recTotal, $recPerPage, $pageID); + $user = $this->user->getById($userID, 'id'); + $account = $user->account; + /* Set the menu. */ $this->lang->set('menugroup.user', 'company'); - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted'), $account); + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted|useid'), $userID); /* Assign. */ $this->view->title = $this->lang->user->common . $this->lang->colon . $this->lang->user->task; @@ -163,8 +167,7 @@ class user extends control $this->view->tabID = 'task'; $this->view->tasks = $this->loadModel('task')->getUserTasks($account, $type, 0, $pager); $this->view->type = $type; - $this->view->account = $account; - $this->view->user = $this->user->getById($account); + $this->view->user = $user; $this->view->pager = $pager; $this->display(); @@ -173,7 +176,7 @@ class user extends control /** * User bugs. * - * @param string $account + * @param int $userID * @param string $type * @param string $orderBy * @param int $recTotal @@ -182,7 +185,7 @@ class user extends control * @access public * @return void */ - public function bug($account, $type = 'assignedTo', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function bug($userID, $type = 'assignedTo', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) { /* Save the session. */ $this->session->set('bugList', $this->app->getURI(true)); @@ -191,9 +194,12 @@ class user extends control $this->app->loadClass('pager', $static = true); $pager = pager::init($recTotal, $recPerPage, $pageID); + $user = $this->user->getById($userID, 'id'); + $account = $user->account; + /* Set menu. */ $this->lang->set('menugroup.user', 'company'); - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted'), $account); + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted|useid'), $userID); /* Load the lang of bug module. */ $this->app->loadLang('bug'); @@ -202,9 +208,8 @@ class user extends control $this->view->position[] = $this->lang->user->bug; $this->view->tabID = 'bug'; $this->view->bugs = $this->loadModel('bug')->getUserBugs($account, $type, $orderBy, 0, $pager); - $this->view->account = $account; $this->view->type = $type; - $this->view->user = $this->user->getById($account); + $this->view->user = $user; $this->view->users = $this->user->getPairs('noletter'); $this->view->pager = $pager; @@ -214,7 +219,7 @@ class user extends control /** * User's testtask * - * @param string $account + * @param int $userID * @param string $orderBy * @param int $recTotal * @param int $recPerPage @@ -222,15 +227,18 @@ class user extends control * @access public * @return void */ - public function testtask($account, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function testtask($userID, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) { /* Load pager. */ $this->app->loadClass('pager', $static = true); $pager = pager::init($recTotal, $recPerPage, $pageID); + $user = $this->user->getById($userID, 'id'); + $account = $user->account; + /* Set menu. */ $this->lang->set('menugroup.user', 'company'); - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted'), $account); + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted|useid'), $userID); /* Save session. */ $this->session->set('testtaskList', $this->app->getURI(true)); @@ -244,8 +252,7 @@ class user extends control $this->view->position[] = $this->lang->user->testTask; $this->view->tasks = $this->loadModel('testtask')->getByUser($account, $pager, $sort); $this->view->users = $this->user->getPairs('noletter'); - $this->view->account = $account; - $this->view->user = $this->user->getById($account); + $this->view->user = $user; $this->view->recTotal = $recTotal; $this->view->recPerPage = $recPerPage; $this->view->pageID = $pageID; @@ -257,6 +264,7 @@ class user extends control /** * User's test case. * + * @param int $userID * @param string $type * @param string $orderBy * @param int $recTotal @@ -265,7 +273,7 @@ class user extends control * @access public * @return void */ - public function testcase($account, $type = 'case2Him', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function testcase($userID, $type = 'case2Him', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) { /* Save session, load lang. */ $this->session->set('caseList', $this->app->getURI(true)); @@ -275,12 +283,14 @@ class user extends control $this->app->loadClass('pager', $static = true); $pager = pager::init($recTotal, $recPerPage, $pageID); + $user = $this->user->getById($userID, 'id'); + $account = $user->account; + /* Append id for secend sort. */ $sort = $this->loadModel('common')->appendOrder($orderBy); /* Set menu. */ $this->lang->set('menugroup.user', 'company'); - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted'), $account); $cases = array(); if($type == 'case2Him') @@ -296,8 +306,7 @@ class user extends control /* Assign. */ $this->view->title = $this->lang->user->common . $this->lang->colon . $this->lang->user->testCase; $this->view->position[] = $this->lang->user->testCase; - $this->view->account = $account; - $this->view->user = $this->user->getById($account); + $this->view->user = $user; $this->view->cases = $cases; $this->view->users = $this->user->getPairs('noletter'); $this->view->tabID = 'test'; @@ -307,6 +316,7 @@ class user extends control $this->view->pageID = $pageID; $this->view->orderBy = $orderBy; $this->view->pager = $pager; + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted|useid'), $userID); $this->display(); } @@ -314,23 +324,25 @@ class user extends control /** * User projects. * - * @param string $account + * @param int $userID * @access public * @return void */ - public function project($account) + public function project($userID) { + $user = $this->user->getById($userID, 'id'); + $account = $user->account; + /* Set the menus. */ $this->loadModel('project'); $this->lang->set('menugroup.user', 'company'); - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclose|nodeleted'), $account); + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclose|nodeleted|useid'), $userID); $this->view->title = $this->lang->user->common . $this->lang->colon . $this->lang->user->project; $this->view->position[] = $this->lang->user->project; $this->view->tabID = 'project'; $this->view->projects = $this->user->getProjects($account); - $this->view->account = $account; - $this->view->user = $this->user->getById($account); + $this->view->user = $user; $this->display(); } @@ -338,27 +350,25 @@ class user extends control /** * The profile of a user. * - * @param string $account + * @param int $userID * @access public * @return void */ - public function profile($account = '') + public function profile($userID = '') { - if(empty($account)) $account = $this->app->user->account; + if(empty($userID)) $userID = $this->app->user->id; - /* Set menu. */ - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclose|nodeleted'), $account); - - $user = $this->user->getById($account); + $user = $this->user->getById($userID, 'id'); + $account = $user->account; $this->view->title = "USER #$user->id $user->account/" . $this->lang->user->profile; $this->view->position[] = $this->lang->user->common; $this->view->position[] = $this->lang->user->profile; - $this->view->account = $account; $this->view->user = $user; $this->view->groups = $this->loadModel('group')->getByAccount($account); $this->view->deptPath = $this->dept->getParents($user->dept); $this->view->personalData = $this->user->getPersonalData($user->account); + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclose|nodeleted|useid'), $userID); $this->display(); } @@ -612,43 +622,35 @@ class user extends control /** * Unlock a user. * - * @param int $account + * @param int $userID * @param string $confirm * @access public * @return void */ - public function unlock($account, $confirm = 'no') + public function unlock($userID, $confirm = 'no') { - if($confirm == 'no') - { - die(js::confirm($this->lang->user->confirmUnlock, $this->createLink('user', 'unlock', "account=$account&confirm=yes"))); - } - else - { - $this->user->cleanLocked($account); - die(js::locate($this->session->userList ? $this->session->userList : $this->createLink('company', 'browse'), 'parent')); - } + if($confirm == 'no') die(js::confirm($this->lang->user->confirmUnlock, $this->createLink('user', 'unlock', "userID=$userID&confirm=yes"))); + + $user = $this->user->getById($userID, 'id'); + $this->user->cleanLocked($user->account); + die(js::locate($this->session->userList ? $this->session->userList : $this->createLink('company', 'browse'), 'parent')); } /** * Unbind Ranzhi * - * @param string $account + * @param string $userID * @param string $confirm * @access public * @return void */ - public function unbind($account, $confirm = 'no') + public function unbind($userID, $confirm = 'no') { - if($confirm == 'no') - { - die(js::confirm($this->lang->user->confirmUnbind, $this->createLink('user', 'unbind', "account=$account&confirm=yes"))); - } - else - { - $this->user->unbind($account); - die(js::locate($this->session->userList ? $this->session->userList : $this->createLink('company', 'browse'), 'parent')); - } + if($confirm == 'no') die(js::confirm($this->lang->user->confirmUnbind, $this->createLink('user', 'unbind', "userID=$userID&confirm=yes"))); + + $user = $this->user->getById($userID, 'id'); + $this->user->unbind($user->account); + die(js::locate($this->session->userList ? $this->session->userList : $this->createLink('company', 'browse'), 'parent')); } @@ -936,19 +938,21 @@ class user extends control * User dynamic. * * @param string $period - * @param string $account - * @param string $orderBy + * @param int $userID * @param int $recTotal - * @param int $recPerPage - * @param int $pageID + * @param string $date + * @param string $direction next|pre * @access public * @return void */ - public function dynamic($period = 'today', $account = '', $recTotal = 0, $date = '', $direction = 'next') + public function dynamic($period = 'today', $userID = '', $recTotal = 0, $date = '', $direction = 'next') { + $user = $this->user->getById($userID, 'id'); + $account = $user->account; + /* set menus. */ $this->lang->set('menugroup.user', 'company'); - $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted'), $account); + $this->view->userList = $this->user->setUserList($this->user->getPairs('noempty|noclosed|nodeleted|useid'), $userID); /* Save session. */ $uri = $this->app->getURI(true); @@ -980,9 +984,8 @@ class user extends control /* Assign. */ $this->view->type = $period; $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->account = $account; $this->view->pager = $pager; - $this->view->user = $this->user->getById($account); + $this->view->user = $user; $this->view->dateGroups = $this->action->buildDateGroup($actions, $direction, $period); $this->view->direction = $direction; $this->display(); diff --git a/module/user/js/todo.js b/module/user/js/todo.js index 72b0c829f4..6fb71fec92 100644 --- a/module/user/js/todo.js +++ b/module/user/js/todo.js @@ -1,6 +1,6 @@ function changeDate(date) { - location.href = createLink('user', 'todo', 'account=' + account + '&type=' + date.replace(/\-/g, '')); + location.href = createLink('user', 'todo', 'userID=' + userID + '&type=' + date.replace(/\-/g, '')); } $(function() diff --git a/module/user/model.php b/module/user/model.php index 60d371ef62..b63eace6c0 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -13,25 +13,6 @@ app->getMethodName(); - $selectHtml = html::select('account', $users, $account, "onchange=\"switchAccount(this.value, '$methodName')\""); - foreach($this->lang->user->menu as $key => $value) - { - $replace = ($key == 'account') ? $selectHtml : $account; - common::setMenuVars($this->lang->user->menu, $key, $replace); - } - } - /** * Set users list. * @@ -78,7 +59,7 @@ class userModel extends model * If there's xxfirst in the params, use INSTR function to get the position of role fields in a order string, * thus to make sure users of this role at first. */ - $fields = 'account, realname, deleted'; + $fields = 'id, account, realname, deleted'; if(strpos($params, 'pofirst') !== false) $fields .= ", INSTR(',pd,po,', role) AS roleOrder"; if(strpos($params, 'pdfirst') !== false) $fields .= ", INSTR(',po,pd,', role) AS roleOrder"; if(strpos($params, 'qafirst') !== false) $fields .= ", INSTR(',qd,qa,', role) AS roleOrder"; @@ -87,6 +68,8 @@ class userModel extends model if(strpos($params, 'devfirst')!== false) $fields .= ", INSTR(',td,pm,qd,qa,dev,', role) AS roleOrder"; $orderBy = strpos($params, 'first') !== false ? 'roleOrder DESC, account' : 'account'; + $keyField = (strpos($params, 'useid')!== false) ? 'id' : "account"; + /* Get raw records. */ $this->app->loadConfig('user'); unset($this->config->user->moreLink); @@ -96,7 +79,7 @@ class userModel extends model ->beginIF(strpos($params, 'nodeleted') !== false or empty($this->config->user->showDeleted))->andWhere('deleted')->eq('0')->fi() ->orderBy($orderBy) ->beginIF($maxCount)->limit($maxCount)->fi() - ->fetchAll('account'); + ->fetchAll($keyField); if($maxCount and $maxCount == count($users)) { @@ -106,14 +89,14 @@ class userModel extends model $this->config->user->moreLink = helper::createLink('user', 'ajaxGetMore') . $connectString . "params=" . base64_encode($moreLinkParams); } - if($usersToAppended) $users += $this->dao->select($fields)->from(TABLE_USER)->where('account')->in($usersToAppended)->fetchAll('account'); + if($usersToAppended) $users += $this->dao->select($fields)->from(TABLE_USER)->where('account')->in($usersToAppended)->fetchAll($keyField); /* Cycle the user records to append the first letter of his account. */ foreach($users as $account => $user) { - $firstLetter = ucfirst(substr($account, 0, 1)) . ':'; + $firstLetter = ucfirst(substr($user->account, 0, 1)) . ':'; if(strpos($params, 'noletter') !== false or !empty($this->config->isINT)) $firstLetter = ''; - $users[$account] = $firstLetter . (($user->deleted and strpos($params, 'realname') === false) ? $account : ($user->realname ? $user->realname : $account)); + $users[$account] = $firstLetter . (($user->deleted and strpos($params, 'realname') === false) ? $user->account : ($user->realname ? $user->realname : $user->account)); } /* Append empty, closed, and guest users. */ @@ -189,6 +172,9 @@ class userModel extends model */ public function getById($userID, $field = 'account') { + if($field == 'id') $userID = (int)$userID; + if($field == 'account') $userID = str_replace(' ', '', $userID); + $user = $this->dao->select('*')->from(TABLE_USER)->where("`$field`")->eq($userID)->fetch(); if(!$user) return false; $user->last = date(DT_DATETIME1, $user->last); @@ -1505,7 +1491,7 @@ class userModel extends model $linkedProjectProducts = array(); if($objectType == 'product') { - $stmt = $this->dao->select('project,product')->from(TABLE_PROJECTPRODUCT)->alias('t1') + $stmt = $this->dao->select('t1.project,t1.product')->from(TABLE_PROJECTPRODUCT)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id') ->where('t1.product')->in($objectIdList) ->andWhere('t2.deleted')->eq(0) diff --git a/module/user/view/bug.html.php b/module/user/view/bug.html.php index ad547f9ab3..6dbf3375f4 100644 --- a/module/user/view/bug.html.php +++ b/module/user/view/bug.html.php @@ -19,16 +19,16 @@ user->thirdPerson, $user->gender); $active = $type == 'assignedTo' ? 'active' : ''; - echo "
  • " . html::a(inlink('bug', "account=$account&type=assignedTo"), sprintf($lang->user->assignedTo, $that)) . "
  • "; + echo "
  • " . html::a(inlink('bug', "userID={$user->id}&type=assignedTo"), sprintf($lang->user->assignedTo, $that)) . "
  • "; $active = $type == 'openedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('bug', "account=$account&type=openedBy"), sprintf($lang->user->openedBy, $that)) . "
  • "; + echo "
  • " . html::a(inlink('bug', "userID={$user->id}&type=openedBy"), sprintf($lang->user->openedBy, $that)) . "
  • "; $active = $type == 'resolvedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('bug', "account=$account&type=resolvedBy"), sprintf($lang->user->resolvedBy, $that)) . "
  • "; + echo "
  • " . html::a(inlink('bug', "userID={$user->id}&type=resolvedBy"), sprintf($lang->user->resolvedBy, $that)) . "
  • "; $active = $type == 'closedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('bug', "account=$account&type=closedBy"), sprintf($lang->user->closedBy, $that)) . "
  • "; + echo "
  • " . html::a(inlink('bug', "userID={$user->id}&type=closedBy"), sprintf($lang->user->closedBy, $that)) . "
  • "; ?> diff --git a/module/user/view/dynamic.html.php b/module/user/view/dynamic.html.php index 83bf799b0f..22fa97a7f2 100644 --- a/module/user/view/dynamic.html.php +++ b/module/user/view/dynamic.html.php @@ -25,7 +25,7 @@ $active = 'btn-active-text'; $label .= " {$pager->recTotal}"; } - echo html::a(inlink('dynamic', "type=$period&account=$account"), $label, '', "class='btn btn-link $active' id='{$period}'") + echo html::a(inlink('dynamic', "type=$period&userID={$user->id}"), $label, '', "class='btn btn-link $active' id='{$period}'") ?> @@ -76,8 +76,8 @@ $firstDate = date('Y-m-d', strtotime($firstAction->originalDate) + 24 * 3600); $lastDate = substr($action->originalDate, 0, 10); $hasPre = $this->action->hasPreOrNext($firstDate, 'pre'); $hasNext = $this->action->hasPreOrNext($lastDate, 'next'); -$preLink = $hasPre ? inlink('dynamic', "type=$type&account=$account&recTotal={$pager->recTotal}&date=" . strtotime($firstDate) . '&direction=pre') : 'javascript:;'; -$nextLink = $hasNext ? inlink('dynamic', "type=$type&account=$account&recTotal={$pager->recTotal}&date=" . strtotime($lastDate) . '&direction=next') : 'javascript:;'; +$preLink = $hasPre ? inlink('dynamic', "type=$type&userID={$user->id}&recTotal={$pager->recTotal}&date=" . strtotime($firstDate) . '&direction=pre') : 'javascript:;'; +$nextLink = $hasNext ? inlink('dynamic', "type=$type&userID={$user->id}&recTotal={$pager->recTotal}&date=" . strtotime($lastDate) . '&direction=next') : 'javascript:;'; ?>
    diff --git a/module/user/view/edit.html.php b/module/user/view/edit.html.php index c48aa7c16a..2aa36f4ce4 100644 --- a/module/user/view/edit.html.php +++ b/module/user/view/edit.html.php @@ -18,7 +18,7 @@

    id;?> - account", $user->realname)) echo $user->realname;?> (account;?>) + id", $user->realname)) echo $user->realname;?> (account;?>) arrow . $lang->user->edit;?>

    diff --git a/module/user/view/featurebar.html.php b/module/user/view/featurebar.html.php index 201aaa0115..cb9c352567 100755 --- a/module/user/view/featurebar.html.php +++ b/module/user/view/featurebar.html.php @@ -12,48 +12,48 @@ { $label = "{$lang->user->schedule}"; $active = $methodName == 'todo' ? ' btn-active-text' : ''; - common::printLink('user', 'todo', "account=$account", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'todo', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); } if($config->global->flow != 'onlyTask' and $config->global->flow != 'onlyTest') { $label = "{$lang->user->story}"; $active = $methodName == 'story' ? ' btn-active-text' : ''; - common::printLink('user', 'story', "account=$account", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'story', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); } if($config->global->flow == 'full' or $config->global->flow == 'onlyTask') { $label = "{$lang->user->task}"; $active = $methodName == 'task' ? ' btn-active-text' : ''; - common::printLink('user', 'task', "account=$account", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'task', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); } if($config->global->flow == 'full' or $config->global->flow == 'onlyTest') { $label = "{$lang->user->bug}"; $active = $methodName == 'bug' ? ' btn-active-text' : ''; - common::printLink('user', 'bug', "account=$account", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'bug', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); $label = "{$lang->user->test}"; $active = ($methodName == 'testtask' or $methodName == 'testcase')? ' btn-active-text' : ''; - common::printLink('user', 'testtask', "account=$account", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'testtask', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); } $label = "{$lang->user->dynamic}"; $active = $methodName == 'dynamic' ? ' btn-active-text' : ''; - common::printLink('user', 'dynamic', "type=today&account=$account", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'dynamic', "type=today&userID={$user->id}", $label, '', "class='btn btn-link $active'"); if($config->global->flow == 'full' or $config->global->flow == 'onlyTask') { $label = "{$lang->user->project}"; $active = $methodName == 'project' ? ' btn-active-text' : ''; - common::printLink('user', 'project', "account=$account", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'project', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); } $label = "{$lang->user->profile}"; $active = $methodName == 'profile' ? ' btn-active-text' : ''; - common::printLink('user', 'profile', "account=$account", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'profile', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); ?>
    diff --git a/module/user/view/story.html.php b/module/user/view/story.html.php index 213a0f2737..756fe4a522 100644 --- a/module/user/view/story.html.php +++ b/module/user/view/story.html.php @@ -19,16 +19,16 @@ user->thirdPerson, $user->gender); $active = $type == 'assignedTo' ? 'active' : ''; - echo "
  • " . html::a(inlink('story', "account=$account&type=assignedTo"), sprintf($lang->user->assignedTo, $that)) . "
  • "; + echo "
  • " . html::a(inlink('story', "userID={$user->id}&type=assignedTo"), sprintf($lang->user->assignedTo, $that)) . "
  • "; $active = $type == 'openedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('story', "account=$account&type=openedBy"), sprintf($lang->user->openedBy, $that)) . "
  • "; + echo "
  • " . html::a(inlink('story', "userID={$user->id}&type=openedBy"), sprintf($lang->user->openedBy, $that)) . "
  • "; $active = $type == 'reviewedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('story', "account=$account&type=reviewedBy"), sprintf($lang->user->reviewedBy ,$that)) . "
  • "; + echo "
  • " . html::a(inlink('story', "userID={$user->id}&type=reviewedBy"), sprintf($lang->user->reviewedBy ,$that)) . "
  • "; $active = $type == 'closedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('story', "account=$account&type=closedBy"), sprintf($lang->user->closedBy ,$that)) . "
  • "; + echo "
  • " . html::a(inlink('story', "userID={$user->id}&type=closedBy"), sprintf($lang->user->closedBy ,$that)) . "
  • "; ?> diff --git a/module/user/view/task.html.php b/module/user/view/task.html.php index b4fa0b3e95..20579d9cd3 100644 --- a/module/user/view/task.html.php +++ b/module/user/view/task.html.php @@ -19,19 +19,19 @@ user->thirdPerson, $user->gender); $active = $type == 'assignedTo' ? 'active' : ''; - echo "
  • " . html::a(inlink('task', "account=$account&type=assignedTo"), sprintf($lang->user->assignedTo, $that)) . "
  • "; + echo "
  • " . html::a(inlink('task', "userID={$user->id}&type=assignedTo"), sprintf($lang->user->assignedTo, $that)) . "
  • "; $active = $type == 'openedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('task', "account=$account&type=openedBy"), sprintf($lang->user->openedBy, $that)) . "
  • "; + echo "
  • " . html::a(inlink('task', "userID={$user->id}&type=openedBy"), sprintf($lang->user->openedBy, $that)) . "
  • "; $active = $type == 'finishedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('task', "account=$account&type=finishedBy"), sprintf($lang->user->finishedBy, $that)) . "
  • "; + echo "
  • " . html::a(inlink('task', "userID={$user->id}&type=finishedBy"), sprintf($lang->user->finishedBy, $that)) . "
  • "; $active = $type == 'closedBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('task', "account=$account&type=closedBy"), sprintf($lang->user->closedBy, $that)) . "
  • "; + echo "
  • " . html::a(inlink('task', "userID={$user->id}&type=closedBy"), sprintf($lang->user->closedBy, $that)) . "
  • "; $active = $type == 'canceledBy' ? 'active' : ''; - echo "
  • " . html::a(inlink('task', "account=$account&type=canceledBy"), sprintf($lang->user->canceledBy, $that)) . "
  • "; + echo "
  • " . html::a(inlink('task', "userID={$user->id}&type=canceledBy"), sprintf($lang->user->canceledBy, $that)) . "
  • "; ?> diff --git a/module/user/view/testcase.html.php b/module/user/view/testcase.html.php index 7648ef036b..8dc2d55049 100755 --- a/module/user/view/testcase.html.php +++ b/module/user/view/testcase.html.php @@ -17,12 +17,12 @@ @@ -30,7 +30,7 @@
    id}&type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; $this->app->loadLang('testtask'); ?> diff --git a/module/user/view/testtask.html.php b/module/user/view/testtask.html.php index 18226f521e..fe5bc14ef6 100755 --- a/module/user/view/testtask.html.php +++ b/module/user/view/testtask.html.php @@ -17,16 +17,16 @@
    - + id}&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?> diff --git a/module/user/view/todo.html.php b/module/user/view/todo.html.php index 6cdb23fc57..15f4e80da6 100644 --- a/module/user/view/todo.html.php +++ b/module/user/view/todo.html.php @@ -13,7 +13,7 @@ - +id);?>
    idAB);?>
    - recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"; ?> + id}&type=$type&status=$status&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"; ?> From 031134ae3f33fde876e4c28ab41d92b6fd631d58 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Tue, 8 Dec 2020 10:41:56 +0800 Subject: [PATCH 48/82] * Fix bug 3642. --- module/testtask/model.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/module/testtask/model.php b/module/testtask/model.php index fcd95c5206..0e7dd6ac52 100644 --- a/module/testtask/model.php +++ b/module/testtask/model.php @@ -627,9 +627,16 @@ class testtaskModel extends model */ public function getLinkableCasesByTestTask($testTask, $linkedCases, $query, $pager) { - $caseList = $this->dao->select("`case`")->from(TABLE_TESTRUN)->where('task')->eq($testTask)->andWhere('`case`')->notin($linkedCases)->fetchPairs('case'); + $query = preg_replace('/`(\w+)`/', 't1.`$1`', $query); - return $this->dao->select("*")->from(TABLE_CASE)->where($query)->andWhere('id')->in($caseList)->andWhere('status')->ne('wait')->page($pager)->fetchAll(); + return $this->dao->select("t1.*,t2.lastRunner,t2.lastRunDate,t2.lastRunResult")->from(TABLE_CASE)->alias('t1') + ->leftJoin(TABLE_TESTRUN)->alias('t2')->on('t1.id = t2.case') + ->where($query) + ->andWhere('t1.id')->notin($linkedCases) + ->andWhere('t2.task')->eq($testTask) + ->andWhere('t1.status')->ne('wait') + ->page($pager) + ->fetchAll(); } /** From ad94534129cd644df9ce2f08a00b2d2263d6ed6e Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 8 Dec 2020 11:24:07 +0800 Subject: [PATCH 49/82] * fix bug #3737. --- lib/scm/scm.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/scm/scm.class.php b/lib/scm/scm.class.php index a35c9bc5fd..24f9687e29 100644 --- a/lib/scm/scm.class.php +++ b/lib/scm/scm.class.php @@ -239,10 +239,10 @@ class scm */ function escapeCmd($cmd) { - $codes = array('#', '&', ';', '`', '|', '*', '?', '~', '<', '>', '^', '[', ']', '{', '}', '$', ',', '\x0A', '\xFF'); - if(DIRECTORY_SEPARATOR == '/') $codes[] = '\\'; - foreach($codes as $code) $cmd = str_replace($code, '\\' . $code, $cmd); - return $cmd; + $codes = array('#', '&', ';', '`', '|', '*', '?', '~', '<', '>', '^', '[', ']', '{', '}', '$', ',', '\x0A', '\xFF'); + if(DIRECTORY_SEPARATOR == '/') $cmd = str_replace('\\', '\\\\', $cmd); + foreach($codes as $code) $cmd = str_replace($code, "\\{$code}", $cmd); + return $cmd; } /** From a9281522102081eabb396fff02d8929e0829d849 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Tue, 8 Dec 2020 13:04:40 +0800 Subject: [PATCH 50/82] * Fix bug #3704. --- lib/base/filter/filter.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/base/filter/filter.class.php b/lib/base/filter/filter.class.php index f8995c0044..ecd93a209e 100644 --- a/lib/base/filter/filter.class.php +++ b/lib/base/filter/filter.class.php @@ -1072,6 +1072,9 @@ class baseFixer /* Disable caching. */ $purifierConfig->set('Cache.DefinitionImpl', null); + /* The name attribute is allowed. */ + $purifierConfig->set('HTML.Attr.Name.UseCDATA', true); + $purifier = new HTMLPurifier($purifierConfig); $def = $purifierConfig->getHTMLDefinition(true); $def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top'); From 58b718bfc0c6a306c1c759131e6799f21746b370 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Tue, 8 Dec 2020 14:36:11 +0800 Subject: [PATCH 51/82] * Fix bug #3644. --- module/dev/lang/zh-cn.php | 2 +- module/dev/lang/zh-tw.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/dev/lang/zh-cn.php b/module/dev/lang/zh-cn.php index c932c62b2e..729891bf77 100644 --- a/module/dev/lang/zh-cn.php +++ b/module/dev/lang/zh-cn.php @@ -61,7 +61,7 @@ $lang->dev->tableList['taskestimate'] = '任务预计'; $lang->dev->tableList['team'] = '团队'; $lang->dev->tableList['testresult'] = '测试结果'; $lang->dev->tableList['testrun'] = '测试执行'; -$lang->dev->tableList['testtask'] = '测试版本'; +$lang->dev->tableList['testtask'] = '测试单'; $lang->dev->tableList['todo'] = '待办'; $lang->dev->tableList['user'] = '用户'; $lang->dev->tableList['usercontact'] = '用户联系人'; diff --git a/module/dev/lang/zh-tw.php b/module/dev/lang/zh-tw.php index fecbf9efc0..639e29af21 100644 --- a/module/dev/lang/zh-tw.php +++ b/module/dev/lang/zh-tw.php @@ -61,7 +61,7 @@ $lang->dev->tableList['taskestimate'] = '任務預計'; $lang->dev->tableList['team'] = '團隊'; $lang->dev->tableList['testresult'] = '測試結果'; $lang->dev->tableList['testrun'] = '測試執行'; -$lang->dev->tableList['testtask'] = '測試版本'; +$lang->dev->tableList['testtask'] = '測試單'; $lang->dev->tableList['todo'] = '待辦'; $lang->dev->tableList['user'] = '用戶'; $lang->dev->tableList['usercontact'] = '用戶聯繫人'; From fa246c117368a687409b0e4e1ddc3bbd4f62cd9b Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 8 Dec 2020 14:52:26 +0800 Subject: [PATCH 52/82] * finish task #3688. --- module/task/view/batchedit.html.php | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/module/task/view/batchedit.html.php b/module/task/view/batchedit.html.php index 0925f4f923..16b1b4a3e5 100755 --- a/module/task/view/batchedit.html.php +++ b/module/task/view/batchedit.html.php @@ -135,7 +135,30 @@ - + control == 'select' or $extendField->control == 'multi-select') ? " style='overflow:visible'" : '') . ">" . $this->loadModel('flow')->getFieldControl($extendField, $tasks[$taskID], $extendField->field . "[{$taskID}]") . "";?> From 1654db7e6cfa6ecc587231b91e79894259696580 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Tue, 8 Dec 2020 14:39:02 +0800 Subject: [PATCH 53/82] * Fix bug. --- module/story/view/create.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/story/view/create.html.php b/module/story/view/create.html.php index 87b7fc6a6a..02e79c91fd 100644 --- a/module/story/view/create.html.php +++ b/module/story/view/create.html.php @@ -123,7 +123,7 @@ -
    +
    story->pri;?> Date: Wed, 9 Dec 2020 10:53:04 +0800 Subject: [PATCH 54/82] * adjust for check one click package. --- module/build/lang/zh-tw.php | 3 +- module/misc/model.php | 58 +++++++++++++++++++++++++++++++++ module/user/control.php | 3 +- module/user/css/login.css | 3 ++ module/user/js/login.js | 5 +++ module/user/lang/de.php | 4 ++- module/user/lang/en.php | 4 ++- module/user/lang/fr.php | 4 ++- module/user/lang/vi.php | 4 ++- module/user/lang/zh-cn.php | 4 ++- module/user/lang/zh-tw.php | 4 ++- module/user/view/login.html.php | 56 +++++++++---------------------- 12 files changed, 104 insertions(+), 48 deletions(-) diff --git a/module/build/lang/zh-tw.php b/module/build/lang/zh-tw.php index 03d5daddbb..09d0dfb026 100644 --- a/module/build/lang/zh-tw.php +++ b/module/build/lang/zh-tw.php @@ -49,7 +49,8 @@ $lang->build->noProduct = " 該{$lang->projectCommon $lang->build->noBuild = '暫時沒有版本。'; $lang->build->notice = new stdclass(); -$lang->build->notice->changeProduct = "已經關聯{$lang->storyCommon}或Bug的版本,不能修改其所屬產品"; +$lang->build->notice->changeProduct = "已經關聯{$lang->storyCommon}、Bug或提交測試單的版本,不能修改其所屬{$lang->productCommon}"; +$lang->build->notice->changeProject = "提交測試單的版本,不能修改其所屬{$lang->projectCommon}"; $lang->build->finishStories = " 本次共完成 %s 個{$lang->storyCommon}"; $lang->build->resolvedBugs = ' 本次共解決 %s 個Bug'; diff --git a/module/misc/model.php b/module/misc/model.php index 865de78bb7..48427f94ba 100644 --- a/module/misc/model.php +++ b/module/misc/model.php @@ -60,4 +60,62 @@ class miscModel extends model } return $remind; } + + /** + * Check one click package. + * + * @access public + * @return array + */ + public function checkOneClickPackage() + { + $weakSites = array(); + if(strpos('|/zentao/|/pro/|/biz/|', "|{$this->config->webRoot}|") !== false) + { + $databases = array('zentao' => 'zentao', 'zentaopro' => 'zentaopro', 'zentaobiz' => 'zentaobiz', 'zentaoep' => 'zentaoep'); + if($this->config->webRoot == '/zentao/') unset($databases['zentao']); + if($this->config->webRoot == '/pro/') unset($databases['zentaopro']); + if($this->config->webRoot == '/biz/') + { + unset($databases['zentaobiz']); + unset($databases['zentaoep']); + } + + $basePath = dirname($this->app->getBasePath()); + foreach($databases as $database) + { + $zentaoDirName = $database; + if(!is_dir($basePath . '/' . $zentaoDirName)) + { + if($zentaoDirName == 'zentaobiz' and !is_dir($basePath . '/zentaoep')) continue; + if($zentaoDirName == 'zentaoep' and !is_dir($basePath . '/zentaobiz')) continue; + if($zentaoDirName == 'zentao' or $zentaoDirName == 'zentaopro') continue; + + if($zentaoDirName == 'zentaobiz') $zentaoDirName = 'zentaoep'; + if($zentaoDirName == 'zentaoep') $zentaoDirName = 'zentaobiz'; + } + + try + { + $webRoot = "/{$database}/"; + if($database == 'zentao') $webRoot = '/zentao/'; + if($database == 'zentaopro') $webRoot = '/pro/'; + if($database == 'zentaobiz') $webRoot = '/biz/'; + if($database == 'zentaoep') $webRoot = '/biz/'; + + $user = $this->dbh->query("select * from {$database}.`zt_user` where account = 'admin' and password='" . md5('123456') . "'")->fetch(); + if($user) + { + $site = array(); + $site['path'] = basename($basePath) . '/' . $zentaoDirName; + $site['database'] = $database; + $weakSites[$database] = $site; + } + } + catch(Exception $e){} + } + } + + return $weakSites; + } } diff --git a/module/user/control.php b/module/user/control.php index 3fdde4b52c..faff426579 100644 --- a/module/user/control.php +++ b/module/user/control.php @@ -821,13 +821,14 @@ class user extends control $this->view->demoUsers = $demoUsers; } - $this->app->loadLang('misc'); + $this->loadModel('misc'); $this->view->noGDLib = sprintf($this->lang->misc->noGDLib, common::getSysURL() . $this->config->webRoot, '', false, true); $this->view->title = $this->lang->user->login; $this->view->referer = $this->referer; $this->view->s = zget($this->config->global, 'sn', ''); $this->view->keepLogin = $this->cookie->keepLogin ? $this->cookie->keepLogin : 'off'; $this->view->rand = $this->user->updateSessionRandom(); + $this->view->weakSites = $this->misc->checkOneClickPackage(); $this->display(); } } diff --git a/module/user/css/login.css b/module/user/css/login.css index 93b1884f2c..5a9895719a 100644 --- a/module/user/css/login.css +++ b/module/user/css/login.css @@ -16,3 +16,6 @@ html[lang='en'] #loginPanel .table-form > tbody > tr > th {width: 80px;} #langs > .dropdown-menu {min-width: 0; width: 85px;} #logo-box img{margin-left:40px; width: 100px;} + +.showNotice{color:yellow;} +.showNotice:hover{color:yellow;} diff --git a/module/user/js/login.js b/module/user/js/login.js index 20c0f88c3c..ecfd39e0fa 100644 --- a/module/user/js/login.js +++ b/module/user/js/login.js @@ -65,3 +65,8 @@ $(document).ready(function() return false; }); }); + +function showNotice() +{ + if(typeof(process4Safe) == 'string') bootbox.alert(process4Safe) +} diff --git a/module/user/lang/de.php b/module/user/lang/de.php index 0631d9b5a6..f3e063a836 100644 --- a/module/user/lang/de.php +++ b/module/user/lang/de.php @@ -216,4 +216,6 @@ $lang->user->noticeResetFile = "
    Kontaktieren Sie den Administrator um Ihr Pa
  • Die Datei muss leer sein.
  • Wenn die Datei bereits existiert löschen Sie diese und erstellen Sie eine neue.
  • "; -$lang->user->notice4Safe = "It is detected that you may be using the one click installation package environment, and other sites in the environment are still using a simple password. For security, please change the password in time. Login address of other sites:
    %s"; +$lang->user->notice4Safe = "Warning: one click package security hazard detected"; +$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory."; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database."; diff --git a/module/user/lang/en.php b/module/user/lang/en.php index 7c088d88b9..416d3330bd 100644 --- a/module/user/lang/en.php +++ b/module/user/lang/en.php @@ -216,4 +216,6 @@ $lang->user->noticeResetFile = "
    Contact the Administrator to reset your pass
  • Keep the file empty.
  • If the file exists, remove it and create it again.
  • "; -$lang->user->notice4Safe = "It is detected that you may be using the one click installation package environment, and other sites in the environment are still using a simple password. For security, please change the password in time. Login address of other sites:
    %s"; +$lang->user->notice4Safe = "Warning: one click package security hazard detected"; +$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory."; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database."; diff --git a/module/user/lang/fr.php b/module/user/lang/fr.php index 720be6cd23..a413e193c3 100644 --- a/module/user/lang/fr.php +++ b/module/user/lang/fr.php @@ -216,4 +216,6 @@ $lang->user->noticeResetFile = "
    Contactez l'administrateur pour réinitialis
  • Gardez ce fichier vide.
  • Si le fichier existe déjà, supprimez le et créez le à nouveau.
  • Bonne chance.
  • "; -$lang->user->notice4Safe = "It is detected that you may be using the one click installation package environment, and other sites in the environment are still using a simple password. For security, please change the password in time. Login address of other sites:
    %s"; +$lang->user->notice4Safe = "Warning: one click package security hazard detected"; +$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory."; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database."; diff --git a/module/user/lang/vi.php b/module/user/lang/vi.php index 46e63a5e1f..8effe4d85b 100644 --- a/module/user/lang/vi.php +++ b/module/user/lang/vi.php @@ -216,4 +216,6 @@ $lang->user->noticeResetFile = "
    Liên hệ quản trị viên để thiết
  • Giữ tập tin này rỗng.
  • Nếu tập tin đã tồn tại, xóa và tạo lại.
  • "; -$lang->user->notice4Safe = "It is detected that you may be using the one click installation package environment, and other sites in the environment are still using a simple password. For security, please change the password in time. Login address of other sites:
    %s"; +$lang->user->notice4Safe = "Warning: one click package security hazard detected"; +$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory."; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database."; diff --git a/module/user/lang/zh-cn.php b/module/user/lang/zh-cn.php index defbdce0f3..5258b5d1dd 100644 --- a/module/user/lang/zh-cn.php +++ b/module/user/lang/zh-cn.php @@ -216,4 +216,6 @@ $lang->user->noticeResetFile = "
    普通用户请联系管理员重置密码文件内容为空。
  • 如果之前文件存在,删除之后重新创建。
  • "; -$lang->user->notice4Safe = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,请及时修改密码。其他站点的登录地址:
    %s"; +$lang->user->notice4Safe = "警告:检测到一键安装包安全隐患"; +$lang->user->process4DIR = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。将 %s 目录删除或改名。"; +$lang->user->process4DB = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。请访问登录数据库,修改 %s 数据库的zt_user表的password字段。"; diff --git a/module/user/lang/zh-tw.php b/module/user/lang/zh-tw.php index ec56d4173c..988a25ec66 100644 --- a/module/user/lang/zh-tw.php +++ b/module/user/lang/zh-tw.php @@ -216,4 +216,6 @@ $lang->user->noticeResetFile = "
    普通用戶請聯繫管理員重置密碼檔案內容為空。
  • 如果之前檔案存在,刪除之後重新創建。
  • "; -$lang->user->notice4Safe = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,請及時修改密碼。其他站點的登錄地址:
    %s"; +$lang->user->notice4Safe = "警告:檢測到一鍵安裝包安全隱患"; +$lang->user->process4DIR = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。將 %s 目錄刪除或改名。"; +$lang->user->process4DB = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。請訪問登錄資料庫,修改 %s 資料庫的zt_user表的password欄位。"; diff --git a/module/user/view/login.html.php b/module/user/view/login.html.php index cc6b58dbe8..277f3c2849 100644 --- a/module/user/view/login.html.php +++ b/module/user/view/login.html.php @@ -81,6 +81,9 @@ if(empty($config->notMd5Pwd))js::import($jsRoot . 'md5.js');
    + + + checkVersion):?> @@ -90,50 +93,23 @@ if(empty($config->notMd5Pwd))js::import($jsRoot . 'md5.js');
    config->webRoot}|") !== false) +if($weakSites) { - $databases = array('zentao' => 'zentao', 'zentaopro' => 'zentaopro', 'zentaobiz' => 'zentaobiz', 'zentaoep' => 'zentaoep'); - if($this->config->webRoot == '/zentao/') unset($databases['zentao']); - if($this->config->webRoot == '/pro/') unset($databases['zentaopro']); - if($this->config->webRoot == '/biz/') + $paths = array(); + $databases = array(); + $isXampp = false; + foreach($weakSites as $webRoot => $site) { - unset($databases['zentaobiz']); - unset($databases['zentaoep']); + $path = $site['path']; + if(strpos($path, 'xampp') !== false) $isXampp = true; + + $paths[] = $site['path']; + $databases[] = $site['database']; } - $users = array(); - foreach($databases as $database) - { - try - { - $webRoot = "/{$database}/"; - if($database == 'zentao') $webRoot = '/zentao/'; - if($database == 'zentaopro') $webRoot = '/pro/'; - if($database == 'zentaobiz') $webRoot = '/biz/'; - if($database == 'zentaoep') $webRoot = '/biz/'; - - $user = $this->dbh->query("select * from {$database}.`zt_user` where account = 'admin' and password='" . md5('123456') . "'")->fetch(); - if($user) $users[$webRoot] = true; - } - catch(Exception $e){} - } - - if($users) - { - $sysURL = common::getSysURL(); - $links = array(); - foreach($users as $webRoot => $user) $links[] = $sysURL . $webRoot; - - $notice = sprintf($lang->user->notice4Safe, join('
    ', $links)); - echo << -\$(function() -{ - bootbox.alert('$notice'); -}) - -EOD; - } + $process4Safe = $isXampp ? $lang->user->process4DB : $lang->user->process4DIR; + $process4Safe = sprintf($process4Safe, join(' ', $isXampp ? $databases : $paths)); + js::set('process4Safe', $process4Safe); } ?> From ecae390f75a5da3ec25e8c2ffb98b761378332df Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 10 Dec 2020 17:06:31 +0800 Subject: [PATCH 55/82] * adjust style. --- module/task/css/batchcreate.css | 1 + 1 file changed, 1 insertion(+) diff --git a/module/task/css/batchcreate.css b/module/task/css/batchcreate.css index 600da0767f..80bf4bc3a5 100644 --- a/module/task/css/batchcreate.css +++ b/module/task/css/batchcreate.css @@ -1,4 +1,5 @@ .chosen-container[id^="story"] {width: 200px; max-width: 150px;} +select[id^="story"] + .picker-single {width: 130px; max-width: 130px;} [id^=name] {min-width: 165px;} #mainContent .main-header h2{max-width:300px} From 28af1ae7e38b45457be8d9f809bd7f6052a1b94a Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 10 Dec 2020 17:06:50 +0800 Subject: [PATCH 56/82] * adjust for notice one click safe. --- module/user/lang/de.php | 6 +++--- module/user/lang/en.php | 6 +++--- module/user/lang/fr.php | 6 +++--- module/user/lang/vi.php | 6 +++--- module/user/lang/zh-cn.php | 6 +++--- module/user/lang/zh-tw.php | 6 +++--- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/module/user/lang/de.php b/module/user/lang/de.php index f3e063a836..3fff87639f 100644 --- a/module/user/lang/de.php +++ b/module/user/lang/de.php @@ -216,6 +216,6 @@ $lang->user->noticeResetFile = "
    Kontaktieren Sie den Administrator um Ihr Pa
  • Die Datei muss leer sein.
  • Wenn die Datei bereits existiert löschen Sie diese und erstellen Sie eine neue.
  • "; -$lang->user->notice4Safe = "Warning: one click package security hazard detected"; -$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory."; -$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database."; +$lang->user->notice4Safe = "Warning: Weak password of one click package detected"; +$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/en.php b/module/user/lang/en.php index 416d3330bd..57a48ecede 100644 --- a/module/user/lang/en.php +++ b/module/user/lang/en.php @@ -216,6 +216,6 @@ $lang->user->noticeResetFile = "
    Contact the Administrator to reset your pass
  • Keep the file empty.
  • If the file exists, remove it and create it again.
  • "; -$lang->user->notice4Safe = "Warning: one click package security hazard detected"; -$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory."; -$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database."; +$lang->user->notice4Safe = "Warning: Weak password of one click package detected"; +$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/fr.php b/module/user/lang/fr.php index a413e193c3..8f98744c3e 100644 --- a/module/user/lang/fr.php +++ b/module/user/lang/fr.php @@ -216,6 +216,6 @@ $lang->user->noticeResetFile = "
    Contactez l'administrateur pour réinitialis
  • Gardez ce fichier vide.
  • Si le fichier existe déjà, supprimez le et créez le à nouveau.
  • Bonne chance.
  • "; -$lang->user->notice4Safe = "Warning: one click package security hazard detected"; -$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory."; -$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database."; +$lang->user->notice4Safe = "Warning: Weak password of one click package detected"; +$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/vi.php b/module/user/lang/vi.php index 8effe4d85b..1757a44c10 100644 --- a/module/user/lang/vi.php +++ b/module/user/lang/vi.php @@ -216,6 +216,6 @@ $lang->user->noticeResetFile = "
    Liên hệ quản trị viên để thiết
  • Giữ tập tin này rỗng.
  • Nếu tập tin đã tồn tại, xóa và tạo lại.
  • "; -$lang->user->notice4Safe = "Warning: one click package security hazard detected"; -$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory."; -$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database."; +$lang->user->notice4Safe = "Warning: Weak password of one click package detected"; +$lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/zh-cn.php b/module/user/lang/zh-cn.php index 5258b5d1dd..c585ec39ed 100644 --- a/module/user/lang/zh-cn.php +++ b/module/user/lang/zh-cn.php @@ -216,6 +216,6 @@ $lang->user->noticeResetFile = "
    普通用户请联系管理员重置密码文件内容为空。
  • 如果之前文件存在,删除之后重新创建。
  • "; -$lang->user->notice4Safe = "警告:检测到一键安装包安全隐患"; -$lang->user->process4DIR = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。将 %s 目录删除或改名。"; -$lang->user->process4DB = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。请访问登录数据库,修改 %s 数据库的zt_user表的password字段。"; +$lang->user->notice4Safe = "警告:检测到一键安装包密码口令弱"; +$lang->user->process4DIR = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。将 %s 目录删除或改名。详情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。请访问登录数据库,修改 %s 数据库的zt_user表的password字段。详情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/zh-tw.php b/module/user/lang/zh-tw.php index 988a25ec66..ea856df1b7 100644 --- a/module/user/lang/zh-tw.php +++ b/module/user/lang/zh-tw.php @@ -216,6 +216,6 @@ $lang->user->noticeResetFile = "
    普通用戶請聯繫管理員重置密碼檔案內容為空。
  • 如果之前檔案存在,刪除之後重新創建。
  • "; -$lang->user->notice4Safe = "警告:檢測到一鍵安裝包安全隱患"; -$lang->user->process4DIR = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。將 %s 目錄刪除或改名。"; -$lang->user->process4DB = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。請訪問登錄資料庫,修改 %s 資料庫的zt_user表的password欄位。"; +$lang->user->notice4Safe = "警告:檢測到一鍵安裝包密碼口令弱"; +$lang->user->process4DIR = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。將 %s 目錄刪除或改名。詳情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。請訪問登錄資料庫,修改 %s 資料庫的zt_user表的password欄位。詳情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; From b3244a73a34e6a7047fb03ea2ea7623828f41b98 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 10 Dec 2020 17:15:34 +0800 Subject: [PATCH 57/82] * adjust for en lang. --- module/custom/lang/de.php | 2 +- module/custom/lang/en.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/custom/lang/de.php b/module/custom/lang/de.php index d70348b8d7..1c66f99428 100644 --- a/module/custom/lang/de.php +++ b/module/custom/lang/de.php @@ -171,7 +171,7 @@ $lang->custom->conceptQuestions['storypoint'] = "2. Do you use hours or st $lang->custom->conceptOptions = new stdclass; $lang->custom->conceptOptions->story = array(); -$lang->custom->conceptOptions->story['0'] = 'Requiremenet'; +$lang->custom->conceptOptions->story['0'] = 'Requirement'; $lang->custom->conceptOptions->story['1'] = 'Story'; $lang->custom->conceptOptions->hourPoint = array(); diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php index 49d8deca10..9d0692dbb2 100644 --- a/module/custom/lang/en.php +++ b/module/custom/lang/en.php @@ -171,7 +171,7 @@ $lang->custom->conceptQuestions['storypoint'] = "2. Do you use hours or st $lang->custom->conceptOptions = new stdclass; $lang->custom->conceptOptions->story = array(); -$lang->custom->conceptOptions->story['0'] = 'Requiremenet'; +$lang->custom->conceptOptions->story['0'] = 'Requirement'; $lang->custom->conceptOptions->story['1'] = 'Story'; $lang->custom->conceptOptions->hourPoint = array(); From 197d1c03559b49f735e25f2aaec51bf0a45ca9ff Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 10 Dec 2020 17:22:21 +0800 Subject: [PATCH 58/82] * adjust for en lang. --- module/custom/lang/de.php | 4 ++-- module/custom/lang/en.php | 4 ++-- module/custom/lang/fr.php | 4 ++-- module/custom/lang/vi.php | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/module/custom/lang/de.php b/module/custom/lang/de.php index 1c66f99428..c80e72ccfa 100644 --- a/module/custom/lang/de.php +++ b/module/custom/lang/de.php @@ -165,8 +165,8 @@ $lang->custom->moduleName['project'] = $lang->projectCommon; $lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?"; $lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?"; -$lang->custom->conceptQuestions['requirementpoint'] = "2. Do you use hours or function points to make estimations in your company?"; -$lang->custom->conceptQuestions['storypoint'] = "2. Do you use hours or story points to make estimations in your company?"; +$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?"; +$lang->custom->conceptQuestions['storypoint'] = "3. Do you use hours or story points to make estimations in your company?"; $lang->custom->conceptOptions = new stdclass; diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php index 9d0692dbb2..3f092e5d3f 100644 --- a/module/custom/lang/en.php +++ b/module/custom/lang/en.php @@ -165,8 +165,8 @@ $lang->custom->moduleName['project'] = $lang->projectCommon; $lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?"; $lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?"; -$lang->custom->conceptQuestions['requirementpoint'] = "2. Do you use hours or function points to make estimations in your company?"; -$lang->custom->conceptQuestions['storypoint'] = "2. Do you use hours or story points to make estimations in your company?"; +$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?"; +$lang->custom->conceptQuestions['storypoint'] = "3. Do you use hours or story points to make estimations in your company?"; $lang->custom->conceptOptions = new stdclass; diff --git a/module/custom/lang/fr.php b/module/custom/lang/fr.php index 30520b5233..2fc0a6549c 100644 --- a/module/custom/lang/fr.php +++ b/module/custom/lang/fr.php @@ -165,8 +165,8 @@ $lang->custom->moduleName['project'] = $lang->projectCommon; $lang->custom->conceptQuestions['overview'] = "1. Quelle combinaison de gestion convient le mieux à votre entreprise ?"; $lang->custom->conceptQuestions['story'] = "2. Utilisez-vous le concept d'exigence ou de user story dans votre entreprise ?"; -$lang->custom->conceptQuestions['requirementpoint'] = "2. Utilisez-vous des heures ou des points de fonction pour faire des estimations dans votre entreprise ?"; -$lang->custom->conceptQuestions['storypoint'] = "2. Utilisez-vous des heures ou des points de Story pour faire des estimations dans votre entreprise ?"; +$lang->custom->conceptQuestions['requirementpoint'] = "3. Utilisez-vous des heures ou des points de fonction pour faire des estimations dans votre entreprise ?"; +$lang->custom->conceptQuestions['storypoint'] = "3. Utilisez-vous des heures ou des points de Story pour faire des estimations dans votre entreprise ?"; $lang->custom->conceptOptions = new stdclass; diff --git a/module/custom/lang/vi.php b/module/custom/lang/vi.php index eb2fd081e8..f9cc86bdb4 100644 --- a/module/custom/lang/vi.php +++ b/module/custom/lang/vi.php @@ -165,8 +165,8 @@ $lang->custom->moduleName['project'] = $lang->projectCommon; $lang->custom->conceptQuestions['overview'] = "1. Sự kết hợp quản lý nào phù hợp với công ty của bạn?"; $lang->custom->conceptQuestions['story'] = "2. Bạn có sử dụng mô hình điều kiện hay câu chuyện người dùng trong doanh nghiệp của bạn?"; -$lang->custom->conceptQuestions['requirementpoint'] = "2. Do you use hours or function points to make estimations in your company?"; -$lang->custom->conceptQuestions['storypoint'] = "2. Bạn có dùng giờ hoặc điểm để tạo dự kiến trong doanh nghiệp của bạn ?"; +$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?"; +$lang->custom->conceptQuestions['storypoint'] = "3. Bạn có dùng giờ hoặc điểm để tạo dự kiến trong doanh nghiệp của bạn ?"; $lang->custom->conceptOptions = new stdclass; From 4ea7be9c725fd9c92a01e57f906a5fdcbc405990 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 08:53:07 +0800 Subject: [PATCH 59/82] * adjust lang. --- module/user/lang/de.php | 2 +- module/user/lang/en.php | 2 +- module/user/lang/fr.php | 2 +- module/user/lang/vi.php | 2 +- module/user/lang/zh-cn.php | 2 +- module/user/lang/zh-tw.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module/user/lang/de.php b/module/user/lang/de.php index 3fff87639f..89d57d1e24 100644 --- a/module/user/lang/de.php +++ b/module/user/lang/de.php @@ -218,4 +218,4 @@ $lang->user->noticeResetFile = "
    Kontaktieren Sie den Administrator um Ihr Pa "; $lang->user->notice4Safe = "Warning: Weak password of one click package detected"; $lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; -$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/en.php b/module/user/lang/en.php index 57a48ecede..ea3231ac84 100644 --- a/module/user/lang/en.php +++ b/module/user/lang/en.php @@ -218,4 +218,4 @@ $lang->user->noticeResetFile = "
    Contact the Administrator to reset your pass "; $lang->user->notice4Safe = "Warning: Weak password of one click package detected"; $lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; -$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/fr.php b/module/user/lang/fr.php index 8f98744c3e..c308139215 100644 --- a/module/user/lang/fr.php +++ b/module/user/lang/fr.php @@ -218,4 +218,4 @@ $lang->user->noticeResetFile = "
    Contactez l'administrateur pour réinitialis "; $lang->user->notice4Safe = "Warning: Weak password of one click package detected"; $lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; -$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/vi.php b/module/user/lang/vi.php index 1757a44c10..52a712ce24 100644 --- a/module/user/lang/vi.php +++ b/module/user/lang/vi.php @@ -218,4 +218,4 @@ $lang->user->noticeResetFile = "
    Liên hệ quản trị viên để thiết "; $lang->user->notice4Safe = "Warning: Weak password of one click package detected"; $lang->user->process4DIR = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Delete or rename the %s directory. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; -$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please visit login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "It is detected that you may be using the one click installation package environment. Other sites in the environment are still using simple passwords. For security reasons, if you do not use other sites, please handle them in time. Please login database and modify password field of zt_user table of %s database. Visit: https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/zh-cn.php b/module/user/lang/zh-cn.php index c585ec39ed..78e2132888 100644 --- a/module/user/lang/zh-cn.php +++ b/module/user/lang/zh-cn.php @@ -218,4 +218,4 @@ $lang->user->noticeResetFile = "
    普通用户请联系管理员重置密码"; $lang->user->notice4Safe = "警告:检测到一键安装包密码口令弱"; $lang->user->process4DIR = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。将 %s 目录删除或改名。详情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; -$lang->user->process4DB = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。请访问登录数据库,修改 %s 数据库的zt_user表的password字段。详情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,如果不使用其他站点,请及时处理。请登录数据库,修改 %s 数据库的zt_user表的password字段。详情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; diff --git a/module/user/lang/zh-tw.php b/module/user/lang/zh-tw.php index ea856df1b7..5353a4f249 100644 --- a/module/user/lang/zh-tw.php +++ b/module/user/lang/zh-tw.php @@ -218,4 +218,4 @@ $lang->user->noticeResetFile = "
    普通用戶請聯繫管理員重置密碼"; $lang->user->notice4Safe = "警告:檢測到一鍵安裝包密碼口令弱"; $lang->user->process4DIR = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。將 %s 目錄刪除或改名。詳情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; -$lang->user->process4DB = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。請訪問登錄資料庫,修改 %s 資料庫的zt_user表的password欄位。詳情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; +$lang->user->process4DB = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,如果不使用其他站點,請及時處理。請登錄資料庫,修改 %s 資料庫的zt_user表的password欄位。詳情查看:https://www.zentao.net/book/zentaopmshelp/467.html"; From 5eda53df87b8ab3281529c7b1b173ee8a372f3e7 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 09:30:43 +0800 Subject: [PATCH 60/82] * code for bug #3693. --- module/common/lang/en.php | 2 +- module/common/lang/vi.php | 2 +- module/common/lang/zh-cn.php | 2 +- module/user/lang/en.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 7f11fddb8c..e832ef3108 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -526,7 +526,7 @@ $lang->error->URL = "『%s』should be url."; $lang->error->date = "『%s』should be valid date."; $lang->error->datetime = "『%s』should be valid date."; $lang->error->code = "『%s』should be letters or numbers."; -$lang->error->account = "『%s』should be >= 3 letters or numbers."; +$lang->error->account = "『%s』should be >= 3 letters, underline or numbers."; $lang->error->passwordsame = "The two passwords should be the same."; $lang->error->passwordrule = "Password should conform to rules. It should be >= 6 characters."; $lang->error->accessDenied = 'Access is denied.'; diff --git a/module/common/lang/vi.php b/module/common/lang/vi.php index 55ad7ef364..2d303c56db 100644 --- a/module/common/lang/vi.php +++ b/module/common/lang/vi.php @@ -526,7 +526,7 @@ $lang->error->URL = "『%s』should be url."; $lang->error->date = "『%s』should be valid date."; $lang->error->datetime = "『%s』should be valid date."; $lang->error->code = "『%s』nên là chữ hoặc số."; -$lang->error->account = "『%s』should be >= 3 letters or numbers."; +$lang->error->account = "『%s』should be >= 3 letters, underline or numbers."; $lang->error->passwordsame = "The two passwords should be the same."; $lang->error->passwordrule = "Password should conform to rules. It should be >= 6 characters."; $lang->error->accessDenied = 'Truy cập bị từ chối.'; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 6e1ab65d25..bc8917bc1e 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -526,7 +526,7 @@ $lang->error->URL = "『%s』应当为合法的URL。"; $lang->error->date = "『%s』应当为合法的日期。"; $lang->error->datetime = "『%s』应当为合法的日期。"; $lang->error->code = "『%s』应当为字母或数字的组合。"; -$lang->error->account = "『%s』只能是字母和数字的组合三位以上。"; +$lang->error->account = "『%s』只能是字母、数字或下划线的组合三位以上。"; $lang->error->passwordsame = "两次密码应该相同。"; $lang->error->passwordrule = "密码应该符合规则,长度至少为六位。"; $lang->error->accessDenied = '您没有访问权限'; diff --git a/module/user/lang/en.php b/module/user/lang/en.php index ea3231ac84..cf5f44cca7 100644 --- a/module/user/lang/en.php +++ b/module/user/lang/en.php @@ -172,7 +172,7 @@ $lang->user->placeholder->passwordStrength[1] = '>= 6 letters and numbers'; $lang->user->placeholder->passwordStrength[2] = '>= 10 letters, numbers and special characters'; $lang->user->error = new stdclass(); -$lang->user->error->account = "ID %s,account must be >= 3 letters, underline, or numbers"; +$lang->user->error->account = "ID %s,account must be >= 3 letters, underline or numbers"; $lang->user->error->accountDupl = "ID %s,account is used."; $lang->user->error->realname = "ID %s,must be real name"; $lang->user->error->password = "ID %s,password must be >= 6 characters."; From 95470ded6e14dc6a1b3de6598610e7500ceed63f Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 09:54:23 +0800 Subject: [PATCH 61/82] * code bug #3688. --- module/task/model.php | 1 + 1 file changed, 1 insertion(+) diff --git a/module/task/model.php b/module/task/model.php index ed41d336d7..72c12cd887 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1081,6 +1081,7 @@ class taskModel extends model $task->closedBy = $this->app->user->account; $task->closedDate = $now; } + if($task->closedReason == 'cancel' and $task->finishedDate == '0000-00-00 00:00:00') $task->finishedDate = ''; break; case 'wait': if($task->consumed > 0 and $task->left > 0) $task->status = 'doing'; From 51e91bc786d2abc244cfc796c1070c33ab5888f9 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 10:14:29 +0800 Subject: [PATCH 62/82] * code bug #3568. --- www/tip4japanese.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/tip4japanese.html b/www/tip4japanese.html index 7d79f513c1..e96126d968 100644 --- a/www/tip4japanese.html +++ b/www/tip4japanese.html @@ -35,7 +35,7 @@ pathName = location.pathname; pathName = pathName.substring(0, pathName.lastIndexOf ('/') + 1); - document.cookie = "lang=" + lang + "; path=" + pathName + "; HttpOnly;"; + document.cookie = "lang=" + lang + "; path=" + pathName + ";"; location.href = window.location.protocol + "//" + window.location.host + pathName; } From 7af282b5f87af02b25ba0358b24c95f5aaf3e430 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Fri, 11 Dec 2020 13:09:13 +0800 Subject: [PATCH 63/82] * Fix bug #3753. --- module/block/view/productoverviewblock.html.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/block/view/productoverviewblock.html.php b/module/block/view/productoverviewblock.html.php index 7a0d7f4b46..6e5f5221a2 100644 --- a/module/block/view/productoverviewblock.html.php +++ b/module/block/view/productoverviewblock.html.php @@ -24,14 +24,14 @@
    product->all;?> - createLink('product', 'all', "product=&branch=&type=all"), $total);?> + createLink('product', 'all', "program=0&browseType=all"), $total);?>
      -
    • product->statusList['normal'];?>   createLink('product', 'all', "product=&branch=&type=noclosed"), $normal);?>
    • -
    • product->statusList['closed'];?>   createLink('product', 'all', "product=&branch=&type=closed"), $closed);?>
    • +
    • product->statusList['normal'];?>   createLink('product', 'all', "program=0&browseType=noclosed"), $normal);?>
    • +
    • product->statusList['closed'];?>   createLink('product', 'all', "program=0&browseType=closed"), $closed);?>
    From dabb2d003d082fce57de13b583dbfe968934e30b Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Fri, 11 Dec 2020 15:44:31 +0800 Subject: [PATCH 64/82] * Adjust code style. --- module/build/control.php | 7 ++----- module/build/model.php | 2 ++ module/build/view/edit.html.php | 4 ++-- module/productplan/control.php | 9 ++++----- module/task/control.php | 7 ++++--- module/task/model.php | 4 ++-- module/task/view/finish.html.php | 2 +- 7 files changed, 17 insertions(+), 18 deletions(-) diff --git a/module/build/control.php b/module/build/control.php index 5deb4f5750..1729efc776 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -22,10 +22,7 @@ class build extends control public function create($executionID, $productID = 0) { /* Create execution if no execution. */ - if($executionID == 0) - { - die(js::locate($this->createLink('project', 'create'), 'parent')); - } + if($executionID == 0) die(js::locate($this->createLink('project', 'create'), 'parent')); if(!empty($_POST)) { @@ -144,7 +141,7 @@ class build extends control $this->view->products = $products; $this->view->users = $this->loadModel('user')->getPairs('noletter', $build->builder); $this->view->build = $build; - $this->view->testtask = $this->dao->select('id')->from(TABLE_TESTTASK)->where('build')->eq($build->id)->andWhere('deleted')->eq(0)->fetch('id'); + $this->view->testtaskID = $this->dao->select('id')->from(TABLE_TESTTASK)->where('build')->eq($build->id)->andWhere('deleted')->eq(0)->fetch('id'); $this->display(); } diff --git a/module/build/model.php b/module/build/model.php index 7241339872..d337632ed5 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -147,6 +147,7 @@ class buildModel extends model } } + if($this->session->projectBuildQuery == false) $this->session->set('projectBuildQuery', ' 1 = 1'); $buildQuery = $this->session->projectBuildQuery; /* Distinguish between repeated fields. */ @@ -207,6 +208,7 @@ class buildModel extends model } } + if($this->session->executionBuildQuery == false) $this->session->set('executionBuildQuery', ' 1 = 1'); $buildQuery = $this->session->executionBuildQuery; /* Distinguish between repeated fields. */ diff --git a/module/build/view/edit.html.php b/module/build/view/edit.html.php index a816c0981e..5ba5dd1d40 100644 --- a/module/build/view/edit.html.php +++ b/module/build/view/edit.html.php @@ -28,7 +28,7 @@
    - + diff --git a/module/productplan/control.php b/module/productplan/control.php index d11104e680..7d529eefee 100644 --- a/module/productplan/control.php +++ b/module/productplan/control.php @@ -502,9 +502,9 @@ class productplan extends control $this->loadModel('bug'); $plan = $this->productplan->getByID($planID); $this->commonAction($plan->product, $plan->branch); - $products = $this->product->getPairs('nocode'); - $productID = $plan->product; - $queryID = ($browseType == 'bysearch') ? (int)$param : 0; + $productID = $plan->product; + $productName = $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch('name'); + $queryID = ($browseType == 'bysearch') ? (int)$param : 0; /* Load pager. */ $this->app->loadClass('pager', $static = true); @@ -514,7 +514,7 @@ class productplan extends control $this->config->bug->search['actionURL'] = $this->createLink('productplan', 'view', "planID=$planID&type=bug&orderBy=$orderBy&link=true¶m=" . helper::safe64Encode('&browseType=bySearch&queryID=myQueryID')); $this->config->bug->search['queryID'] = $queryID; $this->config->bug->search['style'] = 'simple'; - $this->config->bug->search['params']['product']['values'] = array($productID => $products[$productID], 'all' => $this->lang->bug->allProduct); + $this->config->bug->search['params']['product']['values'] = array($productID => $productName, 'all' => $this->lang->bug->allProduct); $this->config->bug->search['params']['plan']['values'] = $this->productplan->getForProducts(array($plan->product => $plan->product)); $this->config->bug->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0); $this->config->bug->search['params']['project']['values'] = $this->product->getExecutionPairsByProduct($productID); @@ -547,7 +547,6 @@ class productplan extends control $this->view->allBugs = $allBugs; $this->view->planBugs = $planBugs; - $this->view->products = $products; $this->view->plan = $plan; $this->view->users = $this->loadModel('user')->getPairs('noletter'); $this->view->browseType = $browseType; diff --git a/module/task/control.php b/module/task/control.php index fa6d2125f0..e279e8047f 100644 --- a/module/task/control.php +++ b/module/task/control.php @@ -157,7 +157,7 @@ class task extends control elseif($this->post->after == 'toTaskList') { setcookie('moduleBrowseParam', 0, 0, $this->config->webRoot, '', false, false); - $taskLink = $this->createLink('project', 'task', "projectID=$projectID&status=bymodule¶m=$moduleID&orderBy=id_desc"); + $taskLink = $this->createLink('project', 'task', "projectID=$projectID&status=unclosed¶m=0&orderBy=id_desc"); $response['locate'] = $taskLink; $this->send($response); } @@ -1028,9 +1028,10 @@ class task extends control if(dao::isError()) die(js::error(dao::getError())); - if(!empty($changes)) + if($this->post->comment != '' or !empty($changes)) { - $actionID = $this->action->create('task', $taskID, 'Closed', $this->post->comment); + $action = (!empty($changes)) ? 'Closed' : 'Commented'; + $actionID = $this->action->create('task', $taskID, $action, $this->post->comment); $this->action->logHistory($actionID, $changes); } diff --git a/module/task/model.php b/module/task/model.php index 58cea6e334..907c17af8e 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1677,12 +1677,12 @@ class taskModel extends model * * @param int $taskID * @access public - * @return void + * @return array */ public function close($taskID) { $oldTask = $this->dao->select('*')->from(TABLE_TASK)->where('id')->eq($taskID)->fetch(); - if($oldTask->status == 'closed') return; + if($oldTask->status == 'closed') return array(); $now = helper::now(); $task = fixer::input('post') diff --git a/module/task/view/finish.html.php b/module/task/view/finish.html.php index 5106ad7bef..2c9b16a134 100644 --- a/module/task/view/finish.html.php +++ b/module/task/view/finish.html.php @@ -67,7 +67,7 @@ - + From c858ae19e34aff11f167d821c846ef2f853f2e30 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 15:47:12 +0800 Subject: [PATCH 65/82] * fix for undelete project. --- module/action/model.php | 4 ++-- www/js/my.full.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/module/action/model.php b/module/action/model.php index 7fcb6c2359..8533290b3e 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -1027,7 +1027,7 @@ class actionModel extends model if($action->objectType == 'product') { $product = $this->dao->select('id,name,code,acl')->from(TABLE_PRODUCT)->where('id')->eq($action->objectID)->fetch(); - $count = $this->dao->select('COUNT(*) AS count')->from(TABLE_PRODUCT)->where('deleted')->eq('0')->andWhere("(`name`='{$product->name}' OR `code`='{$product->code}')")->fetch('count'); + $count = $this->dao->select('COUNT(*) AS count')->from(TABLE_PRODUCT)->where('deleted')->eq('0')->andWhere("(`name`='{$product->name}'" . ($product->code ? " OR `code`='{$product->code}'" : '') . ")")->fetch('count'); if($count > 0) { echo js::alert(sprintf($this->lang->action->needEdit, $this->lang->action->objectTypes['product'])); @@ -1038,7 +1038,7 @@ class actionModel extends model elseif($action->objectType == 'project') { $project = $this->dao->select('id,name,code,acl')->from(TABLE_PROJECT)->where('id')->eq($action->objectID)->fetch(); - $count = $this->dao->select('COUNT(*) AS count')->from(TABLE_PROJECT)->where('deleted')->eq('0')->andWhere("(`name`='{$project->name}' OR `code`='{$project->code}')")->fetch('count'); + $count = $this->dao->select('COUNT(*) AS count')->from(TABLE_PROJECT)->where('deleted')->eq('0')->andWhere("(`name`='{$project->name}'" . ($project->code ? " OR `code`='{$project->code}'" : '') . ")")->fetch('count'); if($count > 0) { echo js::alert(sprintf($this->lang->action->needEdit, $this->lang->action->objectTypes['project'])); diff --git a/www/js/my.full.js b/www/js/my.full.js index b10da06b80..52a24c95f3 100644 --- a/www/js/my.full.js +++ b/www/js/my.full.js @@ -819,7 +819,7 @@ function adjustMenuWidth() delta = (headingWidth + navbarWidth + toolbarWidth) - mainHeaderWidth; delta = Math.ceil(delta / $navbar.children('li').length / 2); - aTagPadding = $navbar.find('a:first').css('padding-left').replace('px', ''); + aTagPadding = $navbar.find('a:first').css('padding-left').replace('px', ''); dividerMargin = $navbar.find('.divider').css('margin-left').replace('px', ''); newPadding = aTagPadding - delta; From 1eeb88a7231af5b311cefab0ac856574a4fb8eef Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Fri, 11 Dec 2020 15:53:20 +0800 Subject: [PATCH 66/82] * Fix delete issue. --- module/build/model.php | 1 - module/issue/lang/de.php | 1 + module/issue/lang/en.php | 1 + module/issue/lang/fr.php | 1 + module/issue/lang/vi.php | 1 + module/issue/lang/zh-cn.php | 1 + module/issue/model.php | 2 +- module/issue/view/view.html.php | 3 +++ 8 files changed, 9 insertions(+), 2 deletions(-) diff --git a/module/build/model.php b/module/build/model.php index d337632ed5..7c749be462 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -28,7 +28,6 @@ class buildModel extends model ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') ->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id') ->where('t1.id')->eq((int)$buildID) - ->andWhere('t1.deleted')->eq(0) ->fetch(); if(!$build) return false; diff --git a/module/issue/lang/de.php b/module/issue/lang/de.php index e0975d2018..18a02b3eb1 100644 --- a/module/issue/lang/de.php +++ b/module/issue/lang/de.php @@ -51,6 +51,7 @@ $lang->issue->assignTo = 'Assign'; $lang->issue->create = 'Create Issue'; $lang->issue->edit = 'Edit'; $lang->issue->batchCreate = 'Batch Create'; +$lang->issue->deleted = 'Deleted'; $lang->issue->labelList['all'] = 'All'; $lang->issue->labelList['open'] = 'Open'; diff --git a/module/issue/lang/en.php b/module/issue/lang/en.php index e0975d2018..18a02b3eb1 100644 --- a/module/issue/lang/en.php +++ b/module/issue/lang/en.php @@ -51,6 +51,7 @@ $lang->issue->assignTo = 'Assign'; $lang->issue->create = 'Create Issue'; $lang->issue->edit = 'Edit'; $lang->issue->batchCreate = 'Batch Create'; +$lang->issue->deleted = 'Deleted'; $lang->issue->labelList['all'] = 'All'; $lang->issue->labelList['open'] = 'Open'; diff --git a/module/issue/lang/fr.php b/module/issue/lang/fr.php index e0975d2018..18a02b3eb1 100644 --- a/module/issue/lang/fr.php +++ b/module/issue/lang/fr.php @@ -51,6 +51,7 @@ $lang->issue->assignTo = 'Assign'; $lang->issue->create = 'Create Issue'; $lang->issue->edit = 'Edit'; $lang->issue->batchCreate = 'Batch Create'; +$lang->issue->deleted = 'Deleted'; $lang->issue->labelList['all'] = 'All'; $lang->issue->labelList['open'] = 'Open'; diff --git a/module/issue/lang/vi.php b/module/issue/lang/vi.php index e0975d2018..18a02b3eb1 100644 --- a/module/issue/lang/vi.php +++ b/module/issue/lang/vi.php @@ -51,6 +51,7 @@ $lang->issue->assignTo = 'Assign'; $lang->issue->create = 'Create Issue'; $lang->issue->edit = 'Edit'; $lang->issue->batchCreate = 'Batch Create'; +$lang->issue->deleted = 'Deleted'; $lang->issue->labelList['all'] = 'All'; $lang->issue->labelList['open'] = 'Open'; diff --git a/module/issue/lang/zh-cn.php b/module/issue/lang/zh-cn.php index cea68c258b..052c604b07 100644 --- a/module/issue/lang/zh-cn.php +++ b/module/issue/lang/zh-cn.php @@ -51,6 +51,7 @@ $lang->issue->assignTo = '指派'; $lang->issue->create = '新建问题'; $lang->issue->edit = '编辑'; $lang->issue->batchCreate = '批量新建'; +$lang->issue->deleted = '已删除'; $lang->issue->labelList['all'] = '全部'; $lang->issue->labelList['open'] = '开放'; diff --git a/module/issue/model.php b/module/issue/model.php index 7f30bc1282..e130368a9b 100644 --- a/module/issue/model.php +++ b/module/issue/model.php @@ -70,7 +70,7 @@ class issueModel extends model */ public function getByID($issueID) { - $issue = $this->dao->select('*')->from(TABLE_ISSUE)->where('id')->eq($issueID)->andWhere('deleted')->eq('0')->fetch(); + $issue = $this->dao->select('*')->from(TABLE_ISSUE)->where('id')->eq($issueID)->fetch(); if(!$issue) return false; $issue->files = $this->loadModel('file')->getByObject('issue', $issue->id); diff --git a/module/issue/view/view.html.php b/module/issue/view/view.html.php index a13ebe38a1..f58bb23a10 100644 --- a/module/issue/view/view.html.php +++ b/module/issue/view/view.html.php @@ -31,6 +31,9 @@ foreach($issue as $field => $value)
    id?> title?> + deleted):?> + issue->deleted;?> +
    From 1ef8caaca3472d218d70fd6cb3f8ea3d7e3be26d Mon Sep 17 00:00:00 2001 From: Catouse Date: Fri, 11 Dec 2020 16:02:07 +0800 Subject: [PATCH 67/82] * update zui.js. --- www/js/zui/min.js | 12 ++++++------ www/theme/zui/css/min.css | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/www/js/zui/min.js b/www/js/zui/min.js index e92712245b..afe16dd02f 100644 --- a/www/js/zui/min.js +++ b/www/js/zui/min.js @@ -1,5 +1,5 @@ /*! - * ZUI: ZUI for Zentao - v1.9.2 - 2020-11-13 + * ZUI: ZUI for Zentao - v1.9.2 - 2020-12-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2020 cnezsoft.com; Licensed MIT @@ -16,14 +16,14 @@ function(t,e,i){"$:nomunge";function n(){o=e[r](function(){a.each(function(){var * Copyright 2006, 2014 Klaus Hartl * Released under the MIT license */ -function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof exports?require("jquery"):jQuery)}(function(t){function e(t){return r.raw?t:encodeURIComponent(t)}function i(t){return r.raw?t:decodeURIComponent(t)}function n(t){return e(r.json?JSON.stringify(t):String(t))}function o(t){0===t.indexOf('"')&&(t=t.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return t=decodeURIComponent(t.replace(s," ")),r.json?JSON.parse(t):t}catch(e){}}function a(t,e){var i=r.raw?t:o(t);return"function"==typeof e?e(i):i}var s=/\+/g,r=t.cookie=function(o,s,l){if(void 0!==s&&"function"!=typeof s){if(l=t.extend({},r.defaults,l),"number"==typeof l.expires){var h=l.expires,c=l.expires=new Date;c.setTime(+c+864e5*h)}return document.cookie=[e(o),"=",n(s),l.expires?"; expires="+l.expires.toUTCString():"",l.path?"; path="+l.path:"",l.domain?"; domain="+l.domain:"",l.secure?"; secure":""].join("")}for(var d=o?void 0:{},u=document.cookie?document.cookie.split("; "):[],f=0,p=u.length;f=0;t--)delete this.page[i[t]];this.set(a,this.page)}},s.prototype.pageRemove=function(t){"undefined"!=typeof this.page[t]&&(this.page[t]=null,this.pageSave())},s.prototype.pageClear=function(){this.page={},this.pageSave()},s.prototype.pageGet=function(t,e){var i=this.page[t];return void 0===e||null!==i&&void 0!==i?i:e},s.prototype.pageSet=function(t,i){e.isPlainObject(t)?e.extend(!0,this.page,t):this.page[this.serialize(t)]=i,this.pageSave()},s.prototype.check=function(){if(!this.enable&&!this.silence)throw new Error("Browser not support localStorage or enable status been set true.");return this.enable},s.prototype.length=function(){return this.check()?i.getLength?i.getLength():i.length:0},s.prototype.removeItem=function(t){return i.removeItem(t),this},s.prototype.remove=function(t){return this.removeItem(t)},s.prototype.getItem=function(t){return i.getItem(t)},s.prototype.get=function(t,e){var i=this.deserialize(this.getItem(t));return"undefined"!=typeof i&&null!==i||"undefined"==typeof e?i:e},s.prototype.key=function(t){return i.key(t)},s.prototype.setItem=function(t,e){return i.setItem(t,e),this},s.prototype.set=function(t,e){return void 0===e?this.remove(t):(this.setItem(t,this.serialize(e)),this)},s.prototype.clear=function(){return i.clear(),this},s.prototype.forEach=function(t){for(var e=this.length(),n=e-1;n>=0;n--){var o=i.key(n);t(o,this.get(o))}return this},s.prototype.getAll=function(){var t={};return this.forEach(function(e,i){t[e]=i}),t},s.prototype.serialize=function(t){return"string"==typeof t?t:JSON.stringify(t)},s.prototype.deserialize=function(t){if("string"==typeof t)try{return JSON.parse(t)}catch(e){return t||void 0}},e.zui({store:new s})}(window,jQuery),function(t){"use strict";var e="zui.searchBox",i=function(e,n){var o=this;o.name=name,o.$=t(e),o.options=n=t.extend({},i.DEFAULTS,o.$.data(),n);var a=o.$.is(n.inputSelector)?o.$:o.$.find(n.inputSelector);if(a.length){var s=function(){o.changeTimer&&(clearTimeout(o.changeTimer),o.changeTimer=null)},r=function(){s();var t=o.getSearch();if(t!==o.lastValue){var e=""===t;a.toggleClass("empty",e),o.$.callComEvent(o,"onSearchChange",[t,e]),o.lastValue=t}};o.$input=a=a.first(),a.on(n.listenEvent,function(t){o.changeTimer=setTimeout(function(){r()},n.changeDelay)}).on("focus",function(t){a.addClass("focus"),o.$.callComEvent(o,"onFocus",[t])}).on("blur",function(t){a.removeClass("focus"),o.$.callComEvent(o,"onBlur",[t])}).on("keydown",function(t){var e=0,i=t.which;27===i&&n.escToClear?(this.setSearch("",!0),r(),e=1):13===i&&n.onPressEnter&&(r(),o.$.callComEvent(o,"onPressEnter",[t]));var a=o.$.callComEvent(o,"onKeyDown",[t]);a===!1&&(e=1),e&&t.preventDefault()}),o.$.on("click",".search-clear-btn",function(t){o.setSearch("",!0),r(),o.focus(),t.preventDefault()}),r()}else console.error("ZUI: search box init error, cannot find search box input element.")};i.DEFAULTS={inputSelector:'input[type="search"],input[type="text"]',listenEvent:"change input paste",changeDelay:500},i.prototype.getSearch=function(){return this.$input&&t.trim(this.$input.val())},i.prototype.setSearch=function(t,e){var i=this.$input;i&&(i.val(t),e||i.trigger("change"))},i.prototype.focus=function(){this.$input&&this.$input.focus()},t.fn.searchBox=function(n){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof n&&n;a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},i.NAME=e,t.fn.searchBox.Constructor=i}(jQuery),function(t,e){"use strict";var i="zui.draggable",n={container:"body",move:!0},o=0,a=function(e,i){var a=this;a.$=t(e),a.id=o++,a.options=t.extend({},n,a.$.data(),i),a.init()};a.DEFAULTS=n,a.NAME=i,a.prototype.init=function(){var n,o,a,s,r,l=this,h=l.$,c="before",d="drag",u="finish",f="."+i+"."+l.id,p="mousedown"+f,g="mouseup"+f,m="mousemove"+f,v=l.options,y=v.selector,b=v.handle,w=h,x="function"==typeof v.move,C=function(t){var e=t.pageX,i=t.pageY;r=!0;var o={left:e-a.x,top:i-a.y};w.removeClass("drag-ready").addClass("dragging"),v.move&&(x?v.move(o,w):w.css(o)),v[d]&&v[d]({event:t,element:w,startOffset:a,pos:o,offset:{x:e-n.x,y:i-n.y},smallOffset:{x:e-s.x,y:i-s.y}}),s.x=e,s.y=i,v.stopPropagation&&t.stopPropagation()},_=function(i){if(t(e).off(f),!r)return void w.removeClass("drag-ready");var o={left:i.pageX-a.x,top:i.pageY-a.y};w.removeClass("drag-ready dragging"),v.move&&(x?v.move(o,w):w.css(o)),v[u]&&v[u]({event:i,element:w,startOffset:a,pos:o,offset:{x:i.pageX-n.x,y:i.pageY-n.y},smallOffset:{x:i.pageX-s.x,y:i.pageY-s.y}}),i.preventDefault(),v.stopPropagation&&i.stopPropagation()},k=function(i){var l=t.zui.getMouseButtonCode(v.mouseButton);if(!(l>-1&&i.button!==l)){var h=t(this);if(y&&(w=b?h.closest(y):h),v[c]){var d=v[c]({event:i,element:w});if(d===!1)return}var u=t(v.container),f=w.offset();o=u.offset(),n={x:i.pageX,y:i.pageY},a={x:i.pageX-f.left+o.left,y:i.pageY-f.top+o.top},s=t.extend({},n),r=!1,w.addClass("drag-ready"),i.preventDefault(),v.stopPropagation&&i.stopPropagation(),t(e).on(m,C).on(g,_)}};b?h.on(p,b,k):y?h.on(p,y,k):h.on(p,k)},a.prototype.destroy=function(){var n="."+i+"."+this.id;this.$.off(n),t(e).off(n),this.$.data(i,null)},t.fn.draggable=function(e){return this.each(function(){var n=t(this),o=n.data(i),s="object"==typeof e&&e;o||n.data(i,o=new a(this,s)),"string"==typeof e&&o[e]()})},t.fn.draggable.Constructor=a}(jQuery,document),function(t,e,i){"use strict";var n="zui.droppable",o={target:".droppable-target",deviation:5,sensorOffsetX:0,sensorOffsetY:0,dropToClass:"drop-to"},a=0,s=function(e,i){var n=this;n.id=a++,n.$=t(e),n.options=t.extend({},o,n.$.data(),i),n.init()};s.DEFAULTS=o,s.NAME=n,s.prototype.trigger=function(e,i){return t.zui.callEvent(this.options[e],i,this)},s.prototype.init=function(){var o,a,s,r,l,h,c,d,u,f,p,g,m,v=this,y=v.$,b=v.options,w=b.deviation,x="."+n+"."+v.id,C="mousedown"+x,_="mouseup"+x,k="mousemove"+x,T=b.selector,S=b.handle,D=b.flex,M=b.container,P=b.canMoveHere,z=b.dropToClass,L=y,F=!1,I=M?t(b.container).first():T?y:t("body"),A=function(e){if(F&&(p={left:e.pageX,top:e.pageY},!(i.abs(p.left-d.left)a&&p.top>s&&p.left-1&&i.button!==n)){var p=t(this);T&&(L=S?p.closest(T):p),L.hasClass("drag-shadow")||b.before&&b.before({event:i,element:L})===!1||(F=!0,o="function"==typeof b.target?b.target(L,y):I.find(b.target),a=null,s=null,r=!1,l=!0,h=null,c=L.offset(),u=I.offset(),u.top=u.top-I.scrollTop(),u.left=u.left-I.scrollLeft(),d={left:i.pageX,top:i.pageY},g=t.extend({},d),f={left:d.left-c.left,top:d.top-c.top},L.addClass("drag-from"),t(e).on(k,A).on(_,$),m=setTimeout(function(){t(e).on(C,$)},10),i.preventDefault(),b.stopPropagation&&i.stopPropagation())}};S?y.on(C,S,E):T?y.on(C,T,E):y.on(C,E)},s.prototype.destroy=function(){var i="."+n+"."+this.id;this.$.off(i),t(e).off(i),this.$.data(n,null)},s.prototype.reset=function(){this.destroy(),this.init()},t.fn.droppable=function(e){return this.each(function(){var i=t(this),o=i.data(n),a="object"==typeof e&&e;o||i.data(n,o=new s(this,a)),"string"==typeof e&&o[e]()})},t.fn.droppable.Constructor=s}(jQuery,document,Math),+function(t,e){"use strict";function i(e,i,a){return this.each(function(){var s=t(this),r=s.data(n),l=t.extend({},o.DEFAULTS,s.data(),"object"==typeof e&&e);r||s.data(n,r=new o(this,l)),"string"==typeof e?r[e](i,a):l.show&&r.show(i,a)})}var n="zui.modal",o=function(i,o){var a=this;a.options=o,a.$body=t(document.body),a.$element=t(i),a.$backdrop=a.isShown=null,a.scrollbarWidth=0,o.moveable===e&&(a.options.moveable=a.$element.hasClass("modal-moveable")),o.remote&&a.$element.find(".modal-content").load(o.remote,function(){a.$element.trigger("loaded."+n)}),o.scrollInside&&t(window).on("resize."+n,function(){a.isShown&&a.adjustPosition(e,100)})};o.VERSION="3.2.0",o.TRANSITION_DURATION=300,o.BACKDROP_TRANSITION_DURATION=150,o.DEFAULTS={backdrop:!0,keyboard:!0,show:!0,position:"fit"};var a=function(e,i){var n=t(window);i.left=Math.max(0,Math.min(i.left,n.width()-e.outerWidth())),i.top=Math.max(0,Math.min(i.top,n.height()-e.outerHeight())),e.css(i)};o.prototype.toggle=function(t,e){return this.isShown?this.hide():this.show(t,e)},o.prototype.adjustPosition=function(i,o){var s=this;if(clearTimeout(s.reposTask),o)return void(s.reposTask=setTimeout(s.adjustPosition.bind(s,i,0),o));var r=s.options;if(i===e&&(i=r.position),i!==e&&null!==i){"function"==typeof i&&(i=i(s));var l=s.$element.find(".modal-dialog"),h=t(window).height(),c={maxHeight:"initial",overflow:"visible"},d=l.find(".modal-body").css(c);if(r.scrollInside&&d.length){var u=r.headerHeight,f=r.footerHeight,p=l.find(".modal-header"),g=l.find(".modal-footer");"number"!=typeof u&&(u=p.length?p.outerHeight():"function"==typeof u?u(p):0),"number"!=typeof f&&(f=g.length?g.outerHeight():"function"==typeof f?f(g):0),c.maxHeight=h-u-f,c.overflow=d[0].scrollHeight>c.maxHeight?"auto":"visible",d.css(c)}var m=Math.max(0,(h-l.outerHeight())/2);if("fit"===i?i={top:m>50?Math.floor(2*m/3):m}:"center"===i?i={top:m}:t.isPlainObject(i)||(i={top:i}),l.hasClass("modal-moveable")){var v=null,y=r.rememberPos;y&&(y===!0?v=s.$element.data("modal-pos"):t.zui.store&&(v=t.zui.store.pageGet(n+".rememberPos."+y))),i=t.extend(i,{left:Math.max(0,(t(window).width()-l.outerWidth())/2)},v),"inside"===r.moveable?a(l,i):l.css(i)}else l.css(i)}},o.prototype.setMoveable=function(){t.fn.draggable||console.error("Moveable modal requires draggable.js.");var e=this,i=e.options,o=e.$element.find(".modal-dialog").removeClass("modal-dragged");o.toggleClass("modal-moveable",!!i.moveable),e.$element.data("modal-moveable-setup")||o.draggable({container:e.$element,handle:".modal-header",before:function(){var t=o.css("margin-top");t&&"0px"!==t&&o.css("top",t).css("margin-top","").addClass("modal-dragged")},finish:function(o){var a=i.rememberPos;a&&(e.$element.data("modal-pos",o.pos),t.zui.store&&a!==!0&&t.zui.store.pageSet(n+".rememberPos."+a,o.pos))},move:"inside"!==i.moveable||function(t){a(o,t)}})},o.prototype.show=function(e,i){var a=this,s=t.Event("show."+n,{relatedTarget:e});a.$element.trigger(s),a.$element.toggleClass("modal-scroll-inside",!!a.options.scrollInside),a.isShown||s.isDefaultPrevented()||(a.isShown=!0,a.options.moveable&&a.setMoveable(),a.options.backdrop!==!1&&(a.setScrollbar(),a.$body.addClass("modal-open")),a.escape(),a.$element.on("click.dismiss."+n,'[data-dismiss="modal"]',function(t){a.hide(),t.stopPropagation()}),a.backdrop(function(){var s=t.support.transition&&a.$element.hasClass("fade");a.$element.parent().length||a.$element.appendTo(a.$body),a.$element.show().scrollTop(0),s&&a.$element[0].offsetWidth,a.$element.addClass("in").attr("aria-hidden",!1),a.adjustPosition(i),a.enforceFocus();var r=t.Event("shown."+n,{relatedTarget:e});s?a.$element.find(".modal-dialog").one("bsTransitionEnd",function(){a.$element.trigger("focus").trigger(r)}).emulateTransitionEnd(o.TRANSITION_DURATION):a.$element.trigger("focus").trigger(r)}))},o.prototype.hide=function(e){e&&e.preventDefault&&e.preventDefault();var i=this;e=t.Event("hide."+n),i.$element.trigger(e),i.isShown&&!e.isDefaultPrevented()&&(i.isShown=!1,i.options.backdrop!==!1&&(i.$body.removeClass("modal-open"),i.resetScrollbar()),i.escape(),t(document).off("focusin."+n),i.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss."+n),t.support.transition&&i.$element.hasClass("fade")?i.$element.one("bsTransitionEnd",i.hideModal.bind(i)).emulateTransitionEnd(o.TRANSITION_DURATION):i.hideModal())},o.prototype.enforceFocus=function(){t(document).off("focusin."+n).on("focusin."+n,function(t){this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")}.bind(this))},o.prototype.escape=function(){this.isShown&&this.options.keyboard?t(document).on("keydown.dismiss."+n,function(i){if(27==i.which){var o=t.Event("escaping."+n),a=this.$element.triggerHandler(o,"esc");if(a!=e&&!a)return;this.hide()}}.bind(this)):this.isShown||t(document).off("keydown.dismiss."+n)},o.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$element.trigger("hidden."+n)})},o.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},o.prototype.backdrop=function(e){var i=this,a=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var s=t.support.transition&&a;if(this.$backdrop=t('");i.$.addClass("load-indicator loading"),s.load(window.location.href+" #"+o,function(r){if(a===o)i.$.empty().html(s.children().html()),i.$.find('[data-ride="pager"]').pager();else{i.$.find("#"+o).empty().html(s.children().html());try{var l=t(r),h=l.find("#"+o).closest('[data-ride="table"],#'+a);if(h.length){var c=h.find(".table-statistic");c.length&&(i.defaultStatistic=c.html());var d=i.$.find('[data-ride="pager"]').data("zui.pager"),u=h.find('[data-ride="pager"]');d&&u.length&&d.set(u.data())}}catch(f){console.error(f)}}i.$.removeClass("load-indicator loading").trigger("beforeTableReload"),delete i.defaultStatistic,i.updateStatistic(),i.initModals(),i.$.datepickerAll();var p=i.$.find("tbody>tr"),g=!1;t.each(i.checkItems,function(t,e){e&&(i.checkRow(p.filter('[data-id="'+t+'"]'),!0,!0),g=!0)}),g&&i.updateCheckUI(),i.$.trigger("tableReload");var m=t("#mainMenu>.btn-toolbar>.btn-active-text>.label");if(m.length){var u=i.$.find(".pager[data-rec-total]"),v=u.length?u.attr("data-rec-total"):i.getTable().find("tbody:first>tr:not(.table-children)").length;m.text(v)}e&&e(),n.afterReload&&n.afterReload()})},r.prototype.initModals=function(){var e=this,i=e.options,n=e.$.find(i.iframeModalTrigger);if(n.length){var o={type:"iframe",onHide:i.replaceId?function(){var n=t.cookie("selfClose");(1==n||i.hot)&&(t("#triggerModal").data("cancel-reload",1),e.reload(function(){t.cookie("selfClose",0)}))}:null};n.modalTrigger(o)}},r.prototype.getTable=function(){var t=this.$;if(this.isDataTable)return t.find("div.datatable");var e=t.is("table")?t:t.find("table:not(.fixed-header-copy)").first();return e.is(".datatable")&&(this.isDataTable=!0,e=t.find("div.datatable")),e},r.prototype.toggleGroups=function(e){var i=this,n={};i.$.find("tbody>tr").each(function(){var o=t(this).closest("tr").data("id");n[o]||i.toggleRowGroup(o,e)})},r.prototype.toggleRowGroup=function(i,n){var o=this.$.find('tbody>tr[data-id="'+i+'"]'),a=o.filter(".group-summary"),s=n===e?!a.hasClass("hidden"):!!n;o.not(".group-summary").toggleClass("hidden",!s),a.toggleClass("hidden",s),t("body").toggleClass("table-group-collapsed",!this.$.find("tbody>tr.group-summary.hidden").length)},r.prototype.updateStatistic=function(){var i=this,n=i.$.find(".table-statistic");if(n.length){if(i.defaultStatistic===e&&(i.defaultStatistic=n.html()),i.options.statisticCreator)return void n.html(i.options.statisticCreator(i)||i.defaultStatistic); var o=i.statisticCols;if(!o&&o!==!1){o={};var a=!1;i.getTable().find("thead th").each(function(e){var i=t(this),n=i.data("statistic");n&&(a=!0,o[e]={format:n,name:i.text()})}),i.statisticCols=!!a&&o}var s=0;o&&t.each(o,function(t){o[t].total=0,o[t].checkedTotal=0}),i.$.find(i.isDataTable?".fixed-left tbody>tr":"tbody>tr").each(function(){var e=t(this),i=e.hasClass("checked"),n=e.children("td");i&&s++,o&&t.each(o,function(t){var e=parseFloat(n.eq(t).text());isNaN(e)&&(e=0),o[t].total+=e,i&&(o[t].checkedTotal+=e)})});var r=[];if(s)r.push(i.lang.selectedItems.format(s));else if(i.defaultStatistic)return void n.html(i.defaultStatistic);o&&t.each(o,function(t){var e=o[t],n=e[s?"checkedTotal":"total"];e.format&&(n=e.format.format(n)),r.push(i.lang.attrTotal.format(e.name,n))}),n.html(r.join(", "))}},r.prototype.updateFixUI=function(e){var i=this,n=(new Date).getTime();if(!e&&(i.lastUpdateCall&&clearTimeout(i.lastUpdateCall),!i.lastUpdateTime||n-i.lastUpdateTime
    ').append(t('
    idAB);?>' style='overflow:visible'>finishedBy, "class='form-control chosen'");?> ' style='overflow:visible'>canceledBy, "class='form-control chosen'");?> ' style='overflow:visible'>closedBy, "class='form-control chosen'");?>>task->reasonList, $tasks[$taskID]->closedReason, 'class=form-control');?>> + closedReason; + if(!empty($closedReason)) + { + $reasonList[$closedReason] = $lang->task->reasonList[$closedReason]; + } + else + { + $status = $tasks[$taskID]->status; + if($status == 'done' or $status == 'cancel') + { + $reasonList[$status] = $lang->task->reasonList[$status]; + } + else + { + $reasonList = $lang->task->reasonList; + } + } + + echo html::select("closedReasons[$taskID]", $reasonList, $closedReason, 'class=form-control'); + ?> +
    stories or $build->bugs or $testtask) $disabled = 'disabled'; + if($build->stories or $build->bugs or $testtaskID) $disabled = 'disabled'; ?>
    product, "onchange='loadBranches(this.value);' class='form-control chosen' $disabled required");?> @@ -44,7 +44,7 @@
    build->notice->changeProduct;?>
    build->project;?> project, "class='form-control chosen' required $disabled");?> build->notice->changeProject;?>
    task->realStarted;?>
    realStarted != '0000-00-00' ? $task->realStarted : '', "class='form-control form-datetime'");?>
    realStarted != '0000-00-00 00:00:00' ? $task->realStarted : '', "class='form-control form-datetime'");?>
    task->finishedDate;?>
    ').addClass(i.attr("class")).append(n.clone())).insertAfter(i)),c){var d=h[0].getBoundingClientRect();l.css({left:d.left,width:h.width()}),l.find(".fixed-header-copy").css({left:o.left-d.left,position:"relative",minWidth:i.width()}),a||h.data("fixHeaderScroll")||(h.data("fixHeaderScroll",1),i.width()>h.width()&&h.on("scroll",function(){e.fixHeader()}))}else l.css({left:o.left,width:o.width});var u=l.find("th");n.find("th").each(function(e){u.eq(e).css("width",t(this).outerWidth())})}else l.remove()},r.prototype.fixFooter=function(){var e,i=this,n=i.getTable(),o=i.$.find(".table-footer");if(i.isDataTable)e=n[0].getBoundingClientRect();else{var a=n.find("tbody");if(!a.length)return;e=a[0].getBoundingClientRect()}var s=i.options.fixFooter;o.toggleClass("fixed-footer",!!r);var r=t.isFunction(s)?s(e,o):e.bottom>window.innerHeight-50-("number"==typeof s?s:i.pageFooterHeight||5);o.toggleClass("fixed-footer",!!r),n.toggleClass("with-footer-fixed",!!r),n.trigger("fixFooter",r);var l=t("body"),h=l.hasClass("body-modal");if(r){var c=n.parent(),d=c.is(".table-responsive");o.css({bottom:i.pageFooterHeight||0,left:d?c[0].getBoundingClientRect().left:e.left,width:d?c.width():e.width}),h&&l.css("padding-bottom",40)}else o.css({width:"",left:0,bottom:0}),h&&l.css("padding-bottom",0)},r.prototype.checkAll=function(e){var i=this,n=i.$.find(i.isDataTable?".fixed-left tbody>tr":"tbody>tr");n.each(function(){i.checkRow(t(this),e,!0)}),i.updateCheckUI()},r.prototype.checkRow=function(t,i,n){var o=this;o.isDataTable&&!t.is(".datatable-row-left")&&(t=o.getTable().find('.datatable-row-left[data-index="'+t.data("index")+'"]'));var a=t.find('input[type="checkbox"]');a.length&&!a.is(":disabled")&&(i===e&&(i=!a.is(":checked")),o.isDataTable?o.getTable().find('.datatable-row[data-index="'+t.data("index")+'"]').toggleClass("checked",i):t.toggleClass("checked",i),this.checkItems[t.data("id")]=i,a.prop("checked",i).trigger("change"),n||o.updateCheckUI())},r.prototype.updateCheckUI=function(){var e=this,i=e.getTable(),n=i.find(e.isDataTable?".fixed-left tbody>tr":"tbody>tr").not(".group-summary"),o=!1,a=null,s=0,r=!1,l=n.length;n.each(function(n){var h=t(this),c=h.find('input[type="checkbox"]');r=c.is(":checked");var d=e.isDataTable?i.find('.datatable-row[data-index="'+h.data("index")+'"]'):h;d.toggleClass("checked",r),d.toggleClass("row-check-begin",r&&!o),a&&a.toggleClass("row-check-end",!r&&o),r&&(s+=1),a=d,o=r,l===n+1&&d.toggleClass("row-check-end",r)}),e.$.toggleClass("has-row-checked",s>0).find(".check-all").toggleClass("checked",!(!l||s!==l)),e.updateStatistic(),e.options.onCheckChange&&e.options.onCheckChange()},r.DEFAULTS={checkable:!0,checkOnClickRow:!0,ajaxForm:!1,selectable:!0,fixHeader:!a,fixFooter:!a,iframeWidth:900,replaceId:"self",nestLevelIndent:18,nested:!1,preserveNested:!0,hot:!1,iframeModalTrigger:".iframe"},t.fn.table=function(e){return this.each(function(){var n=t(this),o=n.data(i),a="object"==typeof e&&e;o||n.data(i,o=new r(this,a)),"string"==typeof e&&o[e]()})},r.NAME=i,t.fn.table.Constructor=r,t(function(){t('[data-ride="table"]').table()})}(jQuery,void 0),function(t,e,i){t.fn._ajaxForm=t.fn.ajaxForm;var n={timeout:e.config?e.config.timeout:0,dataType:"json",method:"post"},o="";t.fn.enableForm=function(e,n,o){return e===i&&(e=!0),this.each(function(){var i=t(this);n||i.find('[type="submit"]').attr("disabled",e?null:"disabled"),!o&&i.hasClass("load-indicator")&&i.toggleClass("loading",!e),i.toggleClass("form-disabled",!e)})},t.enableForm=function(e,i,n,o){"string"==typeof e||e instanceof t?e=t(e):(o=n,n=i,i=e,e=t("form")),e.enableForm(i!==!1,n,o)},t.disableForm=function(e,i,n){t.enableForm(e,!1,i,n)};var a=function(e,i,n){"string"==typeof i&&(n=i,i=null),n=n||"show",t.zui.messager?t.zui.messager[n](e,i):alert(e)};t.ajaxForm=function(s,r){var l=t(s);if(l.length>1)return l.each(function(){t.ajaxForm(this,r)});t.isFunction(r)&&(r={complete:r}),r=t.extend({},n,l.data(),r);var h=r.beforeSubmit,c=r.error,d=r.success,u=r.finish;delete r.finish,delete r.success,delete r.onError,delete r.beforeSubmit,r=t.extend({beforeSubmit:function(n,a,s){if(l.enableForm(!1),(h&&h(n,a,s))!==!1){var r={},c=a.find('[type="file"]');r.fileapi=c.length&&c[0].files!==i,r.formdata=e.FormData!==i;var d=r.fileapi&&a.find('input[type="file"]:enabled').filter(function(){return""!==t(this).val()}),u=d.length,f="multipart/form-data",p=a.attr("enctype")==f||a.attr("encoding")==f,g=r.fileapi&&r.formdata,m=u&&!g||p&&!r.formdata;m&&(""==o&&(o=s.url),s.url!=o&&(s.url=o),s.url=s.url.indexOf("&")>=0?s.url+"&HTTP_X_REQUESTED_WITH=XMLHttpRequest":s.url+"?HTTP_X_REQUESTED_WITH=XMLHttpRequest")}},success:function(i,n,o){if((d&&d(i,n,o,l))!==!1){try{"string"==typeof i&&(i=JSON.parse(i))}catch(s){}if(null===i||"object"!=typeof i)return i?alert(i):a("No response.","danger");var h=r.responser?t(r.responser):l.find(".form-responser");h.length||(h=t("#responser"));var c=i.message,f=function(){var n=i.callback;if(n){var o=n.indexOf("("),a=(o>0?n.substr(0,o):n).split("."),s=e,r=a[0];a.length>1&&(r=a[1],"top"===a[0]?s=e.top:"parent"===a[0]&&(s=e.parent));var h=s[r];if(t.isFunction(h)){var c=[];return o>0&&")"==n[n.length-1]&&(c=t.parseJSON("["+n.substring(o+1,n.length-1)+"]")),c.push(i),h.apply(l,c)}}};if("success"===i.result){var p=r.locate||i.locate;if(l.enableForm(!0,!!p),c){var g=l.find('[type="submit"]').first(),m=!1;g.length&&(g.popover({container:"body",trigger:"manual",content:c,tipClass:"popover-in-modal popover-success popover-form-result",placement:i.placement||r.popoverPlacement||"right"}).popover("show"),setTimeout(function(){g.popover("destroy")},r.popoverTime||2e3),m=!0),h.length&&(h.html(''+c+"").show().delay(3e3).fadeOut(100),m=!0),m||a(c,"success")}if(u)return u(i,!0,l);if((r.closeModal||i.closeModal)&&setTimeout(t.zui.closeModal,r.closeModalTime||2e3),f()===!1)return;if(p)if("loadInModal"==p){var v=t(".modal");setTimeout(function(){v.load(v.attr("ref"),function(){t(this).find(".modal-dialog").css("width",t(this).data("width")),t.zui.ajustModalPosition()})},1e3)}else if("parent"===p||"top"===p)e[p]&&setTimeout(function(){e[p].location.reload()},1200);else{var y="reload"==p?e.location.href:p;setTimeout(function(){e.location.href=y},1200)}var b=r.ajaxReload||i.ajaxReload;if(b){var w=t(b);w.length&&w.load(e.location.href+" "+b,function(){w.find('[data-toggle="modal"]').modalTrigger()})}}else{if(l.enableForm(),"string"==typeof c)h.length?h.html(''+c+"").show().delay(3e3).fadeOut(100):a(c,"danger");else if("object"==typeof c){var x=!1,C=[];t.each(c,function(e,i){var n=t.isArray(i)?i.join(""):i,o=t("#"+e);if(!o.length)return void C.push(n);var a=e+"Label",s=t("#"+a);if(!s.length){var r=o.closest(".input-group").length,l=o.closest("td").length;s=t('
    ').appendTo(l?o.closest("td"):r?o.closest(".input-group").parent():o.parent())}s.empty().append(n),o.addClass("has-error");var h=function(){var e=t("#"+a);if(e.length)return e.remove(),o.removeClass("has-error"),!0};o.on("change input mousedown",h);var c=t("#"+e+"_chosen");if(c.length&&c.find(".chosen-single,.chosen-choices").addClass("has-error").on("mousedown",function(){h()===!0&&t(this).removeClass("has-error")}),!x){if(o.hasClass("chosen"))o.trigger("chosen:activate");else if(o.is("textarea")&&o.data("keditor")){var d=o.data("keditor");d.focus(),d.edit.doc.body.focus()}else o.focus();x=!0}}),C.length&&a(C.join(";"),"danger")}if(u)return u(i,!1,l);if(f()===!1)return}}},error:function(t,i,n){if((c&&c(t,i,n,l))!==!1){l.enableForm();var o="timeout"==i||"error"==i?e.lang?e.lang.timeout:i:t.responseText+i+n;a(o,"danger")}}},r),l._ajaxForm(r).data("zui.ajaxform",!0),l.on("click","[data-form-action]",function(){l.attr("action",t(this).data("formAction")).submit()})},t.setAjaxForm=function(e,i,n){t.ajaxForm(e,t.isPlainObject(i)?i:{onFinish:i,beforeSubmit:n})},t.fn.ajaxForm=function(e){return this.each(function(){t.ajaxForm(this,e)})},t.fn.setInputRequired=function(){return this.each(function(){var e=t(this),i=e.parent();i.is(".input-control,td")?i.addClass("required"):e.is(".chosen")?e.attr("required",null).next(".chosen-container").addClass("required"):i.addClass("required"),e.attr("required",null);var n=i.closest(".input-group");n.length&&1===n.find(".required,input[required],select[required]").length&&n.addClass("required")})},t(function(){t('.form-ajax,form[data-type="ajax"]').ajaxForm(),setTimeout(function(){var i=e.config.requiredFields,n=t("form");i&&(i=i.split(",")),i&&i.length&&t.each(i,function(t,e){n.find("#"+e).attr("required","required")}),n.find("input[required],select[required],textarea[required]").setInputRequired()},400),t("#hiddenwin"),t('form[target="hiddenwin"]').on("submit",function(){var e=t(this);e.data("zui.ajaxform")||e.enableForm(!1).data("disabledTime",(new Date).getTime())}).on("click",function(){var e=t(this),i=e.data("disabledTime");i&&(new Date).getTime()-i>1e4&&e.enableForm(!0).data("disabledTime",null)})})}(jQuery,window,void 0),function(t){"use strict";var e="zui.searchList",i=function(t,e){if(t&&t.length)for(var i=0;i
    ').append(s)),i.$menu.append(s),i.$menu.removeClass("loading"),i.isLoaded=!0,e&&e(!0)},error:function(){i.$menu.removeClass("loading").append('
    '+(n.errorText||window.lang&&window.lang.timeout)+"
    "),e&&e(!1)}},n.ajax))},n.prototype.scrollTo=function(t){t.length&&t[0].scrollIntoViewIfNeeded&&t[0].scrollIntoViewIfNeeded({behavior:"smooth"})},n.prototype.getItems=function(){return this.$.find(this.options.selector).addClass("search-list-item")},n.prototype.getActiveItem=function(){return this.getItems().filter(".active:first")},n.prototype.search=function(e){var n=this,o=void 0===e||null===e||""===e;n.$.toggleClass("has-search-text",!o);var a=n.getItems().removeClass("active");if(o)a.removeClass("hidden");else{var s=t.trim(e).split(" ");a.each(function(){var e=t(this),n=e.text()+" "+(e.data("key")||e.data("filter"));e.toggleClass("hidden",!i(s,n))})}n.scrollTo(a.not(".hidden").first().addClass("active"))},n.DEFAULTS={selector:".list-group a:not(.not-list-item)",searchBox:".search-box",onSelectItem:null},t.fn.searchList=function(i){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof i&&i;a||o.data(e,a=new n(this,s)),"string"==typeof i&&a[i]()})},n.NAME=e,t.fn.searchList.Constructor=n,t(function(){t('[data-ride="searchList"]').searchList()})}(jQuery),function(t){"use strict";var e="zui.labelSelector",i=function(n,o){var a=this;a.name=e,a.$=t(n),o=a.options=t.extend({},i.DEFAULTS,this.$.data(),o),a.$.hide(),a.update()};i.prototype.select=function(t){t+="",this.$wrapper.find(".label.active").removeClass("active"),this.$wrapper.find('.label[data-value="'+t+'"]').addClass("active"),this.$.val(t).trigger("change")},i.prototype.update=function(){var e=this,i=e.options,n=e.$wrapper;if(!n){if(i.wrapper)n=t(i.wrapper);else{var o=e.$.next();n=o.hasClass(".label-selector")?o:t('
    ')}n.parent().length||e.$.after(n),e.$wrapper=n,n.on("click",".label",function(i){var n=e.$.val(),o=t(this).data("value");e.hasEmptyValue!==!1&&o==n&&(o=e.hasEmptyValue),e.select(o),i.preventDefault()})}n.empty();var a=e.$.val();e.hasEmptyValue=!1,e.$.children("option").each(function(){var e=t(this),o={label:e.text(),value:e.val()},s=""===o.value||"0"===o.value,r=t(i.labelTemplate||'');i.labelClass&&!s&&r.addClass(i.labelClass),i.labelCreator?r=i.labelCreator(r):(r.data("option",o).attr("data-value",o.value),s&&!o.label?r.addClass("empty").append(''):r.text(o.label).toggleClass("active",a===o.value)),n.append(r)})},i.DEFAULTS={},t.fn.labelSelector=function(n){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof n&&n;a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},i.NAME=e,t.fn.labelSelector.Constructor=i,t(function(){t('[data-provide="labelSelector"]').labelSelector()})}(jQuery),function(t){"use strict";var e="zui.fileInput",i=t.BYTE_UNITS={B:1,KB:1024,MB:1048576,GB:1073741824,TB:1099511627776},n=t.formatBytes=function(t,e,n){return void 0===e&&(e=2),n||(n=ts.fileMaxSize&&(h.val(""),(window.bootbox||window).alert(s.fileSizeError.format(n(s.fileMaxSize)))),r.update()}),r.update()};a.prototype.getFile=function(){var t=this.$input.prop("files");return t&&t[0]},a.prototype.update=function(){var t=this,e=t.$,i=t.getFile(),o=!i;e.toggleClass("normal",!o).toggleClass("empty",o),i?(t.oldName=i.name,e.find(".file-title").text(i.name).attr("title",i.name),e.find(".file-size").text(n(i.size)),e.find(".file-editbox").val(i.name).attr("size",i.name.length),t.options.onSelect&&t.options.onSelect(i,t)):e.find(".file-editbox").val("")},a.DEFAULTS={fileMaxSize:0,fileSizeError:"无法上传大于 {0} 的文件。"},t.fn.fileInput=function(i){return this.each(function(){var n=t(this),o=n.data(e),s="object"==typeof i&&i;o||n.data(e,o=new a(this,s)),"string"==typeof i&&o[i]()})},a.NAME=e,t.fn.fileInput.Constructor=a,t(function(){t('[data-provide="fileInput"]').fileInput()});var s="zui.fileInputList",r=function(e,i){var n=this;n.name=s;var o=n.$=t(e);i=n.options=t.extend({},r.DEFAULTS,this.$.data(),i),n.$template=o.find(".file-input").detach(),n.add()};r.prototype.add=function(){var t=this,e=t.options,i=t.$template.clone();"before"===e.appendWay?t.$.prepend(i):t.$.append(i),i.fileInput({fileMaxSize:e.eachFileMaxSize,fileSizeError:e.fileSizeError,onDelete:function(e){e.$.remove(),t.options.onDelete&&t.options.onDelete(e,t)},onSelect:function(e,i){t.add(),t.options.onSelect&&t.options.onSelect(e,i,t)}})},r.DEFAULTS={fileMaxSize:0,eachFileMaxSize:0,appendWay:"after",fileSizeError:"无法上传大于 {0} 的文件。"},t.fn.fileInputList=function(e){return this.each(function(){var i=t(this),n=i.data(s),o="object"==typeof e&&e;n||i.data(s,n=new r(this,o)),"string"==typeof e&&n[e]()})},r.NAME=s,t.fn.fileInputList.Constructor=r,t(function(){t('[data-provide="fileInputList"]').fileInputList()})}(jQuery),function(t){window.config||(window.config={}),t.createLink=window.createLink=function(t,e,n,o,a,s){if(o||(o=config.defaultView),a||(a=!1),n)for(n=n.split("&"),i=0;i0?"&":"?")+"pgm="+s),l},t(function(){var e=t("#main,#mainContent,#mainRow,.auto-fade-in");e.length&&e.hasClass("fade")&&setTimeout(function(){e.addClass("in")},e.data("fadeTime")||200)}),t.ajaxSendScore=function(e){t.get(t.createLink("score","ajax","method="+e))};var e=function(t){var e=0;if(t){var i=t.split(":");e+=60*parseInt(i[0]),e+=parseInt(i[1])}return e},n=function(t){t%=1440;var e=Math.floor(t/60),i=t%60;return e<10&&(e="0"+e),i<10&&(i="0"+i),e+":"+i},o=function(t){if("string"==typeof t&&(t=e(t)),"number"==typeof t)if(t<1e5){var i=new Date;i.setHours(Math.floor(t/60)%24),i.setMinutes(t%60),t=i}else t=new Date(t);return t},a=function(t,i){for(var a=i?o(i):new Date,s=a.getHours(),r=10*Math.floor(a.getMinutes()/10)+10,l=0;l<24;++l){var h=(l+s)%24;if(!(h<5))for(var c=0;c<6;++c){var d=n(60*h+10*c+r);t.append('")}}t.val()||(time=e(a.format("hh:mm")),time=time-time%10+10,t.val(n(time)))};t.fn.timeSpanControl=function(i){return this.each(function(){var s=t(this),r=t.extend({},i,s.data()),l=s.find('[name="begin"],.control-time-begin'),h=s.find('[name="end"],.control-time-end'),c=function(){var t=l.val();if(s.find(".hide-empty-begin").toggleClass("hide",!t),t){var i=n(e(t)+30);h.find('option[value="'+i+'"]').length&&h.val(i),r.onChange&&r.onChange(h,i)}};if(s.data("timeSpanControlInit")){if(r.begin){var d=o(r.begin).format("hh:mm");l.find('option[value="'+d+'"]').length&&l.val(d),r.onChange&&r.onChange(l,d)}if(r.end){var u=o(r.end).format("hh:mm");h.find('option[value="'+u+'"]').length&&h.val(u),r.onChange&&r.onChange(h,u)}}else l.on("change",c),a(l,r.begin),a(h,r.end),s.data("timeSpanControlInit",!0);r.end||c()})},t.timeSpanControl={convertTimeToNum:e,convertNumToTime:n,initTimeSelect:a,createTime:o};var s=t.setSearchType=function(e,i){var n=t("#searchType");e||(e=n.val()),e=e||"bug",n.val(e);var o=t("#searchTypeMenu");o.find("li.selected").removeClass("selected");var a=o.find('a[data-value="'+e+'"]'),s=a.text();a.parent().addClass("selected"),t("#searchTypeName").text(s),i||t("#searchInput").focus()};t.gotoObject=function(e,i){if(e||(e=t("#searchType").val()),i||(i=t("#searchInput").val()),i&&e)if(i=i.replace(/[^\d]/g,""))window.location.href=t.createLink(e,"testsuite"===e?"library":"view","id="+i);else{var n={zh_cn:"请输入数字ID进行搜索",zh_tw:"請輸入數值ID行搜索"};alert(lang.searchTip||n[t.zui.clientLang()]||"Please enter a numberic id to search")}t("#searchInput").val(i).focus()},t(function(){s(null,!0),t(document).on("keydown",function(e){e.ctrlKey&&71===e.keyCode&&(t("#searchInput").val("").focus(),e.stopPropagation(),e.preventDefault())})}),t.removeAnchor=window.removeAnchor=function(t){var e=t.lastIndexOf("#");return e>-1?t.substr(0,e):t},t.refreshPage=function(){location.href=removeAnchor(location.href)},t.selectLang=window.selectLang=function(e){t.cookie("lang",e,{expires:config.cookieLife,path:config.webRoot}),t.ajaxSendScore("selectLang"),t.refreshPage()},t.selectTheme=window.selectTheme=function(e){t.cookie("theme",e,{expires:config.cookieLife,path:config.webRoot}),t.ajaxSendScore("selectTheme"),t.refreshPage()},t.zui.Picker&&t.zui.Picker.enableChosen(),t.chosenDefaultOptions={middle_highlight:!0,disable_search_threshold:1,compact_search:!0,allow_single_deselect:!0,placeholder_text_single:" ",placeholder_text_multiple:" ",search_contains:!0,max_drop_width:500,max_drop_height:245,no_wrap:!0,drop_direction:function(){var e=t(this.container).closest(".table-responsive:not(.scroll-none)");if(e.length){if(this.drop_directionFixed)return this.drop_directionFixed;var i="down",n=this.container.find(".chosen-drop"),o=this.container.position(),a=n.outerHeight();return o.top>=a&&o.top+a{page}/{totalPage}
    ',"next_icon","last_icon"],onPageChange:function(e,i){e.recPerPage!==i.recPerPage&&t.cookie(this.options.pageCookie,e.recPerPage,{expires:config.cookieLife,path:config.webRoot}),e.recPerPage!==i.recPerPage&&(window.location.href=this.createLink())}}),t.extend(!0,t.zui.Messager.DEFAULTS,{cssClass:"messagger-zt",icons:{success:"check-circle",info:"chat-line",warning:"exclamation-sign",danger:"exclamation-sign"}}),t.fn.reverseOrder=function(){return this.each(function(){var e=t(this);e.prependTo(e.parent())})};var r=function(e,i){var n=t(e);if(!n.data("historiesInited")){n.data("historiesInited",1),i=t.extend({},n.data(),i);var o=n.find(".histories-list"),a=!0,s=!1;n.on("click",".btn-reverse",function(){o.children("li").reverseOrder(),a=!a,t(this).find(".icon").toggleClass("icon-arrow-up",a).toggleClass("icon-arrow-down",!a);var e="#lastComment",i=t(e);i.length&&window.KindEditor&&(window.KindEditor.remove(e),i.kindeditor())}).on("click",".btn-expand-all",function(){var e=t(this).find(".icon");s=!s,e.toggleClass("icon-plus",!s).toggleClass("icon-minus",s),o.children("li").toggleClass("show-changes",s)}).on("click",".btn-expand",function(){t(this).closest("li").toggleClass("show-changes")}).on("click",".btn-strip",function(){var e=t(this),n=e.find(".icon"),o=n.hasClass("icon-code");n.toggleClass("icon-code",!o).toggleClass("icon-text",o),e.attr("title",o?i.original:i.textdiff),e.closest("li").toggleClass("show-original",o)}),o.find(".btn-strip").attr("title",i.original);var r=n.find(".modal-comment").modal({show:!1}).on("shown.zui.modal",function(){var t=r.find("#comment");t.length&&(t.focus(),window.editor&&window.editor.comment&&window.editor.comment.focus())}).on("show.zui.modal",function(){var e=r.find("#comment");e.length&&!e.data("keditor")&&t.fn.kindeditor&&e.kindeditor()});n.on("click",".btn-comment",function(t){r.modal("toggle"),t.preventDefault()}).on("click",".btn-edit-comment,.btn-hide-form",function(){t(this).closest("li").toggleClass("show-form")});var l=n.find(".comment-edit-form");l.ajaxForm({success:function(t,e,i,n){setTimeout(function(){l.closest("li").removeClass("show-form")},2e3)}})}};t.fn.histories=function(t){return this.each(function(){r(this,t)})},t(function(){t(".histories").histories()});var l=0,h=0;t.toggleSidebar=function(e){var i=t("#sidebar");if(i.length){var n=t("main");if(void 0===e)e=n.hasClass("hide-sidebar");else if(e&&!n.hasClass("hide-sidebar"))return;n.toggleClass("hide-sidebar",!e),clearTimeout(l),t.zui.store.set(h,e);var o=i.children(".cell"),a={overflow:"visible",maxHeight:"initial"};e?(i.addClass("showing"),l=setTimeout(function(){i.removeClass("showing"),i.trigger("sidebar.toggle",e)},210)):(i.trigger("sidebar.toggle",e),t(window).width()<1900&&(a={overflow:"hidden",maxHeight:t(window).height()-45})),o.css(a)}};var c=t.initSidebar=function(){var e=t("#sidebar");if(e.length){if(e.data("init"))return!0;h="sidebar:"+(e.data("id")||config.currentModule+"/"+config.currentMethod);var i=t("main");if(i.length){i.on("click",".sidebar-toggle",function(){t.toggleSidebar(i.hasClass("hide-sidebar"))});var n=t.zui.store.get(h,e.data("hide")!==!1);n===!1&&e.addClass("no-animate"),t.toggleSidebar(n),n===!1&&setTimeout(function(){e.removeClass("no-animate")},500);var o=e.find(".sidebar-toggle");if(o.length){var a=function(){var e=o[0].getBoundingClientRect(),i=t(window).height(),n=Math.max(0,Math.floor(Math.min(i-40,e.top+e.height)-Math.max(e.top,0))/2)+(e.top<0?0-e.top:0);o.removeClass("fade").find(".icon").css("top",n+(t.zui.browser.isIE()?(i-80)/2:0))};a(),e.data("init",1).on("sidebar.toggle",a);var s=t.zui.browser.isIE()?1500:0,r=0,l=null,c=function(){var t=Date.now();return l&&(clearTimeout(l),l=null),t-rtr input[type="checkbox"]:checked');i.each(function(){var i=parseInt(t(this).val(),10);NaN!==i&&e.push(i)}),t.cookie("checkedItem",e.join(","),{expires:config.cookieLife,path:config.webRoot})},t.extend(t.fn.modal.bs.Constructor.DEFAULTS,{scrollInside:!0,backdrop:"static",headerHeight:100}),t.extend(t.zui.ModalTrigger.DEFAULTS,{scrollInside:!0,backdrop:"static",headerHeight:40}),t.fn.initIframeModal=function(){return this.each(function(){var e=t(this);if(!e.parents('[data-ride="table"],.skip-iframe-modal').length){var i={type:"iframe"};e.hasClass("export")&&t.extend(i,{width:800,shown:setCheckedCookie},e.data()),e.modalTrigger(i)}})},t(function(){t("a.iframe,.export").initIframeModal()});var d=function(){var e,i,n=t(this),o=t.extend({limitSize:40,suffix:"…"},n.data()),a=n.text();if(a.length>o.limitSize){e=a,i=a.substr(0,o.limitSize)+o.suffix,n.text(i).addClass("limit-text-on");var s=o.toggleBtn?t(o.toggleBtn):n.next(".text-limit-toggle");s.text(s.data("textExpand")),s.on("click",function(){var t=n.toggleClass("limit-text-on").hasClass("limit-text-on");n.text(t?i:e),s.text(s.data(t?"textExpand":"textCollapse"))})}else(o.toggleBtn?t(o.toggleBtn):n.next(".text-limit-toggle")).hide()};t.fn.textLimit=function(){return this.each(d)},t(function(){t(".text-limit").textLimit()}),t.fixedTableHead=window.fixedTableHead=function(e,i){var n=t(e);if(n.is("table")||(n=n.find("table")),n.length){var o=t(i||window),a=null,s=function(){var e=n.children("thead"),i=e[0].getBoundingClientRect(),o=n.next(".fixed-head-table");if(i.top<0){var s=e.width();if(o.length){if(a!==s){a=s;var r=o.find("th");e.find("th").each(function(e){r.eq(e).width(t(this).width())})}}else{var o=t("
    ").addClass(n.attr("class")),l=e.clone(),r=l.find("th");e.find("th").each(function(e){r.eq(e).width(t(this).width())}),o.append(l).insertAfter(n)}o.css({left:i.left,width:i.width}).show()}else o.hide()};o.on("scroll",s).on("resize",s),s()}},t(document).on("click","tr[data-url]",function(){var e=t(this),i=e.data("href")||e.data("url");i&&(window.location.href=i)}),"yes"===config.onlybody&&self===parent&&(window.location.href=window.location.href.replace("?onlybody=yes","").replace("&onlybody=yes","")),t(function(){t("body").addClass("m-{currentModule}-{currentMethod}".format(config))});var u,f,p,g,m,v=function(){u||(u=t("#subNavbar"),f=t("#pageNav"),p=t("#pageActions"),g=u.children(".nav"),m=g.outerWidth());var e=u.outerWidth(),i=f.outerWidth()||0,n=p.outerWidth()||0;if(i=i?i+15:0,n=n?n+15:0,!i&&!n)return void g.css({maxWidth:null,left:null,position:"static"});var o=Math.max(300,e-i-n),a=Math.min(o,m),s=(e-a)/2,r=i&&s.btn-toolbar");if(e.length){var i,n,o=e.children(),a=o.length,s=!1,r=null;if(a)for(o.each(function(e){i=t(this),n=i.is(".divider"),n&&!r&&i.hide(),s||n||(s=!0),r=n?null:i,!n||e!==a-1&&0!==e||i.hide()});i.length&&i.is(".divider");)i=i.hide().prev();s||e.hide()}};t(function(){t(".input-group,.btn-group").fixInputGroup(),T()}),window.holders&&t.each(window.holders,function(e){var i=t("#"+e);i.length&&i.is("input")&&i.attr("placeholder",window.holders[e])});var S=function(){var e,i="en"==config.clientLang?"//www.zentao.pm/book/zentaomanual/8.html?fullScreen=zentao":"ja"==config.clientLang?"//www.zentao.jp/book/zentaomanual/8.html?fullScreen=zentao":"//www.zentao.net/book/zentaopmshelp.html?fullScreen=zentao",n=t("#navbar > .nav").first(),o=1e4,a=function(){clearTimeout(e),t("#helpContent").removeClass("show-error")},s=t.openHelp=function(s){s=s||i,a(),n.children("li.active:not(#helpMenuItem)").removeClass("active").addClass("close-help-tab"),t("#helpMenuItem").addClass("active");var r=t("#helpContent");if(r.length){if(t("body").hasClass("show-help-tab"))return void t("#helpIframe").get(0).contentWindow.location.replace(s)}else{r=t('

    '+lang.timeout+'

    '+s+'

    '),t("#header").after(r);var l=t("#helpIframe").get(0);e=setTimeout(function(){t("#helpContent").addClass("show-error")},o),l.onload=l.onreadystatechange=function(){this.readyState&&"complete"!=this.readyState||a()}}t("body").addClass("show-help-tab")},r=t.closeHelp=function(){t("body").removeClass("show-help-tab"),t("#helpMenuItem").removeClass("active"),n.find("li.close-help-tab").removeClass("close-help-tab").addClass("active").find("a").focus()};t(document).on("click",".open-help-tab",function(e){var i=t(this),o=t("#helpMenuItem");o.length||(o=t('
  • '+i.text()+'
  • '),n.append('
  • ').append(o)),s(i.attr("href")),e.preventDefault()}).on("click",".close-help-tab",function(t){r(),t.stopPropagation(),t.preventDefault()})};t(S),t(function(){var e=t(".table-responsive"),i=t.fixTableResponsive=function(){e.each(function(){this.scrollHeight-3<=this.clientHeight&&this.scrollWidth-3<=this.clientWidth?t(this).addClass("scroll-none").css("overflow","visible"):t(this).removeClass("scroll-none").css("overflow","auto")})};e.length&&(t(window).on("resize",i),setTimeout(i,100))});var D=function(){var e=this,i=t(e),n=i.closest("tr").find("textarea");if(n.length){var o=32;n.each(function(){var e=t(this).closest("td"),i=e.css("height");e.css("height",this.style.height),this.style.height="auto";var n=this.value?this.scrollHeight+2:32;o=Math.max(o,n),e.css("height",i)}),n.css("height",o)}else{e.style.height="auto";var a=e.value?e.scrollHeight+2:32;e.style.height=a+"px"}};t.autoResizeTextarea=function(e){t(e).each(D)},t(function(){t("textarea.autosize").each(D),t(document).on("input paste change","textarea.autosize",D)}),t(function(){var e=t("#dropMenu,.drop-menu");e.length&&e.on("click",".toggle-right-col",function(e){t(this).closest("#dropMenu,.drop-menu").toggleClass("show-right-col"),e.stopPropagation(),e.preventDefault()})});var M="undefined"!=typeof InstallTrigger;t.zui.browser.firefox=M,t("html").toggleClass("is-firefox",M).toggleClass("not-firefox",!M),t(function(){var e=t("#mainContent>.main-col"),i=e.children(".main-actions");if(i.length){var n=i.prev();if(i.length&&n.length){t('
    ').css("height",i.outerHeight()).insertAfter(i);var o=0,a=function(){var e=n[0].getBoundingClientRect(),s=e.top+e.height+120>t(window).height();if(t("body").toggleClass("main-actions-fixed",s),s){const r=n.width();r?i.width(r):o<10&&setTimeout(a,1e3)}o++};t.resetToolbarPosition=a,a(),t(window).on("resize scroll",a)}}}),t(document).on("show.zui.modal",function(e){t("body.body-modal").length&&window.parent&&window.parent!==window&&t(e.target).is(".modal")&&window.parent.$("body").addClass("hide-modal-close")}).on("hidden.zui.modal",function(){t("body.body-modal").length&&window.parent&&window.parent!==window&&window.parent.$("body").removeClass("hide-modal-close")}),t(function(){var e=t(".dropdown-menu.with-search");e.length&&(e.find(".menu-search").on("click",function(t){return t.stopPropagation(),!1}),e.on("keyup change paste","input",function(){var e=t(this),i=e.closest(".dropdown-menu.with-search"),n=e.val().toLowerCase(),o=i.find(".option");""==n?o.removeClass("hide"):o.each(function(){var e=t(this);e.toggleClass("hide",e.text().toString().toLowerCase().indexOf(n)<0&&e.data("key").toString().toLowerCase().indexOf(n)<0)})}),e.parents(".dropdown-submenu").one("mouseenter",function(){var e=t(this).find(".dropdown-list")[0];e&&e.getBoundingClientRect&&setTimeout(function(){var t=270,i=e.getBoundingClientRect();i.top<0&&(t=Math.min(270,i.height)+i.top),e.style.maxHeight=Math.min(270,t)+"px"},50)})),t(".dropdown-menu.with-search .menu-search").on("click",function(t){return t.stopPropagation(),!1})})}(jQuery),$.zui.lang("de",{"zui.pager":{pageOfText:"Seite {0}",prev:"Zurück",next:"Nächste Seite",first:"Erste Seite",last:"Letzte Seite","goto":"Goto",pageOf:"Seite {page}",totalPage:"{totalPage} Seiten",totalCount:"Total: {recTotal} Artikel",pageSize:"{recPerPage} Artikel pro Seite",itemsRange:"Seiten {start} bis {end}",pageOfTotal:"Seite {page}/{totalPage}"},"zui.boards":{append2end:"Gehen Sie zum Ende"},"zui.browser":{tip:"Online. Sorgenfrei. Aktualisiere deinen Browser noch heute!"},"zui.calendar":{weekNames:["Son","Mon","Die","Mit","Don","Fri","Sam"],monthNames:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",year:"{0}Jahr",month:"{0}Monat",yearMonth:"{0}-{1}"},"zui.chosenIcons":{emptyIcon:"[Kein Icon]",commonIcons:"Gemeinsame Symbole",webIcons:"Web-Symbol",editorIcons:"Editor-Symbol",directionalIcons:"Pfeil Zusammenfluss",otherIcons:"Andere Symbole"},"zui.colorPicker":{errorTip:"Kein gültiger Farbwert"},"zui.datagrid":{errorCannotGetDataFromRemote:"Daten vom Remote-Server ({0}) können nicht abgerufen werden.",errorCannotHandleRemoteData:"Die vom Remote-Server zurückgegebenen Daten können nicht verarbeitet werden."},"zui.guideViewer":{prevStep:"Vorheriger Schritt",nextStep:"Nächster Schritt"},"zui.tabs":{reload:"Neu laden",close:"Schliessen",closeOthers:"Schließen Sie andere Registerkarten",closeRight:"Schließen Sie die rechte Registerkarte",reopenLast:"Letzten geschlossenen Tab wiederherstellen",errorCannotFetchFromRemote:"Inhalt kann nicht vom Remote-Server abgerufen werden ({0})."},"zui.uploader":{},datetimepicker:{days:["Sonntag","Montag","Diensteg","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fri","Sam"],daysMin:["Son","Mon","Die","Mit","Don","Fri","Sam"],months:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",suffix:[],meridiem:[]},chosen:{no_results_text:"Nicht gefunden"},bootbox:{OK:"OK",CANCEL:"Stornieren",CONFIRM:"Bestätigen"}}),$.zui.lang("fr",{"zui.pager":{pageOfText:"Page {0}",prev:"Prev",next:"Suivant",first:"First",last:"Last","goto":"Goto",pageOf:"Page {page}",totalPage:"{totalPage} pages",totalCount:"Total: {recTotal} items",pageSize:"{recPerPage} per page",itemsRange:"De {start} à {end}",pageOfTotal:"Page {page} de {totalPage}"},"zui.boards":{append2end:"Aller jusqu'au bout"},"zui.browser":{tip:"Naviguez sans crainte sur Internet. Mettez votre navigateur à jour dès aujourd'hui!"},"zui.calendar":{weekNames:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],monthNames:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",year:"{0} Année",month:"{0} Mois",yearMonth:"{0}-{1}"},"zui.chosenIcons":{emptyIcon:"[Aucune icône]",commonIcons:"Icônes communes",webIcons:"Icône Web",editorIcons:"Icône de l'éditeur",directionalIcons:"Flèche confluence",otherIcons:"Autres icônes"},"zui.colorPicker":{errorTip:"Pas une valeur de couleur valide"},"zui.datagrid":{errorCannotGetDataFromRemote:"Impossible d'obtenir les données du serveur distant ({0}).",errorCannotHandleRemoteData:"Impossible de traiter les données renvoyées par le serveur distant."},"zui.guideViewer":{prevStep:"Étape précédente",nextStep:"Prochaine étape"},"zui.tabs":{reload:"Recharger",close:"Fermer",closeOthers:"Fermez les autres onglets",closeRight:"Fermer l'onglet de droite",reopenLast:"Restaurer le dernier onglet fermé",errorCannotFetchFromRemote:"Impossible d'obtenir le contenu du serveur distant ({0})."},"zui.uploader":{},datetimepicker:{days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],months:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",suffix:[],meridiem:[]},chosen:{no_results_text:"Pas trouvé"},bootbox:{OK:"D'accord",CANCEL:"Annuler",CONFIRM:"Confirmer"}}); \ No newline at end of file diff --git a/www/theme/zui/css/min.css b/www/theme/zui/css/min.css index af33bdf52a..4c68896dc9 100644 --- a/www/theme/zui/css/min.css +++ b/www/theme/zui/css/min.css @@ -1,5 +1,5 @@ /*! - * ZUI: ZUI for Zentao - v1.9.2 - 2020-11-18 + * ZUI: ZUI for Zentao - v1.9.2 - 2020-12-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2020 cnezsoft.com; Licensed MIT @@ -13,4 +13,4 @@ * * Copyright (c) 2011-2016 Harvest http://getharvest.com * MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md -*/.chosen-container{position:relative;display:block;font-size:13px;vertical-align:middle;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;display:none;width:100%;background:#fff;border:1px solid #b6bdcc;border:1px solid rgba(0,0,0,.15);border-top:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container .chosen-drop.chosen-drop-size-limited{border-top:1px solid rgba(0,0,0,.15)}.chosen-container .chosen-drop.chosen-auto-max-width{min-width:100%;border-top:1px solid rgba(0,0,0,.15);opacity:0}.chosen-container .chosen-drop.chosen-auto-max-width>.chosen-results>li{display:inline-block;white-space:nowrap}.chosen-container .chosen-drop.chosen-auto-max-width.in{opacity:1}.chosen-container .chosen-drop.chosen-auto-max-width.in>.chosen-results>li{display:block;white-space:normal}.chosen-container .chosen-drop.chosen-no-wrap>.chosen-results>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap!important}.chosen-container.chosen-with-drop .chosen-drop{display:block}.chosen-container a{cursor:pointer}.chosen-container.chosen-up .chosen-drop{top:inherit;bottom:100%;margin-top:auto;margin-bottom:-1px;border-radius:2px 2px 0 0;-webkit-box-shadow:0 -3px 5px rgba(0,0,0,.175);box-shadow:0 -3px 5px rgba(0,0,0,.175)}.chosen-container.chosen-highlight-selected .result-selected{color:#0c64eb;background:#e9f2fb}.chosen-container-single .chosen-single{display:block;width:100%;height:32px;padding:5px 8px;overflow:hidden;line-height:1.42857143;color:#222;text-decoration:none;white-space:nowrap;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-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}.chosen-container-single .chosen-default{color:#838a9d}.chosen-container-single .chosen-single>span{display:block;margin-right:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:5px;right:24px;display:block;width:20px;height:20px;font-family:sans-serif;font-size:18px;font-weight:700;line-height:18px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-single .chosen-single abbr:before{display:block;content:'×'}.chosen-container-single .chosen-single abbr:focus,.chosen-container-single .chosen-single abbr:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;height:100%;padding:5px 8px}.chosen-container-single .chosen-single div b{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent;opacity:.5}.chosen-container-single .chosen-search{position:relative;z-index:1010;padding:3px 4px;margin:0;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{width:100%;height:27px;padding:2px 26px 2px 8px;margin:1px 0;font-size:12px;line-height:1.5;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;outline:0}.chosen-container-single .chosen-search input[type=text]:focus{border-color:#0c64eb}.chosen-container-single .chosen-search:before{position:absolute;top:10px;right:10px;display:block;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#838a9d;text-transform:none;content:"\e928";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-single .chosen-drop{margin-top:-1px;-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:0 0 4px 4px}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;max-height:240px;padding:0;margin:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;padding:5px 10px;margin:0;line-height:15px;list-style:none;-webkit-transition:background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:background-color .2s cubic-bezier(.175,.885,.32,1);transition:background-color .2s cubic-bezier(.175,.885,.32,1);-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{color:#fff;background-color:#0c64eb}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;width:100%;min-height:32px;min-height:30px\9;padding:0;margin:0;overflow:hidden;cursor:text;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-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}.chosen-container-multi .chosen-choices:after,.chosen-container-multi .chosen-choices:before{display:table;content:" "}.chosen-container-multi .chosen-choices:after{clear:both}.chosen-container-multi .chosen-choices li{display:block;float:left;padding:0 6px;margin:5px 4px;list-style:none}.chosen-container-multi .chosen-choices li.search-field{padding:0;line-height:12px;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{height:20px;font-size:100%;color:#838a9d;background:0 0!important;border:0!important;border-radius:0;outline:0;-webkit-box-shadow:none;box-shadow:none}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-field:before{position:absolute;right:8px;bottom:8px;display:block;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#838a9d;text-transform:none;content:"\e928";opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice{position:relative;padding:3px 20px 3px 5px;line-height:12px;cursor:default;background-color:#f1f1f1;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cbd0db;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.chosen-container-multi .chosen-choices li.search-choice:hover{background-color:#fff;border-color:#adb5c6;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:1px;right:0;display:block;width:20px;height:18px;line-height:18px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-shadow:0 1px 0 #fff;text-transform:none;content:'\d7';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus,.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;color:#666;background-color:#e4e4e4;border:1px solid #ccc}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{padding:5px 0;margin:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border-color:#0c64eb;-webkit-box-shadow:none,0 0 8px rgba(12,100,235,.6);box-shadow:none,0 0 8px rgba(12,100,235,.6)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #b6bdcc;border:1px solid rgba(0,0,0,.15);border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active.chosen-with-drop .chosen-single div{background:0 0;border-left:none}.chosen-container-active.chosen-with-drop .chosen-single div b{content:"";border-top:0 dotted;border-bottom:4px solid}.chosen-container-active.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active .chosen-choices{border-color:#0c64eb;-webkit-box-shadow:none,0 0 8px rgba(12,100,235,.6);box-shadow:none,0 0 8px rgba(12,100,235,.6)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-container-active .chosen-choices li.search-field:before{opacity:1}.chosen-disabled{cursor:default;opacity:.5!important}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-compact.chosen-container-single .chosen-single>.chosen-search{left:0;display:none;padding:3px 4px;opacity:0}.chosen-compact.chosen-container-single .chosen-single>.chosen-search>input{height:25px;padding:2px 26px 2px 4px;font-size:inherit}.chosen-compact.chosen-container-single .chosen-single>.chosen-search:before{top:9px}.chosen-compact.chosen-with-search.chosen-with-drop .chosen-single>.chosen-search{display:block;opacity:1}select.chosen[multiple]{height:32px;overflow:hidden}select.chosen[multiple] option{visibility:hidden}.container,.container-fixed,.container-fluid{position:relative}.container{max-width:1800px!important}body{padding-bottom:40px;background-color:#efefef}body.article-content,body.body-modal{background:0 0}body.body-modal{padding:0}a:active,a:focus,button:active,button:focus{outline:0!important}.strong{font-weight:700}.font-normal{font-weight:400!important}.text-middle{vertical-align:middle!important}.text-bottom{vertical-align:bottom!important}.text-top{vertical-align:top!important}.inline-block{display:inline-block!important}.layer{border-radius:4px;-webkit-box-shadow:0 0 20px 0 #bdc9d8;box-shadow:0 0 20px 0 #bdc9d8}.space{margin-bottom:20px}.space-lg{margin-bottom:30px}.space-sm{margin-bottom:10px}.muted{opacity:.5}.text-muted em{color:#3c4353}.no-animate{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.template{display:none!important}.text-left{text-align:left!important}.text-yellow.icon-folder{color:#ffe066}.table-row{display:table;width:100%;table-layout:fixed}.table-col,.table-row>.col,.table-row>[class*=col-],.table-row>[class*="-col"]{display:table-cell;float:none;vertical-align:top}.side-col{width:200px;padding-right:20px}.side-col.col-4{width:33.3333333%}.col-lg{width:260px}.col-xl{width:320px}.col-sm{width:150px}.col-xs{width:100px}.main-col+.side-col{padding-right:0;padding-left:20px}.row-grid>[class*=col-],.row-grid>[class*="-col"]{padding-top:6px;padding-bottom:6px}hr.space{margin:10px 0;border:none}hr.space-sm{margin:5px 0;border:none}.text-secondary{color:#16a8f8}a.text-primary{color:#0c64eb}.nav-primary>li>a{min-width:100px;padding:5px 8px;color:#838a9d;border-color:#e7f1fc}.nav-primary>li.active>a{color:#0c64eb;background-color:#e7f1fc;border-color:#e7f1fc}.nav-primary>li.active>a:hover{color:#0c64eb;background-color:#c3dcf7;border-color:#c3dcf7}.end-marker{margin-bottom:20px;color:#cbd0db;text-align:center}@-webkit-keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}@-o-keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}@keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}.highlight{-webkit-animation:highlight .5s linear 0s 2 alternate;-o-animation:highlight .5s linear 0s 2 alternate;animation:highlight .5s linear 0s 2 alternate}.progress.inline-block{width:100px;margin:0}.w-p5{width:5%!important}.w-p10{width:10%!important}.w-p15{width:15%!important}.w-p20{width:20%!important}.w-p25{width:25%!important}.w-p30{width:30%!important}.w-p35{width:35%!important}.w-p40{width:40%!important}.w-p45{width:45%!important}.w-p50{width:50%!important}.w-p55{width:55%!important}.w-p60{width:60%!important}.w-p65{width:65%!important}.w-p70{width:70%!important}.w-p75{width:75%!important}.w-p80{width:80%!important}.w-p85{width:85%!important}.w-p90{width:90%!important}.w-p94{width:94%!important}.w-p95{width:95%!important}.w-p98{width:98%!important}.w-p99{width:99%!important}.w-p100{width:100%!important}.w-auto{width:auto!important}.w-10px{width:10px!important}.w-20px{width:20px!important}.w-30px{width:30px!important}.w-35px{width:35px!important}.w-40px{width:40px!important}.w-45px{width:45px!important}.w-50px{width:50px!important}.w-60px{width:60px!important}.w-70px{width:70px!important}.w-80px{width:80px!important}.w-90px{width:90px!important}.w-100px{width:100px!important}.w-110px{width:110px!important}.w-120px{width:120px!important}.w-130px{width:130px!important}.w-140px{width:140px!important}.w-150px{width:150px!important}.w-160px{width:160px!important}.w-180px{width:180px!important}.w-200px{width:200px!important}.w-230px{width:230px!important}.w-250px{width:250px!important}.w-300px{width:300px!important}.w-400px{width:400px!important}.w-500px{width:500px!important}.w-600px{width:600px!important}.w-700px{width:700px!important}.w-800px{width:800px!important}.w-900px{width:900px!important}.mw-200px{max-width:200px!important}.mw-300px{max-width:300px!important}.mw-400px{max-width:400px!important}.mw-500px{max-width:500px!important}.mw-600px{max-width:600px!important}.mw-700px{max-width:700px!important}.mw-800px{max-width:800px!important}.mw-900px{max-width:900px!important}.mw-1400px{max-width:1400px!important}.w-id{width:70px!important}.w-pri{width:40px!important}.w-severity{width:50px!important}.w-hour{width:57px!important}.w-date{width:90px!important}.w-status{width:60px!important}.w-resolution,.w-type,.w-user{width:80px!important}.w-p15-f{width:15%!important;min-width:120px!important}.w-p25-f{width:25%!important;min-width:200px!important}.w-p35-f{width:35%!important;min-width:300px!important}.w-p45-f{width:45%!important;min-width:400px!important}.h-5px{height:5px!important}.h-10px{height:10px!important}.h-20px{height:20px!important}.h-30px{height:30px!important}.h-35px{height:35px!important}.h-40px{height:40px!important}.h-45px{height:45px!important}.h-50px{height:50px!important}.h-60px{height:60px!important}.h-70px{height:70px!important}.h-80px{height:80px!important}.h-100px{height:100px!important}.h-120px{height:120px!important}.h-130px{height:130px!important}.h-140px{height:140px!important}.h-150px{height:150px!important}.h-200px{height:200px!important}.pd-0{padding:0!important}.mg-0{margin:0!important}.mgb-20{margin-bottom:20px!important}.mgb-10{margin-bottom:10px!important}.pdb-20{padding-bottom:20px!important}.pdt-20{padding-top:20px!important}.br-0{border-radius:0!important}.bd-0,.bd-none,.borderless{border:none!important}.bg-none{background:0 0!important}.red{color:#ff5d5d!important}.icon-pro-version{font-size:14px!important}.icon-pro-version:before{position:relative;top:-1px;font-size:14px;color:#ff5d5d;content:"\e92b"}.bg-primary{color:#fff;background:#1183fb -webkit-gradient(linear,right top,left top,from(#0a48d1),to(#1183fb));background:#1183fb -webkit-linear-gradient(right,#0a48d1 0,#1183fb 100%);background:#1183fb -o-linear-gradient(right,#0a48d1 0,#1183fb 100%);background:#1183fb linear-gradient(-90deg,#0a48d1 0,#1183fb 100%);background-color:#00b1fd}.bg-secondary{color:#fff;background:#16a8f8}.hl-tutorial{position:relative!important;z-index:1010!important;-webkit-box-shadow:0 0 0 0 #000!important;box-shadow:0 0 0 0 #000!important;-webkit-transition:-webkit-box-shadow 1s!important;-o-transition:box-shadow 1s!important;transition:-webkit-box-shadow 1s!important;transition:box-shadow 1s!important;transition:box-shadow 1s,-webkit-box-shadow 1s!important}.hl-tutorial.hl-in{-webkit-box-shadow:0 0 20px 0 #ffff8d,0 0 0 2px #ffd180,0 0 0 2000px rgba(0,0,0,.2)!important;box-shadow:0 0 20px 0 #ffff8d,0 0 0 2px #ffd180,0 0 0 2000px rgba(0,0,0,.2)!important}.btn.tooltip-tutorial,.hl-tutorial.hl-in:hover{-webkit-box-shadow:0 0 30px 0 #ffff8d,0 0 0 5px #ffd180,0 0 0 2000px rgba(0,0,0,.3)!important;box-shadow:0 0 30px 0 #ffff8d,0 0 0 5px #ffd180,0 0 0 2000px rgba(0,0,0,.3)!important}.tooltip-max .tooltip-inner{max-width:1000px;padding:8px 10px}.transition-all *{-webkit-transition:all .2s!important;-o-transition:all .2s!important;transition:all .2s!important}.scroll-x{overflow-x:auto!important}.scroll-y{overflow-y:auto!important}.divider+.divider{display:none}.ie *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}@font-face{font-family:ZentaoIcon;font-style:normal;font-weight:400;src:url(../fonts/ZentaoIcon.eot?v=1.1.0);src:url(../fonts/ZentaoIcon.eot?#iefix&v=1.1.0) format('embedded-opentype'),url(../fonts/ZentaoIcon.woff?v=1.1.0) format('woff'),url(../fonts/ZentaoIcon.ttf?v=1.1.0) format('truetype'),url(../fonts/ZentaoIcon.svg#regular?v=1.1.0) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:18px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:36px}.icon-3x{font-size:54px}.icon-4x{font-size:72px}.icon-5x{font-size:90px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon.icon-flip-horizontal,.icon.icon-flip-vertical,.icon.icon-rotate-180,.icon.icon-rotate-270,.icon.icon-rotate-90{display:inline-block}.icon-more-circle:before{content:"\e988"}.icon-fields:before{content:"\e989"}.icon-trigger:before{content:"\e98a"}.icon-layout:before{content:"\e98b"}.icon-audit:before{content:"\e98c"}.icon-qc:before{content:"\e986"}.icon-q:before{content:"\e985"}.icon-c:before{content:"\e987"}.icon-menu-report:before{content:"\e974"}.icon-menu-users:before{content:"\e975"}.icon-menu-backend:before{content:"\e976"}.icon-menu-recent:before{content:"\e977"}.icon-menu-doc:before{content:"\e978"}.icon-menu-project:before{content:"\e979"}.icon-menu-my:before{content:"\e97a"}.icon-swap:before{content:"\e97b"}.icon-clock:before{content:"\e97c"}.icon-cost:before{content:"\e97d"}.icon-group:before{content:"\e97e"}.icon-private:before{content:"\e97f"}.icon-menu-collapse:before{content:"\e980"}.icon-menu-expand:before{content:"\e981"}.icon-kanban:before{content:"\e983"}.icon-fullscreen-exit:before{content:"\e972"}.icon-globe:before{content:"\f0ac"}.icon-file:before{content:"\f016"}.icon-file-empty:before{content:"\f016"}.icon-file-text:before{content:"\f0f6"}.icon-file-alt:before{content:"\f15b"}.icon-file-text-alt:before{content:"\f15c"}.icon-file-pdf:before{content:"\f1c1"}.icon-file-word:before{content:"\f1c2"}.icon-file-excel:before{content:"\f1c3"}.icon-file-powerpoint:before{content:"\f1c4"}.icon-file-image:before{content:"\f1c5"}.icon-file-archive:before{content:"\f1c6"}.icon-file-audio:before{content:"\f1c7"}.icon-file-video:before{content:"\f1c8"}.icon-file-code:before{content:"\f1c9"}.icon-pencil-alt:before{content:"\e984"}.icon-share:before{content:"\f064"}.icon-severity:before{content:"\e973"}.icon-book:before{content:"\f02d"}.icon-treemap-alt:before{content:"\e971"}.icon-collapse-alt:before{content:"\e6f2"}.icon-expand-alt:before{content:"\e6f1"}.icon-more:before{content:"\e744"}.icon-angle-double-right:before{content:"\f101"}.icon-certificate:before{content:"\f0a3"}.icon-bell:before{content:"\e7f5"}.icon-format-bold:before{content:"\e953"}.icon-format-header-pound:before{content:"\e954"}.icon-format-italic:before{content:"\e955"}.icon-format-list-bulleted:before{content:"\e956"}.icon-format-list-numbers:before{content:"\e969"}.icon-format-quote-close:before{content:"\e96a"}.icon-fullscreen:before{content:"\e96b"}.icon-image:before{content:"\e96c"}.icon-table-large:before{content:"\e96d"}.icon-columns:before{content:"\f0db"}.icon-cancel:before{content:"\e951"}.icon-ban-circle:before{content:"\e951"}.icon-persons:before{content:"\e94d"}.icon-eye:before{content:"\e94e"}.icon-unlock:before{content:"\e94f"}.icon-eye-off:before{content:"\e96e"}.icon-lock:before{content:"\e950"}.icon-move:before{content:"\e94c"}.icon-help:before{content:"\e968"}.icon-folder-account:before{content:"\e942"}.icon-folder-move:before{content:"\e960"}.icon-folder-plus:before{content:"\e961"}.icon-folder-upload:before{content:"\e962"}.icon-folder-star:before{content:"\e963"}.icon-folder-edit:before{content:"\e964"}.icon-folder-download:before{content:"\e965"}.icon-folder-outline:before{content:"\e966"}.icon-restart:before{content:"\e95e"}.icon-history:before{content:"\e95f"}.icon-home:before{content:"\e958"}.icon-pencil:before{content:"\e254"}.icon-angle-down:before{content:"\e313"}.icon-angle-left:before{content:"\e314"}.icon-angle-right:before{content:"\e315"}.icon-angle-top:before{content:"\e316"}.icon-first-page:before{content:"\e5dc"}.icon-last-page:before{content:"\e5dd"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-zentao-alt:before{content:"\e900"}.icon-zentao:before{content:"\e901"}.icon-severity-solid:before{content:"\e902"}.icon-bar-chart:before{content:"\e903"}.icon-import:before{content:"\e904"}.icon-export:before{content:"\e905"}.icon-printer:before{content:"\e906"}.icon-hand-right:before{content:"\e907"}.icon-hand-right-alt:before{content:"\e96f"}.icon-checked:before{content:"\e908"}.icon-off:before{content:"\e909"}.icon-start:before{content:"\e90a"}.icon-play:before{content:"\e90a"}.icon-time:before{content:"\e90b"}.icon-edit:before{content:"\e90c"}.icon-trash:before{content:"\e90d"}.icon-link:before{content:"\e90e"}.icon-unlink:before{content:"\e90f"}.icon-bullhorn:before{content:"\e910"}.icon-bug:before{content:"\e911"}.icon-list-alt:before{content:"\e912"}.icon-fork:before{content:"\e913"}.icon-change:before{content:"\e970"}.icon-glasses:before{content:"\e914"}.icon-sitemap:before{content:"\e915"}.icon-plus-sign:before{content:"\e916"}.icon-pluses:before{content:"\e917"}.icon-flag-alt:before{content:"\e918"}.icon-magic:before{content:"\e919"}.icon-treemap:before{content:"\e91a"}.icon-confirm:before{content:"\e91b"}.icon-lightbulb:before{content:"\e91c"}.icon-delay:before{content:"\e91d"}.icon-calendar:before{content:"\e91d"}.icon-pause:before{content:"\e91e"}.icon-ban:before{content:"\e91f"}.icon-plus-bold:before{content:"\e920"}.icon-copy:before{content:"\e921"}.icon-refresh:before{content:"\e922"}.icon-arrow-up:before{content:"\e923"}.icon-arrow-down:before{content:"\e924"}.icon-arrow-left:before{content:"\e952"}.icon-arrow-right:before{content:"\e93e"}.icon-plus:before{content:"\e925"}.icon-minus:before{content:"\e926"}.icon-exchange:before{content:"\e927"}.icon-search:before{content:"\e928"}.icon-envelope-o:before{content:"\e92a"}.icon-check:before{content:"\e5ca"}.icon-circle:before{content:"\e836"}.icon-up-circle:before{content:"\e92b"}.icon-right-circle:before{content:"\e92c"}.icon-down-circle:before{content:"\e92d"}.icon-left-circle:before{content:"\e92e"}.icon-check-circle:before{content:"\e92f"}.icon-exclamation-sign:before{content:"\e930"}.icon-unfold-all:before{content:"\e931"}.icon-fold-all:before{content:"\e932"}.icon-plus-sm:before{content:"\e933"}.icon-chevron-left:before{content:"\e934"}.icon-chevron-right:before{content:"\e935"}.icon-close:before{content:"\e936"}.icon-flag:before{content:"\e937"}.icon-check-sign:before{content:"\e938"}.icon-minus-sign:before{content:"\e939"}.icon-bars-sign:before{content:"\e93a"}.icon-cog:before{content:"\e93b"}.icon-color:before{content:"\e93c"}.icon-paper-clip:before{content:"\e93d"}.icon-back:before{content:"\e93f"}.icon-chat-line:before{content:"\e940"}.icon-person:before{content:"\e941"}.icon-stack:before{content:"\e943"}.icon-cube:before{content:"\e967"}.icon-folder:before{content:"\e944"}.icon-folder-o:before{content:"\e945"}.icon-folder-open-o:before{content:"\e946"}.icon-folder-open:before{content:"\e947"}.icon-bars:before{content:"\e948"}.icon-cards-view:before{content:"\e949"}.icon-star-empty:before{content:"\e94a"}.icon-star:before{content:"\e94b"}.icon-ellipsis-v:before{content:"\e5d4"}.icon-spinner-indicator:before{content:"\e982"}.icon-text:before{content:"\e929"}.icon-code:before{content:"\e957"}.icon-chevron-double-up:before{content:"\e959"}.icon-chevron-double-down:before{content:"\e95a"}.icon-chart-pie:before{content:"\e95b"}.icon-chart-line:before{content:"\e95c"}.icon-chart-bar:before{content:"\e95d"}.icon-sm:before{font-size:14px;vertical-align:10%}.icon-qc{position:relative}.icon-qc:before{width:1em;color:#7cb938;content:"\e985"}.icon-qc:after{position:absolute;top:0;left:0;width:1em;height:1em;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#36a742;text-transform:none;content:"\e987";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:18px;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,border,outline,opacity,-webkit-box-shadow;-o-transition-property:background,border,box-shadow,outline,opacity;transition-property:background,border,outline,opacity,-webkit-box-shadow;transition-property:background,border,box-shadow,outline,opacity;transition-property:background,border,box-shadow,outline,opacity,-webkit-box-shadow}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#3c4353;text-decoration:none}.btn:active{text-decoration:none;background-image:none;outline:0;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.1)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:grayscale(1);-webkit-box-shadow:none;box-shadow:none;opacity:.5;-webkit-filter:grayscale(1)}.btn{color:#3c4353;background-color:#fff;border-color:#d6dae3}.btn.active,.btn.hover,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#3c4353;background-color:rgba(255,255,255,.8);border-color:#b8bfce}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#f2f2f2;background-image:none;border-color:#b8bfce}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{color:rgba(60,67,83,.3);background-color:#fff;border-color:#d6dae3}.btn-gray{color:#82899f;background-color:#f1f1f1;border-color:#f1f1f1}.btn-gray.active,.btn-gray.hover,.btn-gray:active,.btn-gray:focus,.btn-gray:hover,.open .dropdown-toggle.btn-gray{color:#82899f;background-color:rgba(241,241,241,.8);border-color:#d8d8d8}.btn-gray.active,.btn-gray:active,.open .dropdown-toggle.btn-gray{background-color:#e4e4e4;background-image:none;border-color:#d8d8d8}.btn-gray.disabled,.btn-gray.disabled.active,.btn-gray.disabled:active,.btn-gray.disabled:focus,.btn-gray.disabled:hover,.btn-gray[disabled],.btn-gray[disabled].active,.btn-gray[disabled]:active,.btn-gray[disabled]:focus,.btn-gray[disabled]:hover,fieldset[disabled] .btn-gray,fieldset[disabled] .btn-gray.active,fieldset[disabled] .btn-gray:active,fieldset[disabled] .btn-gray:focus,fieldset[disabled] .btn-gray:hover{color:rgba(130,137,159,.3);background-color:#f1f1f1;border-color:#f1f1f1}.btn-primary{color:#fff;background-color:#0c64eb;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(12,100,235,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0b5ad3;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#0c64eb;border-color:transparent}.btn-secondary{color:#fff;background-color:#16a8f8;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(22,168,248,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#079ced;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#16a8f8;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9800;border-color:transparent}.btn-warning.active,.btn-warning.hover,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:rgba(255,152,0,.8);border-color:rgba(0,0,0,0)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e68900;background-image:none;border-color:rgba(0,0,0,0)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{color:rgba(255,255,255,.3);background-color:#ff9800;border-color:transparent}.btn-danger{color:#fff;background-color:#ff5d5d;border-color:transparent}.btn-danger.active,.btn-danger.hover,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:rgba(255,93,93,.8);border-color:rgba(0,0,0,0)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#ff4343;background-image:none;border-color:rgba(0,0,0,0)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{color:rgba(255,255,255,.3);background-color:#ff5d5d;border-color:transparent}.btn-success{color:#fff;background-color:#00da88;border-color:transparent}.btn-success.active,.btn-success.hover,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:rgba(0,218,136,.8);border-color:rgba(0,0,0,0)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#00c178;background-image:none;border-color:rgba(0,0,0,0)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{color:rgba(255,255,255,.3);background-color:#00da88;border-color:transparent}.btn-info{color:#0c64eb;background-color:#e9f2fb;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#0c64eb;background-color:rgba(233,242,251,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#d3e5f7;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(12,100,235,.3);background-color:#e9f2fb;border-color:transparent}.btn-link{padding-right:6px;padding-left:6px;font-weight:400;color:#3c495c;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#222;background:#f1f1f1;background:rgba(0,0,0,.075)}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#cbd0db;text-decoration:none}.btn-lg{padding:11px 16px;font-size:14px;line-height:18px;border-radius:4px}.btn-mini,.btn-sm{padding:3px 8px;font-size:12px;line-height:18px;border-radius:4px}.btn-mini,.btn-xs{padding:0 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-wide{min-width:120px}.btn-limit{max-width:180px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-limit>.caret{position:absolute;top:14px;right:8px}.btn-circle{border-radius:17px}.btn>.label-icon{top:3px;padding:3px;margin:-2px;background-color:rgba(0,0,0,.2);border-radius:12px}.btn>.label-icon>.icon{font-size:16px;line-height:18px}.btn>.icon+.text{margin-left:5px}.btn.btn-sm.btn-circle{border-radius:12px}.btn.btn-sm>.label-icon{top:2px;width:20px;height:20px;padding:1px;line-height:20px}.btn.btn-sm>.label-icon>.icon{position:relative;top:-1px;display:inline-block;font-size:14px;line-height:18px}.btn-icon-left{position:relative;padding-left:35px;overflow:hidden;text-align:right}.btn-icon-left>.label-icon{position:absolute;left:5px;margin:0}.btn-icon-left>.icon{position:absolute;top:0;bottom:0;left:0;display:block;width:30px;line-height:30px;color:#16a8f8;text-align:center;background:#e9f2fb}.btn-icon-left.btn-sm{padding-left:28px}.btn-icon-left.btn-sm>.label-icon{left:2px}.btn-icon-left.btn-sm>.icon{width:24px;line-height:24px}.btn-icon-right{position:relative;padding-right:35px;text-align:left}.btn-icon-right>.label-icon{position:absolute;right:5px;margin:0}.btn-icon-right.btn-sm{padding-right:28px}.btn-icon-right.btn-sm>.label-icon{right:2px}.btn-icon{min-width:32px;padding-right:0;padding-left:0}.btn-icon.btn-sm{width:24px;min-width:24px;height:24px}.btn-group{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group>.btn-group{float:left}.btn-group>.btn{border-radius:0}.btn-group>.btn:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.btn-group>.btn:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.dropdown{float:left;margin-right:10px}.btn-toolbar>.btn-group:last-child,.btn-toolbar>.btn:last-child,.btn-toolbar>.dropdown:last-child{margin-right:0}.btn-toolbar>.divider{float:left;height:20px;margin:7px 5px 4px 10px;border-left:1px solid rgba(0,0,0,.1)}.btn-toolbar .space{float:left;min-height:1px;margin:0 10px 0 10px}.btn-toolbar .input-control{float:left;width:120px}.btn-toolbar .page-title{float:left;line-height:34px}.btn-toolbar .page-title .text{font-size:14px;font-weight:700}.btn-toolbar .page-title .label{top:-2px;margin-right:10px}.btn-toolbar .divider+.page-title{margin-left:15px}.btn-active-line{position:relative;font-weight:700;color:#0c64eb}.btn-active-line:after{position:absolute;right:5px;bottom:1px;left:5px;display:block;content:' ';border-bottom:2px solid #0c64eb}.btn-active-line:hover{color:#0c64eb}.btn-active-text .text{position:relative;top:-1px;display:inline-block;font-weight:700;color:#0c64eb}.btn-active-text .text:after{position:absolute;bottom:-5px;display:block;width:100%;content:' ';border-bottom:2px solid #0c64eb}.angle-btn{position:relative;padding:1px;background:#fff;border:1px solid #cbd0db;border-right:none}.btn-toolbar>.angle-btn{margin-right:8px}.angle-btn:after,.angle-btn:before{position:absolute;top:-1px;right:-8px;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #cbd0db;border-style:solid;border-width:17px 0 17px 8px}.angle-btn:after{right:-7px;border-color:transparent transparent transparent #fff;border-width:17px 0 17px 8px}.angle-btn .btn{padding:6px;font-weight:700;background:#fff;border:none;border-radius:4px!important}.angle-btn .btn.btn-limit{padding-right:16px}.angle-btn .btn.btn-limit>.caret{right:4px}.angle-btn+.angle-btn{border-left:none}.angle-btn+.angle-btn>.btn-group:first-child{padding-left:8px}.angle-btn+.angle-btn>.btn-group:first-child:after,.angle-btn+.angle-btn>.btn-group:first-child:before{position:absolute;top:-2px;left:0;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #cbd0db;border-style:solid;border-width:17px 0 17px 8px}.angle-btn+.angle-btn>.btn-group:first-child:after{left:-1px;border-color:transparent transparent transparent #fff;border-width:17px 0 17px 8px}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#0c64eb}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#0c64eb}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #0c64eb}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #0c64eb}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#cbd0db}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#3c4353}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #cbd0db}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #cbd0db!important}.nav>li>.btn.btn-primary{color:#fff}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(12,100,235,.8)}.label{position:relative;display:inline-block;padding:3px 5px;font-size:12px;font-weight:400;vertical-align:middle;border-radius:2px}.label+.label{margin-left:4px}.label-pale{background:#bed8f3!important}.label-badge{border-radius:9px}.label-light{color:#3c4353;background-color:#ddd}.label-primary{background:#0c64eb!important}.label-gray{color:#878da0;background:#e8ebef}.label-outline.label-danger{color:#ff5d5d;background:#ffebee;border-color:rgba(255,93,93,.25)}.label-outline.label-light{color:#838a9d;background:#f2f5fb;border-color:#e1e5ee}.label-primary.label-outline{background:#e9f2fb!important;border-color:rgba(12,100,235,.25)}.label-outline.label-success{background:#e8f5e9;border-color:rgba(0,218,136,.25)}.label-outline.label-info{border-color:rgba(33,150,243,.25)}.label-outline.label-warning{border-color:rgba(255,152,0,.25)}.label-dot{position:relative;top:-1px;padding:0;border-radius:50%}.label-dot+.status-text{display:inline-block;margin-left:5px}.label-icon{min-width:18px;padding:0;line-height:18px;border-radius:10px}.label-id{display:inline-block;min-width:30px;padding:0 5px;font-size:12px;line-height:16px;color:#838a9d;text-align:center;vertical-align:middle;background-color:transparent;border:1px solid #838a9d;border-radius:2px}.pri-1,.todo-pri-1{color:#ff5d5d}[class*=" status-"],[class^=status-]{color:#3c4353}.status-changed,.status-delayed,.status-doing,.status-fail,.status-investigate{color:#ff5d5d}.status-changed>.label-dot,.status-delayed>.label-dot,.status-doing>.label-dot,.status-fail>.label-dot,.status-investigate>.label-dot{background-color:#ff5d5d}.status-wait{color:#838a9d}.status-wait>.label-dot{background-color:#7ec5ff}.status-unclosed{color:#838a9d}.status-unclosed>.label-dot{background-color:#0c64eb}.status-done,.status-normal,.status-pass,.status-resolved{color:#43a047}.status-done>.label-dot,.status-normal>.label-dot,.status-pass>.label-dot,.status-resolved>.label-dot{background-color:#00da88}.status-postpone{color:#838a9d}.status-postpone>.label-dot{background-color:#ff5d5d}.status-blocked{position:relative;left:-5px;display:inline-block;padding:0 5px;line-height:20px;color:#3c4353;background:#fff3e0;border-radius:10px}.status-blocked>.label-dot{background-color:#ff9800}.status-pause,.status-suspended{color:#ff9800}.status-pause>.label-dot,.status-suspended>.label-dot{background-color:#ff9800}.status-active.status-bug,.status-draft{color:#8666b8}.status-active.status-bug>.label-dot,.status-draft>.label-dot{background-color:#8666b8}.status-closed,.status-terminate{color:#838a9d}.status-closed>.label-dot,.status-terminate>.label-dot{background-color:#838a9d}.status-cancel{color:#838a9d}.status-cancel>.label-dot{background-color:#cbd0db}.label-pri{display:inline-block;min-width:20px;max-width:67px;height:20px;padding:0 4px;overflow:hidden;line-height:17px;color:#838a9d;text-align:center;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;border:2px solid #838a9d;border-radius:10px}.label-selector>.label-pri,[class*=label-pri-]{color:#158af1;border-color:#2098ee}.label-pri-1,.label-selector>.label-pri[data-value="1"]{color:#d50000;border-color:#d50000}.label-pri-2,.label-selector>.label-pri[data-value="2"]{color:#ff9800;border-color:#ff9800}.label-pri-3,.label-selector>.label-pri[data-value="3"]{color:#2098ee;border-color:#2098ee}.label-pri-4,.label-selector>.label-pri[data-value="4"]{color:#009688;border-color:#009688}.label-pri-5,.label-selector>.label-pri[data-value="5"]{color:#838a9d;border-color:#838a9d}.label-pri-0,.label-selector>.label-pri.active[data-value="0"]{color:#d5d9df;border-color:#d5d9df}.label-severity{position:relative;display:inline-block;width:24px;height:20px;font-weight:bolder;text-align:center;vertical-align:middle}.label-severity:before{position:absolute;top:-3px;left:0;z-index:0;display:block;font-family:ZentaoIcon;font-size:18px;font-size:24px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:inherit;text-transform:none;content:"\e973";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.label-severity:after{position:absolute;top:7px;left:0;z-index:1;display:block;width:24px;font-size:12px;line-height:12px;text-align:center;content:attr(data-severity)}.label-severity[data-severity],.label-severity[data-value]{color:#ccc}.label-severity[data-severity="0"],.label-severity[data-value="0"]{color:#ccc}.label-severity[data-severity="0"]:after,.label-severity[data-value="0"]:after{display:none}.label-severity[data-severity="1"],.label-severity[data-value="1"]{color:#c62828}.label-severity[data-severity="2"],.label-severity[data-value="2"]{color:#ff8f00}.label-severity[data-severity="3"],.label-severity[data-value="3"]{color:#fdd835}.label-severity[data-severity="4"],.label-severity[data-value="4"]{color:#cddc39}.label-severity[data-severity="5"],.label-severity[data-value="5"]{color:#8bc34a}.label-severity-custom[data-severity]{color:#d5d9df}.label-severity-custom[data-severity="1"]{color:#c62828}.label-severity-custom[data-severity="2"]{color:#ff8f00}.label-severity-custom[data-severity="3"]{color:#fdd835}.label-severity-custom[data-severity="4"]{color:#cddc39}.label-severity-custom[data-severity="5"]{color:#8bc34a}.label-selector>.label{display:inline-block;min-width:24px;height:24px;padding:0 5px;font-size:14px;line-height:20px;text-align:center;cursor:pointer;background:0 0;border:2px solid #d5d9df;border-radius:15px}.label-selector>.label+.label{margin-left:10px}.label-selector>.label.empty{border-color:transparent}.label-selector>.label.label-severity{font-size:12px;line-height:28px;border-color:transparent}.label-selector>.label.label-severity:before{top:-2px;left:-2px}.label-selector>.label.label-severity:after{display:none}.label-selector>.label.label-severity.active{background:0 0;filter:none;-webkit-filter:none}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{margin-top:2px}.ie .checkbox input[type=checkbox],.ie .checkbox-inline input[type=checkbox],.ie .radio input[type=radio],.ie .radio-inline input[type=radio]{margin-top:4px}.is-firefox .checkbox input[type=checkbox],.is-firefox .checkbox-inline input[type=checkbox],.is-firefox .radio input[type=radio],.is-firefox .radio-inline input[type=radio]{margin-top:3px}.checkbox-primary,.radio-primary{position:relative;display:block;vertical-align:middle}.checkbox-primary.inline-block,.radio-primary.inline-block{display:inline-block}.checkbox-primary.inline-block+.inline-block,.radio-primary.inline-block+.inline-block{margin-left:15px}.checkbox-primary>input,.radio-primary>input{position:absolute;top:0;left:0;z-index:3;width:100%;height:100%;margin:0;opacity:0}.checkbox-primary>label,.radio-primary>label{display:block;height:20px;padding-left:30px;margin:0;font-weight:400;line-height:20px;cursor:pointer}.checkbox-primary>label:after,.checkbox-primary>label:before,.radio-primary>label:after,.radio-primary>label:before{position:absolute;top:1px;right:0;left:0;display:block;width:18px;height:18px;line-height:18px;text-align:center;content:' ';border-radius:3px}.checkbox-primary>label:after,.radio-primary>label:after{z-index:1;border:2px solid #eee;border-color:rgba(0,0,0,.15);-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:border,background-color;-o-transition-property:border,background-color;transition-property:border,background-color}.checkbox-primary>label:before,.radio-primary>label:before{top:3px;z-index:2;font-family:ZentaoIcon;font-size:18px;font-size:14px;font-style:normal;font-weight:400;font-weight:900;font-variant:normal;line-height:1;text-transform:none;content:"\e5ca";opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:opacity,-webkit-transform;-o-transition-property:opacity,-o-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform,-o-transform;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#00da88;border-color:#00da88;border-width:4px}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#00da88;-webkit-box-shadow:0 0 0 3px rgba(0,218,136,.2);box-shadow:0 0 0 3px rgba(0,218,136,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#00da88}.checkbox-primary.checkbox-right>label,.radio-primary.checkbox-right>label{padding:0 30px 0 0}.checkbox-primary.checkbox-right>label:after,.checkbox-primary.checkbox-right>label:before,.radio-primary.checkbox-right>label:after,.radio-primary.checkbox-right>label:before{right:0;left:auto}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5!important;border-color:#bbb!important}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb!important}.radio-primary>label:after{border-radius:50%}.radio-primary>label:before{top:7px;left:6px;width:6px;height:6px;content:' ';border:none;border-radius:50%}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:transparent;border-color:#00da88;border-width:2px}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#00da88}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:transparent;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.panel{position:relative;margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.panel-body{padding:20px}.panel-body.has-table{padding:10px}.panel-body.has-table .table{margin-bottom:0;table-layout:fixed}.panel-heading{padding:12px 48px 12px 20px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading+.panel-body{padding-top:0}.panel-title{font-size:14px;font-weight:700;line-height:20px}.panel-title .label{top:-1px}.panel-actions{position:absolute;top:0;right:0;padding:7px 8px}.panel:hover .panel-actions{z-index:10}.panel-actions>li>a{display:inline-block;min-width:30px;padding:0 5px;line-height:30px;color:#a6aab8}.panel-actions>li>a:hover{color:#3c495c;text-decoration:initial;background-color:#f1f1f1}.panel-actions .btn-icon{color:#a6aab8}.panel-actions .btn.text-primary{color:#0c64eb}.panel .empty-tip{padding:30px 10px 50px;font-size:14px;color:#838a9d;text-align:center}.progress-text-left{position:relative;margin:7px 0;margin-left:35px;overflow:visible}.progress-text-left .progress-text{position:absolute;top:-7px;left:-35px;display:block;width:35px;height:20px;padding-right:5px;line-height:20px;color:#838a9d;text-align:right}.chart-color{width:20px}.chart-color-dot{display:inline-block;width:10px;height:10px;border-radius:50%}.chart-row{margin-top:10px}.chart-row+.chart-row{padding-top:10px;border-top:1px solid #eee}.chart-wrapper{padding:10px 5px;background:#eee}.chart-wrapper>h4{margin:5px 0 10px}.table-wrapper{max-height:250px;overflow:auto}.table-wrapper .table{margin:0}.progress-pie{position:relative}.progress-pie .progress-info{position:absolute;top:0;left:0;width:100%;height:100%;padding-top:25px;text-align:center}.progress-pie .progress-info>small{display:block;line-height:14px;color:#a6aab8}.progress-pie .progress-info>strong{display:block;font-size:36px;line-height:40px}.progress-pie .progress-info>strong>small{font-size:20px}.progress-pie-120 .progress-info{padding-top:30px}.progress-pie-120 .progress-info>small{line-height:18px}.progress-pie-50 .progress-info{padding-top:4px}.progress-pie-50 .progress-info>strong{font-size:20px;font-weight:400}.progress-pie-50 .progress-info>strong>small{font-size:14px}.progress-pie[data-value="100"] .progress-info>strong{-webkit-transform:scale(.7);-ms-transform:scale(.7);-o-transform:scale(.7);transform:scale(.7)}.status-bars{display:table;width:100%;height:140px;padding:5px;padding-top:50px;margin:0;overflow:hidden}.status-bars>li{position:relative;display:table-cell;text-align:center;vertical-align:bottom}.status-bars .bar{position:absolute;bottom:20px;left:50%;display:block;width:10px;margin-left:-5px;background:#0c64eb;border-radius:5px 5px 0 0}.status-bars .bar:after{position:absolute;right:-50px;bottom:0;left:-50px;display:block;height:1px;content:' ';background:#eee}.status-bars .title{font-size:12px;font-weight:400;color:#a6a8b6}.status-bars .value{position:relative;top:-20px;left:-20px;display:inline-block;width:50px;font-size:16px;font-weight:700;text-align:center}.status-bars-h{display:block;padding-right:50px;padding-left:60px;list-style:none}.status-bars-h>li{position:relative;height:40px;border-left:1px solid #eee}.status-bars-h .bar{position:relative;top:15px;display:block;height:10px;line-height:20px;background:#0c64eb;border-radius:0 5px 5px 0}.status-bars-h .title{position:absolute;top:-5px;left:-60px;width:60px;padding-right:10px;font-size:12px;color:#a6a8b6;text-align:right}.status-bars-h .value{position:absolute;top:-5px;right:-50px;display:block;width:40px;font-size:14px;font-weight:700;text-align:left;white-space:nowrap}.messager{border-radius:4px;-webkit-box-shadow:0 4px 16px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);box-shadow:0 4px 16px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1)}.messager-icon{vertical-align:middle}.messager-icon>.icon{font-size:24px}.messager-content{padding:18px 20px;font-size:18px;line-height:30px}.messager-content>.icon{font-size:28px;line-height:30px}.messager-actions{vertical-align:middle}.messagger-zt{color:#3c4353;background-color:#fff}.messagger-zt .messager-icon>.icon{color:#0c64eb}.messagger-zt .messager-actions>.action{color:#838a9d}.messagger-zt.messager-success .messager-icon>.icon{color:#00da88}.messagger-zt.messager-danger .messager-icon>.icon{color:#ff5d5d}.messagger-zt.messager-warning .messager-icon>.icon{color:#ff9800}.messagger-zt.messager-info .messager-icon>.icon{color:#2196f3}.tree{padding-left:0;overflow:hidden}.tree ul{position:relative;display:none;padding-left:0}.tree li{position:relative;padding:2px 0 2px 15px;list-style:none}.tree li.heading{padding-left:5px;color:#3c495c}.tree li>a{display:block;max-width:90%;padding:2px 6px;color:#3c495c;word-break:break-all}.tree li>a:hover{color:#3c4353}.tree li>a.tree-toggle:hover{background:0 0}.tree li.active>a{position:relative;font-weight:700;color:#0c64eb}.tree li>.list-toggle{position:absolute;top:1px;left:1px;z-index:10;width:20px;font-size:14px;line-height:22px;color:#cbd0db;text-align:center;cursor:pointer;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.tree li>.list-toggle:before{content:"\f0da"}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#0c64eb}.tree li.has-active-item>.list-toggle{color:#3c4353}.tree li.has-list.open>ul{display:block}.tree li.has-list.open>.list-toggle{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.tree li.has-list.open:before{position:absolute;top:16px;bottom:-5px;left:10px;display:block;content:' ';border-left:1px solid #d8d8d8}.tree-actions{display:inline-block;margin-left:5px;vertical-align:middle}.tree-actions a{display:inline-block;margin-left:5px;font-size:13px;opacity:.6}.tree-actions a:hover{opacity:1}.tree li>.module-name{color:#3c495c;vertical-align:middle}.tree li>.module-name:hover{background-color:#f0f2f5}.tree li>.module-name:hover>a{color:#3c4353}.treemap-node-fold-icon:before{position:relative;left:-4px;min-width:18px}.dropdown-menu{padding:5px 0;border-color:rgba(0,0,0,.1)}.dropdown-menu>li{padding:0 10px}.dropdown-menu>li>a{padding:2px 10px;margin:5px 0;border-radius:3px}.dropdown-menu>li>a>.icon{position:relative;left:-5px;opacity:.5}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{position:relative;color:#fff;background-color:#16a8f8}.dropdown-menu>li.selected>a:after{position:absolute;top:2px;right:4px;display:block;font-family:ZentaoIcon;font-size:18px;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:20px;text-transform:none;content:"\e5ca";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dropdown-menu>li.divider{margin:10px}.dropdown-submenu>a:after{margin-right:-5px}.dropdown-submenu>.dropdown-menu.pull-left{margin-left:-1px}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#3c4353;background-color:#e9f2fb}.dropdown-submenu:hover>a:after{border-left-color:#0c64eb}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager .btn{padding:3px 10px}.pager .btn .caret{opacity:.7}.pager>li>.pager-label{padding:2px;line-height:20px}.pager>li>.pager-item{min-width:20px;padding:1px;margin:2px 0;font-size:16px;line-height:20px;text-align:center;background:0 0;border-color:transparent}.pager>li>.pager-item:hover{background-color:rgba(0,0,0,.1)}.pager>li>.pager-item>.icon{position:relative;top:-1px}.pager>li>.btn:hover,.pager>li>a:hover{background:rgba(0,0,0,.1)}.pager>li.disabled>a.pager-item{background:0 0;border-color:transparent;opacity:.5}.pager>li.active>a{background-color:#16a8f8}.pager>li .btn-group .btn{padding:1px;margin:1px 0;border-radius:4px}.pager .dropdown-menu{width:200px}.pager .dropdown-menu>li{float:left;width:33.333333%}.modal-dialog{width:900px;max-width:1360px;border:none;border-radius:0;-webkit-box-shadow:0 0 20px 0 rgba(0,0,0,.25);box-shadow:0 0 20px 0 rgba(0,0,0,.25)}.modal-dialog.modal-md{width:700px}.modal-dialog.modal-xs{width:400px}.modal-dialog.modal-sm{width:500px}.modal-dialog.modal-lg{width:1200px}.modal-dialog.modal-fullscreen{position:fixed;max-width:initial}.modal-header{padding:20px 0;margin:0 20px}.modal-header>.close{color:#838a9d;text-shadow:0 1px 0 rgba(255,255,255,.85);opacity:1}.modal-header>.close:hover{color:#222}.modal-footer{padding:20px 0;margin:0 20px}.modal-title{font-size:16px;font-weight:400;line-height:20px}.modal-actions{position:absolute;top:16px;right:16px}.modal-actions .divider{position:relative;top:5px;display:inline-block;width:0;height:20px;margin:0 10px;border-left:#eee 1px solid}.modal-actions>.dropdown{display:inline-block}.modal-body{padding:20px}.modal-iframe .modal-body>iframe{border-radius:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-3%);-ms-transform:translate(0,-3%);-o-transform:translate(0,-3%);transform:translate(0,-3%)}.modal.fade.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-simple .modal-footer{padding-top:0;border-top:none}.modal-iframe .modal-header{position:relative;z-index:10;min-height:0;padding:0;border:none}.modal-iframe .modal-title{display:none}.modal-iframe .modal-header .close{position:absolute;top:12px;right:10px;font-size:32px;font-weight:200}.modal-iframe .modal-dialog{overflow:hidden}.modal-inverse .modal-header>.close{color:rgba(255,255,255,.7);text-shadow:none}.modal-inverse .modal-header>.close:hover{color:#fff}.modal-scroll-inside>.modal-dialog{max-height:100%}.hide-modal-close .modal-iframe .modal-header .close{display:none}.tile{text-align:center}.tile-title{line-height:20px;color:#3c495c}.tile-amount{font-size:32px;font-weight:700;line-height:56px}.timeline>li{position:relative;list-style:none}.timeline>li:before,.timeline>li>a:after,.timeline>li>div:after{position:absolute;left:-20px;display:block;width:15px;height:15px;content:' ';border-radius:50%}.timeline>li:before{top:12px;left:-16px;z-index:3;width:7px;height:7px;background-color:#cbd0db;border:none;border:1px solid #cbd0db}.timeline>li>a:after,.timeline>li>div:after{top:11px;left:-17px;z-index:3;width:9px;height:9px;background-color:#0c64eb;border-radius:50%;opacity:0}.timeline>li+li:after{position:absolute;top:-12px;bottom:20px;left:-13px;z-index:1;display:block;content:' ';border-left:1px solid #eee}.timeline>li.active>a:after,.timeline>li.active>div:after{opacity:1}.timeline>li.active:before{top:8px;left:-20px;width:15px;height:15px;background-color:rgba(12,100,235,.2);border:none}.timeline>li>a,.timeline>li>div{display:block;padding:5px;line-height:20px}.timeline>li.active>a{color:#3c4353}.timeline-tag{position:absolute;top:5px;left:-115px;font-size:12px}.timeline-tag-left{padding-left:115px}.timeline-sm{font-size:12px}.timeline-sm>li:before,.timeline-sm>li>a:after,.timeline-sm>li>div:after{top:10px;left:-20px;width:11px;height:11px}.timeline-sm>li.active:before,.timeline-sm>li:before{top:10px;left:-18px;width:11px;height:11px;background:0 0;border:1px solid #eee}.timeline-sm>li>a,.timeline-sm>li>div{line-height:20px}.timeline-sm>li>a:after,.timeline-sm>li>div:after{top:13px;left:-15px;width:5px;height:5px}.form-control{-webkit-box-shadow:none;box-shadow:none}.form-horizontal .form-group>label{padding-right:0}.form-actions{margin-top:20px;margin-bottom:0}.form-actions .btn{margin-right:10px}form label{font-weight:400;color:#3c495c}.form-group .btn+.btn{margin-left:5px}.table-form{margin-bottom:0;table-layout:fixed}.table-form>thead>tr>th.required:after{position:relative;top:3px;right:auto;left:4px;display:inline-block;vertical-align:middle}.table-form>tbody>tr>td,.table-form>tbody>tr>th,.table-form>tfoot>tr>td,.table-form>thead>tr>th{padding:7px;vertical-align:middle;border-bottom:none}.table-form>tfoot>tr>td{padding:20px 7px 10px}.table-form>tbody>tr>th{width:100px;font-weight:700;text-align:right}.table-form .input-group{width:100%}.chosen-container-single .chosen-single{position:relative}.chosen-container-single .chosen-single>span{height:20px;line-height:20px;white-space:normal}.chosen-container-single .chosen-single div b{position:relative;top:1px;color:#cbd0db}.chosen-container-single .chosen-search:before{top:8px;right:15px}.chosen-container-multi .chosen-choices li.search-choice{font-size:13px;background:#eee;border-color:#cbd0db;-webkit-box-shadow:none;box-shadow:none}.chosen-container-single .chosen-search input[type=text]{height:30px;padding:3px 25px 3px 5px}.chosen-container-single .chosen-search{padding:3px 10px 0}.chosen-container-single .chosen-single{overflow:visible}.chosen-container .chosen-results{max-height:245px;padding:10px}.chosen-container .chosen-results>li{border-radius:4px}.chosen-container .chosen-results li.highlighted em{color:#fff}.table-responsive .chosen-container .chosen-results{max-height:200px}.chosen-compact.chosen-container-single .chosen-single>.chosen-search{top:-2px;right:-1px;bottom:-1px;left:-1px;display:none;height:auto;padding:0;opacity:0}.chosen-compact.chosen-container-single .chosen-single>.chosen-search>input{height:31px;padding:5px 26px 5px 8px;font-size:inherit;line-height:20px}.chosen-compact.chosen-container-single .chosen-single>.chosen-search:before{top:7px;right:8px}.datetimepicker{padding:10px}.datetimepicker td.day.today{background-color:#f77}.datetimepicker td.day.active{background-color:#16a8f8}.datetimepicker tfoot th,.datetimepicker thead th{color:#838a9d}.input-control .colorpicker{top:0;z-index:auto;opacity:1}.input-control .colorpicker .btn{padding:5px}.input-control .input-control-icon-right.btn{top:0}.colorpicker .dropdown-menu{min-width:232px;padding:5px 10px 10px 10px}.colorpicker .dropdown-menu>li{display:block;float:left;padding:5px}.colorpicker .dropdown-menu>li.heading{width:100%;margin-bottom:5px;font-size:16px;font-weight:700;text-align:left}.colorpicker .dropdown-menu>li.heading>.icon-close{position:relative;top:4px;float:right;cursor:pointer;opacity:.6}.colorpicker .dropdown-menu>li>a{position:relative;display:block;width:100%;height:100%;padding:0;margin:0;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;border:1px solid transparent;border-radius:50%;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.colorpicker .dropdown-menu>li>a:before{position:absolute;top:0;display:block;width:100%;height:20px;line-height:18px}.colorpicker .dropdown-menu>li>a:hover{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.25);box-shadow:0 1px 4px rgba(0,0,0,.25)}.colorpicker .dropdown-menu>li>a.active:before{font-size:14px;content:"\e5ca"}.colorpicker .dropdown-menu>li>a.empty{color:#666;background:#fff}.colorpicker .dropdown-menu>li>a.empty:before{content:"\e90d"}.colorpicker .btn{position:relative}.colorpicker .btn .color-bar{position:absolute;right:5px;bottom:3px;left:5px;height:3px}.colorpicker .btn .color-bar[style*='background: ']+.ic{position:relative;top:-2px}.colorpicker .btn .ic{color:#cbd0db}.colorpicker .btn:hover .ic{color:#838a9d}.input-group .colorpicker{z-index:3}.input-group .chosen-container{display:table-cell}.input-group-addon{border-right-width:0;border-left-width:0}.input-group-addon:first-child{border-left-width:1px}.input-group-addon:last-child{border-right-width:1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin:0}.input-group-cell{display:table-cell;width:1%;padding:0 12px;white-space:nowrap;vertical-align:middle}.ke-container{border-color:#dcdcdc!important;border-radius:2px!important}.ke-container.focus{border-color:#0c64eb!important}.ke-toolbar{border-color:#dcdcdc!important}.required:after{top:6px;right:-10px;font-size:20px}td.required:after{top:12px;right:-5px}.input-group>.chosen-container.required:after,.input-group>.input-control.required:after{top:1px;right:1px;z-index:2}.input-group.required .required:after{display:none}.file-input{position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.file-input .input-group{width:auto}.file-input .input-group>.input-group-cell:first-child{padding-right:0;padding-left:7px}.file-input input[type=file]{position:absolute;width:0;height:0;opacity:0}.file-input .file-title{display:inline-block;max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.file-input .file-editbox{min-width:200px;max-width:100%}.file-input .file-size{display:inline-block;vertical-align:middle}.edit .file-input-empty,.file-input-edit,.file-input-normal,.normal .file-input-empty{display:none}.edit .file-input-edit,.normal .file-input-normal{display:block}.edit .file-input-edit.input-group,.normal .file-input-normal.input-group{display:table}.edit .file-input-normal{display:none!important}.file-input-normal>.input-group-btn{width:auto}.input-group .chosen-container-active .chosen-choices{border-color:#0c64eb!important}.input-group .chosen-container{min-width:100px}.input-group .input-group-btn .btn>.icon{line-height:17px}.os-mac select.form-control{-webkit-appearance:none;background-image:url(data:image/gif;base64,R0lGODlhCQAFAIAAAMvQ2////yH5BAEAAAEALAAAAAAJAAUAAAIKhH+BGYoNGWxgFgA7);background-image:url(data:image/gif;base64,R0lGODlhBwAEAIAAAMvQ2////yH5BAEAAAEALAAAAAAHAAQAAAIIhA+BGWoNWSgAOw==);background-repeat:no-repeat;background-position:right 5px top 12px;-moz-appearance:none}input::-webkit-contacts-auto-fill-button{position:absolute;right:0;display:none!important;pointer-events:none;visibility:hidden}.chosen-choices.has-error,.chosen-single.has-error,.form-control.has-error{border-color:#ff5d5d!important;-webkit-box-shadow:0 0 6px #ffc3c3!important;box-shadow:0 0 6px #ffc3c3!important}.popover-success.popover-form-result{font-weight:700;color:#fff;background:#00da88}.popover-success.popover-form-result.popover.right .arrow:after{border-right-color:#00da88}#mainHeader{height:50px;color:#fff;background:#1183fb -webkit-gradient(linear,right top,left top,from(#0a48d1),to(#1183fb));background:#1183fb -webkit-linear-gradient(right,#0a48d1 0,#1183fb 100%);background:#1183fb -o-linear-gradient(right,#0a48d1 0,#1183fb 100%);background:#1183fb linear-gradient(-90deg,#0a48d1 0,#1183fb 100%);background-color:#1183fb;border-top-color:#0c64eb;border-bottom-color:#e9f2fb}#mainHeader>.container{min-width:1200px;padding:0}#heading{position:absolute;top:10px;left:20px}@media (min-width:1400px){#heading{left:40px}}#heading h1{float:left;max-width:250px;margin:0;overflow:hidden;font-size:20px;font-weight:400;line-height:30px;text-overflow:ellipsis;white-space:nowrap}#heading h1 a{color:inherit;text-decoration:inherit}#heading h1.long-name{position:relative;top:-5px;display:table-cell;font-size:16px;line-height:20px;word-break:break-all;white-space:normal}#heading>.btn{display:block;float:left;height:20px;padding:1px 5px;margin:0;margin:5px 0 0 10px;font-size:12px;font-weight:lighter;line-height:18px;background-color:rgba(255,255,255,.2);border:none}#heading>.btn:hover{background-color:rgba(0,0,0,.1)}#navbar{margin:0 auto;text-align:center}#navbar .nav{display:inline-block}#navbar .nav>li>a{padding:10px 15px;line-height:30px;color:#fff;border-radius:0;opacity:.9}@media (max-width:992px){#navbar .nav>li>a{padding:10px}}#navbar .nav>li>a:focus,#navbar .nav>li>a:hover{background:rgba(0,0,0,.15);opacity:1}#navbar .nav>li.active>a{font-weight:700;background:rgba(0,0,0,.1);opacity:1}#navbar .nav>li.divider{display:block;width:2px;height:20px;margin:15px;background:rgba(255,255,255,.4)}#navbar .nav>li.divider:last-child{display:none}#navbar .nav .dropdown-menu li>a{text-align:left}#toolbar{position:absolute;top:12px;right:20px;font-size:12px;color:#fff}@media (min-width:1400px){#toolbar{right:40px}}#extraNav{text-align:right}#extraNav>li{display:inline-block;float:none;text-align:left}#extraNav>li>a{display:block;padding:0;color:#fff;opacity:.75}#extraNav>li>a:hover{text-decoration:unset;background-color:rgba(0,0,0,.1);opacity:1}#extraNav>li.open>a{background-color:rgba(0,0,0,.1)}#extraNav>li+li{margin-left:10px}#showSearchGo{color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.5)}#searchbox{position:relative;float:left;width:150px}#searchbox .input-group-btn .btn{position:relative;padding:1px 4px;font-size:12px;line-height:20px;color:#fff;background-color:rgba(255,255,255,.15);border-right:none;border-radius:2px}#searchbox .input-group-btn .btn:after{position:absolute;top:3px;right:0;bottom:3px;display:block;width:1px;content:' ';background-color:rgba(255,255,255,.15)}#searchbox .input-group-btn .btn:hover{background-color:rgba(255,255,255,.25)}#searchGo{position:absolute;top:0;right:-1px;z-index:9;min-width:24px;height:24px;padding:2px 3px;font-size:12px;line-height:20px;color:#fff;background-color:#6a9afd;border-radius:2px}#searchGo:hover{color:#fff!important;background-color:#0c64eb}#searchInput{height:24px;padding:2px 30px 2px 5px;color:#fff;text-align:left;background:rgba(255,255,255,.15);border-color:transparent;border-radius:0 12px 12px 0;-webkit-transition:background .2s,border .2s;-o-transition:background .2s,border .2s;transition:background .2s,border .2s}#searchInput:hover{background:rgba(255,255,255,.25)}#searchInput:focus{color:#333;background:#fff}#searchInput::-webkit-input-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput::-moz-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput:-ms-input-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput::placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput:focus::-webkit-input-placeholder{color:#838a9d}#searchInput:focus::-moz-placeholder{color:#838a9d}#searchInput:focus:-ms-input-placeholder{color:#838a9d}#searchInput:focus::placeholder{color:#838a9d}#searchTypeMenu{min-width:220px}#searchTypeMenu>li{float:left;width:50%}#searchTypeMenu>li>a{margin:4px 0}#userNav{float:right;margin:0 -6px 0 10px}#userNav .avatar{display:inline-block;vertical-align:middle}#userNav>li>a{padding:2px 6px;margin-left:3px;line-height:20px;color:#fff;opacity:.9}#userNav>li>a .user-name{max-width:100px;overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}#userNav>li>a:hover{background-color:rgba(0,0,0,.1);opacity:1}#userNav>li>a span{display:inline-block;vertical-align:middle}#userNav>li.open>a{background-color:rgba(0,0,0,.1)}#userNav>li.has-new-items>a{position:relative}#userNav>li.has-new-items>a:before{position:absolute;top:3px;right:-1px;display:block;width:4px;height:4px;content:' ';background-color:#ff5d5d;border-radius:50%}#userNav .dropdown-menu{min-width:150px}#userNav .dropdown-menu>li>a>.icon{position:absolute;top:10px;right:5px;display:block;width:20px;height:20px;line-height:20px;text-align:center}#userNav .user-profile-item>a{position:relative;padding-left:45px}#userNav .user-profile-item .avatar{position:absolute;top:6px;left:5px}#userNav .user-profile-name{font-size:16px}#userNav .user-profile-role{font-size:12px;color:#a9abb8}#userNav .no-role .user-profile-role{display:none}#userNav .no-role .user-profile-name{line-height:40px}#subHeader{min-height:50px;background:#fff}#subHeader>.container{padding:0 20px}@media (min-width:1400px){#subHeader>.container{padding:0 40px}}#pageNav{position:absolute;top:8px;left:0;left:20px}@media (min-width:1400px){#pageNav{left:40px}}#subNavbar{margin-top:5px;font-size:14px;text-align:center}#subNavbar .nav{display:inline-block}#subNavbar .nav>li>a{padding:8px 12px;line-height:24px;color:#3c495c}#subNavbar .nav>li>a:hover{color:#3c495c;background-color:rgba(0,0,0,.075)}#subNavbar .nav>li.active>a{font-weight:700;color:#0c64eb}#subNavbar .nav>li.divider{display:block;width:2px;height:20px;margin:9px 5px;background-color:rgba(0,0,0,.05)}#subNavbar .dropdown-menu{text-align:left}[lang=en] #subNavbar>.nav>li>a{padding-right:8px;padding-left:8px}#pageActions{position:absolute;top:9px;right:20px}@media (min-width:1400px){#pageActions{right:40px}}.cell{padding:10px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.cell+.cell{margin-top:10px}.cell>.panel{margin:0;-webkit-box-shadow:none;box-shadow:none}.cell>.panel>.panel-heading{padding:5px 5px 10px}.cell>.panel>.panel-heading .panel-actions{padding:0}.cell>.panel>.panel-body{padding:5px}.cell>.table{margin:0}#main{padding:20px 0}#main>.container{padding:0 20px}@media (min-width:1400px){#main>.container{padding:0 40px}}#header,#header+#main{min-width:1200px}#mainMenu{margin:-10px 0 8px}.main-content{padding:20px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}@media (min-width:1400px){.main-content>.center-block{max-width:1350px;padding:20px;border:1px solid #eee}.main-content>.center-block .main-header{background-color:#f1f1f1}}.main-content>h2{margin:0 0 20px}.main-content .cell{-webkit-box-shadow:none;box-shadow:none}.main-header{padding:5px 20px;border-bottom:1px solid #eee}.main-header:after,.main-header:before{display:table;content:" "}.main-header:after{clear:both}.main-header>h2{display:block;float:left;margin:0 10px 0 0;font-size:14px;line-height:34px}.main-header>h2 .label-id{margin-right:5px}.main-header>h2 small{font-size:14px;font-weight:400}.main-content .main-header{margin:-20px -20px 10px}.main-header .label{top:-1px}.main-row{display:table;width:100%;table-layout:fixed}.main-row>*{display:table-cell;vertical-align:top}@media (max-width:720px){.main-row{display:block}.main-row>*{display:block;width:100%}.main-row .side-col{width:100%;padding:0}.main-row .main-col+.side-col,.main-row .side-col+.main-col{margin-top:10px}}.main-row.hide-side .side-col{display:none}@media (min-width:720px){.main-content>.center-block .main-form{padding-right:20px}}#main .side-col .tabs{padding:5px}#main .side-col .nav-tabs{margin:0 5px 5px 5px;border-bottom:1px solid #ddd}#main .side-col .nav-tabs>li{margin:0}#main .side-col .nav-tabs>li+li{margin-left:10px}#main .side-col .nav-tabs>li>a{position:relative;padding:8px 5px;border:none;border-radius:2px!important}#main .side-col .nav-tabs>li.active>a{font-weight:700;color:#3c4353}#main .side-col .nav-tabs>li.active>a:before{position:absolute;right:0;bottom:-1px;left:0;display:block;height:2px;content:' ';background:#0c64eb}#main .side-col .tab-content .tab-pane table{border:none}.main-actions .btn-toolbar{display:inline-block;padding:4px 15px;color:#fff;pointer-events:auto;background:#717171;background-color:rgba(90,90,90,.85);border-radius:4px}.main-actions .btn-toolbar .divider{margin-right:15px;margin-left:15px;border-color:rgba(255,255,255,.1)}.main-actions .btn-toolbar .btn{height:30px;padding-right:10px;padding-left:10px;margin-right:0;color:#fff;background-color:transparent;border:none}.main-actions .btn-toolbar .btn+.btn{margin-left:10px}.main-actions .btn-toolbar .btn:focus,.main-actions .btn-toolbar .btn:hover{background-color:rgba(255,255,255,.2)}.main-actions .btn-toolbar .btn.btn-icon{min-width:32px;padding-right:0;padding-left:0}.main-actions .btn-toolbar .btn+.btn-group{margin-right:0;margin-left:10px}#mainContent .main-col>.main-actions{padding:30px 0 0 0;text-align:center}#mainContent .main-col>.main-actions>.btn-toolbar{visibility:visible;opacity:1;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}#mainActions{position:fixed;top:0;right:0;bottom:0;left:0;text-align:center;pointer-events:none}#mainActions .btn-toolbar{position:relative;top:-90px}#mainActions .dropdown-menu{text-align:left}#mainActions>.container{height:100%}.main-actions-holder{display:none}.main-actions-fixed .main-actions-holder{display:block}.main-actions-fixed #mainContent .main-col>.main-actions{position:fixed;bottom:50px}.main-actions-fixed.body-modal #mainContent .main-col>.main-actions{bottom:20px}#nextPage,#prevPage{position:absolute;top:50%;left:-10px;width:40px;height:60px;padding:10px 0;margin-top:-30px;line-height:40px;color:#fff;text-align:center;pointer-events:auto;background:#717171;background-color:rgba(90,90,90,.85);-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,.05);box-shadow:0 2px 15px 2px rgba(0,0,0,.05)}#nextPage:hover,#prevPage:hover{-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,.15);box-shadow:0 2px 15px 2px rgba(0,0,0,.15)}#nextPage>.icon,#prevPage>.icon{display:block;font-size:36px;line-height:36px}#nextPage{right:-10px;left:auto}@media (max-width:1800px){#prevPage{left:-3px}#nextPage{right:-3px}}#sidebarHeader{position:relative;float:left;width:180px;height:34px;padding-right:20px;margin-right:20px;background:#fff;border-left:4px solid #0c64eb;border-radius:4px 2px 2px 4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#sidebarHeader:after{position:absolute;top:-1px;right:-8px;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #fff;border-style:solid;border-width:18px 0 18px 8px}#sidebarHeader .title{padding:0 5px;overflow:hidden;font-size:14px;font-weight:700;line-height:32px;color:#0c64eb;text-align:center;text-overflow:ellipsis;white-space:nowrap}#sidebarHeader .title>a{position:absolute;top:0;right:0;width:20px;opacity:.5}#sidebarHeader .title>a:hover{opacity:1}#sidebar{position:relative;-webkit-transition:width .2s,padding .2s;-o-transition:width .2s,padding .2s;transition:width .2s,padding .2s}#sidebar>.sidebar-toggle{position:absolute;top:0;right:5px;bottom:0;width:10px;cursor:pointer;background:0 0;border-radius:5px;-webkit-transition:background-color .2s,opacity .5s;-o-transition:background-color .2s,opacity .5s;transition:background-color .2s,opacity .5s}#sidebar>.sidebar-toggle>.icon{position:absolute;top:50%;left:-1px;width:12px;height:30px;margin-top:-10px;line-height:30px;color:#fff;text-align:center;background:#79cdfb;border-radius:6px}#sidebar>.sidebar-toggle>.icon:before{position:relative;left:-3px}#sidebar>.sidebar-toggle:before{position:absolute;top:0;right:-5px;bottom:0;left:-5px;display:block;content:' '}#sidebar>.sidebar-toggle:hover{background:rgba(0,0,0,.075)}#sidebar>.cell{position:relative;left:0;width:180px;-webkit-transition:left .2s,opacity .2s;-o-transition:left .2s,opacity .2s;transition:left .2s,opacity .2s}#sidebar.no-animate>.cell{display:none;-webkit-transition:none;-o-transition:none;transition:none}.hide-sidebar #sidebar>.cell{position:absolute;left:-200px;visibility:hidden;opacity:0}.hide-sidebar #sidebar{position:relative;width:0;padding:0}.hide-sidebar #sidebar>.sidebar-toggle>.icon:before{content:"\e315"}@media (max-width:720px){#sidebar>.cell{width:100%}}#queryBox{max-height:0;padding:0;overflow:hidden;-webkit-transition:cubic-bezier(.175,.885,.32,1) .2s;-o-transition:cubic-bezier(.175,.885,.32,1) .2s;transition:cubic-bezier(.175,.885,.32,1) .2s;-webkit-transition-property:padding,max-height,margin;-o-transition-property:padding,max-height,margin;transition-property:padding,max-height,margin}#queryBox>form{visibility:hidden;-webkit-transition:visibility .2s .2s;-o-transition:visibility .2s .2s;transition:visibility .2s .2s}#queryBox.loading{height:50px}#queryBox.show{min-height:110px;max-height:300px;margin-bottom:10px;overflow:visible}#queryBox.show>form{visibility:visible}#queryBox.divider{border-bottom:1px solid #eee}#main .querybox-toggle.querybox-opened{position:relative;color:#0c64eb;background:0 0;border:none}#main .querybox-toggle.querybox-opened:before{position:absolute;bottom:-14px;left:50%;width:0;height:0;content:' ';border-color:transparent transparent #fff transparent;border-style:solid;border-width:0 10px 10px 10px}#contentNav{padding:5px;background:#fff;border-bottom:1px solid #eee}#contentNav .nav>li>a{position:relative;padding:6px 10px;color:#838a9d}#contentNav .nav>li.active>a{font-weight:700;color:#0c64eb}#contentNav .nav>li.active>a:before{position:absolute;right:10px;bottom:3px;left:10px;display:block;height:2px;content:' ';background:#0c64eb}.body-modal{padding-bottom:0}.body-modal #main,.body-modal .container{min-width:0!important}.body-modal #main{padding:0}.body-modal .main-header{position:fixed;top:0;right:20px;left:20px;z-index:100;padding:13px 48px 13px 0;margin:0;background:#fff}.body-modal #mainContent{padding-top:70px}.body-modal .main-header>h2{max-width:100%;overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.body-modal .cell,.body-modal .main-content{-webkit-box-shadow:none;box-shadow:none}.body-modal #mainMenu{position:fixed;top:0;right:0;left:0;z-index:100;padding:12px 60px 12px 10px;margin:0;background:#fff}.body-modal #mainMenu>.btn-toolbar.pull-left.divider{display:none}.body-modal #mainMenu>.btn-toolbar{width:100%;margin-left:20px}.body-modal #mainMenu>.btn-toolbar>.divider:first-child{display:none}.body-modal #mainMenu>.btn-toolbar .page-title{width:100%;margin-left:0}.body-modal #mainMenu>.btn-toolbar .page-title>.text{position:relative;top:-2px;display:inline-block;max-width:85%;max-width:-webkit-calc(100% - 100px);max-width:calc(100% - 100px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.body-modal #mainMenu+#mainContent.main-row{padding:60px 10px 0}.body-modal #mainMenu+#mainContent.main-row .cell{border:1px solid #efefef;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.body-modal #mainActions{top:auto}.body-modal #mainActions .btn-toolbar{top:auto;bottom:10px}.body-modal.m-bug-view,.body-modal.m-story-view,.body-modal.m-task-view,.body-modal.m-testcase-view,.body-modal.m-testtask-view,.body-modal.m-todo-view{padding-bottom:20px;border-radius:3px}#tabsNav{position:relative}#tabsNav .tab-pane>.actions{position:absolute;top:-8px;right:0}#tabsNav .tab-pane>.cell,#tabsNav .tab-pane>.main-table{padding:0;border:1px solid #cbd0db;border-top:none;border-radius:0 0 4px 4px}#tabsNav .tab-pane>.cell .detail-title{padding-left:5px}#helpContent{position:fixed;top:50px;right:0;bottom:40px;left:0;display:none;background-color:#fff}#helpContent .load-error{display:none;padding:20px}#helpContent .show-error .load-error{display:block}.show-help-tab{overflow:hidden}.show-help-tab #main{display:none}.show-help-tab #helpContent{display:block}#navbar .nav>li>a.open-help-tab>.icon-close{display:none;opacity:.5}#navbar .nav>li>a.open-help-tab>.icon-close:hover{background:rgba(0,0,0,.1);opacity:1}.show-help-tab #navbar .nav>li>a.open-help-tab>.icon-close{display:inline}.text-middle td,.text-middle th{vertical-align:middle}.text-center td,.text-center th{text-align:center}.c-sm{width:40px}.c-id{width:90px}.c-id-sm{width:70px}.c-id-xs{width:55px}.c-date{width:100px}.c-num,.c-pri,.c-type{width:80px;overflow:hidden}.c-begin,.c-end,.c-time{width:65px}.c-hours{width:60px}.c-actions-1{width:50px}.c-actions-2{width:75px}.c-actions-3{width:102px}.c-actions,.c-actions-4{width:128px}.c-actions-5{width:155px}.c-actions-6{width:180px}.c-product,.c-project{width:180px}.c-plan{width:130px}.c-datetime{width:120px}.c-stage,.c-status,.c-user{width:80px}.c-side{width:200px;border-right:10px solid #efefef}.c-assign,.c-assignedTo,.c-openedBy{width:130px}.c-progress{width:155px}.c-assign,.c-assignedTo,.c-openedBy,.c-product,.c-project,.c-status,.c-url,.c-user{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.c-name,td.c-title{overflow:hidden;text-align:left!important;text-overflow:ellipsis;white-space:nowrap}td.c-actions{position:relative;padding-top:0;padding-bottom:0;overflow:hidden;white-space:nowrap;vertical-align:middle}td.c-actions .btn{display:inline-block;width:26px;padding:2px;overflow:hidden;line-height:20px;color:#16a8f8;background:0 0;border-color:transparent}td.c-actions .btn .icon{font-size:18px}td.c-actions .btn:hover{color:#0c64eb;background-color:#d3e5f7}td.c-actions .btn+.btn{margin-left:-4px}td.c-actions .btn-link{color:#3c495c;background:0 0}td.c-actions .btn-link:hover{color:#0c64eb;background:#e9f2fb}td.c-actions .more{position:absolute;top:50%;right:100%;display:none;padding-right:4px;padding-left:20px;margin-top:-15px;margin-right:-6px;white-space:nowrap;background-color:#fafafa;-webkit-transition:opacity .3s,margin .3s;-o-transition:opacity .3s,margin .3s;transition:opacity .3s,margin .3s}tr:hover td.c-actions .more{display:block}td:hover+td.c-actions>.more{margin-right:-15px;pointer-events:none;opacity:.15}tr[data-url]{cursor:pointer}.table tbody>tr>td,.table thead>tr>th{vertical-align:middle}.table tbody>tr>td.has-btn,.table thead>tr>th.has-btn{padding-top:1px;padding-bottom:1px;overflow:visible}.table tbody>tr>td .progress,.table thead>tr>th .progress{height:6px}.table .em,.table em{color:#3c4353}.table .divider{border-bottom:10px solid #efefef}.table .divider-top{border-top:10px solid #efefef}.table .btn-icon-left{max-width:100%;padding-left:20px;overflow:hidden;line-height:18px;text-align:left;text-overflow:ellipsis;background:0 0;border-color:#eaf3fc}.table .btn-icon-left>.icon{width:20px;font-size:14px;background:0 0!important;opacity:0}.table .btn-icon-left.btn-sm{height:26px;font-size:13px}.table .btn-icon-left:active,.table .btn-icon-left:focus,.table .btn-icon-left:hover{border-color:rgba(0,0,0,.2)}.table .btn-icon-left:active>.icon,.table .btn-icon-left:focus>.icon,.table .btn-icon-left:hover>.icon{opacity:1}.table .btn-icon-left>.text{padding-left:25px}.table thead>tr>th.c-assign,.table thead>tr>th.c-assignedTo{padding-left:29px}.table a{vertical-align:middle}.table tbody>tr:last-child{border-bottom:none}.table caption{margin-bottom:5px;background:#f1f1f1;border:none}.is-firefox .table .btn-icon-left>.icon{line-height:22px}.main-table{border-radius:4px}.main-table>.table,.main-table>.table-footer,.main-table>.table-header,.main-table>.table-responsive{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.main-table .table{font-size:13px;table-layout:fixed;background-color:#fff;border-radius:4px 4px 0 0}.main-table .table.table-lg{font-size:14px}.main-table .table .btn-icon-left{border-color:transparent}.main-table .table .btn-icon-left>.icon{background:0 0;border-radius:4px}.main-table .table .btn-icon-left.btn-sm{height:26px}.main-table .table .btn-icon-left:hover{border-color:rgba(0,0,0,.2)}.main-table .table .btn-icon-left:hover>.icon{background:#e9f2fb;border-radius:4px 0 0 4px}.main-table tbody>tr>td,.main-table thead>tr>th{min-height:36px;padding:2px 8px;line-height:30px}.main-table tbody>tr>td:first-child,.main-table thead>tr>th:first-child{padding-left:15px}.main-table thead>tr>th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #ddd}.main-table tbody>tr:nth-child(odd){background-color:#f5f5f5}.main-table tbody>tr:last-child>td{border-bottom:1px solid #ddd}.main-table tbody>tr>td{position:relative;border-bottom:none;border-bottom:1px solid #eee}.main-table tbody>tr>td .label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main-table tbody>tr>td>a{line-height:28px;color:#0c60e1}.main-table tbody>tr>td>a:not(.btn):visited{color:#082999;opacity:.9}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover{color:#0c64eb}.main-table tbody>tr>td.c-actions{padding-right:10px}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{position:absolute;top:0;bottom:0;left:0;display:block;width:0;content:'';background:#0c64eb;opacity:0;-webkit-transition:.2s linear;-o-transition:.2s linear;transition:.2s linear;-webkit-transition-property:width,opacity,border-radius;-o-transition-property:width,opacity,border-radius;transition-property:width,opacity,border-radius}@-moz-document url-prefix(){.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{bottom:-1px}}.main-table tbody>tr>td.c-side:before{display:none}.main-table tbody>tr{-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background-color,-webkit-box-shadow;-o-transition-property:box-shadow,background-color;transition-property:background-color,-webkit-box-shadow;transition-property:box-shadow,background-color;transition-property:box-shadow,background-color,-webkit-box-shadow}.main-table tbody>tr:hover{background:#e9f2fb}.main-table .table-grouped tbody>tr:hover{background:#f2f7fd;-webkit-box-shadow:none;box-shadow:none}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f2f7fd}.main-table tbody>tr.checked{background:#fff3e0}.main-table tbody>tr.checked:hover{background:#ffebbc}.main-table tbody>tr.checked>td.c-side+td:before,.main-table tbody>tr.checked>td:first-child:before{width:4px;opacity:1}.main-table tbody>tr.checked.row-check-begin{border-top-left-radius:4px;border-top-right-radius:2px}.main-table tbody>tr.checked.row-check-begin>td:first-child:before{border-top-left-radius:4px}.main-table tbody>tr.checked.row-check-end{border-bottom-right-radius:2px;border-bottom-left-radius:4px}.main-table tbody>tr.checked.row-check-end>td:first-child:before{border-bottom-left-radius:4px}.main-table .checkbox-primary{display:inline-block;line-height:20px}.main-table .checkbox-primary label{margin:0}.main-table .table{margin:0}.table-header{padding:4px 0 12px}.table-header .table-statistic{color:#838a9d}.table-header .table-statistic strong{font-size:15px;color:#3c4353}.table-header .btn-toolbar{margin-top:-28px}.table-header.fixed-right{position:relative;z-index:5;padding:0}.table-header.fixed-right>.btn-toolbar{position:absolute;top:0;right:0;z-index:1;padding:1px;margin:0;background:#fff;border-radius:4px}.table-header.fixed-right>.btn-toolbar .btn{opacity:.65}.table-header.fixed-right>.btn-toolbar .btn:hover{opacity:1}.table-footer{position:relative;min-height:40px;padding:6px 15px;background:#fff;border-radius:0 0 4px 4px}.body-modal .table-footer{margin-bottom:20px}.talbe-lg+.table-footer{padding:11px 15px}.table-footer .btn-toolbar,.table-footer .checkbox-primary{float:left}.table-footer .btn-toolbar+.btn-toolbar{margin-left:8px}.table-footer .checkbox-primary{margin:5px 20px 0 0}.table-footer .checkbox-primary.checked label:after{border-color:#00da88!important}.table-footer .btn{padding:3px 10px;line-height:20px}.table-footer .pager{position:absolute;top:0;right:0;z-index:4;height:40px;padding:6px 5px 6px 10px;margin:0;background:#fff;opacity:1;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.table-footer .pager:before{position:absolute;top:0;bottom:0;left:-50px;display:block;width:50px;content:' ';background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(#fff));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%)}.table-footer .pager .btn,.table-footer .pager>li>.pager-item,.table-footer .pager>li>.pager-label{color:#838a9d;background:0 0;border-color:transparent}.table-footer .pager .btn,.table-footer .pager>li>a{border-radius:3px}.table-footer .pager .btn:hover,.table-footer .pager>li>a:hover{background:rgba(0,0,0,.1)}.table-footer .pager>li.disabled>a.pager-item{opacity:1}.table-footer .form-control{height:28px;padding:3px 8px}.table-footer .table-statistic{position:relative;z-index:2;float:left;padding-right:30px;line-height:28px;color:#838a9d;background:#fff}.table-footer .table-statistic:hover{z-index:4}.table-footer .table-statistic:hover+.pager{z-index:2;opacity:.3}.table-footer .btn-toolbar+.table-statistic,.table-footer .btn-toolbar+.text{margin-left:10px}.table-footer .text{float:left;line-height:28px}.table-footer.fixed-footer{position:fixed;z-index:10;margin:0;background:rgba(75,75,75,.85);border-top-color:transparent}.table-footer.fixed-footer .checkbox-primary label{color:#fff}.table-footer.fixed-footer .checkbox-primary label:after{border-color:rgba(255,255,255,.8)}.table-footer.fixed-footer .table-statistic{color:#fff;background:0 0}.table-footer.fixed-footer .pager{background:#666}.table-footer.fixed-footer .pager:before{background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0)),to(#666));background:-webkit-linear-gradient(left,rgba(0,0,0,0) 0,#666 100%);background:-o-linear-gradient(left,rgba(0,0,0,0) 0,#666 100%);background:linear-gradient(to right,rgba(0,0,0,0) 0,#666 100%)}.table-footer.fixed-footer .pager .btn,.table-footer.fixed-footer .pager>li>.pager-item,.table-footer.fixed-footer .pager>li>.pager-label{color:#fff}.table-footer.fixed-footer .pager .btn:hover,.table-footer.fixed-footer .pager>li>a:hover{background:rgba(255,255,255,.3)}.table-footer.fixed-footer .pager>li.disabled>a.pager-item{opacity:.5}.table-actions{width:0;height:28px;visibility:hidden;opacity:0;-webkit-transition:opacity cubic-bezier(.175,.885,.32,1) .8s;-o-transition:opacity cubic-bezier(.175,.885,.32,1) .8s;transition:opacity cubic-bezier(.175,.885,.32,1) .8s}.table-actions.show-always{width:auto;pointer-events:none;cursor:not-allowed;visibility:visible;opacity:.75}.has-row-checked .table-actions{width:auto;pointer-events:auto!important;cursor:default;visibility:visible;opacity:1}.table-lg tbody>tr>td{padding:9px 10px}.table-lg tbody>tr>td .btn+.btn{margin-left:5px}.table.has-sort-head thead>tr>th{padding-right:0}.table.has-sort-head thead>tr>th>a{position:relative;display:inline-block;padding-right:16px;color:#3c4353}.table.has-sort-head thead>tr>th>a:after,.table.has-sort-head thead>tr>th>a:before{position:absolute;top:0;right:0;font-family:ZentaoIcon;font-size:18px;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:30px;color:#3c495c;text-transform:none;content:"\f0de";opacity:.5;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.table.has-sort-head thead>tr>th>a:after{content:"\f0dd"}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up{color:#000;text-decoration:none}.table.has-sort-head thead>tr>th>a:hover,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#0c64eb;opacity:1}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before{color:#000;opacity:1}.head-fixed .datatable-head-span .table,.table.fixed-header-copy{z-index:10;color:#fff;background:rgba(75,75,75,.85)}.head-fixed .datatable-head-span .table thead>tr>th,.table.fixed-header-copy thead>tr>th{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a,.table.fixed-header-copy thead>tr>th>a{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover{color:#fff}.head-fixed .datatable-head-span .table thead>tr>th>a:after,.head-fixed .datatable-head-span .table thead>tr>th>a:before,.table.fixed-header-copy thead>tr>th>a:after,.table.fixed-header-copy thead>tr>th>a:before{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a.sort-down,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-down:after,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-up,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-up:before,.head-fixed .datatable-head-span .table thead>tr>th>a:hover,.head-fixed .datatable-head-span .table thead>tr>th>a:hover:after,.head-fixed .datatable-head-span .table thead>tr>th>a:hover:before,.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#fff}.head-fixed .datatable-head-span .table .checkbox-primary,.table.fixed-header-copy .checkbox-primary{z-index:1}.head-fixed .datatable-head-span .table .checkbox-primary label,.table.fixed-header-copy .checkbox-primary label{color:#fff}.head-fixed .datatable-head-span .table .checkbox-primary label:after,.table.fixed-header-copy .checkbox-primary label:after{border-color:rgba(255,255,255,.8)}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#00da88!important}.table-data{margin:0;table-layout:fixed}.table-data tbody>tr>td,.table-data tbody>tr>th{padding:6px 8px;word-break:break-all;border:none}.table-data tbody>tr>th{width:70px;padding-left:0;font-weight:400;color:#838a9d;text-align:right;vertical-align:middle}.table-data tbody>tr>td{padding-right:0}.table-data tbody>tr>td>a{color:#0c60e1}.table-data tbody>tr>td>a:not(.btn):visited{color:#082999}.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#0c64eb}.table-data ol,.table-data ul{margin:0}.fixed-head-table{background:rgba(0,0,0,.7);border-bottom:1px solid #ddd}.fixed-head-table thead>tr>th{color:#fff}.table-empty-tip{padding:80px 10px;text-align:center;background:#fff}.not-firefox .table-grouped>tbody>tr>td.c-side{background:#fff!important}.table-grouped .group-toggle{cursor:pointer}.table-grouped .group-toggle.group-summary{border-top:10px solid #efefef}.table-grouped tbody>tr>td:first-child,.table-grouped thead>tr>th:first-child{padding-left:8px}.group-expand-all,.table-group-collapsed .group-collapse-all{display:none}.table-group-collapsed .group-expand-all{display:inline-block}.table-auto{table-layout:auto}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffebbc}body.has-fixed-footer{padding-bottom:60px}.table.with-footer-fixed{margin-bottom:20px}.table-nest-hide{display:none!important}th.table-nest-title{position:relative;padding-left:30px!important}.table-nest-icon{position:relative;display:inline-block;width:22px;height:22px;margin-right:-4px;color:#a6aab8;text-align:center;border-radius:4px}.table-nest-toggle:before{line-height:22px;content:"\e939"}.table-nest-toggle:hover{color:#0c64eb;background-color:rgba(0,0,0,.1)}.table-nest-child-hide .table-nest-toggle:before{font-size:16px;content:"\e93a"}th.table-nest-title .table-nest-toggle{position:absolute!important;top:7px;left:8px}.table-nest-toggle.table-nest-toggle-global{width:22px;height:22px;padding:0!important;line-height:22px;text-align:center;border-radius:4px}.table-nest-toggle.table-nest-toggle-global:before{position:static!important;font-size:18px!important;line-height:22px!important;line-height:1;content:"\e939"!important}.table-nest-toggle.table-nest-toggle-global:after{display:none!important}.table-nest-collapsed .table-nest-toggle.table-nest-toggle-global:before{font-size:16px!important;content:"\e93a"!important}.is-nest-child .table-nest-icon:before,.no-nest .table-nest-icon:before{position:relative;top:-1px;width:6px;min-width:6px;height:6px;content:' ';background-color:#cbd0db;border-radius:1px}.table-nest-child-hover>td:first-child,.table-nest-hover>td:first-child{-webkit-box-shadow:inset 3px 0 0 #cbd0db;box-shadow:inset 3px 0 0 #cbd0db}.article-content{overflow:auto}.article-content img{margin-top:0}.article-content table{margin:10px 0}.article-content table td,.article-content table th{border:1px solid #cbd0db}.article-content table th{background:#eee}.article-content a{color:#0c64eb}.article-content a:focus,.article-content a:hover{color:#16a8f8}.article-content,.article>.content{word-wrap:break-word}.detail{padding:10px 0;margin:0 10px}.detail+.detail{padding-top:25px;border-top:1px solid #eee}.detail-title{font-size:14px;font-weight:700;line-height:20px}.detail-title>.pull-right{position:relative;top:-8px}h2.detail-title{margin:0;font-size:15px;font-weight:700}h2.detail-title .label,h2.detail-title .label-id{position:relative;top:-1px}.detail-content{padding:0;margin-top:10px}.detail-content em{color:#3c4353}.detail-content .list-unstyled>li+li{margin-top:5px}.side-col .detail-content{padding-left:0}details.detail{padding:10px 0}details.detail summary{position:relative;cursor:pointer;outline:0}details.detail summary::-webkit-details-marker{display:none}details.detail summary:after{position:absolute;top:0;right:0;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:"\e316";opacity:.4;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}details.detail[open] summary:after{content:"\e313"}.files-list{padding-left:0;list-style:none}.files-list>li>a{display:block;line-height:24px}.files-list>li>a>.icon{display:inline-block;margin-right:5px;opacity:.7}.files-list>li>a:hover{color:#0c64eb}.files-list>li>.right-icon{opacity:0;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.files-list>li:hover>.right-icon{opacity:1}.histories-list{padding-left:15px;margin-bottom:0}.histories-list .btn-mini{position:relative;top:1px}.histories-list>li{position:relative}.histories-list>li+li{margin-top:5px}.histories-list>li strong{color:#3c4353}.histories-list .comment,.histories-list .show-form .comment-edit-form{padding:5px 5px 5px 10px;margin:5px 0 0;background-color:rgba(0,0,0,.025);border:1px solid #eee}.histories-list .btn-edit-comment{position:absolute;top:28px;right:2px}.histories-list .comment-edit-form,.histories-list .show-form .btn-edit-comment,.histories-list .show-form .comment{display:none}.histories-list .show-form .comment-edit-form{display:block;padding:10px;border:1px solid #eee}.histories .btn-mini{width:16px;min-width:16px;height:16px;overflow:hidden;line-height:16px;color:#cbd0db;vertical-align:-8%;border-radius:1px}.histories .btn-mini>.icon{position:relative;top:-2px;left:-2px}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#0c64eb;border-color:#0c64eb}.histories .show-changes .btn-expand>.icon:before{content:"\e926"}.histories .btn-strip{display:none}.histories .show-changes .btn-strip{display:inline-block}.history-changes{display:none;padding:5px;margin-bottom:-5px;margin-left:5px;font-size:12px;line-height:20px}.history-changes blockquote{padding:5px 5px 5px 10px;margin:5px 0 0;font-size:12px;background-color:rgba(0,0,0,.05);border-left:3px solid #eee}.history-changes blockquote.original{display:none}.show-changes .history-changes,.show-original .history-changes blockquote.original{display:block}.show-original .history-changes blockquote.textdiff{display:none}.syntaxhighlighter{overflow:auto}.list-group{overflow-y:auto}.list-group>a{display:block;padding:2px 10px 2px 5px;overflow:hidden;line-height:20px;text-overflow:ellipsis;white-space:nowrap;border-radius:4px}.list-group>a+a{margin-top:5px}.list-group>a>.icon{display:inline-block;margin-right:3px;opacity:.5}.list-group>a.selected{color:#e9f2fb;background-color:#0c64eb}.list-group>a.active{color:#0c64eb;background-color:#e9f2fb}.list-group>a.active:hover,.list-group>a:hover{color:#fff;background-color:#0c64eb}.list-group>.heading{padding:2px 5px;line-height:20px;color:#838a9d}.list-group>a+.heading{margin-top:4px}.dropup .search-box-sink{padding-top:5px;padding-bottom:45px}.dropup .search-box-sink .search-box{position:absolute;right:10px;bottom:10px;left:10px;margin:0}.dropup .search-box-sink .search-box+.list-group{height:auto;max-height:171px}.search-list{min-width:200px;max-width:300px;padding:0}.search-list .search-box{float:none;width:auto;margin:10px}.search-list .search-box .icon-search{opacity:.5}.search-list .list-group{max-height:248px;padding:5px 10px;margin:5px 0}.dropup .search-list .search-box+.list-group{height:171px;padding-top:0}.search-list .search-input{height:30px}.search-list .input-control-icon-right{height:28px;line-height:28px}.search-list .list-group>a.active{color:inherit;background-color:inherit}.search-list.searchbox-focus .list-group>a.active{color:#0c64eb;background-color:#e9f2fb}.search-list .list-group>a.active:hover,.search-list.searchbox-focus .list-group>a.active:hover{color:#fff;background-color:#0c64eb}#dropMenu>.search-box{max-width:188px}#dropMenu .input-control-icon-left{top:0}#dropMenu .list-group{width:199px;max-width:199px;max-height:300px;padding-top:0}#dropMenu .table-row .list-group{margin:0 -10px}#dropMenu .col-right{display:none}#dropMenu .col-left{width:100%}#dropMenu .col-left .list-group{max-height:250px;margin-bottom:35px}#dropMenu .col-footer{position:absolute;bottom:10px;left:10px;width:180px;padding-top:10px;margin-top:5px;border-top:1px solid #eee}#dropMenu .col-footer>a{opacity:.8}#dropMenu .col-footer>a:hover{opacity:1}#dropMenu.show-right-col{width:402px;max-width:402px}#dropMenu.show-right-col>.list-group{width:400px;max-width:400px}#dropMenu.show-right-col .col-left,#dropMenu.show-right-col .col-right{display:table-cell;width:50%}#dropMenu.show-right-col .col-left>.list-group{width:200px;max-width:200px;margin-right:0}#dropMenu.show-right-col .col-right{border-left:1px solid #eee}#dropMenu.show-right-col .col-right>.list-group{width:199px;max-height:285px;margin:0}#dropMenu.show-right-col .col-right>.list-group>a{opacity:.7}#dropMenu.show-right-col .col-right>.list-group>a:hover{opacity:1}#dropMenu.show-right-col .toggle-right-col>.icon-angle-right:before{content:"\e314"}#dropMenu.has-search-text{width:200px}#dropMenu.has-search-text .list-group{overflow-x:hidden}#dropMenu.has-search-text>.list-group>.table-row{display:block}#dropMenu.has-search-text>.list-group>.table-row>.table-col{display:block}#dropMenu.has-search-text .pull-right.toggle-right-col{display:none}#dropMenu.has-search-text .col-left .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right{margin-left:-10px}#dropMenu.has-search-text .col-right .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right .list-group>a{opacity:.7}#dropMenu.has-search-text .col-footer{display:none}.release-path{overflow:hidden}.release-line{display:table;width:100%;padding:0;table-layout:fixed}.release-line>li{display:table-cell;list-style:none}.release-line>li>a{position:relative;display:block}.release-line>li>a:before{position:absolute;left:0;display:block;width:13px;height:13px;content:' ';background:#fff;border:2px solid #838a9d;border-radius:50%}.release-line>li>a:after{position:absolute;left:5px;display:block;width:2px;height:30px;content:' ';background:#cbe0f6}.release-line>li>a>.icon{position:absolute;left:4px;font-size:24px}.release-line>li>a .title{display:block;font-size:14px;white-space:nowrap}.release-line>li>a .date,.release-line>li>a .info{display:block;max-height:18px;overflow:hidden;font-size:12px;color:#838a9d;text-overflow:ellipsis;white-space:nowrap}.release-line>li>a:hover:before{background-color:#e9f2fb}.release-line>li>a:hover:after{background-color:#838a9d}.release-line>li>a:hover .title{color:#0c64eb}.release-line>li>a:hover .date,.release-line>li>a:hover .info{color:#838a9d}.release-line>li:nth-child(odd){padding-top:80px;vertical-align:top}.release-line>li:nth-child(odd)>a{height:85px;padding-top:36px;border-top:5px solid #cbe0f6}.release-line>li:nth-child(odd)>a:before{top:-9px}.release-line>li:nth-child(odd)>a:after{top:6px}.release-line>li:nth-child(odd)>a>.icon{top:-26px}.release-line>li:nth-child(even){padding-bottom:80px;vertical-align:bottom}.release-line>li:nth-child(even)>a{height:85px;padding-bottom:36px;border-bottom:5px solid #cbe0f6}.release-line>li:nth-child(even)>a:before{bottom:-9px}.release-line>li:nth-child(even)>a:after{bottom:6px}.release-line>li:nth-child(even)>a>.icon{bottom:-2px}.release-line>li:last-child>a{border-color:transparent}.release-line>li.active>a:before{border-color:#0c64eb}.release-line>li+li>a>.date,.release-line>li+li>a>.info,.release-line>li+li>a>.title{position:relative;left:-36%}#footer{position:fixed;right:0;bottom:0;left:0;z-index:1010;height:40px;background:#fff;border-top:1px solid #eff1f7}#footer .breadcrumb{padding:10px 0;margin:0}#footer .breadcrumb>li{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#footer .breadcrumb>.active,#footer .breadcrumb>li>a{color:#838a9e}#footer .breadcrumb>.active>.icon,#footer .breadcrumb>li>a>.icon{display:none}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#16a8f8}#footer .breadcrumb>li+li:before{content:'>'}#footer>.container{padding:0 20px}@media (min-width:1400px){#footer>.container{padding:0 40px}}#poweredBy{position:absolute;top:4px;right:0;padding:5px 10px}#poweredBy .icon-zentao{color:#0097fd}#poweredBy a{color:#3c4353}#poweredBy a:hover{color:#0c64eb}#poweredBy a:hover .icon-zentao{color:#0c64eb}#poweredBy a.text-important{color:#bd7b46}#poweredBy a.text-important:hover{color:#ff5d5d}#poweredBy a.text-primary{color:#0c64eb}#poweredBy a.text-primary:hover{color:#16a8f8}#poweredBy #aiux{color:#cbd0dc}#noticeBox .alert{-webkit-box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.25) 0 3px 10px;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.25) 0 3px 10px} \ No newline at end of file +*/.chosen-container{position:relative;display:block;font-size:13px;vertical-align:middle;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;display:none;width:100%;background:#fff;border:1px solid #b6bdcc;border:1px solid rgba(0,0,0,.15);border-top:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container .chosen-drop.chosen-drop-size-limited{border-top:1px solid rgba(0,0,0,.15)}.chosen-container .chosen-drop.chosen-auto-max-width{min-width:100%;border-top:1px solid rgba(0,0,0,.15);opacity:0}.chosen-container .chosen-drop.chosen-auto-max-width>.chosen-results>li{display:inline-block;white-space:nowrap}.chosen-container .chosen-drop.chosen-auto-max-width.in{opacity:1}.chosen-container .chosen-drop.chosen-auto-max-width.in>.chosen-results>li{display:block;white-space:normal}.chosen-container .chosen-drop.chosen-no-wrap>.chosen-results>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap!important}.chosen-container.chosen-with-drop .chosen-drop{display:block}.chosen-container a{cursor:pointer}.chosen-container.chosen-up .chosen-drop{top:inherit;bottom:100%;margin-top:auto;margin-bottom:-1px;border-radius:2px 2px 0 0;-webkit-box-shadow:0 -3px 5px rgba(0,0,0,.175);box-shadow:0 -3px 5px rgba(0,0,0,.175)}.chosen-container.chosen-highlight-selected .result-selected{color:#0c64eb;background:#e9f2fb}.chosen-container-single .chosen-single{display:block;width:100%;height:32px;padding:5px 8px;overflow:hidden;line-height:1.42857143;color:#222;text-decoration:none;white-space:nowrap;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-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}.chosen-container-single .chosen-default{color:#838a9d}.chosen-container-single .chosen-single>span{display:block;margin-right:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:5px;right:24px;display:block;width:20px;height:20px;font-family:sans-serif;font-size:18px;font-weight:700;line-height:18px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-single .chosen-single abbr:before{display:block;content:'×'}.chosen-container-single .chosen-single abbr:focus,.chosen-container-single .chosen-single abbr:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;height:100%;padding:5px 8px}.chosen-container-single .chosen-single div b{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent;opacity:.5}.chosen-container-single .chosen-search{position:relative;z-index:1010;padding:3px 4px;margin:0;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{width:100%;height:27px;padding:2px 26px 2px 8px;margin:1px 0;font-size:12px;line-height:1.5;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;outline:0}.chosen-container-single .chosen-search input[type=text]:focus{border-color:#0c64eb}.chosen-container-single .chosen-search:before{position:absolute;top:10px;right:10px;display:block;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#838a9d;text-transform:none;content:"\e928";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-single .chosen-drop{margin-top:-1px;-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:0 0 4px 4px}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;max-height:240px;padding:0;margin:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;padding:5px 10px;margin:0;line-height:15px;list-style:none;-webkit-transition:background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:background-color .2s cubic-bezier(.175,.885,.32,1);transition:background-color .2s cubic-bezier(.175,.885,.32,1);-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{color:#fff;background-color:#0c64eb}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;width:100%;min-height:32px;min-height:30px\9;padding:0;margin:0;overflow:hidden;cursor:text;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-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}.chosen-container-multi .chosen-choices:after,.chosen-container-multi .chosen-choices:before{display:table;content:" "}.chosen-container-multi .chosen-choices:after{clear:both}.chosen-container-multi .chosen-choices li{display:block;float:left;padding:0 6px;margin:5px 4px;list-style:none}.chosen-container-multi .chosen-choices li.search-field{padding:0;line-height:12px;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{height:20px;font-size:100%;color:#838a9d;background:0 0!important;border:0!important;border-radius:0;outline:0;-webkit-box-shadow:none;box-shadow:none}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-field:before{position:absolute;right:8px;bottom:8px;display:block;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#838a9d;text-transform:none;content:"\e928";opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice{position:relative;padding:3px 20px 3px 5px;line-height:12px;cursor:default;background-color:#f1f1f1;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cbd0db;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.chosen-container-multi .chosen-choices li.search-choice:hover{background-color:#fff;border-color:#adb5c6;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:1px;right:0;display:block;width:20px;height:18px;line-height:18px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-shadow:0 1px 0 #fff;text-transform:none;content:'\d7';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus,.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;color:#666;background-color:#e4e4e4;border:1px solid #ccc}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{padding:5px 0;margin:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border-color:#0c64eb;-webkit-box-shadow:none,0 0 8px rgba(12,100,235,.6);box-shadow:none,0 0 8px rgba(12,100,235,.6)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #b6bdcc;border:1px solid rgba(0,0,0,.15);border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active.chosen-with-drop .chosen-single div{background:0 0;border-left:none}.chosen-container-active.chosen-with-drop .chosen-single div b{content:"";border-top:0 dotted;border-bottom:4px solid}.chosen-container-active.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active .chosen-choices{border-color:#0c64eb;-webkit-box-shadow:none,0 0 8px rgba(12,100,235,.6);box-shadow:none,0 0 8px rgba(12,100,235,.6)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-container-active .chosen-choices li.search-field:before{opacity:1}.chosen-disabled{cursor:default;opacity:.5!important}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-compact.chosen-container-single .chosen-single>.chosen-search{left:0;display:none;padding:3px 4px;opacity:0}.chosen-compact.chosen-container-single .chosen-single>.chosen-search>input{height:25px;padding:2px 26px 2px 4px;font-size:inherit}.chosen-compact.chosen-container-single .chosen-single>.chosen-search:before{top:9px}.chosen-compact.chosen-with-search.chosen-with-drop .chosen-single>.chosen-search{display:block;opacity:1}select.chosen[multiple]{height:32px;overflow:hidden}select.chosen[multiple] option{visibility:hidden}.container,.container-fixed,.container-fluid{position:relative}.container{max-width:1800px!important}body{padding-bottom:40px;background-color:#efefef}body.article-content,body.body-modal{background:0 0}body.body-modal{padding:0}a:active,a:focus,button:active,button:focus{outline:0!important}.strong{font-weight:700}.font-normal{font-weight:400!important}.text-middle{vertical-align:middle!important}.text-bottom{vertical-align:bottom!important}.text-top{vertical-align:top!important}.inline-block{display:inline-block!important}.layer{border-radius:4px;-webkit-box-shadow:0 0 20px 0 #bdc9d8;box-shadow:0 0 20px 0 #bdc9d8}.space{margin-bottom:20px}.space-lg{margin-bottom:30px}.space-sm{margin-bottom:10px}.muted{opacity:.5}.text-muted em{color:#3c4353}.no-animate{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.template{display:none!important}.text-left{text-align:left!important}.text-yellow.icon-folder{color:#ffe066}.table-row{display:table;width:100%;table-layout:fixed}.table-col,.table-row>.col,.table-row>[class*=col-],.table-row>[class*="-col"]{display:table-cell;float:none;vertical-align:top}.side-col{width:200px;padding-right:20px}.side-col.col-4{width:33.3333333%}.col-lg{width:260px}.col-xl{width:320px}.col-sm{width:150px}.col-xs{width:100px}.main-col+.side-col{padding-right:0;padding-left:20px}.row-grid>[class*=col-],.row-grid>[class*="-col"]{padding-top:6px;padding-bottom:6px}hr.space{margin:10px 0;border:none}hr.space-sm{margin:5px 0;border:none}.text-secondary{color:#16a8f8}a.text-primary{color:#0c64eb}.nav-primary>li>a{min-width:100px;padding:5px 8px;color:#838a9d;border-color:#e7f1fc}.nav-primary>li.active>a{color:#0c64eb;background-color:#e7f1fc;border-color:#e7f1fc}.nav-primary>li.active>a:hover{color:#0c64eb;background-color:#c3dcf7;border-color:#c3dcf7}.end-marker{margin-bottom:20px;color:#cbd0db;text-align:center}@-webkit-keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}@-o-keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}@keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}.highlight{-webkit-animation:highlight .5s linear 0s 2 alternate;-o-animation:highlight .5s linear 0s 2 alternate;animation:highlight .5s linear 0s 2 alternate}.progress.inline-block{width:100px;margin:0}.w-p5{width:5%!important}.w-p10{width:10%!important}.w-p15{width:15%!important}.w-p20{width:20%!important}.w-p25{width:25%!important}.w-p30{width:30%!important}.w-p35{width:35%!important}.w-p40{width:40%!important}.w-p45{width:45%!important}.w-p50{width:50%!important}.w-p55{width:55%!important}.w-p60{width:60%!important}.w-p65{width:65%!important}.w-p70{width:70%!important}.w-p75{width:75%!important}.w-p80{width:80%!important}.w-p85{width:85%!important}.w-p90{width:90%!important}.w-p94{width:94%!important}.w-p95{width:95%!important}.w-p98{width:98%!important}.w-p99{width:99%!important}.w-p100{width:100%!important}.w-auto{width:auto!important}.w-10px{width:10px!important}.w-20px{width:20px!important}.w-30px{width:30px!important}.w-35px{width:35px!important}.w-40px{width:40px!important}.w-45px{width:45px!important}.w-50px{width:50px!important}.w-60px{width:60px!important}.w-70px{width:70px!important}.w-80px{width:80px!important}.w-90px{width:90px!important}.w-100px{width:100px!important}.w-110px{width:110px!important}.w-120px{width:120px!important}.w-130px{width:130px!important}.w-140px{width:140px!important}.w-150px{width:150px!important}.w-160px{width:160px!important}.w-180px{width:180px!important}.w-200px{width:200px!important}.w-230px{width:230px!important}.w-250px{width:250px!important}.w-300px{width:300px!important}.w-400px{width:400px!important}.w-500px{width:500px!important}.w-600px{width:600px!important}.w-700px{width:700px!important}.w-800px{width:800px!important}.w-900px{width:900px!important}.mw-200px{max-width:200px!important}.mw-300px{max-width:300px!important}.mw-400px{max-width:400px!important}.mw-500px{max-width:500px!important}.mw-600px{max-width:600px!important}.mw-700px{max-width:700px!important}.mw-800px{max-width:800px!important}.mw-900px{max-width:900px!important}.mw-1400px{max-width:1400px!important}.w-id{width:70px!important}.w-pri{width:40px!important}.w-severity{width:50px!important}.w-hour{width:57px!important}.w-date{width:90px!important}.w-status{width:60px!important}.w-resolution,.w-type,.w-user{width:80px!important}.w-p15-f{width:15%!important;min-width:120px!important}.w-p25-f{width:25%!important;min-width:200px!important}.w-p35-f{width:35%!important;min-width:300px!important}.w-p45-f{width:45%!important;min-width:400px!important}.h-5px{height:5px!important}.h-10px{height:10px!important}.h-20px{height:20px!important}.h-30px{height:30px!important}.h-35px{height:35px!important}.h-40px{height:40px!important}.h-45px{height:45px!important}.h-50px{height:50px!important}.h-60px{height:60px!important}.h-70px{height:70px!important}.h-80px{height:80px!important}.h-100px{height:100px!important}.h-120px{height:120px!important}.h-130px{height:130px!important}.h-140px{height:140px!important}.h-150px{height:150px!important}.h-200px{height:200px!important}.pd-0{padding:0!important}.mg-0{margin:0!important}.mgb-20{margin-bottom:20px!important}.mgb-10{margin-bottom:10px!important}.pdb-20{padding-bottom:20px!important}.pdt-20{padding-top:20px!important}.br-0{border-radius:0!important}.bd-0,.bd-none,.borderless{border:none!important}.bg-none{background:0 0!important}.red{color:#ff5d5d!important}.icon-pro-version{font-size:14px!important}.icon-pro-version:before{position:relative;top:-1px;font-size:14px;color:#ff5d5d;content:"\e92b"}.bg-primary{color:#fff;background:#1183fb -webkit-gradient(linear,right top,left top,from(#0a48d1),to(#1183fb));background:#1183fb -webkit-linear-gradient(right,#0a48d1 0,#1183fb 100%);background:#1183fb -o-linear-gradient(right,#0a48d1 0,#1183fb 100%);background:#1183fb linear-gradient(-90deg,#0a48d1 0,#1183fb 100%);background-color:#00b1fd}.bg-secondary{color:#fff;background:#16a8f8}.hl-tutorial{position:relative!important;z-index:1010!important;-webkit-box-shadow:0 0 0 0 #000!important;box-shadow:0 0 0 0 #000!important;-webkit-transition:-webkit-box-shadow 1s!important;-o-transition:box-shadow 1s!important;transition:-webkit-box-shadow 1s!important;transition:box-shadow 1s!important;transition:box-shadow 1s,-webkit-box-shadow 1s!important}.hl-tutorial.hl-in{-webkit-box-shadow:0 0 20px 0 #ffff8d,0 0 0 2px #ffd180,0 0 0 2000px rgba(0,0,0,.2)!important;box-shadow:0 0 20px 0 #ffff8d,0 0 0 2px #ffd180,0 0 0 2000px rgba(0,0,0,.2)!important}.btn.tooltip-tutorial,.hl-tutorial.hl-in:hover{-webkit-box-shadow:0 0 30px 0 #ffff8d,0 0 0 5px #ffd180,0 0 0 2000px rgba(0,0,0,.3)!important;box-shadow:0 0 30px 0 #ffff8d,0 0 0 5px #ffd180,0 0 0 2000px rgba(0,0,0,.3)!important}.tooltip-max .tooltip-inner{max-width:1000px;padding:8px 10px}.transition-all *{-webkit-transition:all .2s!important;-o-transition:all .2s!important;transition:all .2s!important}.scroll-x{overflow-x:auto!important}.scroll-y{overflow-y:auto!important}.divider+.divider{display:none}.ie *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}@font-face{font-family:ZentaoIcon;font-style:normal;font-weight:400;src:url(../fonts/ZentaoIcon.eot?v=1.1.0);src:url(../fonts/ZentaoIcon.eot?#iefix&v=1.1.0) format('embedded-opentype'),url(../fonts/ZentaoIcon.woff?v=1.1.0) format('woff'),url(../fonts/ZentaoIcon.ttf?v=1.1.0) format('truetype'),url(../fonts/ZentaoIcon.svg#regular?v=1.1.0) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:18px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:36px}.icon-3x{font-size:54px}.icon-4x{font-size:72px}.icon-5x{font-size:90px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon.icon-flip-horizontal,.icon.icon-flip-vertical,.icon.icon-rotate-180,.icon.icon-rotate-270,.icon.icon-rotate-90{display:inline-block}.icon-more-circle:before{content:"\e988"}.icon-fields:before{content:"\e989"}.icon-trigger:before{content:"\e98a"}.icon-layout:before{content:"\e98b"}.icon-audit:before{content:"\e98c"}.icon-qc:before{content:"\e986"}.icon-q:before{content:"\e985"}.icon-c:before{content:"\e987"}.icon-menu-report:before{content:"\e974"}.icon-menu-users:before{content:"\e975"}.icon-menu-backend:before{content:"\e976"}.icon-menu-recent:before{content:"\e977"}.icon-menu-doc:before{content:"\e978"}.icon-menu-project:before{content:"\e979"}.icon-menu-my:before{content:"\e97a"}.icon-swap:before{content:"\e97b"}.icon-clock:before{content:"\e97c"}.icon-cost:before{content:"\e97d"}.icon-group:before{content:"\e97e"}.icon-private:before{content:"\e97f"}.icon-menu-collapse:before{content:"\e980"}.icon-menu-expand:before{content:"\e981"}.icon-kanban:before{content:"\e983"}.icon-fullscreen-exit:before{content:"\e972"}.icon-globe:before{content:"\f0ac"}.icon-file:before{content:"\f016"}.icon-file-empty:before{content:"\f016"}.icon-file-text:before{content:"\f0f6"}.icon-file-alt:before{content:"\f15b"}.icon-file-text-alt:before{content:"\f15c"}.icon-file-pdf:before{content:"\f1c1"}.icon-file-word:before{content:"\f1c2"}.icon-file-excel:before{content:"\f1c3"}.icon-file-powerpoint:before{content:"\f1c4"}.icon-file-image:before{content:"\f1c5"}.icon-file-archive:before{content:"\f1c6"}.icon-file-audio:before{content:"\f1c7"}.icon-file-video:before{content:"\f1c8"}.icon-file-code:before{content:"\f1c9"}.icon-pencil-alt:before{content:"\e984"}.icon-share:before{content:"\f064"}.icon-severity:before{content:"\e973"}.icon-book:before{content:"\f02d"}.icon-treemap-alt:before{content:"\e971"}.icon-collapse-alt:before{content:"\e6f2"}.icon-expand-alt:before{content:"\e6f1"}.icon-more:before{content:"\e744"}.icon-angle-double-right:before{content:"\f101"}.icon-certificate:before{content:"\f0a3"}.icon-bell:before{content:"\e7f5"}.icon-format-bold:before{content:"\e953"}.icon-format-header-pound:before{content:"\e954"}.icon-format-italic:before{content:"\e955"}.icon-format-list-bulleted:before{content:"\e956"}.icon-format-list-numbers:before{content:"\e969"}.icon-format-quote-close:before{content:"\e96a"}.icon-fullscreen:before{content:"\e96b"}.icon-image:before{content:"\e96c"}.icon-table-large:before{content:"\e96d"}.icon-columns:before{content:"\f0db"}.icon-cancel:before{content:"\e951"}.icon-ban-circle:before{content:"\e951"}.icon-persons:before{content:"\e94d"}.icon-eye:before{content:"\e94e"}.icon-unlock:before{content:"\e94f"}.icon-eye-off:before{content:"\e96e"}.icon-lock:before{content:"\e950"}.icon-move:before{content:"\e94c"}.icon-help:before{content:"\e968"}.icon-folder-account:before{content:"\e942"}.icon-folder-move:before{content:"\e960"}.icon-folder-plus:before{content:"\e961"}.icon-folder-upload:before{content:"\e962"}.icon-folder-star:before{content:"\e963"}.icon-folder-edit:before{content:"\e964"}.icon-folder-download:before{content:"\e965"}.icon-folder-outline:before{content:"\e966"}.icon-restart:before{content:"\e95e"}.icon-history:before{content:"\e95f"}.icon-home:before{content:"\e958"}.icon-pencil:before{content:"\e254"}.icon-angle-down:before{content:"\e313"}.icon-angle-left:before{content:"\e314"}.icon-angle-right:before{content:"\e315"}.icon-angle-top:before{content:"\e316"}.icon-first-page:before{content:"\e5dc"}.icon-last-page:before{content:"\e5dd"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-zentao-alt:before{content:"\e900"}.icon-zentao:before{content:"\e901"}.icon-severity-solid:before{content:"\e902"}.icon-bar-chart:before{content:"\e903"}.icon-import:before{content:"\e904"}.icon-export:before{content:"\e905"}.icon-printer:before{content:"\e906"}.icon-hand-right:before{content:"\e907"}.icon-hand-right-alt:before{content:"\e96f"}.icon-checked:before{content:"\e908"}.icon-off:before{content:"\e909"}.icon-start:before{content:"\e90a"}.icon-play:before{content:"\e90a"}.icon-time:before{content:"\e90b"}.icon-edit:before{content:"\e90c"}.icon-trash:before{content:"\e90d"}.icon-link:before{content:"\e90e"}.icon-unlink:before{content:"\e90f"}.icon-bullhorn:before{content:"\e910"}.icon-bug:before{content:"\e911"}.icon-list-alt:before{content:"\e912"}.icon-fork:before{content:"\e913"}.icon-change:before{content:"\e970"}.icon-glasses:before{content:"\e914"}.icon-sitemap:before{content:"\e915"}.icon-plus-sign:before{content:"\e916"}.icon-pluses:before{content:"\e917"}.icon-flag-alt:before{content:"\e918"}.icon-magic:before{content:"\e919"}.icon-treemap:before{content:"\e91a"}.icon-confirm:before{content:"\e91b"}.icon-lightbulb:before{content:"\e91c"}.icon-delay:before{content:"\e91d"}.icon-calendar:before{content:"\e91d"}.icon-pause:before{content:"\e91e"}.icon-ban:before{content:"\e91f"}.icon-plus-bold:before{content:"\e920"}.icon-copy:before{content:"\e921"}.icon-refresh:before{content:"\e922"}.icon-arrow-up:before{content:"\e923"}.icon-arrow-down:before{content:"\e924"}.icon-arrow-left:before{content:"\e952"}.icon-arrow-right:before{content:"\e93e"}.icon-plus:before{content:"\e925"}.icon-minus:before{content:"\e926"}.icon-exchange:before{content:"\e927"}.icon-search:before{content:"\e928"}.icon-envelope-o:before{content:"\e92a"}.icon-check:before{content:"\e5ca"}.icon-circle:before{content:"\e836"}.icon-up-circle:before{content:"\e92b"}.icon-right-circle:before{content:"\e92c"}.icon-down-circle:before{content:"\e92d"}.icon-left-circle:before{content:"\e92e"}.icon-check-circle:before{content:"\e92f"}.icon-exclamation-sign:before{content:"\e930"}.icon-unfold-all:before{content:"\e931"}.icon-fold-all:before{content:"\e932"}.icon-plus-sm:before{content:"\e933"}.icon-chevron-left:before{content:"\e934"}.icon-chevron-right:before{content:"\e935"}.icon-close:before{content:"\e936"}.icon-flag:before{content:"\e937"}.icon-check-sign:before{content:"\e938"}.icon-minus-sign:before{content:"\e939"}.icon-bars-sign:before{content:"\e93a"}.icon-cog:before{content:"\e93b"}.icon-color:before{content:"\e93c"}.icon-paper-clip:before{content:"\e93d"}.icon-back:before{content:"\e93f"}.icon-chat-line:before{content:"\e940"}.icon-person:before{content:"\e941"}.icon-stack:before{content:"\e943"}.icon-cube:before{content:"\e967"}.icon-folder:before{content:"\e944"}.icon-folder-o:before{content:"\e945"}.icon-folder-open-o:before{content:"\e946"}.icon-folder-open:before{content:"\e947"}.icon-bars:before{content:"\e948"}.icon-cards-view:before{content:"\e949"}.icon-star-empty:before{content:"\e94a"}.icon-star:before{content:"\e94b"}.icon-ellipsis-v:before{content:"\e5d4"}.icon-spinner-indicator:before{content:"\e982"}.icon-text:before{content:"\e929"}.icon-code:before{content:"\e957"}.icon-chevron-double-up:before{content:"\e959"}.icon-chevron-double-down:before{content:"\e95a"}.icon-chart-pie:before{content:"\e95b"}.icon-chart-line:before{content:"\e95c"}.icon-chart-bar:before{content:"\e95d"}.icon-sm:before{font-size:14px;vertical-align:10%}.icon-qc{position:relative}.icon-qc:before{width:1em;color:#7cb938;content:"\e985"}.icon-qc:after{position:absolute;top:0;left:0;width:1em;height:1em;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#36a742;text-transform:none;content:"\e987";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:18px;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,border,outline,opacity,-webkit-box-shadow;-o-transition-property:background,border,box-shadow,outline,opacity;transition-property:background,border,outline,opacity,-webkit-box-shadow;transition-property:background,border,box-shadow,outline,opacity;transition-property:background,border,box-shadow,outline,opacity,-webkit-box-shadow}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#3c4353;text-decoration:none}.btn:active{text-decoration:none;background-image:none;outline:0;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.1)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:grayscale(1);-webkit-box-shadow:none;box-shadow:none;opacity:.5;-webkit-filter:grayscale(1)}.btn{color:#3c4353;background-color:#fff;border-color:#d6dae3}.btn.active,.btn.hover,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#3c4353;background-color:rgba(255,255,255,.8);border-color:#b8bfce}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#f2f2f2;background-image:none;border-color:#b8bfce}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{color:rgba(60,67,83,.3);background-color:#fff;border-color:#d6dae3}.btn-gray{color:#82899f;background-color:#f1f1f1;border-color:#f1f1f1}.btn-gray.active,.btn-gray.hover,.btn-gray:active,.btn-gray:focus,.btn-gray:hover,.open .dropdown-toggle.btn-gray{color:#82899f;background-color:rgba(241,241,241,.8);border-color:#d8d8d8}.btn-gray.active,.btn-gray:active,.open .dropdown-toggle.btn-gray{background-color:#e4e4e4;background-image:none;border-color:#d8d8d8}.btn-gray.disabled,.btn-gray.disabled.active,.btn-gray.disabled:active,.btn-gray.disabled:focus,.btn-gray.disabled:hover,.btn-gray[disabled],.btn-gray[disabled].active,.btn-gray[disabled]:active,.btn-gray[disabled]:focus,.btn-gray[disabled]:hover,fieldset[disabled] .btn-gray,fieldset[disabled] .btn-gray.active,fieldset[disabled] .btn-gray:active,fieldset[disabled] .btn-gray:focus,fieldset[disabled] .btn-gray:hover{color:rgba(130,137,159,.3);background-color:#f1f1f1;border-color:#f1f1f1}.btn-primary{color:#fff;background-color:#0c64eb;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(12,100,235,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0b5ad3;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#0c64eb;border-color:transparent}.btn-secondary{color:#fff;background-color:#16a8f8;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(22,168,248,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#079ced;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#16a8f8;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9800;border-color:transparent}.btn-warning.active,.btn-warning.hover,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:rgba(255,152,0,.8);border-color:rgba(0,0,0,0)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e68900;background-image:none;border-color:rgba(0,0,0,0)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{color:rgba(255,255,255,.3);background-color:#ff9800;border-color:transparent}.btn-danger{color:#fff;background-color:#ff5d5d;border-color:transparent}.btn-danger.active,.btn-danger.hover,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:rgba(255,93,93,.8);border-color:rgba(0,0,0,0)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#ff4343;background-image:none;border-color:rgba(0,0,0,0)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{color:rgba(255,255,255,.3);background-color:#ff5d5d;border-color:transparent}.btn-success{color:#fff;background-color:#00da88;border-color:transparent}.btn-success.active,.btn-success.hover,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:rgba(0,218,136,.8);border-color:rgba(0,0,0,0)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#00c178;background-image:none;border-color:rgba(0,0,0,0)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{color:rgba(255,255,255,.3);background-color:#00da88;border-color:transparent}.btn-info{color:#0c64eb;background-color:#e9f2fb;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#0c64eb;background-color:rgba(233,242,251,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#d3e5f7;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(12,100,235,.3);background-color:#e9f2fb;border-color:transparent}.btn-link{padding-right:6px;padding-left:6px;font-weight:400;color:#3c495c;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#222;background:#f1f1f1;background:rgba(0,0,0,.075)}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#cbd0db;text-decoration:none}.btn-lg{padding:11px 16px;font-size:14px;line-height:18px;border-radius:4px}.btn-mini,.btn-sm{padding:3px 8px;font-size:12px;line-height:18px;border-radius:4px}.btn-mini,.btn-xs{padding:0 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-wide{min-width:120px}.btn-limit{max-width:180px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-limit>.caret{position:absolute;top:14px;right:8px}.btn-circle{border-radius:17px}.btn>.label-icon{top:3px;padding:3px;margin:-2px;background-color:rgba(0,0,0,.2);border-radius:12px}.btn>.label-icon>.icon{font-size:16px;line-height:18px}.btn>.icon+.text{margin-left:5px}.btn.btn-sm.btn-circle{border-radius:12px}.btn.btn-sm>.label-icon{top:2px;width:20px;height:20px;padding:1px;line-height:20px}.btn.btn-sm>.label-icon>.icon{position:relative;top:-1px;display:inline-block;font-size:14px;line-height:18px}.btn-icon-left{position:relative;padding-left:35px;overflow:hidden;text-align:right}.btn-icon-left>.label-icon{position:absolute;left:5px;margin:0}.btn-icon-left>.icon{position:absolute;top:0;bottom:0;left:0;display:block;width:30px;line-height:30px;color:#16a8f8;text-align:center;background:#e9f2fb}.btn-icon-left.btn-sm{padding-left:28px}.btn-icon-left.btn-sm>.label-icon{left:2px}.btn-icon-left.btn-sm>.icon{width:24px;line-height:24px}.btn-icon-right{position:relative;padding-right:35px;text-align:left}.btn-icon-right>.label-icon{position:absolute;right:5px;margin:0}.btn-icon-right.btn-sm{padding-right:28px}.btn-icon-right.btn-sm>.label-icon{right:2px}.btn-icon{min-width:32px;padding-right:0;padding-left:0}.btn-icon.btn-sm{width:24px;min-width:24px;height:24px}.btn-group{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group>.btn-group{float:left}.btn-group>.btn{border-radius:0}.btn-group>.btn:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.btn-group>.btn:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.dropdown{float:left;margin-right:10px}.btn-toolbar>.btn-group:last-child,.btn-toolbar>.btn:last-child,.btn-toolbar>.dropdown:last-child{margin-right:0}.btn-toolbar>.divider{float:left;height:20px;margin:7px 5px 4px 10px;border-left:1px solid rgba(0,0,0,.1)}.btn-toolbar .space{float:left;min-height:1px;margin:0 10px 0 10px}.btn-toolbar .input-control{float:left;width:120px}.btn-toolbar .page-title{float:left;line-height:34px}.btn-toolbar .page-title .text{font-size:14px;font-weight:700}.btn-toolbar .page-title .label{top:-2px;margin-right:10px}.btn-toolbar .divider+.page-title{margin-left:15px}.btn-active-line{position:relative;font-weight:700;color:#0c64eb}.btn-active-line:after{position:absolute;right:5px;bottom:1px;left:5px;display:block;content:' ';border-bottom:2px solid #0c64eb}.btn-active-line:hover{color:#0c64eb}.btn-active-text .text{position:relative;top:-1px;display:inline-block;font-weight:700;color:#0c64eb}.btn-active-text .text:after{position:absolute;bottom:-5px;display:block;width:100%;content:' ';border-bottom:2px solid #0c64eb}.angle-btn{position:relative;padding:1px;background:#fff;border:1px solid #cbd0db;border-right:none}.btn-toolbar>.angle-btn{margin-right:8px}.angle-btn:after,.angle-btn:before{position:absolute;top:-1px;right:-8px;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #cbd0db;border-style:solid;border-width:17px 0 17px 8px}.angle-btn:after{right:-7px;border-color:transparent transparent transparent #fff;border-width:17px 0 17px 8px}.angle-btn .btn{padding:6px;font-weight:700;background:#fff;border:none;border-radius:4px!important}.angle-btn .btn.btn-limit{padding-right:16px}.angle-btn .btn.btn-limit>.caret{right:4px}.angle-btn+.angle-btn{border-left:none}.angle-btn+.angle-btn>.btn-group:first-child{padding-left:8px}.angle-btn+.angle-btn>.btn-group:first-child:after,.angle-btn+.angle-btn>.btn-group:first-child:before{position:absolute;top:-2px;left:0;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #cbd0db;border-style:solid;border-width:17px 0 17px 8px}.angle-btn+.angle-btn>.btn-group:first-child:after{left:-1px;border-color:transparent transparent transparent #fff;border-width:17px 0 17px 8px}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#0c64eb}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#0c64eb}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #0c64eb}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #0c64eb}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#cbd0db}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#3c4353}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #cbd0db}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #cbd0db!important}.nav>li>.btn.btn-primary{color:#fff}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(12,100,235,.8)}.btn.btn-action,.c-actions .btn{display:inline-block;width:26px;padding:2px;overflow:hidden;line-height:20px;color:#16a8f8;background:0 0;border-color:transparent}.btn.btn-action .icon,.c-actions .btn .icon{font-size:18px}.btn.btn-action:hover,.c-actions .btn:hover{color:#0c64eb;background-color:#d3e5f7}.c-actions .btn+.btn{margin-left:-4px}.label{position:relative;display:inline-block;padding:3px 5px;font-size:12px;font-weight:400;vertical-align:middle;border-radius:2px}.label+.label{margin-left:4px}.label-pale{background:#bed8f3!important}.label-badge{border-radius:9px}.label-light{color:#3c4353;background-color:#ddd}.label-primary{background:#0c64eb!important}.label-gray{color:#878da0;background:#e8ebef}.label-outline.label-danger{color:#ff5d5d;background:#ffebee;border-color:rgba(255,93,93,.25)}.label-outline.label-light{color:#838a9d;background:#f2f5fb;border-color:#e1e5ee}.label-primary.label-outline{background:#e9f2fb!important;border-color:rgba(12,100,235,.25)}.label-outline.label-success{background:#e8f5e9;border-color:rgba(0,218,136,.25)}.label-outline.label-info{border-color:rgba(33,150,243,.25)}.label-outline.label-warning{border-color:rgba(255,152,0,.25)}.label-dot{position:relative;top:-1px;padding:0;border-radius:50%}.label-dot+.status-text{display:inline-block;margin-left:5px}.label-icon{min-width:18px;padding:0;line-height:18px;border-radius:10px}.label-id{display:inline-block;min-width:30px;padding:0 5px;font-size:12px;line-height:16px;color:#838a9d;text-align:center;vertical-align:middle;background-color:transparent;border:1px solid #838a9d;border-radius:2px}.pri-1,.todo-pri-1{color:#ff5d5d}[class*=" status-"],[class^=status-]{color:#3c4353}.status-changed,.status-delayed,.status-doing,.status-fail,.status-investigate{color:#ff5d5d}.status-changed>.label-dot,.status-delayed>.label-dot,.status-doing>.label-dot,.status-fail>.label-dot,.status-investigate>.label-dot{background-color:#ff5d5d}.status-wait{color:#838a9d}.status-wait>.label-dot{background-color:#7ec5ff}.status-unclosed{color:#838a9d}.status-unclosed>.label-dot{background-color:#0c64eb}.status-done,.status-normal,.status-pass,.status-resolved{color:#43a047}.status-done>.label-dot,.status-normal>.label-dot,.status-pass>.label-dot,.status-resolved>.label-dot{background-color:#00da88}.status-postpone{color:#838a9d}.status-postpone>.label-dot{background-color:#ff5d5d}.status-blocked{position:relative;left:-5px;display:inline-block;padding:0 5px;line-height:20px;color:#3c4353;background:#fff3e0;border-radius:10px}.status-blocked>.label-dot{background-color:#ff9800}.status-pause,.status-suspended{color:#ff9800}.status-pause>.label-dot,.status-suspended>.label-dot{background-color:#ff9800}.status-active.status-bug,.status-draft{color:#8666b8}.status-active.status-bug>.label-dot,.status-draft>.label-dot{background-color:#8666b8}.status-closed,.status-terminate{color:#838a9d}.status-closed>.label-dot,.status-terminate>.label-dot{background-color:#838a9d}.status-cancel{color:#838a9d}.status-cancel>.label-dot{background-color:#cbd0db}.label-pri{display:inline-block;min-width:20px;max-width:67px;height:20px;padding:0 4px;overflow:hidden;line-height:17px;color:#838a9d;text-align:center;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;border:2px solid #838a9d;border-radius:10px}.label-selector>.label-pri,[class*=label-pri-]{color:#158af1;border-color:#2098ee}.label-pri-1,.label-selector>.label-pri[data-value="1"]{color:#d50000;border-color:#d50000}.label-pri-2,.label-selector>.label-pri[data-value="2"]{color:#ff9800;border-color:#ff9800}.label-pri-3,.label-selector>.label-pri[data-value="3"]{color:#2098ee;border-color:#2098ee}.label-pri-4,.label-selector>.label-pri[data-value="4"]{color:#009688;border-color:#009688}.label-pri-5,.label-selector>.label-pri[data-value="5"]{color:#838a9d;border-color:#838a9d}.label-pri-0,.label-selector>.label-pri.active[data-value="0"]{color:#d5d9df;border-color:#d5d9df}.label-severity{position:relative;display:inline-block;width:24px;height:20px;font-weight:bolder;text-align:center;vertical-align:middle}.label-severity:before{position:absolute;top:-3px;left:0;z-index:0;display:block;font-family:ZentaoIcon;font-size:18px;font-size:24px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:inherit;text-transform:none;content:"\e973";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.label-severity:after{position:absolute;top:7px;left:0;z-index:1;display:block;width:24px;font-size:12px;line-height:12px;text-align:center;content:attr(data-severity)}.label-severity[data-severity],.label-severity[data-value]{color:#ccc}.label-severity[data-severity="0"],.label-severity[data-value="0"]{color:#ccc}.label-severity[data-severity="0"]:after,.label-severity[data-value="0"]:after{display:none}.label-severity[data-severity="1"],.label-severity[data-value="1"]{color:#c62828}.label-severity[data-severity="2"],.label-severity[data-value="2"]{color:#ff8f00}.label-severity[data-severity="3"],.label-severity[data-value="3"]{color:#fdd835}.label-severity[data-severity="4"],.label-severity[data-value="4"]{color:#cddc39}.label-severity[data-severity="5"],.label-severity[data-value="5"]{color:#8bc34a}.label-severity-custom[data-severity]{color:#d5d9df}.label-severity-custom[data-severity="1"]{color:#c62828}.label-severity-custom[data-severity="2"]{color:#ff8f00}.label-severity-custom[data-severity="3"]{color:#fdd835}.label-severity-custom[data-severity="4"]{color:#cddc39}.label-severity-custom[data-severity="5"]{color:#8bc34a}.label-selector>.label{display:inline-block;min-width:24px;height:24px;padding:0 5px;font-size:14px;line-height:20px;text-align:center;cursor:pointer;background:0 0;border:2px solid #d5d9df;border-radius:15px}.label-selector>.label+.label{margin-left:10px}.label-selector>.label.empty{border-color:transparent}.label-selector>.label.label-severity{font-size:12px;line-height:28px;border-color:transparent}.label-selector>.label.label-severity:before{top:-2px;left:-2px}.label-selector>.label.label-severity:after{display:none}.label-selector>.label.label-severity.active{background:0 0;filter:none;-webkit-filter:none}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{margin-top:2px}.ie .checkbox input[type=checkbox],.ie .checkbox-inline input[type=checkbox],.ie .radio input[type=radio],.ie .radio-inline input[type=radio]{margin-top:4px}.is-firefox .checkbox input[type=checkbox],.is-firefox .checkbox-inline input[type=checkbox],.is-firefox .radio input[type=radio],.is-firefox .radio-inline input[type=radio]{margin-top:3px}.checkbox-primary,.radio-primary{position:relative;display:block;vertical-align:middle}.checkbox-primary.inline-block,.radio-primary.inline-block{display:inline-block}.checkbox-primary.inline-block+.inline-block,.radio-primary.inline-block+.inline-block{margin-left:15px}.checkbox-primary>input,.radio-primary>input{position:absolute;top:0;left:0;z-index:3;width:100%;height:100%;margin:0;opacity:0}.checkbox-primary>label,.radio-primary>label{display:block;height:20px;padding-left:30px;margin:0;font-weight:400;line-height:20px;cursor:pointer}.checkbox-primary>label:after,.checkbox-primary>label:before,.radio-primary>label:after,.radio-primary>label:before{position:absolute;top:1px;right:0;left:0;display:block;width:18px;height:18px;line-height:18px;text-align:center;content:' ';border-radius:3px}.checkbox-primary>label:after,.radio-primary>label:after{z-index:1;border:2px solid #eee;border-color:rgba(0,0,0,.15);-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:border,background-color;-o-transition-property:border,background-color;transition-property:border,background-color}.checkbox-primary>label:before,.radio-primary>label:before{top:3px;z-index:2;font-family:ZentaoIcon;font-size:18px;font-size:14px;font-style:normal;font-weight:400;font-weight:900;font-variant:normal;line-height:1;text-transform:none;content:"\e5ca";opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:opacity,-webkit-transform;-o-transition-property:opacity,-o-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform,-o-transform;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#00da88;border-color:#00da88;border-width:4px}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#00da88;-webkit-box-shadow:0 0 0 3px rgba(0,218,136,.2);box-shadow:0 0 0 3px rgba(0,218,136,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#00da88}.checkbox-primary.checkbox-right>label,.radio-primary.checkbox-right>label{padding:0 30px 0 0}.checkbox-primary.checkbox-right>label:after,.checkbox-primary.checkbox-right>label:before,.radio-primary.checkbox-right>label:after,.radio-primary.checkbox-right>label:before{right:0;left:auto}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5!important;border-color:#bbb!important}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb!important}.radio-primary>label:after{border-radius:50%}.radio-primary>label:before{top:7px;left:6px;width:6px;height:6px;content:' ';border:none;border-radius:50%}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:transparent;border-color:#00da88;border-width:2px}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#00da88}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:transparent;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.panel{position:relative;margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.panel-body{padding:20px}.panel-body.has-table{padding:10px}.panel-body.has-table .table{margin-bottom:0;table-layout:fixed}.panel-heading{padding:12px 48px 12px 20px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading+.panel-body{padding-top:0}.panel-title{font-size:14px;font-weight:700;line-height:20px}.panel-title .label{top:-1px}.panel-actions{position:absolute;top:0;right:0;padding:7px 8px}.panel:hover .panel-actions{z-index:10}.panel-actions>li>a{display:inline-block;min-width:30px;padding:0 5px;line-height:30px;color:#a6aab8}.panel-actions>li>a:hover{color:#3c495c;text-decoration:initial;background-color:#f1f1f1}.panel-actions .btn-icon{color:#a6aab8}.panel-actions .btn.text-primary{color:#0c64eb}.panel .empty-tip{padding:30px 10px 50px;font-size:14px;color:#838a9d;text-align:center}.progress-text-left{position:relative;margin:7px 0;margin-left:35px;overflow:visible}.progress-text-left .progress-text{position:absolute;top:-7px;left:-35px;display:block;width:35px;height:20px;padding-right:5px;line-height:20px;color:#838a9d;text-align:right}.chart-color{width:20px}.chart-color-dot{display:inline-block;width:10px;height:10px;border-radius:50%}.chart-row{margin-top:10px}.chart-row+.chart-row{padding-top:10px;border-top:1px solid #eee}.chart-wrapper{padding:10px 5px;background:#eee}.chart-wrapper>h4{margin:5px 0 10px}.table-wrapper{max-height:250px;overflow:auto}.table-wrapper .table{margin:0}.progress-pie{position:relative}.progress-pie .progress-info{position:absolute;top:0;left:0;width:100%;height:100%;padding-top:25px;text-align:center}.progress-pie .progress-info>small{display:block;line-height:14px;color:#a6aab8}.progress-pie .progress-info>strong{display:block;font-size:36px;line-height:40px}.progress-pie .progress-info>strong>small{font-size:20px}.progress-pie-120 .progress-info{padding-top:30px}.progress-pie-120 .progress-info>small{line-height:18px}.progress-pie-50 .progress-info{padding-top:4px}.progress-pie-50 .progress-info>strong{font-size:20px;font-weight:400}.progress-pie-50 .progress-info>strong>small{font-size:14px}.progress-pie[data-value="100"] .progress-info>strong{-webkit-transform:scale(.7);-ms-transform:scale(.7);-o-transform:scale(.7);transform:scale(.7)}.status-bars{display:table;width:100%;height:140px;padding:5px;padding-top:50px;margin:0;overflow:hidden}.status-bars>li{position:relative;display:table-cell;text-align:center;vertical-align:bottom}.status-bars .bar{position:absolute;bottom:20px;left:50%;display:block;width:10px;margin-left:-5px;background:#0c64eb;border-radius:5px 5px 0 0}.status-bars .bar:after{position:absolute;right:-50px;bottom:0;left:-50px;display:block;height:1px;content:' ';background:#eee}.status-bars .title{font-size:12px;font-weight:400;color:#a6a8b6}.status-bars .value{position:relative;top:-20px;left:-20px;display:inline-block;width:50px;font-size:16px;font-weight:700;text-align:center}.status-bars-h{display:block;padding-right:50px;padding-left:60px;list-style:none}.status-bars-h>li{position:relative;height:40px;border-left:1px solid #eee}.status-bars-h .bar{position:relative;top:15px;display:block;height:10px;line-height:20px;background:#0c64eb;border-radius:0 5px 5px 0}.status-bars-h .title{position:absolute;top:-5px;left:-60px;width:60px;padding-right:10px;font-size:12px;color:#a6a8b6;text-align:right}.status-bars-h .value{position:absolute;top:-5px;right:-50px;display:block;width:40px;font-size:14px;font-weight:700;text-align:left;white-space:nowrap}.messager{border-radius:4px;-webkit-box-shadow:0 4px 16px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);box-shadow:0 4px 16px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1)}.messager-icon{vertical-align:middle}.messager-icon>.icon{font-size:24px}.messager-content{padding:18px 20px;font-size:18px;line-height:30px}.messager-content>.icon{font-size:28px;line-height:30px}.messager-actions{vertical-align:middle}.messagger-zt{color:#3c4353;background-color:#fff}.messagger-zt .messager-icon>.icon{color:#0c64eb}.messagger-zt .messager-actions>.action{color:#838a9d}.messagger-zt.messager-success .messager-icon>.icon{color:#00da88}.messagger-zt.messager-danger .messager-icon>.icon{color:#ff5d5d}.messagger-zt.messager-warning .messager-icon>.icon{color:#ff9800}.messagger-zt.messager-info .messager-icon>.icon{color:#2196f3}.tree{padding-left:0;overflow:hidden}.tree ul{position:relative;display:none;padding-left:0}.tree li{position:relative;padding:2px 0 2px 15px;list-style:none}.tree li.heading{padding-left:5px;color:#3c495c}.tree li>a{display:block;max-width:90%;padding:2px 6px;color:#3c495c;word-break:break-all}.tree li>a:hover{color:#3c4353}.tree li>a.tree-toggle:hover{background:0 0}.tree li.active>a{position:relative;font-weight:700;color:#0c64eb}.tree li>.list-toggle{position:absolute;top:1px;left:1px;z-index:10;width:20px;font-size:14px;line-height:22px;color:#cbd0db;text-align:center;cursor:pointer;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.tree li>.list-toggle:before{content:"\f0da"}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#0c64eb}.tree li.has-active-item>.list-toggle{color:#3c4353}.tree li.has-list.open>ul{display:block}.tree li.has-list.open>.list-toggle{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.tree li.has-list.open:before{position:absolute;top:16px;bottom:-5px;left:10px;display:block;content:' ';border-left:1px solid #d8d8d8}.tree-actions{display:inline-block;margin-left:5px;vertical-align:middle}.tree-actions a{display:inline-block;margin-left:5px;font-size:13px;opacity:.6}.tree-actions a:hover{opacity:1}.tree li>.module-name{color:#3c495c;vertical-align:middle}.tree li>.module-name:hover{background-color:#f0f2f5}.tree li>.module-name:hover>a{color:#3c4353}.treemap-node-fold-icon:before{position:relative;left:-4px;min-width:18px}.dropdown-menu{padding:5px 0;border-color:rgba(0,0,0,.1)}.dropdown-menu>li{padding:0 10px}.dropdown-menu>li>a{padding:2px 10px;margin:5px 0;border-radius:3px}.dropdown-menu>li>a>.icon{position:relative;left:-5px;opacity:.5}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{position:relative;color:#fff;background-color:#16a8f8}.dropdown-menu>li.selected>a:after{position:absolute;top:2px;right:4px;display:block;font-family:ZentaoIcon;font-size:18px;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:20px;text-transform:none;content:"\e5ca";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dropdown-menu>li.divider{margin:10px}.dropdown-submenu>a:after{margin-right:-5px}.dropdown-submenu>.dropdown-menu.pull-left{margin-left:-1px}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#3c4353;background-color:#e9f2fb}.dropdown-submenu:hover>a:after{border-left-color:#0c64eb}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager .btn{padding:3px 10px}.pager .btn .caret{opacity:.7}.pager>li>.pager-label{padding:2px;line-height:20px}.pager>li>.pager-item{min-width:20px;padding:1px;margin:2px 0;font-size:16px;line-height:20px;text-align:center;background:0 0;border-color:transparent}.pager>li>.pager-item:hover{background-color:rgba(0,0,0,.1)}.pager>li>.pager-item>.icon{position:relative;top:-1px}.pager>li>.btn:hover,.pager>li>a:hover{background:rgba(0,0,0,.1)}.pager>li.disabled>a.pager-item{background:0 0;border-color:transparent;opacity:.5}.pager>li.active>a{background-color:#16a8f8}.pager>li .btn-group .btn{padding:1px;margin:1px 0;border-radius:4px}.pager .dropdown-menu{width:200px}.pager .dropdown-menu>li{float:left;width:33.333333%}.modal-dialog{width:900px;max-width:1360px;border:none;border-radius:0;-webkit-box-shadow:0 0 20px 0 rgba(0,0,0,.25);box-shadow:0 0 20px 0 rgba(0,0,0,.25)}.modal-dialog.modal-md{width:700px}.modal-dialog.modal-xs{width:400px}.modal-dialog.modal-sm{width:500px}.modal-dialog.modal-lg{width:1200px}.modal-dialog.modal-fullscreen{position:fixed;max-width:initial}.modal-header{padding:20px 0;margin:0 20px}.modal-header>.close{color:#838a9d;text-shadow:0 1px 0 rgba(255,255,255,.85);opacity:1}.modal-header>.close:hover{color:#222}.modal-footer{padding:20px 0;margin:0 20px}.modal-title{font-size:16px;font-weight:400;line-height:20px}.modal-actions{position:absolute;top:16px;right:16px}.modal-actions .divider{position:relative;top:5px;display:inline-block;width:0;height:20px;margin:0 10px;border-left:#eee 1px solid}.modal-actions>.dropdown{display:inline-block}.modal-body{padding:20px}.modal-iframe .modal-body>iframe{border-radius:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-3%);-ms-transform:translate(0,-3%);-o-transform:translate(0,-3%);transform:translate(0,-3%)}.modal.fade.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-simple .modal-footer{padding-top:0;border-top:none}.modal-iframe .modal-header{position:relative;z-index:10;min-height:0;padding:0;border:none}.modal-iframe .modal-title{display:none}.modal-iframe .modal-header .close{position:absolute;top:12px;right:10px;font-size:32px;font-weight:200}.modal-iframe .modal-dialog{overflow:hidden}.modal-inverse .modal-header>.close{color:rgba(255,255,255,.7);text-shadow:none}.modal-inverse .modal-header>.close:hover{color:#fff}.modal-scroll-inside>.modal-dialog{max-height:100%}.hide-modal-close .modal-iframe .modal-header .close{display:none}.tile{text-align:center}.tile-title{line-height:20px;color:#3c495c}.tile-amount{font-size:32px;font-weight:700;line-height:56px}.timeline>li{position:relative;list-style:none}.timeline>li:before,.timeline>li>a:after,.timeline>li>div:after{position:absolute;left:-20px;display:block;width:15px;height:15px;content:' ';border-radius:50%}.timeline>li:before{top:12px;left:-16px;z-index:3;width:7px;height:7px;background-color:#cbd0db;border:none;border:1px solid #cbd0db}.timeline>li>a:after,.timeline>li>div:after{top:11px;left:-17px;z-index:3;width:9px;height:9px;background-color:#0c64eb;border-radius:50%;opacity:0}.timeline>li+li:after{position:absolute;top:-12px;bottom:20px;left:-13px;z-index:1;display:block;content:' ';border-left:1px solid #eee}.timeline>li.active>a:after,.timeline>li.active>div:after{opacity:1}.timeline>li.active:before{top:8px;left:-20px;width:15px;height:15px;background-color:rgba(12,100,235,.2);border:none}.timeline>li>a,.timeline>li>div{display:block;padding:5px;line-height:20px}.timeline>li.active>a{color:#3c4353}.timeline-tag{position:absolute;top:5px;left:-115px;font-size:12px}.timeline-tag-left{padding-left:115px}.timeline-sm{font-size:12px}.timeline-sm>li:before,.timeline-sm>li>a:after,.timeline-sm>li>div:after{top:10px;left:-20px;width:11px;height:11px}.timeline-sm>li.active:before,.timeline-sm>li:before{top:10px;left:-18px;width:11px;height:11px;background:0 0;border:1px solid #eee}.timeline-sm>li>a,.timeline-sm>li>div{line-height:20px}.timeline-sm>li>a:after,.timeline-sm>li>div:after{top:13px;left:-15px;width:5px;height:5px}.form-control{-webkit-box-shadow:none;box-shadow:none}.form-horizontal .form-group>label{padding-right:0}.form-actions{margin-top:20px;margin-bottom:0}.form-actions .btn{margin-right:10px}form label{font-weight:400;color:#3c495c}.form-group .btn+.btn{margin-left:5px}.table-form{margin-bottom:0;table-layout:fixed}.table-form>thead>tr>th.required:after{position:relative;top:3px;right:auto;left:4px;display:inline-block;vertical-align:middle}.table-form>tbody>tr>td,.table-form>tbody>tr>th,.table-form>tfoot>tr>td,.table-form>thead>tr>th{padding:7px;vertical-align:middle;border-bottom:none}.table-form>tfoot>tr>td{padding:20px 7px 10px}.table-form>tbody>tr>th{width:100px;font-weight:700;text-align:right}.table-form .input-group{width:100%}.chosen-container-single .chosen-single{position:relative}.chosen-container-single .chosen-single>span{height:20px;line-height:20px;white-space:normal}.chosen-container-single .chosen-single div b{position:relative;top:1px;color:#cbd0db}.chosen-container-single .chosen-search:before{top:8px;right:15px}.chosen-container-multi .chosen-choices li.search-choice{font-size:13px;background:#eee;border-color:#cbd0db;-webkit-box-shadow:none;box-shadow:none}.chosen-container-single .chosen-search input[type=text]{height:30px;padding:3px 25px 3px 5px}.chosen-container-single .chosen-search{padding:3px 10px 0}.chosen-container-single .chosen-single{overflow:visible}.chosen-container .chosen-results{max-height:245px;padding:10px}.chosen-container .chosen-results>li{border-radius:4px}.chosen-container .chosen-results li.highlighted em{color:#fff}.table-responsive .chosen-container .chosen-results{max-height:200px}.chosen-compact.chosen-container-single .chosen-single>.chosen-search{top:-2px;right:-1px;bottom:-1px;left:-1px;display:none;height:auto;padding:0;opacity:0}.chosen-compact.chosen-container-single .chosen-single>.chosen-search>input{height:31px;padding:5px 26px 5px 8px;font-size:inherit;line-height:20px}.chosen-compact.chosen-container-single .chosen-single>.chosen-search:before{top:7px;right:8px}.datetimepicker{padding:10px}.datetimepicker td.day.today{background-color:#f77}.datetimepicker td.day.active{background-color:#16a8f8}.datetimepicker tfoot th,.datetimepicker thead th{color:#838a9d}.input-control .colorpicker{top:0;z-index:auto;opacity:1}.input-control .colorpicker .btn{padding:5px}.input-control .input-control-icon-right.btn{top:0}.colorpicker .dropdown-menu{min-width:232px;padding:5px 10px 10px 10px}.colorpicker .dropdown-menu>li{display:block;float:left;padding:5px}.colorpicker .dropdown-menu>li.heading{width:100%;margin-bottom:5px;font-size:16px;font-weight:700;text-align:left}.colorpicker .dropdown-menu>li.heading>.icon-close{position:relative;top:4px;float:right;cursor:pointer;opacity:.6}.colorpicker .dropdown-menu>li>a{position:relative;display:block;width:100%;height:100%;padding:0;margin:0;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;border:1px solid transparent;border-radius:50%;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.colorpicker .dropdown-menu>li>a:before{position:absolute;top:0;display:block;width:100%;height:20px;line-height:18px}.colorpicker .dropdown-menu>li>a:hover{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.25);box-shadow:0 1px 4px rgba(0,0,0,.25)}.colorpicker .dropdown-menu>li>a.active:before{font-size:14px;content:"\e5ca"}.colorpicker .dropdown-menu>li>a.empty{color:#666;background:#fff}.colorpicker .dropdown-menu>li>a.empty:before{content:"\e90d"}.colorpicker .btn{position:relative}.colorpicker .btn .color-bar{position:absolute;right:5px;bottom:3px;left:5px;height:3px}.colorpicker .btn .color-bar[style*='background: ']+.ic{position:relative;top:-2px}.colorpicker .btn .ic{color:#cbd0db}.colorpicker .btn:hover .ic{color:#838a9d}.input-group .colorpicker{z-index:3}.input-group .chosen-container{display:table-cell}.input-group-addon{border-right-width:0;border-left-width:0}.input-group-addon:first-child{border-left-width:1px}.input-group-addon:last-child{border-right-width:1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin:0}.input-group-cell{display:table-cell;width:1%;padding:0 12px;white-space:nowrap;vertical-align:middle}.ke-container{border-color:#dcdcdc!important;border-radius:2px!important}.ke-container.focus{border-color:#0c64eb!important}.ke-toolbar{border-color:#dcdcdc!important}.required:after{top:6px;right:-10px;font-size:20px}td.required:after{top:12px;right:-5px}.input-group>.chosen-container.required:after,.input-group>.input-control.required:after{top:1px;right:1px;z-index:2}.input-group.required .required:after{display:none}.file-input{position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.file-input .input-group{width:auto}.file-input .input-group>.input-group-cell:first-child{padding-right:0;padding-left:7px}.file-input input[type=file]{position:absolute;width:0;height:0;opacity:0}.file-input .file-title{display:inline-block;max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.file-input .file-editbox{min-width:200px;max-width:100%}.file-input .file-size{display:inline-block;vertical-align:middle}.edit .file-input-empty,.file-input-edit,.file-input-normal,.normal .file-input-empty{display:none}.edit .file-input-edit,.normal .file-input-normal{display:block}.edit .file-input-edit.input-group,.normal .file-input-normal.input-group{display:table}.edit .file-input-normal{display:none!important}.file-input-normal>.input-group-btn{width:auto}.input-group .chosen-container-active .chosen-choices{border-color:#0c64eb!important}.input-group .chosen-container{min-width:100px}.input-group .input-group-btn .btn>.icon{line-height:17px}.os-mac select.form-control{-webkit-appearance:none;background-image:url(data:image/gif;base64,R0lGODlhCQAFAIAAAMvQ2////yH5BAEAAAEALAAAAAAJAAUAAAIKhH+BGYoNGWxgFgA7);background-image:url(data:image/gif;base64,R0lGODlhBwAEAIAAAMvQ2////yH5BAEAAAEALAAAAAAHAAQAAAIIhA+BGWoNWSgAOw==);background-repeat:no-repeat;background-position:right 5px top 12px;-moz-appearance:none}input::-webkit-contacts-auto-fill-button{position:absolute;right:0;display:none!important;pointer-events:none;visibility:hidden}.chosen-choices.has-error,.chosen-single.has-error,.form-control.has-error{border-color:#ff5d5d!important;-webkit-box-shadow:0 0 6px #ffc3c3!important;box-shadow:0 0 6px #ffc3c3!important}.popover-success.popover-form-result{font-weight:700;color:#fff;background:#00da88}.popover-success.popover-form-result.popover.right .arrow:after{border-right-color:#00da88}#mainHeader{height:50px;color:#fff;background:#1183fb -webkit-gradient(linear,right top,left top,from(#0a48d1),to(#1183fb));background:#1183fb -webkit-linear-gradient(right,#0a48d1 0,#1183fb 100%);background:#1183fb -o-linear-gradient(right,#0a48d1 0,#1183fb 100%);background:#1183fb linear-gradient(-90deg,#0a48d1 0,#1183fb 100%);background-color:#1183fb;border-top-color:#0c64eb;border-bottom-color:#e9f2fb}#mainHeader>.container{min-width:1200px;padding:0}#heading{position:absolute;top:10px;left:20px}@media (min-width:1400px){#heading{left:40px}}#heading h1{float:left;max-width:250px;margin:0;overflow:hidden;font-size:20px;font-weight:400;line-height:30px;text-overflow:ellipsis;white-space:nowrap}#heading h1 a{color:inherit;text-decoration:inherit}#heading h1.long-name{position:relative;top:-5px;display:table-cell;font-size:16px;line-height:20px;word-break:break-all;white-space:normal}#heading>.btn{display:block;float:left;height:20px;padding:1px 5px;margin:0;margin:5px 0 0 10px;font-size:12px;font-weight:lighter;line-height:18px;background-color:rgba(255,255,255,.2);border:none}#heading>.btn:hover{background-color:rgba(0,0,0,.1)}#navbar{margin:0 auto;text-align:center}#navbar .nav{display:inline-block}#navbar .nav>li>a{padding:10px 15px;line-height:30px;color:#fff;border-radius:0;opacity:.9}@media (max-width:992px){#navbar .nav>li>a{padding:10px}}#navbar .nav>li>a:focus,#navbar .nav>li>a:hover{background:rgba(0,0,0,.15);opacity:1}#navbar .nav>li.active>a{font-weight:700;background:rgba(0,0,0,.1);opacity:1}#navbar .nav>li.divider{display:block;width:2px;height:20px;margin:15px;background:rgba(255,255,255,.4)}#navbar .nav>li.divider:last-child{display:none}#navbar .nav .dropdown-menu li>a{text-align:left}#toolbar{position:absolute;top:12px;right:20px;font-size:12px;color:#fff}@media (min-width:1400px){#toolbar{right:40px}}#extraNav{text-align:right}#extraNav>li{display:inline-block;float:none;text-align:left}#extraNav>li>a{display:block;padding:0;color:#fff;opacity:.75}#extraNav>li>a:hover{text-decoration:unset;background-color:rgba(0,0,0,.1);opacity:1}#extraNav>li.open>a{background-color:rgba(0,0,0,.1)}#extraNav>li+li{margin-left:10px}#showSearchGo{color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.5)}#searchbox{position:relative;float:left;width:150px}#searchbox .input-group-btn .btn{position:relative;padding:1px 4px;font-size:12px;line-height:20px;color:#fff;background-color:rgba(255,255,255,.15);border-right:none;border-radius:2px}#searchbox .input-group-btn .btn:after{position:absolute;top:3px;right:0;bottom:3px;display:block;width:1px;content:' ';background-color:rgba(255,255,255,.15)}#searchbox .input-group-btn .btn:hover{background-color:rgba(255,255,255,.25)}#searchGo{position:absolute;top:0;right:-1px;z-index:9;min-width:24px;height:24px;padding:2px 3px;font-size:12px;line-height:20px;color:#fff;background-color:#6a9afd;border-radius:2px}#searchGo:hover{color:#fff!important;background-color:#0c64eb}#searchInput{height:24px;padding:2px 30px 2px 5px;color:#fff;text-align:left;background:rgba(255,255,255,.15);border-color:transparent;border-radius:0 12px 12px 0;-webkit-transition:background .2s,border .2s;-o-transition:background .2s,border .2s;transition:background .2s,border .2s}#searchInput:hover{background:rgba(255,255,255,.25)}#searchInput:focus{color:#333;background:#fff}#searchInput::-webkit-input-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput::-moz-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput:-ms-input-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput::placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput:focus::-webkit-input-placeholder{color:#838a9d}#searchInput:focus::-moz-placeholder{color:#838a9d}#searchInput:focus:-ms-input-placeholder{color:#838a9d}#searchInput:focus::placeholder{color:#838a9d}#searchTypeMenu{min-width:220px}#searchTypeMenu>li{float:left;width:50%}#searchTypeMenu>li>a{margin:4px 0}#userNav{float:right;margin:0 -6px 0 10px}#userNav .avatar{display:inline-block;vertical-align:middle}#userNav>li>a{padding:2px 6px;margin-left:3px;line-height:20px;color:#fff;opacity:.9}#userNav>li>a .user-name{max-width:100px;overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}#userNav>li>a:hover{background-color:rgba(0,0,0,.1);opacity:1}#userNav>li>a span{display:inline-block;vertical-align:middle}#userNav>li.open>a{background-color:rgba(0,0,0,.1)}#userNav>li.has-new-items>a{position:relative}#userNav>li.has-new-items>a:before{position:absolute;top:3px;right:-1px;display:block;width:4px;height:4px;content:' ';background-color:#ff5d5d;border-radius:50%}#userNav .dropdown-menu{min-width:150px}#userNav .dropdown-menu>li>a>.icon{position:absolute;top:10px;right:5px;display:block;width:20px;height:20px;line-height:20px;text-align:center}#userNav .user-profile-item>a{position:relative;padding-left:45px}#userNav .user-profile-item .avatar{position:absolute;top:6px;left:5px}#userNav .user-profile-name{font-size:16px}#userNav .user-profile-role{font-size:12px;color:#a9abb8}#userNav .no-role .user-profile-role{display:none}#userNav .no-role .user-profile-name{line-height:40px}#subHeader{min-height:50px;background:#fff}#subHeader>.container{padding:0 20px}@media (min-width:1400px){#subHeader>.container{padding:0 40px}}#pageNav{position:absolute;top:8px;left:0;left:20px}@media (min-width:1400px){#pageNav{left:40px}}#subNavbar{margin-top:5px;font-size:14px;text-align:center}#subNavbar .nav{display:inline-block}#subNavbar .nav>li>a{padding:8px 12px;line-height:24px;color:#3c495c}#subNavbar .nav>li>a:hover{color:#3c495c;background-color:rgba(0,0,0,.075)}#subNavbar .nav>li.active>a{font-weight:700;color:#0c64eb}#subNavbar .nav>li.divider{display:block;width:2px;height:20px;margin:9px 5px;background-color:rgba(0,0,0,.05)}#subNavbar .dropdown-menu{text-align:left}[lang=en] #subNavbar>.nav>li>a{padding-right:8px;padding-left:8px}#pageActions{position:absolute;top:9px;right:20px}@media (min-width:1400px){#pageActions{right:40px}}.cell{padding:10px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.cell+.cell{margin-top:10px}.cell>.panel{margin:0;-webkit-box-shadow:none;box-shadow:none}.cell>.panel>.panel-heading{padding:5px 5px 10px}.cell>.panel>.panel-heading .panel-actions{padding:0}.cell>.panel>.panel-body{padding:5px}.cell>.table{margin:0}#main{padding:20px 0}#main>.container{padding:0 20px}@media (min-width:1400px){#main>.container{padding:0 40px}}#header,#header+#main{min-width:1200px}#mainMenu{margin:-10px 0 8px}.main-content{padding:20px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}@media (min-width:1400px){.main-content>.center-block{max-width:1350px;padding:20px;border:1px solid #eee}.main-content>.center-block .main-header{background-color:#f1f1f1}}.main-content>h2{margin:0 0 20px}.main-content .cell{-webkit-box-shadow:none;box-shadow:none}.main-header{padding:5px 20px;border-bottom:1px solid #eee}.main-header:after,.main-header:before{display:table;content:" "}.main-header:after{clear:both}.main-header>h2{display:block;float:left;margin:0 10px 0 0;font-size:14px;line-height:34px}.main-header>h2 .label-id{margin-right:5px}.main-header>h2 small{font-size:14px;font-weight:400}.main-content .main-header{margin:-20px -20px 10px}.main-header .label{top:-1px}.main-row{display:table;width:100%;table-layout:fixed}.main-row>*{display:table-cell;vertical-align:top}@media (max-width:720px){.main-row{display:block}.main-row>*{display:block;width:100%}.main-row .side-col{width:100%;padding:0}.main-row .main-col+.side-col,.main-row .side-col+.main-col{margin-top:10px}}.main-row.hide-side .side-col{display:none}@media (min-width:720px){.main-content>.center-block .main-form{padding-right:20px}}#main .side-col .tabs{padding:5px}#main .side-col .nav-tabs{margin:0 5px 5px 5px;border-bottom:1px solid #ddd}#main .side-col .nav-tabs>li{margin:0}#main .side-col .nav-tabs>li+li{margin-left:10px}#main .side-col .nav-tabs>li>a{position:relative;padding:8px 5px;border:none;border-radius:2px!important}#main .side-col .nav-tabs>li.active>a{font-weight:700;color:#3c4353}#main .side-col .nav-tabs>li.active>a:before{position:absolute;right:0;bottom:-1px;left:0;display:block;height:2px;content:' ';background:#0c64eb}#main .side-col .tab-content .tab-pane table{border:none}.main-actions .btn-toolbar{display:inline-block;padding:4px 15px;color:#fff;pointer-events:auto;background:#717171;background-color:rgba(90,90,90,.85);border-radius:4px}.main-actions .btn-toolbar .divider{margin-right:15px;margin-left:15px;border-color:rgba(255,255,255,.1)}.main-actions .btn-toolbar .btn{height:30px;padding-right:10px;padding-left:10px;margin-right:0;color:#fff;background-color:transparent;border:none}.main-actions .btn-toolbar .btn+.btn{margin-left:10px}.main-actions .btn-toolbar .btn:focus,.main-actions .btn-toolbar .btn:hover{background-color:rgba(255,255,255,.2)}.main-actions .btn-toolbar .btn.btn-icon{min-width:32px;padding-right:0;padding-left:0}.main-actions .btn-toolbar .btn+.btn-group{margin-right:0;margin-left:10px}#mainContent .main-col>.main-actions{padding:30px 0 0 0;text-align:center}#mainContent .main-col>.main-actions>.btn-toolbar{visibility:visible;opacity:1;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}#mainActions{position:fixed;top:0;right:0;bottom:0;left:0;text-align:center;pointer-events:none}#mainActions .btn-toolbar{position:relative;top:-90px}#mainActions .dropdown-menu{text-align:left}#mainActions>.container{height:100%}.main-actions-holder{display:none}.main-actions-fixed .main-actions-holder{display:block}.main-actions-fixed #mainContent .main-col>.main-actions{position:fixed;bottom:50px}.main-actions-fixed.body-modal #mainContent .main-col>.main-actions{bottom:20px}#nextPage,#prevPage{position:absolute;top:50%;left:-10px;width:40px;height:60px;padding:10px 0;margin-top:-30px;line-height:40px;color:#fff;text-align:center;pointer-events:auto;background:#717171;background-color:rgba(90,90,90,.85);-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,.05);box-shadow:0 2px 15px 2px rgba(0,0,0,.05)}#nextPage:hover,#prevPage:hover{-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,.15);box-shadow:0 2px 15px 2px rgba(0,0,0,.15)}#nextPage>.icon,#prevPage>.icon{display:block;font-size:36px;line-height:36px}#nextPage{right:-10px;left:auto}@media (max-width:1800px){#prevPage{left:-3px}#nextPage{right:-3px}}#sidebarHeader{position:relative;float:left;width:180px;height:34px;padding-right:20px;margin-right:20px;background:#fff;border-left:4px solid #0c64eb;border-radius:4px 2px 2px 4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#sidebarHeader:after{position:absolute;top:-1px;right:-8px;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #fff;border-style:solid;border-width:18px 0 18px 8px}#sidebarHeader .title{padding:0 5px;overflow:hidden;font-size:14px;font-weight:700;line-height:32px;color:#0c64eb;text-align:center;text-overflow:ellipsis;white-space:nowrap}#sidebarHeader .title>a{position:absolute;top:0;right:0;width:20px;opacity:.5}#sidebarHeader .title>a:hover{opacity:1}#sidebar{position:relative;-webkit-transition:width .2s,padding .2s;-o-transition:width .2s,padding .2s;transition:width .2s,padding .2s}#sidebar>.sidebar-toggle{position:absolute;top:0;right:5px;bottom:0;width:10px;cursor:pointer;background:0 0;border-radius:5px;-webkit-transition:background-color .2s,opacity .5s;-o-transition:background-color .2s,opacity .5s;transition:background-color .2s,opacity .5s}#sidebar>.sidebar-toggle>.icon{position:absolute;top:50%;left:-1px;width:12px;height:30px;margin-top:-10px;line-height:30px;color:#fff;text-align:center;background:#79cdfb;border-radius:6px}#sidebar>.sidebar-toggle>.icon:before{position:relative;left:-3px}#sidebar>.sidebar-toggle:before{position:absolute;top:0;right:-5px;bottom:0;left:-5px;display:block;content:' '}#sidebar>.sidebar-toggle:hover{background:rgba(0,0,0,.075)}#sidebar>.cell{position:relative;left:0;width:180px;-webkit-transition:left .2s,opacity .2s;-o-transition:left .2s,opacity .2s;transition:left .2s,opacity .2s}#sidebar.no-animate>.cell{display:none;-webkit-transition:none;-o-transition:none;transition:none}.hide-sidebar #sidebar>.cell{position:absolute;left:-200px;visibility:hidden;opacity:0}.hide-sidebar #sidebar{position:relative;width:0;padding:0}.hide-sidebar #sidebar>.sidebar-toggle>.icon:before{content:"\e315"}@media (max-width:720px){#sidebar>.cell{width:100%}}#queryBox{max-height:0;padding:0;overflow:hidden;-webkit-transition:cubic-bezier(.175,.885,.32,1) .2s;-o-transition:cubic-bezier(.175,.885,.32,1) .2s;transition:cubic-bezier(.175,.885,.32,1) .2s;-webkit-transition-property:padding,max-height,margin;-o-transition-property:padding,max-height,margin;transition-property:padding,max-height,margin}#queryBox>form{visibility:hidden;-webkit-transition:visibility .2s .2s;-o-transition:visibility .2s .2s;transition:visibility .2s .2s}#queryBox.loading{height:50px}#queryBox.show{min-height:110px;max-height:300px;margin-bottom:10px;overflow:visible}#queryBox.show>form{visibility:visible}#queryBox.divider{border-bottom:1px solid #eee}#main .querybox-toggle.querybox-opened{position:relative;color:#0c64eb;background:0 0;border:none}#main .querybox-toggle.querybox-opened:before{position:absolute;bottom:-14px;left:50%;width:0;height:0;content:' ';border-color:transparent transparent #fff transparent;border-style:solid;border-width:0 10px 10px 10px}#contentNav{padding:5px;background:#fff;border-bottom:1px solid #eee}#contentNav .nav>li>a{position:relative;padding:6px 10px;color:#838a9d}#contentNav .nav>li.active>a{font-weight:700;color:#0c64eb}#contentNav .nav>li.active>a:before{position:absolute;right:10px;bottom:3px;left:10px;display:block;height:2px;content:' ';background:#0c64eb}.body-modal{padding-bottom:0}.body-modal #main,.body-modal .container{min-width:0!important}.body-modal #main{padding:0}.body-modal .main-header{position:fixed;top:0;right:20px;left:20px;z-index:100;padding:13px 48px 13px 0;margin:0;background:#fff}.body-modal #mainContent{padding-top:70px}.body-modal .main-header>h2{max-width:100%;overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.body-modal .cell,.body-modal .main-content{-webkit-box-shadow:none;box-shadow:none}.body-modal #mainMenu{position:fixed;top:0;right:0;left:0;z-index:100;padding:12px 60px 12px 10px;margin:0;background:#fff}.body-modal #mainMenu>.btn-toolbar.pull-left.divider{display:none}.body-modal #mainMenu>.btn-toolbar{width:100%;margin-left:20px}.body-modal #mainMenu>.btn-toolbar>.divider:first-child{display:none}.body-modal #mainMenu>.btn-toolbar .page-title{width:100%;margin-left:0}.body-modal #mainMenu>.btn-toolbar .page-title>.text{position:relative;top:-2px;display:inline-block;max-width:85%;max-width:-webkit-calc(100% - 100px);max-width:calc(100% - 100px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.body-modal #mainMenu+#mainContent.main-row{padding:60px 10px 0}.body-modal #mainMenu+#mainContent.main-row .cell{border:1px solid #efefef;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.body-modal #mainActions{top:auto}.body-modal #mainActions .btn-toolbar{top:auto;bottom:10px}.body-modal.m-bug-view,.body-modal.m-story-view,.body-modal.m-task-view,.body-modal.m-testcase-view,.body-modal.m-testtask-view,.body-modal.m-todo-view{padding-bottom:20px;border-radius:3px}#tabsNav{position:relative}#tabsNav .tab-pane>.actions{position:absolute;top:-8px;right:0}#tabsNav .tab-pane>.cell,#tabsNav .tab-pane>.main-table{padding:0;border:1px solid #cbd0db;border-top:none;border-radius:0 0 4px 4px}#tabsNav .tab-pane>.cell .detail-title{padding-left:5px}#helpContent{position:fixed;top:50px;right:0;bottom:40px;left:0;display:none;background-color:#fff}#helpContent .load-error{display:none;padding:20px}#helpContent .show-error .load-error{display:block}.show-help-tab{overflow:hidden}.show-help-tab #main{display:none}.show-help-tab #helpContent{display:block}#navbar .nav>li>a.open-help-tab>.icon-close{display:none;opacity:.5}#navbar .nav>li>a.open-help-tab>.icon-close:hover{background:rgba(0,0,0,.1);opacity:1}.show-help-tab #navbar .nav>li>a.open-help-tab>.icon-close{display:inline}.text-middle td,.text-middle th{vertical-align:middle}.text-center td,.text-center th{text-align:center}.c-sm{width:40px}.c-id{width:90px}.c-id-sm{width:70px}.c-id-xs{width:55px}.c-date{width:100px}.c-num,.c-pri,.c-type{width:80px;overflow:hidden}.c-begin,.c-end,.c-time{width:65px}.c-hours{width:60px}.c-actions-1{width:50px}.c-actions-2{width:75px}.c-actions-3{width:102px}.c-actions,.c-actions-4{width:128px}.c-actions-5{width:155px}.c-actions-6{width:180px}.c-product,.c-project{width:180px}.c-plan{width:130px}.c-datetime{width:120px}.c-stage,.c-status,.c-user{width:80px}.c-side{width:200px;border-right:10px solid #efefef}.c-assign,.c-assignedTo,.c-openedBy{width:130px}.c-progress{width:155px}.c-assign,.c-assignedTo,.c-openedBy,.c-product,.c-project,.c-status,.c-url,.c-user{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.c-name,td.c-title{overflow:hidden;text-align:left!important;text-overflow:ellipsis;white-space:nowrap}td.c-actions{position:relative;padding-top:0;padding-bottom:0;overflow:hidden;white-space:nowrap;vertical-align:middle}td.c-actions .btn-link{color:#3c495c;background:0 0}td.c-actions .btn-link:hover{color:#0c64eb;background:#e9f2fb}td.c-actions .more{position:absolute;top:50%;right:100%;display:none;padding-right:4px;padding-left:20px;margin-top:-15px;margin-right:-6px;white-space:nowrap;background-color:#fafafa;-webkit-transition:opacity .3s,margin .3s;-o-transition:opacity .3s,margin .3s;transition:opacity .3s,margin .3s}tr:hover td.c-actions .more{display:block}td:hover+td.c-actions>.more{margin-right:-15px;pointer-events:none;opacity:.15}tr[data-url]{cursor:pointer}.table tbody>tr>td,.table thead>tr>th{vertical-align:middle}.table tbody>tr>td.has-btn,.table thead>tr>th.has-btn{padding-top:1px;padding-bottom:1px;overflow:visible}.table tbody>tr>td .progress,.table thead>tr>th .progress{height:6px}.table .em,.table em{color:#3c4353}.table .divider{border-bottom:10px solid #efefef}.table .divider-top{border-top:10px solid #efefef}.table .btn-icon-left{max-width:100%;padding-left:20px;overflow:hidden;line-height:18px;text-align:left;text-overflow:ellipsis;background:0 0;border-color:#eaf3fc}.table .btn-icon-left>.icon{width:20px;font-size:14px;background:0 0!important;opacity:0}.table .btn-icon-left.btn-sm{height:26px;font-size:13px}.table .btn-icon-left:active,.table .btn-icon-left:focus,.table .btn-icon-left:hover{border-color:rgba(0,0,0,.2)}.table .btn-icon-left:active>.icon,.table .btn-icon-left:focus>.icon,.table .btn-icon-left:hover>.icon{opacity:1}.table .btn-icon-left>.text{padding-left:25px}.table thead>tr>th.c-assign,.table thead>tr>th.c-assignedTo{padding-left:29px}.table a{vertical-align:middle}.table tbody>tr:last-child{border-bottom:none}.table caption{margin-bottom:5px;background:#f1f1f1;border:none}.is-firefox .table .btn-icon-left>.icon{line-height:22px}.main-table{border-radius:4px}.main-table>.table,.main-table>.table-footer,.main-table>.table-header,.main-table>.table-responsive{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.main-table .table{font-size:13px;table-layout:fixed;background-color:#fff;border-radius:4px 4px 0 0}.main-table .table.table-lg{font-size:14px}.main-table .table .btn-icon-left{border-color:transparent}.main-table .table .btn-icon-left>.icon{background:0 0;border-radius:4px}.main-table .table .btn-icon-left.btn-sm{height:26px}.main-table .table .btn-icon-left:hover{border-color:rgba(0,0,0,.2)}.main-table .table .btn-icon-left:hover>.icon{background:#e9f2fb;border-radius:4px 0 0 4px}.main-table tbody>tr>td,.main-table thead>tr>th{min-height:36px;padding:2px 8px;line-height:30px}.main-table tbody>tr>td:first-child,.main-table thead>tr>th:first-child{padding-left:15px}.main-table thead>tr>th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #ddd}.main-table tbody>tr:nth-child(odd){background-color:#f5f5f5}.main-table tbody>tr:last-child>td{border-bottom:1px solid #ddd}.main-table tbody>tr>td{position:relative;border-bottom:none;border-bottom:1px solid #eee}.main-table tbody>tr>td .label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main-table tbody>tr>td>a{line-height:28px;color:#0c60e1}.main-table tbody>tr>td>a:not(.btn):visited{color:#082999;opacity:.9}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover{color:#0c64eb}.main-table tbody>tr>td.c-actions{padding-right:10px}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{position:absolute;top:0;bottom:0;left:0;display:block;width:0;content:'';background:#0c64eb;opacity:0;-webkit-transition:.2s linear;-o-transition:.2s linear;transition:.2s linear;-webkit-transition-property:width,opacity,border-radius;-o-transition-property:width,opacity,border-radius;transition-property:width,opacity,border-radius}@-moz-document url-prefix(){.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{bottom:-1px}}.main-table tbody>tr>td.c-side:before{display:none}.main-table tbody>tr{-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background-color,-webkit-box-shadow;-o-transition-property:box-shadow,background-color;transition-property:background-color,-webkit-box-shadow;transition-property:box-shadow,background-color;transition-property:box-shadow,background-color,-webkit-box-shadow}.main-table tbody>tr:hover{background:#e9f2fb}.main-table .table-grouped tbody>tr:hover{background:#f2f7fd;-webkit-box-shadow:none;box-shadow:none}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f2f7fd}.main-table tbody>tr.checked{background:#fff3e0}.main-table tbody>tr.checked:hover{background:#ffebbc}.main-table tbody>tr.checked>td.c-side+td:before,.main-table tbody>tr.checked>td:first-child:before{width:4px;opacity:1}.main-table tbody>tr.checked.row-check-begin{border-top-left-radius:4px;border-top-right-radius:2px}.main-table tbody>tr.checked.row-check-begin>td:first-child:before{border-top-left-radius:4px}.main-table tbody>tr.checked.row-check-end{border-bottom-right-radius:2px;border-bottom-left-radius:4px}.main-table tbody>tr.checked.row-check-end>td:first-child:before{border-bottom-left-radius:4px}.main-table .checkbox-primary{display:inline-block;line-height:20px}.main-table .checkbox-primary label{margin:0}.main-table .table{margin:0}.table-header{padding:4px 0 12px}.table-header .table-statistic{color:#838a9d}.table-header .table-statistic strong{font-size:15px;color:#3c4353}.table-header .btn-toolbar{margin-top:-28px}.table-header.fixed-right{position:relative;z-index:5;padding:0}.table-header.fixed-right>.btn-toolbar{position:absolute;top:0;right:0;z-index:1;padding:1px;margin:0;background:#fff;border-radius:4px}.table-header.fixed-right>.btn-toolbar .btn{opacity:.65}.table-header.fixed-right>.btn-toolbar .btn:hover{opacity:1}.table-footer{position:relative;min-height:40px;padding:6px 15px;background:#fff;border-radius:0 0 4px 4px}.body-modal .table-footer{margin-bottom:20px}.talbe-lg+.table-footer{padding:11px 15px}.table-footer .btn-toolbar,.table-footer .checkbox-primary{float:left}.table-footer .btn-toolbar+.btn-toolbar{margin-left:8px}.table-footer .checkbox-primary{margin:5px 20px 0 0}.table-footer .checkbox-primary.checked label:after{border-color:#00da88!important}.table-footer .btn{padding:3px 10px;line-height:20px}.table-footer .pager{position:absolute;top:0;right:0;z-index:4;height:40px;padding:6px 5px 6px 10px;margin:0;background:#fff;opacity:1;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.table-footer .pager:before{position:absolute;top:0;bottom:0;left:-50px;display:block;width:50px;content:' ';background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(#fff));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%)}.table-footer .pager .btn,.table-footer .pager>li>.pager-item,.table-footer .pager>li>.pager-label{color:#838a9d;background:0 0;border-color:transparent}.table-footer .pager .btn,.table-footer .pager>li>a{border-radius:3px}.table-footer .pager .btn:hover,.table-footer .pager>li>a:hover{background:rgba(0,0,0,.1)}.table-footer .pager>li.disabled>a.pager-item{opacity:1}.table-footer .form-control{height:28px;padding:3px 8px}.table-footer .table-statistic{position:relative;z-index:2;float:left;padding-right:30px;line-height:28px;color:#838a9d;background:#fff}.table-footer .table-statistic:hover{z-index:4}.table-footer .table-statistic:hover+.pager{z-index:2;opacity:.3}.table-footer .btn-toolbar+.table-statistic,.table-footer .btn-toolbar+.text{margin-left:10px}.table-footer .text{float:left;line-height:28px}.table-footer.fixed-footer{position:fixed;z-index:10;margin:0;background:rgba(75,75,75,.85);border-top-color:transparent}.table-footer.fixed-footer .checkbox-primary label{color:#fff}.table-footer.fixed-footer .checkbox-primary label:after{border-color:rgba(255,255,255,.8)}.table-footer.fixed-footer .table-statistic{color:#fff;background:0 0}.table-footer.fixed-footer .pager{background:#666}.table-footer.fixed-footer .pager:before{background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0)),to(#666));background:-webkit-linear-gradient(left,rgba(0,0,0,0) 0,#666 100%);background:-o-linear-gradient(left,rgba(0,0,0,0) 0,#666 100%);background:linear-gradient(to right,rgba(0,0,0,0) 0,#666 100%)}.table-footer.fixed-footer .pager .btn,.table-footer.fixed-footer .pager>li>.pager-item,.table-footer.fixed-footer .pager>li>.pager-label{color:#fff}.table-footer.fixed-footer .pager .btn:hover,.table-footer.fixed-footer .pager>li>a:hover{background:rgba(255,255,255,.3)}.table-footer.fixed-footer .pager>li.disabled>a.pager-item{opacity:.5}.table-actions{width:0;height:28px;visibility:hidden;opacity:0;-webkit-transition:opacity cubic-bezier(.175,.885,.32,1) .8s;-o-transition:opacity cubic-bezier(.175,.885,.32,1) .8s;transition:opacity cubic-bezier(.175,.885,.32,1) .8s}.table-actions.show-always{width:auto;pointer-events:none;cursor:not-allowed;visibility:visible;opacity:.75}.has-row-checked .table-actions{width:auto;pointer-events:auto!important;cursor:default;visibility:visible;opacity:1}.table-lg tbody>tr>td{padding:9px 10px}.table-lg tbody>tr>td .btn+.btn{margin-left:5px}.table.has-sort-head thead>tr>th{padding-right:0}.table.has-sort-head thead>tr>th>a{position:relative;display:inline-block;padding-right:16px;color:#3c4353}.table.has-sort-head thead>tr>th>a:after,.table.has-sort-head thead>tr>th>a:before{position:absolute;top:0;right:0;font-family:ZentaoIcon;font-size:18px;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:30px;color:#3c495c;text-transform:none;content:"\f0de";opacity:.5;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.table.has-sort-head thead>tr>th>a:after{content:"\f0dd"}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up{color:#000;text-decoration:none}.table.has-sort-head thead>tr>th>a:hover,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#0c64eb;opacity:1}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before{color:#000;opacity:1}.head-fixed .datatable-head-span .table,.table.fixed-header-copy{z-index:10;color:#fff;background:rgba(75,75,75,.85)}.head-fixed .datatable-head-span .table thead>tr>th,.table.fixed-header-copy thead>tr>th{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a,.table.fixed-header-copy thead>tr>th>a{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover{color:#fff}.head-fixed .datatable-head-span .table thead>tr>th>a:after,.head-fixed .datatable-head-span .table thead>tr>th>a:before,.table.fixed-header-copy thead>tr>th>a:after,.table.fixed-header-copy thead>tr>th>a:before{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a.sort-down,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-down:after,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-up,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-up:before,.head-fixed .datatable-head-span .table thead>tr>th>a:hover,.head-fixed .datatable-head-span .table thead>tr>th>a:hover:after,.head-fixed .datatable-head-span .table thead>tr>th>a:hover:before,.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#fff}.head-fixed .datatable-head-span .table .checkbox-primary,.table.fixed-header-copy .checkbox-primary{z-index:1}.head-fixed .datatable-head-span .table .checkbox-primary label,.table.fixed-header-copy .checkbox-primary label{color:#fff}.head-fixed .datatable-head-span .table .checkbox-primary label:after,.table.fixed-header-copy .checkbox-primary label:after{border-color:rgba(255,255,255,.8)}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#00da88!important}.table-data{margin:0;table-layout:fixed}.table-data tbody>tr>td,.table-data tbody>tr>th{padding:6px 8px;word-break:break-all;border:none}.table-data tbody>tr>th{width:70px;padding-left:0;font-weight:400;color:#838a9d;text-align:right;vertical-align:middle}.table-data tbody>tr>td{padding-right:0}.table-data tbody>tr>td>a{color:#0c60e1}.table-data tbody>tr>td>a:not(.btn):visited{color:#082999}.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#0c64eb}.table-data ol,.table-data ul{margin:0}.fixed-head-table{background:rgba(0,0,0,.7);border-bottom:1px solid #ddd}.fixed-head-table thead>tr>th{color:#fff}.table-empty-tip{padding:80px 10px;text-align:center;background:#fff}.not-firefox .table-grouped>tbody>tr>td.c-side{background:#fff!important}.table-grouped .group-toggle{cursor:pointer}.table-grouped .group-toggle.group-summary{border-top:10px solid #efefef}.table-grouped tbody>tr>td:first-child,.table-grouped thead>tr>th:first-child{padding-left:8px}.group-expand-all,.table-group-collapsed .group-collapse-all{display:none}.table-group-collapsed .group-expand-all{display:inline-block}.table-auto{table-layout:auto}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffebbc}body.has-fixed-footer{padding-bottom:60px}.table.with-footer-fixed{margin-bottom:20px}.table-nest-hide{display:none!important}th.table-nest-title{position:relative;padding-left:30px!important}.table-nest-icon{position:relative;display:inline-block;width:22px;height:22px;margin-right:-4px;font-size:16px;color:#a6aab8;text-align:center;border-radius:4px}.table-nest-toggle:before{line-height:22px;color:#ffe066;content:"\e947"}.table-nest-toggle:hover{color:#0c64eb;background-color:rgba(0,0,0,.1)}.table-nest-child-hide .table-nest-toggle:before{font-size:16px;content:"\e944"}th.table-nest-title .table-nest-toggle{position:absolute!important;top:7px;left:8px}.table-nest-toggle.table-nest-toggle-global{width:22px;height:22px;padding:0!important;line-height:22px;text-align:center;border-radius:4px}.table-nest-toggle.table-nest-toggle-global:before{position:static!important;line-height:22px!important;color:#ffe066!important;content:"\e947"!important;opacity:1!important}.table-nest-toggle.table-nest-toggle-global:after{display:none!important}.table-nest-collapsed .table-nest-toggle.table-nest-toggle-global:before{font-size:16px!important;content:"\e944"!important}.is-nest-child .table-nest-icon:before,.no-nest .table-nest-icon:before{position:relative;top:-1px;width:6px;min-width:6px;height:6px;content:' ';background-color:#cbd0db;border-radius:1px}.table-nest-child-hover>td:first-child,.table-nest-hover>td:first-child{-webkit-box-shadow:inset 3px 0 0 #cbd0db;box-shadow:inset 3px 0 0 #cbd0db}.article-content{overflow:auto}.article-content img{margin-top:0}.article-content table{margin:10px 0}.article-content table td,.article-content table th{border:1px solid #cbd0db}.article-content table th{background:#eee}.article-content a{color:#0c64eb}.article-content a:focus,.article-content a:hover{color:#16a8f8}.article-content,.article>.content{word-wrap:break-word}.detail{padding:10px 0;margin:0 10px}.detail+.detail{padding-top:25px;border-top:1px solid #eee}.detail-title{font-size:14px;font-weight:700;line-height:20px}.detail-title>.pull-right{position:relative;top:-8px}h2.detail-title{margin:0;font-size:15px;font-weight:700}h2.detail-title .label,h2.detail-title .label-id{position:relative;top:-1px}.detail-content{padding:0;margin-top:10px}.detail-content em{color:#3c4353}.detail-content .list-unstyled>li+li{margin-top:5px}.side-col .detail-content{padding-left:0}details.detail{padding:10px 0}details.detail summary{position:relative;cursor:pointer;outline:0}details.detail summary::-webkit-details-marker{display:none}details.detail summary:after{position:absolute;top:0;right:0;font-family:ZentaoIcon;font-size:18px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:"\e316";opacity:.4;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}details.detail[open] summary:after{content:"\e313"}.files-list{padding-left:0;list-style:none}.files-list>li>a{display:block;line-height:24px}.files-list>li>a>.icon{display:inline-block;margin-right:5px;opacity:.7}.files-list>li>a:hover{color:#0c64eb}.files-list>li>.right-icon{opacity:0;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.files-list>li:hover>.right-icon{opacity:1}.histories-list{padding-left:15px;margin-bottom:0}.histories-list .btn-mini{position:relative;top:1px}.histories-list>li{position:relative}.histories-list>li+li{margin-top:5px}.histories-list>li strong{color:#3c4353}.histories-list .comment,.histories-list .show-form .comment-edit-form{padding:5px 5px 5px 10px;margin:5px 0 0;background-color:rgba(0,0,0,.025);border:1px solid #eee}.histories-list .btn-edit-comment{position:absolute;top:28px;right:2px}.histories-list .comment-edit-form,.histories-list .show-form .btn-edit-comment,.histories-list .show-form .comment{display:none}.histories-list .show-form .comment-edit-form{display:block;padding:10px;border:1px solid #eee}.histories .btn-mini{width:16px;min-width:16px;height:16px;overflow:hidden;line-height:16px;color:#cbd0db;vertical-align:-8%;border-radius:1px}.histories .btn-mini>.icon{position:relative;top:-2px;left:-2px}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#0c64eb;border-color:#0c64eb}.histories .show-changes .btn-expand>.icon:before{content:"\e926"}.histories .btn-strip{display:none}.histories .show-changes .btn-strip{display:inline-block}.history-changes{display:none;padding:5px;margin-bottom:-5px;margin-left:5px;font-size:12px;line-height:20px}.history-changes blockquote{padding:5px 5px 5px 10px;margin:5px 0 0;font-size:12px;background-color:rgba(0,0,0,.05);border-left:3px solid #eee}.history-changes blockquote.original{display:none}.show-changes .history-changes,.show-original .history-changes blockquote.original{display:block}.show-original .history-changes blockquote.textdiff{display:none}.syntaxhighlighter{overflow:auto}.list-group{overflow-y:auto}.list-group>a{display:block;padding:2px 10px 2px 5px;overflow:hidden;line-height:20px;text-overflow:ellipsis;white-space:nowrap;border-radius:4px}.list-group>a+a{margin-top:5px}.list-group>a>.icon{display:inline-block;margin-right:3px;opacity:.5}.list-group>a.selected{color:#e9f2fb;background-color:#0c64eb}.list-group>a.active{color:#0c64eb;background-color:#e9f2fb}.list-group>a.active:hover,.list-group>a:hover{color:#fff;background-color:#0c64eb}.list-group>.heading{padding:2px 5px;line-height:20px;color:#838a9d}.list-group>a+.heading{margin-top:4px}.dropup .search-box-sink{padding-top:5px;padding-bottom:45px}.dropup .search-box-sink .search-box{position:absolute;right:10px;bottom:10px;left:10px;margin:0}.dropup .search-box-sink .search-box+.list-group{height:auto;max-height:171px}.search-list{min-width:200px;max-width:300px;padding:0}.search-list .search-box{float:none;width:auto;margin:10px}.search-list .search-box .icon-search{opacity:.5}.search-list .list-group{max-height:248px;padding:5px 10px;margin:5px 0}.dropup .search-list .search-box+.list-group{height:171px;padding-top:0}.search-list .search-input{height:30px}.search-list .input-control-icon-right{height:28px;line-height:28px}.search-list .list-group>a.active{color:inherit;background-color:inherit}.search-list.searchbox-focus .list-group>a.active{color:#0c64eb;background-color:#e9f2fb}.search-list .list-group>a.active:hover,.search-list.searchbox-focus .list-group>a.active:hover{color:#fff;background-color:#0c64eb}#dropMenu>.search-box{max-width:188px}#dropMenu .input-control-icon-left{top:0}#dropMenu .list-group{width:199px;max-width:199px;max-height:300px;padding-top:0}#dropMenu .table-row .list-group{margin:0 -10px}#dropMenu .col-right{display:none}#dropMenu .col-left{width:100%}#dropMenu .col-left .list-group{max-height:250px;margin-bottom:35px}#dropMenu .col-footer{position:absolute;bottom:10px;left:10px;width:180px;padding-top:10px;margin-top:5px;border-top:1px solid #eee}#dropMenu .col-footer>a{opacity:.8}#dropMenu .col-footer>a:hover{opacity:1}#dropMenu.show-right-col{width:402px;max-width:402px}#dropMenu.show-right-col>.list-group{width:400px;max-width:400px}#dropMenu.show-right-col .col-left,#dropMenu.show-right-col .col-right{display:table-cell;width:50%}#dropMenu.show-right-col .col-left>.list-group{width:200px;max-width:200px;margin-right:0}#dropMenu.show-right-col .col-right{border-left:1px solid #eee}#dropMenu.show-right-col .col-right>.list-group{width:199px;max-height:285px;margin:0}#dropMenu.show-right-col .col-right>.list-group>a{opacity:.7}#dropMenu.show-right-col .col-right>.list-group>a:hover{opacity:1}#dropMenu.show-right-col .toggle-right-col>.icon-angle-right:before{content:"\e314"}#dropMenu.has-search-text{width:200px}#dropMenu.has-search-text .list-group{overflow-x:hidden}#dropMenu.has-search-text>.list-group>.table-row{display:block}#dropMenu.has-search-text>.list-group>.table-row>.table-col{display:block}#dropMenu.has-search-text .pull-right.toggle-right-col{display:none}#dropMenu.has-search-text .col-left .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right{margin-left:-10px}#dropMenu.has-search-text .col-right .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right .list-group>a{opacity:.7}#dropMenu.has-search-text .col-footer{display:none}.release-path{overflow:hidden}.release-line{display:table;width:100%;padding:0;table-layout:fixed}.release-line>li{display:table-cell;list-style:none}.release-line>li>a{position:relative;display:block}.release-line>li>a:before{position:absolute;left:0;display:block;width:13px;height:13px;content:' ';background:#fff;border:2px solid #838a9d;border-radius:50%}.release-line>li>a:after{position:absolute;left:5px;display:block;width:2px;height:30px;content:' ';background:#cbe0f6}.release-line>li>a>.icon{position:absolute;left:4px;font-size:24px}.release-line>li>a .title{display:block;font-size:14px;white-space:nowrap}.release-line>li>a .date,.release-line>li>a .info{display:block;max-height:18px;overflow:hidden;font-size:12px;color:#838a9d;text-overflow:ellipsis;white-space:nowrap}.release-line>li>a:hover:before{background-color:#e9f2fb}.release-line>li>a:hover:after{background-color:#838a9d}.release-line>li>a:hover .title{color:#0c64eb}.release-line>li>a:hover .date,.release-line>li>a:hover .info{color:#838a9d}.release-line>li:nth-child(odd){padding-top:80px;vertical-align:top}.release-line>li:nth-child(odd)>a{height:85px;padding-top:36px;border-top:5px solid #cbe0f6}.release-line>li:nth-child(odd)>a:before{top:-9px}.release-line>li:nth-child(odd)>a:after{top:6px}.release-line>li:nth-child(odd)>a>.icon{top:-26px}.release-line>li:nth-child(even){padding-bottom:80px;vertical-align:bottom}.release-line>li:nth-child(even)>a{height:85px;padding-bottom:36px;border-bottom:5px solid #cbe0f6}.release-line>li:nth-child(even)>a:before{bottom:-9px}.release-line>li:nth-child(even)>a:after{bottom:6px}.release-line>li:nth-child(even)>a>.icon{bottom:-2px}.release-line>li:last-child>a{border-color:transparent}.release-line>li.active>a:before{border-color:#0c64eb}.release-line>li+li>a>.date,.release-line>li+li>a>.info,.release-line>li+li>a>.title{position:relative;left:-36%}#footer{position:fixed;right:0;bottom:0;left:0;z-index:1010;height:40px;background:#fff;border-top:1px solid #eff1f7}#footer .breadcrumb{padding:10px 0;margin:0}#footer .breadcrumb>li{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#footer .breadcrumb>.active,#footer .breadcrumb>li>a{color:#838a9e}#footer .breadcrumb>.active>.icon,#footer .breadcrumb>li>a>.icon{display:none}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#16a8f8}#footer .breadcrumb>li+li:before{content:'>'}#footer>.container{padding:0 20px}@media (min-width:1400px){#footer>.container{padding:0 40px}}#poweredBy{position:absolute;top:4px;right:0;padding:5px 10px}#poweredBy .icon-zentao{color:#0097fd}#poweredBy a{color:#3c4353}#poweredBy a:hover{color:#0c64eb}#poweredBy a:hover .icon-zentao{color:#0c64eb}#poweredBy a.text-important{color:#bd7b46}#poweredBy a.text-important:hover{color:#ff5d5d}#poweredBy a.text-primary{color:#0c64eb}#poweredBy a.text-primary:hover{color:#16a8f8}#poweredBy #aiux{color:#cbd0dc}#noticeBox .alert{-webkit-box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.25) 0 3px 10px;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.25) 0 3px 10px} \ No newline at end of file From 894da720a321be96edbf210883bc42508790d206 Mon Sep 17 00:00:00 2001 From: Catouse Date: Fri, 11 Dec 2020 16:03:17 +0800 Subject: [PATCH 68/82] * update kindeditor to support transfer events from iframe to parent document. --- www/js/kindeditor/kindeditor.js | 7 +++++++ www/js/kindeditor/kindeditor.min.js | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/www/js/kindeditor/kindeditor.js b/www/js/kindeditor/kindeditor.js index 939cf9602f..97fa9158d3 100644 --- a/www/js/kindeditor/kindeditor.js +++ b/www/js/kindeditor/kindeditor.js @@ -10124,6 +10124,13 @@ KindEditor.plugin('zui', function(K) { if (spellcheck !== undefined) { self.edit.doc.documentElement.setAttribute('spellcheck', spellcheck); } + + var transferEvents = options.transferEvents; + if (transferEvents !== false) { + $(self.edit.doc).on(typeof transferEvents === 'string' ? transferEvents : 'click mousedown', function(event) { + $(self.edit.srcElement[0]).trigger(event.type); + }); + } }); if (options.transferTab !== false) { diff --git a/www/js/kindeditor/kindeditor.min.js b/www/js/kindeditor/kindeditor.min.js index a11ec08c3f..8e5bcf05b4 100644 --- a/www/js/kindeditor/kindeditor.min.js +++ b/www/js/kindeditor/kindeditor.min.js @@ -4,5 +4,5 @@ a.select()),e.insertHtml("    ")}})}function _bindFocusEvent e.collapse(!1),a.select(!1)}var a=this,o=a.range;if(""===e)return a;if(_IERANGE&&t){try{n(o,e)}catch(r){i(o,e)}return a}return i(o,e),a},hr:function(){return this.inserthtml("
    ")},print:function(){return this.win.print(),this},insertimage:function(e,t,n,i,a,o){t=_undef(t,""),a=_undef(a,0);var r='",i.inserthtml(l);if(o.isControl()){var s=K(o.startContainer.childNodes[o.startOffset]);return l+=">",s.after(K(l,a)),s.next().append(s),o.selectNode(s[0]),i.select()}var d=o.startContainer,c=o.startOffset,u=o.endContainer,p=o.endOffset;if(1==d.nodeType&&d===u&&c+1===p){var h=d.childNodes[c];if("a"==h.nodeName.toLowerCase())return n(h,e,t),i}return _nativeCommand(a,"createlink","__kindeditor_temp_url__"),K('a[href="__kindeditor_temp_url__"]',a).each(function(){n(this,e,t)}),i},unlink:function(){var e=this,t=e.doc,n=e.range;if(e.select(),n.collapsed){var i=e.commonNode({a:"*"});if(i&&(n.selectNode(i.get()),e.select()),_nativeCommand(t,"unlink",null),_WEBKIT&&"img"===K(n.startContainer).name){var a=K(n.startContainer).parent();"a"===a.name&&a.remove(!0)}}else _nativeCommand(t,"unlink",null);return e}}),_each("formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript".split(","),function(e,t){KCmd.prototype[t]=function(e){var n=this;return n.select(),_nativeCommand(n.doc,t,e),_IERANGE&&_inArray(t,"justifyleft,justifycenter,justifyright,justifyfull".split(","))>=0&&n.selection(),(!_IERANGE||_inArray(t,"formatblock,selectall,insertorderedlist,insertunorderedlist".split(","))>=0)&&n.selection(),n}}),_each("cut,copy,paste".split(","),function(e,t){KCmd.prototype[t]=function(){var e=this;if(!e.doc.queryCommandSupported(t))throw"not supported";return e.select(),_nativeCommand(e.doc,t,null),e}}),K.CmdClass=KCmd,K.cmd=_cmd,_extend(KWidget,{init:function(e){var t=this;if(t.name=e.name||"",t.doc=e.doc||document,t.win=_getWin(t.doc),t.x=_addUnit(e.x),t.y=_addUnit(e.y),t.z=e.z,t.width=_addUnit(e.width),t.height=_addUnit(e.height),t.div=K('
    '),t.options=e,t._alignEl=e.alignEl,t.width&&t.div.css("width",t.width),t.height&&t.div.css("height",t.height),t.z&&t.div.css({position:"absolute",left:t.x,top:t.y,"z-index":t.z}),!t.z||t.x!==undefined&&t.y!==undefined||t.autoPos(t.width,t.height),e.cls&&t.div.addClass(e.cls),e.shadowMode&&t.div.addClass("ke-shadow"),e.css&&t.div.css(e.css),e.src?K(e.src).replaceWith(t.div):K(t.doc.body).append(t.div),e.html&&t.div.html(e.html),e.autoScroll)if(_IE&&_V<7||_QUIRKS){var n=_getScrollPos();K(t.win).bind("scroll",function(e){var i=_getScrollPos(),a=i.x-n.x,o=i.y-n.y;t.pos(_removeUnit(t.x)+a,_removeUnit(t.y)+o,!1)})}else t.div.css("position","fixed")},pos:function(e,t,n){var i=this;return n=_undef(n,!0),null!==e&&(e=e<0?0:_addUnit(Math.floor(e)),i.div.css("left",e),n&&(i.x=e)),null!==t&&(t=t<0?0:_addUnit(Math.floor(t)),i.div.css("top",t),n&&(i.y=t)),i},autoPos:function(e,t){var n=this,i=_removeUnit(e)||0,a=_removeUnit(t)||0,o=_getScrollPos();if(n._alignEl){var r=K(n._alignEl),l=r.pos(),s=_round(r[0].clientWidth/2-i/2),d=_round(r[0].clientHeight/2-a/2);x=s<0?l.x:l.x+s,y=d<0?l.y:l.y+d}else{var c=_docElement(n.doc);x=_round(o.x+(c.clientWidth-i)/2),y=_round(o.y+(c.clientHeight-a)/2)}return _IE&&_V<7||_QUIRKS||(x-=o.x,y-=o.y),n.pos(x,y)},remove:function(){var e=this;return(_IE&&_V<7||_QUIRKS)&&K(e.win).unbind("scroll"),e.div.remove(),_each(e,function(t){e[t]=null}),this},show:function(){return this.div.show(),this},hide:function(){return this.div.hide(),this},draggable:function(e){var t=this;return e=e||{},e.moveEl=t.div,e.moveFn=function(e,n,i,a,o,r){(e+=o)<0&&(e=0),(n+=r)<0&&(n=0),t.pos(e,n)},_drag(e),t}}),K.WidgetClass=KWidget,K.widget=_widget;var html,_direction="";(html=document.getElementsByTagName("html"))&&(_direction=html[0].dir),_extend(KEdit,KWidget,{init:function(e){function t(){var t=_iframeDoc(n.iframe);t.open(),l&&(t.domain=document.domain),t.write(_getInitHtml(i,a,o,r)),t.close(),n.win=n.iframe[0].contentWindow,n.doc=t;var s=_cmd(t);n.afterChange(function(e){s.selection()}),_WEBKIT&&K(t).click(function(e){"img"===K(e.target).name&&(s.selection(!0),s.range.selectNode(e.target),s.select())}),_IE&&(n._mousedownHandler=function(){var e=s.range.cloneRange();e.shrink(),e.isControl()&&n.blur()},K(document).mousedown(n._mousedownHandler),K(t).keydown(function(e){if(8==e.which){s.selection();var t=s.range;t.isControl()&&(t.collapse(!0),K(t.startContainer.childNodes[t.startOffset]).remove(),e.preventDefault())}})),n.cmd=s,n.html(_elementVal(n.srcElement)),_IE?(t.body.disabled=!0,t.body.contentEditable=!0,t.body.removeAttribute("disabled")):t.designMode="on",e.afterCreate&&e.afterCreate.call(n)}var n=this;KEdit.parent.init.call(n,e),n.srcElement=K(e.srcElement),n.div.addClass("ke-edit"),n.designMode=_undef(e.designMode,!0),n.beforeGetHtml=e.beforeGetHtml,n.beforeSetHtml=e.beforeSetHtml,n.afterSetHtml=e.afterSetHtml;var i=_undef(e.themesPath,""),a=e.bodyClass,o=e.cssPath,r=e.cssData,l="res:"!=location.protocol&&location.host.replace(/:\d+/,"")!==document.domain,s="document.open();"+(l?'document.domain="'+document.domain+'";':"")+"document.close();",d=_IE?' src="javascript:void(function(){'+encodeURIComponent(s)+'}())"':"";n.iframe=K('").css("width","100%"),n.textarea=K('').css("width","100%"),n.tabIndex=isNaN(parseInt(e.tabIndex,10))?n.srcElement.attr("tabindex"):parseInt(e.tabIndex,10),n.iframe.attr("tabindex",n.tabIndex),n.textarea.attr("tabindex",n.tabIndex),n.width&&n.setWidth(n.width),n.height&&n.setHeight(n.height),n.designMode?n.textarea.hide():n.iframe.hide(),l&&n.iframe.bind("load",function(e){n.iframe.unbind("load"),_IE?t():setTimeout(t,0)}),n.div.append(n.iframe),n.div.append(n.textarea),n.srcElement.hide(),!l&&t()},setWidth:function(e){return this.div.css("width",_addUnit(e)),this},setHeight:function(e){var t=this;return e=_addUnit(e),t.div.css("height",e),t.iframe.css("height",e),(_IE&&_V<8||_QUIRKS)&&(e=_addUnit(_removeUnit(e)-2)),t.textarea.css("height",e),t},remove:function(){var e=this,t=e.doc;K(t.body).unbind(),K(t).unbind(),K(e.win).unbind(),e._mousedownHandler&&K(document).unbind("mousedown",e._mousedownHandler),_elementVal(e.srcElement,e.html()),e.srcElement.show(),t.write(""),e.iframe.unbind(),e.textarea.unbind(),KEdit.parent.remove.call(e)},html:function(e,t){var n=this,i=n.doc;if(n.designMode){var a=i.body;return e===undefined?(e=t?""+a.parentNode.innerHTML+"":a.innerHTML,n.beforeGetHtml&&(e=n.beforeGetHtml(e)),_GECKO&&"
    "==e&&(e=""),e):(n.beforeSetHtml&&(e=n.beforeSetHtml(e)),_IE&&_V>=9&&(e=e.replace(/(<.*?checked=")checked(".*>)/gi,"$1$2")),K(a).html(e),n.afterSetHtml&&n.afterSetHtml(),n)}return e===undefined?n.textarea.val():(n.textarea.val(e),n)},design:function(e){var t,n=this;return(e===undefined?!n.designMode:e)?n.designMode||(t=n.html(),n.designMode=!0,n.html(t),n.textarea.hide(),n.iframe.show()):n.designMode&&(t=n.html(),n.designMode=!1,n.html(t),n.iframe.hide(),n.textarea.show()),n.focus()},focus:function(){var e=this;return e.designMode?e.win.focus():e.textarea[0].focus(),e},blur:function(){var e=this;if(_IE){var t=K('',e.div);e.div.append(t),t[0].focus(),t.remove()}else e.designMode?e.win.blur():e.textarea[0].blur();return e},afterChange:function(e){function t(t){setTimeout(function(){e(t)},1)}var n=this,i=n.doc,a=i.body;return K(i).keyup(function(t){t.ctrlKey||t.altKey||!_CHANGE_KEY_MAP[t.which]||e(t)}),K(i).mouseup(e).contextmenu(e),K(n.win).blur(e),K(a).bind("paste",t),K(a).bind("cut",t),n}}),K.EditClass=KEdit,K.edit=_edit,K.iframeDoc=_iframeDoc,_extend(KToolbar,KWidget,{init:function(e){function t(e){var t=K(e);return t.hasClass("ke-outline")?t:t.hasClass("ke-toolbar-icon")?t.parent():void 0}function n(e,n){var i=t(e.target);if(i){if(i.hasClass("ke-disabled"))return;if(i.hasClass("ke-selected"))return;i[n]("ke-on")}}var i=this;KToolbar.parent.init.call(i,e),i.disableMode=_undef(e.disableMode,!1),i.noDisableItemMap=_toMap(_undef(e.noDisableItems,[])),i._itemMap={},i.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",function(e){e.preventDefault()}).attr("unselectable","on"),i.div.mouseover(function(e){n(e,"addClass")}).mouseout(function(e){n(e,"removeClass")}).click(function(e){var n=t(e.target);if(n){if(n.hasClass("ke-disabled"))return;i.options.click.call(this,e,n.attr("data-name"))}})},get:function(e){return this._itemMap[e]?this._itemMap[e]:this._itemMap[e]=K("span.ke-icon-"+e,this.div).parent()},select:function(e){return _selectToolbar.call(this,e,function(e){e.addClass("ke-selected")}),self},unselect:function(e){return _selectToolbar.call(this,e,function(e){e.removeClass("ke-selected").removeClass("ke-on")}),self},enable:function(e){var t=this,n=e.get?e:t.get(e);return n&&(n.removeClass("ke-disabled"),n.opacity(1)),t},disable:function(e){var t=this,n=e.get?e:t.get(e);return n&&(n.removeClass("ke-selected").addClass("ke-disabled"),n.opacity(.5)),t},disableAll:function(e,t){var n=this,i=n.noDisableItemMap;return t&&(i=_toMap(t)),(e===undefined?!n.disableMode:e)?(K("span.ke-outline",n.div).each(function(){var e=K(this),t=e[0].getAttribute("data-name",2);i[t]||n.disable(e)}),n.disableMode=!0):(K("span.ke-outline",n.div).each(function(){var e=K(this),t=e[0].getAttribute("data-name",2);i[t]||n.enable(e)}),n.disableMode=!1),n}}),K.ToolbarClass=KToolbar,K.toolbar=_toolbar,_extend(KMenu,KWidget,{init:function(e){var t=this;e.z=e.z||811213,KMenu.parent.init.call(t,e),t.centerLineMode=_undef(e.centerLineMode,!0),t.div.addClass("ke-menu").bind("click,mousedown",function(e){e.stopPropagation()}).attr("unselectable","on")},addItem:function(e){var t=this;if("-"===e.title)return void t.div.append(K('
    '));var n=K('
    '),i=K('
    '),a=K('
    '),o=_addUnit(e.height),r=_undef(e.iconClass,"");t.div.append(n),o&&(n.css("height",o),a.css("line-height",o));var l;return t.centerLineMode&&(l=K('
    '),o&&l.css("height",o)),n.mouseover(function(e){K(this).addClass("ke-menu-item-on"),l&&l.addClass("ke-menu-item-center-on")}).mouseout(function(e){K(this).removeClass("ke-menu-item-on"),l&&l.removeClass("ke-menu-item-center-on")}).click(function(t){e.click.call(K(this)),t.stopPropagation()}).append(i),l&&n.append(l),n.append(a),e.checked&&(r="ke-icon-checked"),""!==r&&i.html(''),a.html(e.title),t},remove:function(){var e=this;return e.options.beforeRemove&&e.options.beforeRemove.call(e),K(".ke-menu-item",e.div[0]).unbind(),KMenu.parent.remove.call(e),e}}),K.MenuClass=KMenu,K.menu=_menu,_extend(KColorPicker,KWidget,{init:function(e){var t=this;e.z=e.z||811213,KColorPicker.parent.init.call(t,e);var n=e.colors||[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]];t.selectedColor=(e.selectedColor||"").toLowerCase(),t._cells=[],t.div.addClass("ke-colorpicker").bind("click,mousedown",function(e){e.stopPropagation()}).attr("unselectable","on");var i=t.doc.createElement("table");t.div.append(i),i.className="ke-colorpicker-table",i.cellPadding=0,i.cellSpacing=0,i.border=0;var a=i.insertRow(0),o=a.insertCell(0);o.colSpan=n[0].length,t._addAttr(o,"","ke-colorpicker-cell-top");for(var r=0;r').css("background-color",t)):e.html(i.options.noColor),K(e).attr("unselectable","on"),i._cells.push(e)},remove:function(){var e=this;return _each(e._cells,function(){this.unbind()}),KColorPicker.parent.remove.call(e),e}}),K.ColorPickerClass=KColorPicker,K.colorpicker=_colorpicker,_extend(KUploadButton,{init:function(e){var t=this,n=K(e.button),i=e.fieldName||"file",a=e.url||"",o=n.val(),r=e.extraParams||{},l=n[0].className||"",s=e.target||"kindeditor_upload_iframe_"+(new Date).getTime();e.afterError=e.afterError||function(e){alert(e)};var d=[];for(var c in r)d.push('');var u=['
    ',e.target?"":'',e.form?'
    ':'','',d.join(""),'',"",'',e.form?"
    ":"","
    "].join(""),p=K(u,n.doc);n.hide(),n.before(p),t.div=p,t.button=n,t.iframe=e.target?K('iframe[name="'+s+'"]'):K("iframe",p),t.form=e.form?K(e.form):K("form",p),t.fileBox=K(".ke-upload-file",p),t.options=e},submit:function(){var e=this,t=e.iframe;return t.bind("load",function(){t.unbind();var n=document.createElement("form");e.fileBox.before(n),K(n).append(e.fileBox),n.reset(),K(n).remove(!0);var i,a=K.iframeDoc(t),o=a.getElementsByTagName("pre")[0],r="";r=o?o.innerHTML:a.body.innerHTML,r=_unescape(r),t[0].src="javascript:false";try{i=K.json(r)}catch(l){e.options.afterError.call(e,""+a.body.parentNode.innerHTML+"")}i&&e.options.afterUpload.call(e,i)}),e.form[0].submit(),e},remove:function(){var e=this;return e.fileBox&&e.fileBox.unbind(),e.iframe.remove(),e.div.remove(),e.button.show(),e}}),K.UploadButtonClass=KUploadButton,K.uploadbutton=_uploadbutton,_extend(KDialog,KWidget,{init:function(e){var t=this,n=_undef(e.shadowMode,!0);e.z=e.z||811213,e.shadowMode=!1,e.autoScroll=_undef(e.autoScroll,!0),KDialog.parent.init.call(t,e);var i=e.title,a=K(e.body,t.doc),o=e.previewBtn,r=e.yesBtn,l=e.noBtn,s=e.closeBtn,d=_undef(e.showMask,!0);t.div.addClass("ke-dialog").bind("click,mousedown",function(e){e.stopPropagation()});var c=K('
    ').appendTo(t.div);_IE&&_V<7?t.iframeMask=K('').appendTo(t.div):n&&K('
    ').appendTo(t.div);var u=K('
    ');c.append(u),u.html(i),t.closeIcon=K('').click(s.click),u.append(t.closeIcon),t.draggable({clickEl:u,beforeDrag:e.beforeDrag});var p=K('
    ');c.append(p),p.append(a);var h=K('');if((o||r||l)&&c.append(h),_each([{btn:o,name:"preview"},{btn:r,name:"yes"},{btn:l,name:"no"}],function(){if(this.btn){var e=_createButton(this.btn);e.addClass("ke-dialog-"+this.name),h.append(e)}}),t.height&&p.height(_removeUnit(t.height)-u.height()-h.height()),t.div.width(t.div.width()),t.div.height(t.div.height()),t.mask=null,d){var f=_docElement(t.doc),m=Math.max(f.scrollWidth,f.clientWidth),g=Math.max(f.scrollHeight,f.clientHeight);t.mask=_widget({x:0,y:0,z:t.z-1,cls:"ke-dialog-mask",width:m,height:g})}t.autoPos(t.div.width(),t.div.height()),t.footerDiv=h,t.bodyDiv=p,t.headerDiv=u,t.isLoading=!1},setMaskIndex:function(e){var t=this;t.mask.div.css("z-index",e)},showLoading:function(e){e=_undef(e,"");var t=this,n=t.bodyDiv;return t.loading=K('
    '+e+"
    ").width(n.width()).height(n.height()).css("top",t.headerDiv.height()+"px"),n.css("visibility","hidden").after(t.loading),t.isLoading=!0,t},hideLoading:function(){return this.loading&&this.loading.remove(),this.bodyDiv.css("visibility","visible"),this.isLoading=!1,this},remove:function(){var e=this;return e.options.beforeRemove&&e.options.beforeRemove.call(e),e.mask&&e.mask.remove(),e.iframeMask&&e.iframeMask.remove(),e.closeIcon.unbind(),K("input",e.div).unbind(),K("button",e.div).unbind(),e.footerDiv.unbind(),e.bodyDiv.unbind(),e.headerDiv.unbind(),K("iframe",e.div).each(function(){K(this).remove()}),KDialog.parent.remove.call(e),e}}),K.DialogClass=KDialog,K.dialog=_dialog,K.tabs=_tabs,K.loadScript=_loadScript,K.loadStyle=_loadStyle,K.ajax=_ajax;var _plugins={},_language={};KEditor.prototype={lang:function(e){return _lang(e,this.langType)},loadPlugin:function(e,t){var n=this;return _plugins[e]?_isFunction(_plugins[e])?(_plugins[e].call(n,KindEditor),t&&t.call(n),n):(setTimeout(function(){n.loadPlugin(e,t)},100),n):(_plugins[e]="loading",_loadScript(n.pluginsPath+e+"/"+e+".js?ver="+encodeURIComponent(K.DEBUG?_TIME:_VERSION),function(){setTimeout(function(){_plugins[e]&&n.loadPlugin(e,t)},0)}),n)},handler:function(e,t){var n=this;return n._handlers[e]||(n._handlers[e]=[]),_isFunction(t)?(n._handlers[e].push(t),n):(_each(n._handlers[e],function(){t=this.call(n,t)}),t)},clickToolbar:function(e,t){var n=this,i="clickToolbar"+e;return t===undefined?n._handlers[i]?n.handler(i):(n.loadPlugin(e,function(){n.handler(i)}),n):n.handler(i,t)},updateState:function(){var e=this;return _each("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,subscript,superscript,bold,italic,underline,strikethrough".split(","),function(t,n){e.cmd.state(n)?e.toolbar.select(n):e.toolbar.unselect(n)}),e},addContextmenu:function(e){return this._contextmenus.push(e),this},afterCreate:function(e){return this.handler("afterCreate",e)},beforeRemove:function(e){return this.handler("beforeRemove",e)},beforeGetHtml:function(e){return this.handler("beforeGetHtml",e)},beforeSetHtml:function(e){return this.handler("beforeSetHtml",e)},afterSetHtml:function(e){return this.handler("afterSetHtml",e)},create:function(){function e(){return 0===s.height()?void setTimeout(e,100):void t.resize(i,a,!1)}var t=this,n=t.fullscreenMode;if(t.isCreated)return t;if(t.srcElement.data("kindeditor"))return t;t.srcElement.data("kindeditor","true"),n?_docElement().style.overflow="hidden":_docElement().style.overflow="";var i=n?_docElement().clientWidth+"px":t.width,a=n?_docElement().clientHeight+"px":t.height;(_IE&&_V<8||_QUIRKS)&&(a=_addUnit(_removeUnit(a)+2));var o=t.container=K(t.layout);n?K(document.body).append(o):t.srcElement.before(o);var r=K(".toolbar",o),l=K(".edit",o),s=t.statusbar=K(".statusbar",o);o.removeClass("container").addClass("ke-container ke-container-"+t.themeType).css("width",i),n?(o.css({position:"absolute",left:0,top:0,"z-index":811211}),_GECKO||(t._scrollPos=_getScrollPos()),window.scrollTo(0,0),K(document.body).css({height:"1px",overflow:"hidden"}),K(document.body.parentNode).css("overflow","hidden"),t._fullscreenExecuted=!0):(t._fullscreenExecuted&&(K(document.body).css({height:"",overflow:""}),K(document.body.parentNode).css("overflow","")),t._scrollPos&&window.scrollTo(t._scrollPos.x,t._scrollPos.y));var d=[];K.each(t.items,function(e,n){"|"==n?d.push(''):"/"==n?d.push('
    '):(d.push(''),d.push(''))});var c=t.toolbar=_toolbar({src:r,html:d.join(""),noDisableItems:t.noDisableItems,click:function(e,n){if(e.stop(),t.menu){var i=t.menu.name;if(t.hideMenu(),i===n)return}t.clickToolbar(n)}}),u=_removeUnit(a)-c.div.height(),p=t.edit=_edit({height:u>0&&_removeUnit(a)>t.minHeight?u:t.minHeight,src:l,srcElement:t.srcElement,designMode:t.designMode,themesPath:t.themesPath,bodyClass:t.bodyClass,cssPath:t.cssPath,cssData:t.cssData,beforeGetHtml:function(e){return e=t.beforeGetHtml(e),e=_removeBookmarkTag(_removeTempTag(e)),_formatHtml(e,t.filterMode?t.htmlTags:null,t.urlType,t.wellFormatMode,t.indentChar,t.simpleWrap)},beforeSetHtml:function(e){return e=_formatHtml(e,t.filterMode?t.htmlTags:null,"",!1),t.beforeSetHtml(e)},afterSetHtml:function(){t.edit=p=this,t.afterSetHtml()},afterCreate:function(){if(t.edit=p=this,t.cmd=p.cmd,t._docMousedownFn=function(e){t.menu&&t.hideMenu()},K(p.doc,document).mousedown(t._docMousedownFn),_bindContextmenuEvent.call(t),_bindNewlineEvent.call(t),_bindTabEvent.call(t),_bindFocusEvent.call(t),p.afterChange(function(e){p.designMode&&(t.updateState(),t.addBookmark(),t.options.afterChange&&t.options.afterChange.call(t))}),p.textarea.keyup(function(e){e.ctrlKey||e.altKey||!_INPUT_KEY_MAP[e.which]||t.options.afterChange&&t.options.afterChange.call(t)}),t.readonlyMode&&t.readonly(),t.isCreated=!0,""===t.initContent&&(t.initContent=t.html()),t._undoStack.length>0){var e=t._undoStack.pop();e.start&&(t.html(e.html),p.cmd.range.moveToBookmark(e),t.select())}t.afterCreate(),t.options.afterCreate&&t.options.afterCreate.call(t),t.container.removeClass("ke-loading")}});return s.removeClass("statusbar").addClass("ke-statusbar").append(''),t._fullscreenResizeHandler&&(K(window).unbind("resize",t._fullscreenResizeHandler),t._fullscreenResizeHandler=null),e(),n?(t._fullscreenResizeHandler=function(e){t.isCreated&&t.resize(_docElement().clientWidth,_docElement().clientHeight,!1)},K(window).bind("resize",t._fullscreenResizeHandler),c.select("fullscreen")):(_GECKO&&K(window).bind("scroll",function(e){t._scrollPos=_getScrollPos()}),t.resizeType>0&&_drag({moveEl:o,clickEl:s,moveFn:function(e,n,i,a,o,r){a+=r,t.resize(null,a)}}),2===t.resizeType&&_drag({moveEl:o,clickEl:s.last(),moveFn:function(e,n,i,a,o,r){i+=o,a+=r,t.resize(i,a)}})),t},remove:function(){var e=this;return e.isCreated?(e.beforeRemove(),e.srcElement.data("kindeditor",""),e.menu&&e.hideMenu(),_each(e.dialogs,function(){e.hideDialog()}),K(document).unbind("mousedown",e._docMousedownFn),e.toolbar.remove(),e.edit.remove(),e.statusbar.last().unbind(),e.statusbar.unbind(),e.container.remove(),e.container=e.toolbar=e.edit=e.menu=null,e.dialogs=[],e.isCreated=!1,e):e},resize:function(e,t,n){var i=this;return n=_undef(n,!0),e&&(/%/.test(e)||(e=_removeUnit(e),e=e/gi,"").replace(/ /gi," ")):t.html(_escape(e))},isEmpty:function(){return""===_trim(this.text().replace(/\r\n|\n|\r/,""))},isDirty:function(){return _trim(this.initContent.replace(/\r\n|\n|\r|t/g,""))!==_trim(this.html().replace(/\r\n|\n|\r|t/g,""))},selectedHtml:function(){var e=this.isCreated?this.cmd.range.html():"";return e=_removeBookmarkTag(_removeTempTag(e))},count:function(e){var t=this;return e=(e||"html").toLowerCase(),"html"===e?t.html().length:"text"===e?t.text().replace(/<(?:img|embed).*?>/gi,"K").replace(/\r\n|\n|\r/g,"").length:0},exec:function(e){e=e.toLowerCase();var t=this,n=t.cmd,i=_inArray(e,"selectall,copy,paste,print".split(","))<0;return i&&t.addBookmark(!1),n[e].apply(n,_toArray(arguments,1)),i&&(t.updateState(),t.addBookmark(!1),t.options.afterChange&&t.options.afterChange.call(t)),t},insertHtml:function(e,t){return this.isCreated?(e=this.beforeSetHtml(e),this.exec("inserthtml",e,t),this):this},appendHtml:function(e){if(this.html(this.html()+e),this.isCreated){var t=this.cmd;t.range.selectNodeContents(t.doc.body).collapse(!1),t.select()}return this},sync:function(){return _elementVal(this.srcElement,this.html()),this},focus:function(){return this.isCreated?this.edit.focus():this.srcElement[0].focus(),this},blur:function(){return this.isCreated?this.edit.blur():this.srcElement[0].blur(),this},addBookmark:function(e){e=_undef(e,!0);var t,n=this,i=n.edit,a=i.doc.body,o=_removeTempTag(a.innerHTML);if(e&&n._undoStack.length>0){var r=n._undoStack[n._undoStack.length-1];if(Math.abs(o.length-_removeBookmarkTag(r.html).length)0){var n=t.dialogs[0],i=t.dialogs[t.dialogs.length-1];n.setMaskIndex(i.z+2),e.z=i.z+3,e.showMask=!1}var a=_dialog(e);return t.dialogs.push(a),a},hideDialog:function(){var e=this;if(e.dialogs.length>0&&e.dialogs.pop().remove(),e.dialogs.length>0){var t=e.dialogs[0],n=e.dialogs[e.dialogs.length-1];t.setMaskIndex(n.z-1)}return e},errorDialog:function(e){var t=this,n=t.createDialog({width:750,title:t.lang("uploadError"),body:'
    '}),i=K("iframe",n.div),a=K.iframeDoc(i);return a.open(),a.write(e),a.close(),K(a.body).css("background-color","#FFF"),i[0].contentWindow.focus(),t}},_instances=[],K.remove=function(e){_eachEditor(e,function(e){this.remove(),_instances.splice(e,1)})},K.sync=function(e){_eachEditor(e,function(){this.sync()})},K.html=function(e,t){_eachEditor(e,function(){this.html(t)})},K.insertHtml=function(e,t){_eachEditor(e,function(){this.insertHtml(t)})},K.appendHtml=function(e,t){_eachEditor(e,function(){this.appendHtml(t)})},_IE&&_V<7&&_nativeCommand(document,"BackgroundImageCache",!0),K.EditorClass=KEditor,K.editor=_editor,K.create=_create,K.instances=_instances,K.plugin=_plugin,K.lang=_lang,_plugin("core",function(e){var t=this,n={undo:"Z",redo:"Y",bold:"B",italic:"I",underline:"U",print:"P",selectall:"A"};if(t.afterSetHtml(function(){t.options.afterChange&&t.options.afterChange.call(t)}),t.afterCreate(function(){if("form"==t.syncType){for(var n=e(t.srcElement),i=!1;n=n.parent();)if("form"==n.name){i=!0;break}if(i){n.bind("submit",function(n){t.sync(),e(window).bind("unload",function(){t.edit.textarea.remove()})});var a=e('[type="reset"]',n);a.click(function(){t.html(t.initContent),t.cmd.selection()}),t.beforeRemove(function(){n.unbind(),a.unbind()})}}}),t.clickToolbar("source",function(){t.edit.designMode?(t.toolbar.disableAll(!0),t.edit.design(!1),t.toolbar.select("source")):(t.toolbar.disableAll(!1),t.edit.design(!0),t.toolbar.unselect("source"),_GECKO?setTimeout(function(){t.cmd.selection()},0):t.cmd.selection()),t.designMode=t.edit.designMode}),t.afterCreate(function(){t.designMode||t.toolbar.disableAll(!0).select("source")}),t.clickToolbar("fullscreen",function(){t.fullscreen()}),t.fullscreenShortcut){var i=!1;t.afterCreate(function(){if(e(t.edit.doc,t.edit.textarea).keyup(function(e){27==e.which&&setTimeout(function(){t.fullscreen()},0)}),i){if(_IE&&!t.designMode)return;t.focus()}i||(i=!0)})}_each("undo,redo".split(","),function(e,i){n[i]&&t.afterCreate(function(){_ctrl(this.edit.doc,n[i],function(){t.clickToolbar(i)})}),t.clickToolbar(i,function(){t[i]()})}),t.clickToolbar("formatblock",function(){var e=t.lang("formatblock.formatBlock"),n={h1:28,h2:24,h3:18,H4:14,p:12},i=t.cmd.val("formatblock"),a=t.createMenu({name:"formatblock",width:"en"==t.langType?200:150});_each(e,function(e,o){var r="font-size:"+n[e]+"px;";"h"===e.charAt(0)&&(r+="font-weight:bold;"),a.addItem({title:''+o+"",height:n[e]+12,checked:i===e||i===o,click:function(){t.select().exec("formatblock","<"+e+">").hideMenu()}})})}),t.clickToolbar("fontname",function(){var e=t.cmd.val("fontname"),n=t.createMenu({name:"fontname",width:150});_each(t.lang("fontname.fontName"),function(i,a){n.addItem({title:''+a+"",checked:e===i.toLowerCase()||e===a.toLowerCase(),click:function(){t.exec("fontname",i).hideMenu()}})})}),t.clickToolbar("fontsize",function(){var e=t.cmd.val("fontsize"),n=t.createMenu({name:"fontsize",width:150});_each(t.fontSizeTable,function(i,a){n.addItem({title:''+a+"",height:_removeUnit(a)+12,checked:e===a,click:function(){t.exec("fontsize",a).hideMenu()}})})}),_each("forecolor,hilitecolor".split(","),function(e,n){t.clickToolbar(n,function(){t.createMenu({name:n,selectedColor:t.cmd.val(n)||"default",colors:t.colorTable,click:function(e){t.exec(n,e).hideMenu()}})})}),_each("cut,copy,paste".split(","),function(e,n){t.clickToolbar(n,function(){t.focus();try{t.exec(n,null)}catch(e){alert(t.lang(n+"Error"))}})}),t.clickToolbar("about",function(){var e='
    KindEditor '+_VERSION+'
    Copyright © kindsoft.net All rights reserved.
    ';t.createDialog({name:"about",width:350,title:t.lang("about"),body:e})}),t.plugin.getSelectedLink=function(){return t.cmd.commonAncestor("a"); },t.plugin.getSelectedImage=function(){return _getImageFromRange(t.edit.cmd.range,function(e){return!/^ke-\w+$/i.test(e[0].className)})},t.plugin.getSelectedFlash=function(){return _getImageFromRange(t.edit.cmd.range,function(e){return"ke-flash"==e[0].className})},t.plugin.getSelectedMedia=function(){return _getImageFromRange(t.edit.cmd.range,function(e){return"ke-media"==e[0].className||"ke-video"==e[0].className||"ke-audio"==e[0].className})},t.plugin.getSelectedAnchor=function(){return _getImageFromRange(t.edit.cmd.range,function(e){return"ke-anchor"==e[0].className})},_each("link,image,flash,media,anchor".split(","),function(e,n){var i=n.charAt(0).toUpperCase()+n.substr(1);_each("edit,delete".split(","),function(e,a){t.addContextmenu({title:t.lang(a+i),click:function(){t.loadPlugin(n,function(){t.plugin[n][a](),t.hideMenu()})},cond:t.plugin["getSelected"+i],width:150,iconClass:"edit"==a?"ke-icon-"+n:undefined})}),t.addContextmenu({title:"-"})}),t.addContextmenu({title:"-"}),_each("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript,hr,print,bold,italic,underline,strikethrough,removeformat,unlink".split(","),function(e,i){n[i]&&t.afterCreate(function(){_ctrl(this.edit.doc,n[i],function(){t.cmd.selection(),t.clickToolbar(i)})}),t.clickToolbar(i,function(){t.focus().exec(i,null)})}),t.afterCreate(function(){function n(){i.range.moveToBookmark(a),i.select(),_WEBKIT&&(e("div."+l,o).each(function(){e(this).after("
    ").remove(!0)}),e("span.Apple-style-span",o).remove(!0),e("span.Apple-tab-span",o).remove(!0),e("span[style]",o).each(function(){"nowrap"==e(this).css("white-space")&&e(this).remove(!0)}),e("meta",o).remove());var n=o[0].innerHTML;o.remove(),""!==n&&(_WEBKIT&&(n=n.replace(/(
    )\1/gi,"$1")),2===t.pasteType&&(n=n.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,""),/schemas-microsoft-com|worddocument|mso-\w+/i.test(n)?n=_clearMsWord(n,t.filterMode?t.htmlTags:e.options.htmlTags):(n=_formatHtml(n,t.filterMode?t.htmlTags:null),n=t.beforeSetHtml(n))),1===t.pasteType&&(n=n.replace(/ /gi," "),n=n.replace(/\n\s*\n/g,"\n"),n=n.replace(/]*>/gi,"\n"),n=n.replace(/<\/p>]*>/gi,"\n"),n=n.replace(/<[^>]+>/g,""),n=n.replace(/ {2}/g,"  "),"p"==t.newlineTag?/\n/.test(n)&&(n=n.replace(/^/,"

    ").replace(/$/,"

    ").replace(/\n/g,"

    ")):n=n.replace(/\n/g,"
    $&")),t.insertHtml(n,!0))}var i,a,o,r=t.edit.doc,l="__kindeditor_paste__",s=!1;e(r.body).bind("paste",function(d){if(0===t.pasteType)return void d.stop();if(!s){if(s=!0,e("div."+l,r).remove(),i=t.cmd.selection(),a=i.range.createBookmark(),o=e('

    ',r).css({position:"absolute",width:"1px",height:"1px",overflow:"hidden",left:"-1981px",top:e(a.start).pos().y+"px","white-space":"nowrap"}),e(r.body).append(o),_IE){var c=i.range.get(!0);c.moveToElementText(o[0]),c.select(),c.execCommand("paste"),d.preventDefault()}else i.range.selectNodeContents(o[0]),i.select(),o[0].tabIndex=-1,o[0].focus();setTimeout(function(){n(),s=!1},0)}})}),t.beforeGetHtml(function(e){return _IE&&_V<=8&&(e=e.replace(/]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(e,t){return unescape(t)}),e=e.replace(/(]*)?>)/gi,function(e,t,n){return/\s+type="[^"]+"/i.test(e)?e:t+' type="text"'+n})),e.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/gi,function(e,t,n,i){return t+_unescape(n).replace(/\s+/g," ")+i}).replace(/]*class="?ke-(media|video|audio)"?[^>]*>/gi,function(e,t){var n=_getAttrList(e),i=_getCssList(n.style||""),a=_mediaAttrs(n["data-ke-tag"]),o=_undef(i.width,""),r=_undef(i.height,"");return/px/i.test(o)&&(o=_removeUnit(o)),/px/i.test(r)&&(r=_removeUnit(r)),a.width=_undef(n.width,o),a.height=_undef(n.height,r),_mediaEmbed(a,t)}).replace(/]*class="?ke-anchor"?[^>]*>/gi,function(e){var t=_getAttrList(e);return''}).replace(/]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(e,t,n){return""+unescape(n)+""}).replace(/]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(e,t,n){return""+unescape(n)+""}).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/gi,function(e,t,n,i){return e=e.replace(/(\s+(?:href|src)=")[^"]*(")/i,function(e,t,i){return t+_unescape(n)+i}),e=e.replace(/\s+data-ke-src="[^"]*"/i,"")}).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/gi,function(e,t,n){return t+n})}),t.beforeSetHtml(function(e){return _IE&&_V<=8&&(e=e.replace(/]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/gi,function(e){var t=_getAttrList(e),n=_getCssList(t.style||"");return"none"==n.display?'
    ':e})),e.replace(/]*type="([^"]+)"[^>]*>(?:<\/embed>)?/gi,function(e){var n=_getAttrList(e);return n.src=_undef(n.src,""),n.width=_undef(n.width,0),n.height=_undef(n.height,0),_mediaImg(t.themesPath+"common/blank.gif",n)}).replace(/<(video|audio)[^>]*>((\s*]*>\s*)*)(?:<\/(video|audio)>)?/gi,function(e,n,i){var a=_getAttrList(i?e.replace(i,""):e);if(i){var o=[];$(i).filter("source").each(function(){var e=$(this),t=e.attr("src"),n=e.attr("type");n&&(t+="#"+n),o.push(t)}),a.src=o.join(",")}else a.src=_undef(a.src,"");return a.width=_undef(a.width,0),a.height=_undef(a.height,0),a.type=n,_mediaImg(t.themesPath+"common/blank.gif",a)}).replace(/]*name="([^"]+)"[^>]*>(?:<\/a>)?/gi,function(e){var n=_getAttrList(e);return n.href!==undefined?e:''}).replace(/]*)>([\s\S]*?)<\/script>/gi,function(e,t,n){return'
    '+escape(n)+"
    "}).replace(/]*)>([\s\S]*?)<\/noscript>/gi,function(e,t,n){return'
    '+escape(n)+"
    "}).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/gi,function(e,t,n,i,a){return e.match(/\sdata-ke-src="[^"]*"/i)?e:e=t+n+'="'+i+'" data-ke-src="'+_escape(i)+'"'+a}).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/gi,function(e,t,n){return t+"data-ke-"+n}).replace(/]*\s+border="0"[^>]*>/gi,function(e){return e.indexOf("ke-zeroborder")>=0?e:_addClassToTag(e,"ke-zeroborder")})})})}}(window),KindEditor.lang({source:"HTML代码",preview:"预览",undo:"后退(Ctrl+Z)",redo:"前进(Ctrl+Y)",cut:"剪切(Ctrl+X)",copy:"复制(Ctrl+C)",paste:"粘贴(Ctrl+V)",plainpaste:"粘贴为无格式文本",wordpaste:"从Word粘贴",selectall:"全选(Ctrl+A)",justifyleft:"左对齐",justifycenter:"居中",justifyright:"右对齐",justifyfull:"两端对齐",insertorderedlist:"编号",insertunorderedlist:"项目符号",indent:"增加缩进",outdent:"减少缩进",subscript:"下标",superscript:"上标",formatblock:"段落",fontname:"字体",fontsize:"文字大小",forecolor:"文字颜色",hilitecolor:"文字背景",bold:"粗体(Ctrl+B)",italic:"斜体(Ctrl+I)",underline:"下划线(Ctrl+U)",strikethrough:"删除线",removeformat:"删除格式",image:"图片",multiimage:"批量图片上传",flash:"Flash",media:"视音频",table:"表格",tablecell:"单元格",hr:"插入横线",emoticons:"插入表情",link:"超级链接",unlink:"取消超级链接",fullscreen:"全屏显示",about:"关于",print:"打印(Ctrl+P)",filemanager:"文件空间",code:"插入程序代码",map:"Google地图",baidumap:"百度地图",lineheight:"行距",clearhtml:"清理HTML代码",pagebreak:"插入分页符",quickformat:"一键排版",insertfile:"插入文件",template:"插入模板",anchor:"锚点",yes:"确定",no:"取消",close:"关闭",editImage:"图片属性",deleteImage:"删除图片",editFlash:"Flash属性",deleteFlash:"删除Flash",editMedia:"视音频属性",deleteMedia:"删除视音频",editLink:"超级链接属性",deleteLink:"取消超级链接",editAnchor:"锚点属性",deleteAnchor:"删除锚点",tableprop:"表格属性",tablecellprop:"单元格属性",tableinsert:"插入表格",tabledelete:"删除表格",tablecolinsertleft:"左侧插入列",tablecolinsertright:"右侧插入列",tablerowinsertabove:"上方插入行",tablerowinsertbelow:"下方插入行",tablerowmerge:"向下合并单元格",tablecolmerge:"向右合并单元格",tablerowsplit:"拆分行",tablecolsplit:"拆分列",tablecoldelete:"删除列",tablerowdelete:"删除行",noColor:"无颜色",pleaseSelectFile:"请选择文件。",invalidImg:"请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",invalidMedia:"请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",invalidWidth:"宽度必须为数字。",invalidHeight:"高度必须为数字。",invalidBorder:"边框必须为数字。",invalidUrl:"请输入有效的URL地址。",invalidRows:"行数为必选项,只允许输入大于0的数字。",invalidCols:"列数为必选项,只允许输入大于0的数字。",invalidPadding:"边距必须为数字。",invalidSpacing:"间距必须为数字。",invalidJson:"服务器发生故障。",uploadSuccess:"上传成功。",cutError:"您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。",copyError:"您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。",pasteError:"您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。",ajaxLoading:"加载中,请稍候 ...",uploadLoading:"上传中,请稍候 ...",uploadError:"上传错误","plainpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","wordpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","code.pleaseInput":"请输入程序代码。","link.url":"URL","link.linkType":"打开类型","link.newWindow":"新窗口","link.selfWindow":"当前窗口","flash.url":"URL","flash.width":"宽度","flash.height":"高度","flash.upload":"上传","flash.viewServer":"文件空间","media.url":"URL","media.urlTip":"多个 URL 使用英文逗号分隔","media.width":"宽度","media.height":"高度","media.autostart":"自动播放","media.upload":"上传","media.viewServer":"文件空间","media.controls":"播放控件","image.remoteImage":"网络图片","image.localImage":"本地上传","image.remoteUrl":"图片地址","image.localUrl":"上传文件","image.size":"图片大小","image.width":"宽","image.height":"高","image.resetSize":"重置大小","image.align":"对齐方式","image.defaultAlign":"默认方式","image.leftAlign":"左对齐","image.rightAlign":"右对齐","image.imgTitle":"图片说明","image.upload":"浏览...","image.viewServer":"图片空间","multiimage.uploadDesc":"允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>","multiimage.startUpload":"开始上传","multiimage.clearAll":"全部清空","multiimage.insertAll":"全部插入","multiimage.queueLimitExceeded":"文件数量超过限制。","multiimage.fileExceedsSizeLimit":"文件大小超过限制。","multiimage.zeroByteFile":"无法上传空文件。","multiimage.invalidFiletype":"文件类型不正确。","multiimage.unknownError":"发生异常,无法上传。","multiimage.pending":"等待上传","multiimage.uploadError":"上传失败","filemanager.emptyFolder":"空文件夹","filemanager.moveup":"移到上一级文件夹","filemanager.viewType":"显示方式:","filemanager.viewImage":"缩略图","filemanager.listImage":"详细信息","filemanager.orderType":"排序方式:","filemanager.fileName":"名称","filemanager.fileSize":"大小","filemanager.fileType":"类型","insertfile.url":"URL","insertfile.title":"文件说明","insertfile.upload":"上传","insertfile.viewServer":"文件空间","table.cells":"单元格数","table.rows":"行数","table.cols":"列数","table.size":"大小","table.width":"宽度","table.height":"高度","table.percent":"%","table.px":"px","table.space":"边距间距","table.padding":"边距","table.spacing":"间距","table.align":"对齐方式","table.textAlign":"水平对齐","table.verticalAlign":"垂直对齐","table.alignDefault":"默认","table.alignLeft":"左对齐","table.alignCenter":"居中","table.alignRight":"右对齐","table.alignTop":"顶部","table.alignMiddle":"中部","table.alignBottom":"底部","table.alignBaseline":"基线","table.border":"边框","table.borderWidth":"边框","table.borderColor":"颜色","table.backgroundColor":"背景颜色","map.address":"地址: ","map.search":"搜索","baidumap.address":"地址: ","baidumap.search":"搜索","baidumap.insertDynamicMap":"插入动态地图","anchor.name":"锚点名称","formatblock.formatBlock":{h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",p:"正 文"},"fontname.fontName":{SimSun:"宋体",NSimSun:"新宋体",FangSong_GB2312:"仿宋_GB2312",KaiTi_GB2312:"楷体_GB2312",SimHei:"黑体","Source Han Sans":"思源黑体","Source Han Serif":"思源宋体","Microsoft YaHei":"微软雅黑",Arial:"Arial","Arial Black":"Arial Black","Times New Roman":"Times New Roman","Courier New":"Courier New",Tahoma:"Tahoma",Verdana:"Verdana"},"lineheight.lineHeight":[{1:"单倍行距"},{1.5:"1.5倍行距"},{2:"2倍行距"},{2.5:"2.5倍行距"},{3:"3倍行距"}],"template.selectTemplate":"可选模板","template.replaceContent":"替换当前内容","template.fileList":{"1.html":"图片和文字","2.html":"表格","3.html":"项目编号"}},"zh_CN"),window.$&&$.zui&&$.zui.getLangData){var langData=$.zui.getLangData("kindeditor");langData&&$.each(langData,function(e){var t=langData[e];"zh_cn"===e?e="zh_CN":"zh_tw"===e&&(e="zh_TW"),KindEditor.lang(t,e)})}KindEditor.plugin("anchor",function(e){var t=this,n="anchor",i=t.lang(n+".");t.plugin.anchor={edit:function(){var a=['
    ','
    ','",'',"
    ","
    "].join(""),o=t.createDialog({name:n,width:300,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(e){t.insertHtml('').hideDialog().focus()}}}),r=o.div,l=e('input[name="name"]',r),s=t.plugin.getSelectedAnchor();s&&l.val(unescape(s.attr("data-ke-name"))),l[0].focus(),l[0].select()},"delete":function(){t.plugin.getSelectedAnchor().remove()}},t.clickToolbar(n,t.plugin.anchor.edit)}),KindEditor.plugin("autoheight",function(e){function t(){i.iframe.height(o),n.resize(null,Math.max((e.IE?a.scrollHeight:a.offsetHeight)+76,o))}var n=this;if(n.autoHeightMode){var i=n.edit,a=i.doc.body,o=e.removeUnit(n.height);i.iframe[0].scroll="no",a.style.overflowY="hidden",i.afterChange(t),n.isCreated?t():n.afterCreate(t)}}),KindEditor.plugin("baidumap",function(e){var t=this,n="baidumap",i=t.lang(n+"."),a=t.options.baidumapAk||"plddmxBud2dRsVAXHS7WLqqzQQTocDkO",o=e.undef(t.mapWidth,558),r=e.undef(t.mapHeight,360);t.clickToolbar(n,function(){function l(){s=g[0].contentWindow,d=e.iframeDoc(g)}var s,d,c=['
    ','
    ','
    ',i.address+' ','','',"","
    ",'
    ',' ","
    ",'
    ',"
    ",'
    ',"
    "].join(""),u=t.createDialog({name:n,width:o+42,title:t.lang(n),body:c,yesBtn:{name:t.lang("yes"),click:function(e){var n=s.map,i=n.getCenter(),l=i.lng+","+i.lat,d=n.getZoom(),c=[m[0].checked?t.pluginsPath+"baidumap/index.html?ak="+a:"http://api.map.baidu.com/staticimage/v2?ak="+a,"¢er="+encodeURIComponent(l),"&zoom="+encodeURIComponent(d),"&width="+o,"&height="+r,"&markers="+encodeURIComponent(l),"&markerStyles="+encodeURIComponent("l,A")].join("");m[0].checked?t.insertHtml(''):t.exec("insertimage",c),t.hideDialog().focus()}},beforeRemove:function(){f.remove(),d&&d.write(""),g.remove()}}),p=u.div,h=e('[name="address"]',p),f=e('[name="searchBtn"]',p),m=e('[name="insertDynamicMap"]',u.div),g=e('');g.bind("load",function(){g.unbind("load"),e.IE?l():setTimeout(l,0)}),e(".ke-map",p).replaceWith(g),f.click(function(){s.search(h.val())})})}),KindEditor.plugin("clearhtml",function(e){var t=this,n="clearhtml";t.clickToolbar(n,function(){t.focus();var n=t.html();n=n.replace(/(]*>)([\s\S]*?)(<\/script>)/gi,""),n=n.replace(/(]*>)([\s\S]*?)(<\/style>)/gi,""),n=e.formatHtml(n,{a:["href","target"],embed:["src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess"],img:["src","width","height","border","alt","title",".width",".height"],table:["border"],"td,th":["rowspan","colspan"],"div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":[]}),t.html(n),t.cmd.selection(!0),t.addBookmark()})}),KindEditor.plugin("code",function(e){var t=this,n="code";t.clickToolbar(n,function(){var i=t.lang(n+"."),a=['
    ','
    ','","
    ",'',"
    "].join(""),o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var a=e(".ke-code-type",o.div).val(),l=r.val(),s=""===a?"":" lang-"+a,d='
    \n'+e.escape(l)+"
    ";return""===e.trim(l)?(alert(i.pleaseInput),void r[0].focus()):void t.insertHtml(d).hideDialog().focus()}}}),r=e("textarea",o.div);r[0].focus()})}),KindEditor.plugin("emoticons",function(e){var t=this,n="emoticons",i=t.emoticonsPath||t.pluginsPath+"emoticons/images/",a=void 0===t.allowPreviewEmoticons||t.allowPreviewEmoticons,o=1;t.clickToolbar(n,function(){function r(n,a,o){k?n.mouseover(function(){a>v?(k.css("left",0),k.css("right","")):(k.css("left",""),k.css("right",0)),w.attr("src",i+o+".gif"),e(this).addClass("ke-on")}):n.mouseover(function(){e(this).addClass("ke-on")}),n.mouseout(function(){e(this).removeClass("ke-on")}),n.click(function(e){t.insertHtml('').hideMenu().focus(),e.stop()})}function l(t,n){var a=document.createElement("table");n.append(a),k&&(e(a).mouseover(function(){k.show("block")}),e(a).mouseout(function(){k.hide()}),b.push(e(a))),a.className="ke-table",a.cellPadding=0,a.cellSpacing=0,a.border=0;for(var o=(t-1)*m+f,l=0;l').css("background-position","-"+24*o+"px 0px").css("background-image","url("+i+"static.gif)");c.append(h),b.push(c),o++}return a}function s(){e.each(b,function(){this.unbind()})}function d(e,t){e.click(function(e){s(),S.parentNode.removeChild(S),C.remove(),S=l(t,_),c(t),o=t,e.stop()})}function c(t){C=e('
    '),_.append(C);for(var n=1;n<=g;n++){if(t!==n){var i=e('
    ['+n+"]");d(i,n),C.append(i),b.push(i)}else C.append(e("@["+n+"]"));C.append(e("@ "))}}var u=5,p=9,h=135,f=0,m=u*p,g=Math.ceil(h/m),v=Math.floor(p/2),_=e('
    '),b=[],y=t.createMenu({name:n,beforeRemove:function(){s()}});y.div.append(_);var k,w;a&&(k=e('
    ').css("right",0),w=e(''),_.append(k),k.append(w));var C,S=l(o,_);c(o)})}),KindEditor.plugin("filemanager",function(e){function t(e,t,n){return e+" ("+Math.ceil(t/1024)+"KB, "+n+")"}function n(e,n){n.is_dir?e.attr("title",n.filename):e.attr("title",t(n.filename,n.filesize,n.datetime))}var i=this,a="filemanager",o=e.undef(i.fileManagerJson,i.basePath+"php/file_manager_json.php"),r=i.pluginsPath+a+"/images/",l=i.lang(a+".");i.plugin.filemanagerDialog=function(t){function s(t,n,a){var r="path="+t+"&order="+n+"&dir="+m;b.showLoading(i.lang("ajaxLoading")),e.ajax(e.addParam(o,r+"&"+(new Date).getTime()),function(e){b.hideLoading(),a(e)})}function d(t,n,i,a){var o=e.formatUrl(n.current_url+i.filename,"absolute"),r=encodeURIComponent(n.current_dir_path+i.filename+"/");i.is_dir?t.click(function(e){s(r,S.val(),a)}):i.is_photo?t.click(function(e){v.call(this,o,i.filename)}):t.click(function(e){v.call(this,o,i.filename)}),x.push(t)}function c(t,n){function i(){"VIEW"==C.val()?s(t.current_dir_path,S.val(),p):s(t.current_dir_path,S.val(),u)}e.each(x,function(){this.unbind()}),w.unbind(),C.unbind(),S.unbind(),t.current_dir_path&&w.click(function(e){s(t.moveup_dir_path,S.val(),n)}),C.change(i),S.change(i),k.html("")}function u(t){c(t,u);var n=document.createElement("table");n.className="ke-table",n.cellPadding=0,n.cellSpacing=0,n.border=0,k.append(n);for(var i=t.file_list,a=0,o=i.length;a'),m=e(p[0].insertCell(0)).addClass("ke-cell ke-name").append(f).append(document.createTextNode(" "+s.filename));!s.is_dir||s.has_file?(p.css("cursor","pointer"),m.attr("title",s.filename),d(m,t,s,u)):m.attr("title",l.emptyFolder),e(p[0].insertCell(1)).addClass("ke-cell ke-size").html(s.is_dir?"-":Math.ceil(s.filesize/1024)+"KB"),e(p[0].insertCell(2)).addClass("ke-cell ke-datetime").html(s.datetime)}}function p(t){c(t,p);for(var i=t.file_list,a=0,o=i.length;a');k.append(u);var h=e('
    ').mouseover(function(t){e(this).addClass("ke-on")}).mouseout(function(t){e(this).removeClass("ke-on")});u.append(h);var f=t.current_url+s.filename,m=s.is_dir?r+"folder-64.gif":s.is_photo?f:r+"file-64.gif",g=e(''+s.filename+'');!s.is_dir||s.has_file?(h.css("cursor","pointer"),n(h,s),d(h,t,s,p)):h.attr("title",l.emptyFolder),h.append(g),u.append('
    '+s.filename+"
    ")}}var h=e.undef(t.width,650),f=e.undef(t.height,510),m=e.undef(t.dirName,""),g=e.undef(t.viewType,"VIEW").toUpperCase(),v=t.clickFn,_=['
    ','
    ','
    ',' ',''+l.moveup+"","
    ",'
    ',l.viewType+' ",l.orderType+' ","
    ",'
    ',"
    ",'
    ',"
    "].join(""),b=i.createDialog({name:a,width:h,height:f,title:i.lang(a),body:_}),y=b.div,k=e(".ke-plugin-filemanager-body",y),w=(e('[name="moveupImg"]',y),e('[name="moveupLink"]',y)),C=(e('[name="viewServer"]',y),e('[name="viewType"]',y)),S=e('[name="orderType"]',y),x=[];return C.val(g),s("",S.val(),"VIEW"==g?p:u),b}}),KindEditor.plugin("flash",function(e){var t=this,n="flash",i=t.lang(n+"."),a=e.undef(t.allowFlashUpload,!0),o=e.undef(t.allowFileManager,!1),r=e.undef(t.formatUploadUrl,!0),l=e.undef(t.extraFileUploadParams,{}),s=e.undef(t.filePostName,"imgFile"),d=e.undef(t.uploadJson,t.basePath+"php/upload_json.php");t.plugin.flash={edit:function(){var c=['
    ','
    ','",'  ','  ','','',"","
    ",'
    ','",' ',"
    ",'
    ','",' ',"
    ","
    "].join(""),u=t.createDialog({name:n,width:450,title:t.lang(n),body:c,yesBtn:{name:t.lang("yes"),click:function(n){var i=e.trim(h.val()),a=m.val(),o=g.val();if("http://"==i||e.invalidUrl(i))return alert(t.lang("invalidUrl")),void h[0].focus();if(!/^\d*$/.test(a))return alert(t.lang("invalidWidth")),void m[0].focus();if(!/^\d*$/.test(o))return alert(t.lang("invalidHeight")),void g[0].focus();var r=e.mediaImg(t.themesPath+"common/blank.gif",{src:i,type:e.mediaType(".swf"),width:a,height:o,quality:"high"});t.insertHtml(r).hideDialog().focus()}}}),p=u.div,h=e('[name="url"]',p),f=e('[name="viewServer"]',p),m=e('[name="width"]',p),g=e('[name="height"]',p);if(h.val("http://"),a){var v=e.uploadbutton({button:e(".ke-upload-button",p)[0],fieldName:s,extraParams:l,url:e.addParam(d,"dir=flash"),afterUpload:function(i){if(u.hideLoading(),0===i.error){var a=i.url;r&&(a=e.formatUrl(a,"absolute")),h.val(a),t.afterUpload&&t.afterUpload.call(t,a,i,n),alert(t.lang("uploadSuccess"))}else alert(i.message)},afterError:function(e){u.hideLoading(),t.errorDialog(e)}});v.fileBox.change(function(e){u.showLoading(t.lang("uploadLoading")),v.submit()})}else e(".ke-upload-button",p).hide();o?f.click(function(n){t.loadPlugin("filemanager",function(){t.plugin.filemanagerDialog({viewType:"LIST",dirName:"flash",clickFn:function(n,i){t.dialogs.length>1&&(e('[name="url"]',p).val(n),t.afterSelectFile&&t.afterSelectFile.call(t,n),t.hideDialog())}})})}):f.hide();var _=t.plugin.getSelectedFlash();if(_){var b=e.mediaAttrs(_.attr("data-ke-tag"));h.val(b.src),m.val(e.removeUnit(_.css("width"))||b.width||0),g.val(e.removeUnit(_.css("height"))||b.height||0)}h[0].focus(),h[0].select()},"delete":function(){t.plugin.getSelectedFlash().remove(),t.addBookmark()}},t.clickToolbar(n,t.plugin.flash.edit)}),KindEditor.plugin("image",function(e){var t=this,n="image",i=e.undef(t.allowImageUpload,!0),a=e.undef(t.allowImageRemote,!0),o=e.undef(t.formatUploadUrl,!0),r=e.undef(t.allowFileManager,!1),l=e.undef(t.uploadJson,t.basePath+"php/upload_json.php"),s=e.undef(t.imageTabIndex,0),d=t.pluginsPath+"image/images/",c=e.undef(t.extraFileUploadParams,{}),u=e.undef(t.filePostName,"imgFile"),p=e.undef(t.fillDescAfterUploadImage,!1),h=t.lang(n+".");t.plugin.imageDialog=function(i){function a(e,t){K.val(e),U.val(t),R=e,M=t}var s=(i.imageUrl,e.undef(i.imageWidth,""),e.undef(i.imageHeight,""),e.undef(i.imageTitle,""),e.undef(i.imageAlign,""),e.undef(i.showRemote,!0)),f=e.undef(i.showLocal,!0),m=e.undef(i.tabIndex,0),g=i.clickFn,v="kindeditor_upload_iframe_"+(new Date).getTime(),_=[];for(var b in c)_.push('');var y,k=['
    ','
    ','",'","
    "].join(""),w=f||r?450:400,C=f&&s?300:250,S=t.createDialog({name:n,width:w,height:C,title:t.lang(n),body:k,yesBtn:{name:t.lang("yes"),click:function(n){if(!S.isLoading){if(f&&s&&y&&1===y.selectedIndex||!s)return""==D.fileBox.val()?void alert(t.lang("pleaseSelectFile")):(S.showLoading(t.lang("uploadLoading")),D.submit(),void T.val(""));var i=e.trim(E.val()),a=K.val(),o=U.val(),r=N.val(),l="";return I.each(function(){if(this.checked)return l=this.value,!1}),"http://"==i||e.invalidUrl(i)?(alert(t.lang("invalidUrl")),void E[0].focus()):/^\d*$/.test(a)?/^\d*$/.test(o)?void g.call(t,i,r,a,o,0,l):(alert(t.lang("invalidHeight")),void U[0].focus()):(alert(t.lang("invalidWidth")),void K[0].focus())}}},beforeRemove:function(){A.unbind(),K.unbind(),U.unbind(),F.unbind()}}),x=S.div,E=e('[name="url"]',x),T=e('[name="localUrl"]',x),A=e('[name="viewServer"]',x),K=e('.tab1 [name="width"]',x),U=e('.tab1 [name="height"]',x),F=e(".ke-refresh-btn",x),N=e('.tab1 [name="title"]',x),I=e('.tab1 [name="align"]',x);s&&f?(y=e.tabs({src:e(".tabs",x),afterSelect:function(e){}}),y.add({title:h.remoteImage,panel:e(".tab1",x)}),y.add({title:h.localImage,panel:e(".tab2",x)}),y.select(m)):s?e(".tab1",x).show():f&&e(".tab2",x).show();var D=e.uploadbutton({button:e(".ke-upload-button",x)[0],fieldName:u,form:e(".ke-form",x),target:v,width:70,afterUpload:function(i){if(S.hideLoading(),0===i.error){var a=i.url;o&&(a=e.formatUrl(a,"absolute")),t.afterUpload&&t.afterUpload.call(t,a,i,n),p?(e(".ke-dialog-row #remoteUrl",x).val(a),e(".ke-tabs-li",x)[0].click(),e(".ke-refresh-btn",x).click()):g.call(t,a,i.title,i.width,i.height,i.border,i.align)}else alert(i.message)},afterError:function(e){S.hideLoading(),t.errorDialog(e)}});D.fileBox.change(function(e){T.val(D.fileBox.val())}),r?A.click(function(n){t.loadPlugin("filemanager",function(){t.plugin.filemanagerDialog({viewType:"VIEW",dirName:"image",clickFn:function(n,i){t.dialogs.length>1&&(e('[name="url"]',x).val(n),t.afterSelectFile&&t.afterSelectFile.call(t,n),t.hideDialog())}})})}):A.hide();var R=0,M=0;return F.click(function(t){var n=e('',document).css({position:"absolute",visibility:"hidden",top:0,left:"-1000px"});n.bind("load",function(){a(n.width(),n.height()),n.remove()}),e(document.body).append(n)}),K.change(function(e){R>0&&U.val(Math.round(M/R*parseInt(this.value,10)))}),U.change(function(e){M>0&&K.val(Math.round(R/M*parseInt(this.value,10)))}),E.val(i.imageUrl),a(i.imageWidth,i.imageHeight),N.val(i.imageTitle),I.each(function(){if(this.value===i.imageAlign)return this.checked=!0,!1}),s&&0===m&&(E[0].focus(),E[0].select()),S},t.plugin.image={edit:function(){var e=t.plugin.getSelectedImage();t.plugin.imageDialog({imageUrl:e?e.attr("data-ke-src"):"http://",imageWidth:e?e.width():"",imageHeight:e?e.height():"",imageTitle:e?e.attr("title"):"",imageAlign:e?e.attr("align"):"",showRemote:a,showLocal:i,tabIndex:e?0:s,clickFn:function(n,i,a,o,r,l){e?(e.attr("src",n),e.attr("data-ke-src",n),e.attr("width",a),e.attr("height",o),e.attr("title",i),e.attr("align",l),e.attr("alt",i)):t.exec("insertimage",n,i,a,o,r,l),setTimeout(function(){t.hideDialog().focus()},0)}})},"delete":function(){var e=t.plugin.getSelectedImage(); "a"==e.parent().name&&(e=e.parent()),e.remove(),t.addBookmark()}},t.clickToolbar(n,t.plugin.image.edit)}),KindEditor.plugin("insertfile",function(e){var t=this,n="insertfile",i=e.undef(t.allowFileUpload,!0),a=e.undef(t.allowFileManager,!1),o=e.undef(t.formatUploadUrl,!0),r=e.undef(t.uploadJson,t.basePath+"php/upload_json.php"),l=e.undef(t.extraFileUploadParams,{}),s=e.undef(t.filePostName,"imgFile"),d=t.lang(n+".");t.plugin.fileDialog=function(c){var u=e.undef(c.fileUrl,"http://"),p=e.undef(c.fileTitle,""),h=c.clickFn,f=['
    ','
    ','",'  ','  ','','',"","
    ",'
    ','",'
    ',"
    ","",""].join(""),m=t.createDialog({name:n,width:450,title:t.lang(n),body:f,yesBtn:{name:t.lang("yes"),click:function(n){var i=e.trim(v.val()),a=b.val();return"http://"==i||e.invalidUrl(i)?(alert(t.lang("invalidUrl")),void v[0].focus()):(""===e.trim(a)&&(a=i),void h.call(t,i,a))}}}),g=m.div,v=e('[name="url"]',g),_=e('[name="viewServer"]',g),b=e('[name="title"]',g);if(i){var y=e.uploadbutton({button:e(".ke-upload-button",g)[0],fieldName:s,url:e.addParam(r,"dir=file"),extraParams:l,afterUpload:function(i){if(m.hideLoading(),0===i.error){var a=i.url;o&&(a=e.formatUrl(a,"absolute")),v.val(a),t.afterUpload&&t.afterUpload.call(t,a,i,n),alert(t.lang("uploadSuccess"))}else alert(i.message)},afterError:function(e){m.hideLoading(),t.errorDialog(e)}});y.fileBox.change(function(e){m.showLoading(t.lang("uploadLoading")),y.submit()})}else e(".ke-upload-button",g).hide();a?_.click(function(n){t.loadPlugin("filemanager",function(){t.plugin.filemanagerDialog({viewType:"LIST",dirName:"file",clickFn:function(n,i){t.dialogs.length>1&&(e('[name="url"]',g).val(n),t.afterSelectFile&&t.afterSelectFile.call(t,n),t.hideDialog())}})})}):_.hide(),v.val(u),b.val(p),v[0].focus(),v[0].select()},t.clickToolbar(n,function(){t.plugin.fileDialog({clickFn:function(e,n){var i=''+n+"";t.insertHtml(i).hideDialog().focus()}})})}),KindEditor.plugin("lineheight",function(e){var t=this,n="lineheight",i=t.lang(n+".");t.clickToolbar(n,function(){var a="",o=t.cmd.commonNode({"*":".line-height"});o&&(a=o.css("line-height"));var r=t.createMenu({name:n,width:150});e.each(i.lineHeight,function(n,i){e.each(i,function(e,n){r.addItem({title:n,checked:a===e,click:function(){t.cmd.toggle('',{span:".line-height="+e}),t.updateState(),t.addBookmark(),t.hideMenu()}})})})})}),KindEditor.plugin("link",function(e){var t=this,n="link";t.plugin.link={edit:function(){var i=t.lang(n+"."),a='
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=e.trim(l.val());return"http://"==i||e.invalidUrl(i)?(alert(t.lang("invalidUrl")),void l[0].focus()):void t.exec("createlink",i,s.val()).hideDialog().focus()}}}),r=o.div,l=e('input[name="url"]',r),s=e('select[name="type"]',r);l.val("http://"),s[0].options[0]=new Option(i.newWindow,"_blank"),s[0].options[1]=new Option(i.selfWindow,""),t.cmd.selection();var d=t.plugin.getSelectedLink();d&&(t.cmd.range.selectNode(d[0]),t.cmd.select(),l.val(d.attr("data-ke-src")),s.val(d.attr("target"))),l[0].focus(),l[0].select()},"delete":function(){t.exec("unlink",null)}},t.clickToolbar(n,t.plugin.link.edit)}),KindEditor.plugin("map",function(e){var t=this,n="map",i=t.lang(n+".");t.clickToolbar(n,function(){function a(){o=p[0].contentWindow,r=e.iframeDoc(p)}var o,r,l=['
    ','
    ',i.address+' ','','',"","
    ",'
    ',"
    "].join(""),s=t.createDialog({name:n,width:600,title:t.lang(n),body:l,yesBtn:{name:t.lang("yes"),click:function(e){var n=(o.geocoder,o.map),i=n.getCenter().lat()+","+n.getCenter().lng(),a=n.getZoom(),r=n.getMapTypeId(),l="http://maps.googleapis.com/maps/api/staticmap";l+="?center="+encodeURIComponent(i),l+="&zoom="+encodeURIComponent(a),l+="&size=558x360",l+="&maptype="+encodeURIComponent(r),l+="&markers="+encodeURIComponent(i),l+="&language="+t.langType,l+="&sensor=false",t.exec("insertimage",l).hideDialog().focus()}},beforeRemove:function(){u.remove(),r&&r.write(""),p.remove()}}),d=s.div,c=e('[name="address"]',d),u=e('[name="searchBtn"]',d),p=(["",'',"",'',"","",'','
    ',""].join("\n"),e(''));p.bind("load",function(){p.unbind("load"),e.IE?a():setTimeout(a,0)}),e(".ke-map",d).replaceWith(p),u.click(function(){o.search(c.val())})})}),KindEditor.plugin("media",function(e){var t=this,n="media",i=t.lang(n+"."),a=e.undef(t.allowMediaUpload,!0),o=e.undef(t.allowFileManager,!1),r=e.undef(t.formatUploadUrl,!0),l=e.undef(t.extraFileUploadParams,{}),s=e.undef(t.filePostName,"imgFile"),d=e.undef(t.uploadJson,t.basePath+"php/upload_json.php");t.plugin.media={edit:function(){var c=['
    ','
    ','",'  ','  ','','',"","
    ",'
    ','",'',"
    ",'
    ','",'',"
    ",'",'
    ','",' ',"
    ","
    "].join(""),u=t.createDialog({name:n,width:450,height:240,title:t.lang(n),body:c,yesBtn:{name:t.lang("yes"),click:function(n){var i=e.trim(h.val()),a=m.val(),o=g.val();if("http://"==i||e.invalidUrl(i))return alert(t.lang("invalidUrl")),void h[0].focus();if(!/^\d*$/.test(a))return alert(t.lang("invalidWidth")),void m[0].focus();if(!/^\d*$/.test(o))return alert(t.lang("invalidHeight")),void g[0].focus();var r=e.mediaImg(t.themesPath+"common/blank.gif",{src:i,type:e.mediaType(i),width:a,height:o,autoplay:!!_[0].checked,controls:!!v[0].checked});t.insertHtml(r).hideDialog().focus()}}}),p=u.div,h=e('[name="url"]',p),f=e('[name="viewServer"]',p),m=e('[name="width"]',p),g=e('[name="height"]',p),v=e('[name="controls"]',p),_=e('[name="autostart"]',p);if(h.val("http://"),a){var b=e.uploadbutton({button:e(".ke-upload-button",p)[0],fieldName:s,extraParams:l,url:e.addParam(d,"dir=media"),afterUpload:function(i){if(u.hideLoading(),0===i.error){var a=i.url;r&&(a=e.formatUrl(a,"absolute")),h.val(a),t.afterUpload&&t.afterUpload.call(t,a,i,n),alert(t.lang("uploadSuccess"))}else alert(i.message)},afterError:function(e){u.hideLoading(),t.errorDialog(e)}});b.fileBox.change(function(e){u.showLoading(t.lang("uploadLoading")),b.submit()})}else e(".ke-upload-button",p).hide();o?f.click(function(n){t.loadPlugin("filemanager",function(){t.plugin.filemanagerDialog({viewType:"LIST",dirName:"media",clickFn:function(n,i){t.dialogs.length>1&&(e('[name="url"]',p).val(n),t.afterSelectFile&&t.afterSelectFile.call(t,n),t.hideDialog())}})})}):f.hide();var y=t.plugin.getSelectedMedia();if(y){var k=e.mediaAttrs(y.attr("data-ke-tag"));h.val(k.src),m.val(e.removeUnit(y.css("width"))||k.width||0),g.val(e.removeUnit(y.css("height"))||k.height||0),_[0].checked=void 0!==k.autoplay&&"false"!==k.autoplay,v[0].checked=void 0!==k.controls&&"false"!==k.controls}h[0].focus(),h[0].select()},"delete":function(){t.plugin.getSelectedMedia().remove(),t.addBookmark()}},t.clickToolbar(n,t.plugin.media.edit)}),function(e){function t(e){this.init(e)}e.extend(t,{init:function(t){function n(t,n){e(".ke-status > div",t).hide(),e(".ke-message",t).addClass("ke-error").show().html(e.escape(n))}var i=this;t.afterError=t.afterError||function(e){alert(e)},i.options=t,i.progressbars={},i.div=e(t.container).html(['
    ','
    ','
    ','',"
    ",'
    '+t.uploadDesc+"
    ",'','',"","
    ",'
    ',"
    "].join("")),i.bodyDiv=e(".ke-swfupload-body",i.div);var a={debug:!1,upload_url:t.uploadUrl,flash_url:t.flashUrl,file_post_name:t.filePostName,button_placeholder:e(".ke-swfupload-button > input",i.div)[0],button_image_url:t.buttonImageUrl,button_width:t.buttonWidth,button_height:t.buttonHeight,button_cursor:SWFUpload.CURSOR.HAND,file_types:t.fileTypes,file_types_description:t.fileTypesDesc,file_upload_limit:t.fileUploadLimit,file_size_limit:t.fileSizeLimit,post_params:t.postParams,file_queued_handler:function(e){e.url=i.options.fileIconUrl,i.appendFile(e)},file_queue_error_handler:function(n,i,a){var o="";switch(i){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:o=t.queueLimitExceeded;break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:o=t.fileExceedsSizeLimit;break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:o=t.zeroByteFile;break;case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:o=t.invalidFiletype;break;default:o=t.unknownError}e.DEBUG&&alert(o)},upload_start_handler:function(t){var n=this,i=e('div[data-id="'+t.id+'"]',n.bodyDiv);e(".ke-status > div",i).hide(),e(".ke-progressbar",i).show()},upload_progress_handler:function(e,t,n){var a=Math.round(100*t/n),o=i.progressbars[e.id];o.bar.css("width",Math.round(80*a/100)+"px"),o.percent.html(a+"%")},upload_error_handler:function(t,a,o){if(t&&t.filestatus==SWFUpload.FILE_STATUS.ERROR){var r=e('div[data-id="'+t.id+'"]',i.bodyDiv).eq(0);n(r,i.options.errorMessage)}},upload_success_handler:function(t,a){var o=e('div[data-id="'+t.id+'"]',i.bodyDiv).eq(0),r={};try{r=e.json(a)}catch(l){i.options.afterError.call(this,""+a+"")}return 0!==r.error?void n(o,e.DEBUG?r.message:i.options.errorMessage):(t.url=r.url,e(".ke-img",o).attr("src",t.url).attr("data-status",t.filestatus).data("data",r),void e(".ke-status > div",o).hide())}};i.swfu=new SWFUpload(a),e(".ke-swfupload-startupload input",i.div).click(function(){i.swfu.startUpload()})},getUrlList:function(){var t=[];return e(".ke-img",self.bodyDiv).each(function(){var n=e(this),i=n.attr("data-status");i==SWFUpload.FILE_STATUS.COMPLETE&&t.push(n.data("data"))}),t},removeFile:function(t){var n=this;n.swfu.cancelUpload(t);var i=e('div[data-id="'+t+'"]',n.bodyDiv);e(".ke-photo",i).unbind(),e(".ke-delete",i).unbind(),i.remove()},removeFiles:function(){var t=this;e(".ke-item",t.bodyDiv).each(function(){t.removeFile(e(this).attr("data-id"))})},appendFile:function(t){var n=this,i=e('
    ');n.bodyDiv.append(i);var a=e('
    ').mouseover(function(t){e(this).addClass("ke-on")}).mouseout(function(t){e(this).removeClass("ke-on")});i.append(a);var o=e(''+t.name+'');a.append(o),e('').appendTo(a).click(function(){n.removeFile(t.id)});var r=e('
    ').appendTo(a);e(['
    ','
    ','
    0%
    '].join("")).hide().appendTo(r),e('
    '+n.options.pendingMessage+"
    ").appendTo(r),i.append('
    '+t.name+"
    "),n.progressbars[t.id]={bar:e(".ke-progressbar-bar-inner",a),percent:e(".ke-progressbar-percent",a)}},remove:function(){this.removeFiles(),this.swfu.destroy(),this.div.html("")}}),e.swfupload=function(e,n){return new t(e,n)}}(KindEditor),KindEditor.plugin("multiimage",function(e){var t=this,n="multiimage",i=(e.undef(t.formatUploadUrl,!0),e.undef(t.uploadJson,t.basePath+"php/upload_json.php")),a=t.pluginsPath+"multiimage/images/",o=e.undef(t.imageSizeLimit,"1MB"),r=(e.undef(t.imageFileTypes,"*.jpg;*.gif;*.png"),e.undef(t.imageUploadLimit,20)),l=e.undef(t.filePostName,"imgFile"),s=t.lang(n+".");t.plugin.multiImageDialog=function(d){var c=d.clickFn,u=e.tmpl(s.uploadDesc,{uploadLimit:r,sizeLimit:o}),p=['
    ','
    ',"
    ","
    "].join(""),h=t.createDialog({name:n,width:650,height:510,title:t.lang(n),body:p,previewBtn:{name:s.insertAll,click:function(e){c.call(t,m.getUrlList())}},yesBtn:{name:s.clearAll,click:function(e){m.removeFiles()}},beforeRemove:function(){(!e.IE||e.V<=8)&&m.remove()}}),f=h.div,m=e.swfupload({container:e(".swfupload",f),buttonImageUrl:a+("zh-CN"==t.langType?"select-files-zh-CN.png":"select-files-en.png"),buttonWidth:"zh-CN"==t.langType?72:88,buttonHeight:23,fileIconUrl:a+"image.png",uploadDesc:u,startButtonValue:s.startUpload,uploadUrl:e.addParam(i,"dir=image"),flashUrl:a+"swfupload.swf",filePostName:l,fileTypes:"*.jpg;*.jpeg;*.gif;*.png;*.bmp",fileTypesDesc:"Image Files",fileUploadLimit:r,fileSizeLimit:o,postParams:e.undef(t.extraFileUploadParams,{}),queueLimitExceeded:s.queueLimitExceeded,fileExceedsSizeLimit:s.fileExceedsSizeLimit,zeroByteFile:s.zeroByteFile,invalidFiletype:s.invalidFiletype,unknownError:s.unknownError,pendingMessage:s.pending,errorMessage:s.uploadError,afterError:function(e){t.errorDialog(e)}});return h},t.clickToolbar(n,function(){t.plugin.multiImageDialog({clickFn:function(n){0!==n.length&&(e.each(n,function(e,n){t.afterUpload&&t.afterUpload.call(t,n.url,n,"multiimage"),t.exec("insertimage",n.url,n.title,n.width,n.height,n.border,n.align)}),setTimeout(function(){t.hideDialog().focus()},0))}})})}),function(){window.SWFUpload=function(e){this.initSWFUpload(e)},SWFUpload.prototype.initSWFUpload=function(e){try{this.customSettings={},this.settings=e,this.eventQueue=[],this.movieName="KindEditor_SWFUpload_"+SWFUpload.movieCount++,this.movieElement=null,SWFUpload.instances[this.movieName]=this,this.initSettings(),this.loadFlash(),this.displayDebugInfo()}catch(t){throw delete SWFUpload.instances[this.movieName],t}},SWFUpload.instances={},SWFUpload.movieCount=0,SWFUpload.version="2.2.0 2009-03-25",SWFUpload.QUEUE_ERROR={QUEUE_LIMIT_EXCEEDED:-100,FILE_EXCEEDS_SIZE_LIMIT:-110,ZERO_BYTE_FILE:-120,INVALID_FILETYPE:-130},SWFUpload.UPLOAD_ERROR={HTTP_ERROR:-200,MISSING_UPLOAD_URL:-210,IO_ERROR:-220,SECURITY_ERROR:-230,UPLOAD_LIMIT_EXCEEDED:-240,UPLOAD_FAILED:-250,SPECIFIED_FILE_ID_NOT_FOUND:-260,FILE_VALIDATION_FAILED:-270,FILE_CANCELLED:-280,UPLOAD_STOPPED:-290},SWFUpload.FILE_STATUS={QUEUED:-1,IN_PROGRESS:-2,ERROR:-3,COMPLETE:-4,CANCELLED:-5},SWFUpload.BUTTON_ACTION={SELECT_FILE:-100,SELECT_FILES:-110,START_UPLOAD:-120},SWFUpload.CURSOR={ARROW:-1,HAND:-2},SWFUpload.WINDOW_MODE={WINDOW:"window",TRANSPARENT:"transparent",OPAQUE:"opaque"},SWFUpload.completeURL=function(e){if("string"!=typeof e||e.match(/^https?:\/\//i)||e.match(/^\//))return e;var t=(window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:""),window.location.pathname.lastIndexOf("/"));return t<=0?path="/":path=window.location.pathname.substr(0,t)+"/",path+e},SWFUpload.prototype.initSettings=function(){this.ensureDefault=function(e,t){this.settings[e]=void 0==this.settings[e]?t:this.settings[e]},this.ensureDefault("upload_url",""),this.ensureDefault("preserve_relative_urls",!1),this.ensureDefault("file_post_name","Filedata"),this.ensureDefault("post_params",{}),this.ensureDefault("use_query_string",!1),this.ensureDefault("requeue_on_error",!1),this.ensureDefault("http_success",[]),this.ensureDefault("assume_success_timeout",0),this.ensureDefault("file_types","*.*"),this.ensureDefault("file_types_description","All Files"),this.ensureDefault("file_size_limit",0),this.ensureDefault("file_upload_limit",0),this.ensureDefault("file_queue_limit",0),this.ensureDefault("flash_url","swfupload.swf"),this.ensureDefault("prevent_swf_caching",!0),this.ensureDefault("button_image_url",""),this.ensureDefault("button_width",1),this.ensureDefault("button_height",1),this.ensureDefault("button_text",""),this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;"),this.ensureDefault("button_text_top_padding",0),this.ensureDefault("button_text_left_padding",0),this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES),this.ensureDefault("button_disabled",!1),this.ensureDefault("button_placeholder_id",""),this.ensureDefault("button_placeholder",null),this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW),this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW),this.ensureDefault("debug",!1),this.settings.debug_enabled=this.settings.debug,this.settings.return_upload_start_handler=this.returnUploadStart,this.ensureDefault("swfupload_loaded_handler",null),this.ensureDefault("file_dialog_start_handler",null),this.ensureDefault("file_queued_handler",null),this.ensureDefault("file_queue_error_handler",null),this.ensureDefault("file_dialog_complete_handler",null),this.ensureDefault("upload_start_handler",null),this.ensureDefault("upload_progress_handler",null),this.ensureDefault("upload_error_handler",null),this.ensureDefault("upload_success_handler",null),this.ensureDefault("upload_complete_handler",null),this.ensureDefault("debug_handler",this.debugMessage),this.ensureDefault("custom_settings",{}),this.customSettings=this.settings.custom_settings,this.settings.prevent_swf_caching&&(this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+(new Date).getTime()),this.settings.preserve_relative_urls||(this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url),this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url)),delete this.ensureDefault},SWFUpload.prototype.loadFlash=function(){var e,t;if(null!==document.getElementById(this.movieName))throw"ID "+this.movieName+" is already in use. The Flash Object could not be added";if(e=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder,void 0==e)throw"Could not find the placeholder element: "+this.settings.button_placeholder_id;t=document.createElement("div"),t.innerHTML=this.getFlashHTML(),e.parentNode.replaceChild(t.firstChild,e),void 0==window[this.movieName]&&(window[this.movieName]=this.getMovieElement())},SWFUpload.prototype.getFlashHTML=function(){var e="";return KindEditor.IE&&KindEditor.V>8&&(e=' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'),['','','','','','','',""].join("")},SWFUpload.prototype.getFlashVars=function(){var e=this.buildParamString(),t=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&uploadURL=",encodeURIComponent(this.settings.upload_url),"&useQueryString=",encodeURIComponent(this.settings.use_query_string),"&requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&httpSuccess=",encodeURIComponent(t),"&assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&params=",encodeURIComponent(e),"&filePostName=",encodeURIComponent(this.settings.file_post_name),"&fileTypes=",encodeURIComponent(this.settings.file_types),"&fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&buttonWidth=",encodeURIComponent(this.settings.button_width),"&buttonHeight=",encodeURIComponent(this.settings.button_height),"&buttonText=",encodeURIComponent(this.settings.button_text),"&buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&buttonAction=",encodeURIComponent(this.settings.button_action),"&buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("")},SWFUpload.prototype.getMovieElement=function(){if(void 0==this.movieElement&&(this.movieElement=document.getElementById(this.movieName)),null===this.movieElement)throw"Could not find Flash element";return this.movieElement},SWFUpload.prototype.buildParamString=function(){var e=this.settings.post_params,t=[];if("object"==typeof e)for(var n in e)e.hasOwnProperty(n)&&t.push(encodeURIComponent(n.toString())+"="+encodeURIComponent(e[n].toString()));return t.join("&")},SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,!1);var e=null;if(e=this.getMovieElement(),e&&"unknown"==typeof e.CallFunction){for(var t in e)try{"function"==typeof e[t]&&(e[t]=null)}catch(n){}try{e.parentNode.removeChild(e)}catch(i){}}return window[this.movieName]=null,SWFUpload.instances[this.movieName]=null,delete SWFUpload.instances[this.movieName],this.movieElement=null,this.settings=null,this.customSettings=null,this.eventQueue=null,this.movieName=null,!0}catch(a){return!1}},SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n","\t","upload_url: ",this.settings.upload_url,"\n","\t","flash_url: ",this.settings.flash_url,"\n","\t","use_query_string: ",this.settings.use_query_string.toString(),"\n","\t","requeue_on_error: ",this.settings.requeue_on_error.toString(),"\n","\t","http_success: ",this.settings.http_success.join(", "),"\n","\t","assume_success_timeout: ",this.settings.assume_success_timeout,"\n","\t","file_post_name: ",this.settings.file_post_name,"\n","\t","post_params: ",this.settings.post_params.toString(),"\n","\t","file_types: ",this.settings.file_types,"\n","\t","file_types_description: ",this.settings.file_types_description,"\n","\t","file_size_limit: ",this.settings.file_size_limit,"\n","\t","file_upload_limit: ",this.settings.file_upload_limit,"\n","\t","file_queue_limit: ",this.settings.file_queue_limit,"\n","\t","debug: ",this.settings.debug.toString(),"\n","\t","prevent_swf_caching: ",this.settings.prevent_swf_caching.toString(),"\n","\t","button_placeholder_id: ",this.settings.button_placeholder_id.toString(),"\n","\t","button_placeholder: ",this.settings.button_placeholder?"Set":"Not Set","\n","\t","button_image_url: ",this.settings.button_image_url.toString(),"\n","\t","button_width: ",this.settings.button_width.toString(),"\n","\t","button_height: ",this.settings.button_height.toString(),"\n","\t","button_text: ",this.settings.button_text.toString(),"\n","\t","button_text_style: ",this.settings.button_text_style.toString(),"\n","\t","button_text_top_padding: ",this.settings.button_text_top_padding.toString(),"\n","\t","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n","\t","button_action: ",this.settings.button_action.toString(),"\n","\t","button_disabled: ",this.settings.button_disabled.toString(),"\n","\t","custom_settings: ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n","\t","swfupload_loaded_handler assigned: ",("function"==typeof this.settings.swfupload_loaded_handler).toString(),"\n","\t","file_dialog_start_handler assigned: ",("function"==typeof this.settings.file_dialog_start_handler).toString(),"\n","\t","file_queued_handler assigned: ",("function"==typeof this.settings.file_queued_handler).toString(),"\n","\t","file_queue_error_handler assigned: ",("function"==typeof this.settings.file_queue_error_handler).toString(),"\n","\t","upload_start_handler assigned: ",("function"==typeof this.settings.upload_start_handler).toString(),"\n","\t","upload_progress_handler assigned: ",("function"==typeof this.settings.upload_progress_handler).toString(),"\n","\t","upload_error_handler assigned: ",("function"==typeof this.settings.upload_error_handler).toString(),"\n","\t","upload_success_handler assigned: ",("function"==typeof this.settings.upload_success_handler).toString(),"\n","\t","upload_complete_handler assigned: ",("function"==typeof this.settings.upload_complete_handler).toString(),"\n","\t","debug_handler assigned: ",("function"==typeof this.settings.debug_handler).toString(),"\n"].join(""))},SWFUpload.prototype.addSetting=function(e,t,n){return void 0==t?this.settings[e]=n:this.settings[e]=t},SWFUpload.prototype.getSetting=function(e){return void 0!=this.settings[e]?this.settings[e]:""},SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement(),returnValue,returnString;try{returnString=movieElement.CallFunction(''+__flash__argumentsToXML(argumentArray,0)+""),returnValue=eval(returnString)}catch(ex){throw"Call to "+functionName+" failed"}return void 0!=returnValue&&"object"==typeof returnValue.post&&(returnValue=this.unescapeFilePostParams(returnValue)),returnValue},SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile")},SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles")},SWFUpload.prototype.startUpload=function(e){this.callFlash("StartUpload",[e])},SWFUpload.prototype.cancelUpload=function(e,t){t!==!1&&(t=!0),this.callFlash("CancelUpload",[e,t])},SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload")},SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats")},SWFUpload.prototype.setStats=function(e){this.callFlash("SetStats",[e])},SWFUpload.prototype.getFile=function(e){return"number"==typeof e?this.callFlash("GetFileByIndex",[e]):this.callFlash("GetFile",[e])},SWFUpload.prototype.addFileParam=function(e,t,n){return this.callFlash("AddFileParam",[e,t,n])},SWFUpload.prototype.removeFileParam=function(e,t){this.callFlash("RemoveFileParam",[e,t])},SWFUpload.prototype.setUploadURL=function(e){this.settings.upload_url=e.toString(),this.callFlash("SetUploadURL",[e])},SWFUpload.prototype.setPostParams=function(e){this.settings.post_params=e,this.callFlash("SetPostParams",[e])},SWFUpload.prototype.addPostParam=function(e,t){this.settings.post_params[e]=t,this.callFlash("SetPostParams",[this.settings.post_params])},SWFUpload.prototype.removePostParam=function(e){delete this.settings.post_params[e],this.callFlash("SetPostParams",[this.settings.post_params])},SWFUpload.prototype.setFileTypes=function(e,t){this.settings.file_types=e,this.settings.file_types_description=t,this.callFlash("SetFileTypes",[e,t])},SWFUpload.prototype.setFileSizeLimit=function(e){this.settings.file_size_limit=e,this.callFlash("SetFileSizeLimit",[e])},SWFUpload.prototype.setFileUploadLimit=function(e){this.settings.file_upload_limit=e,this.callFlash("SetFileUploadLimit",[e])},SWFUpload.prototype.setFileQueueLimit=function(e){this.settings.file_queue_limit=e,this.callFlash("SetFileQueueLimit",[e])},SWFUpload.prototype.setFilePostName=function(e){this.settings.file_post_name=e,this.callFlash("SetFilePostName",[e])},SWFUpload.prototype.setUseQueryString=function(e){this.settings.use_query_string=e,this.callFlash("SetUseQueryString",[e])},SWFUpload.prototype.setRequeueOnError=function(e){this.settings.requeue_on_error=e,this.callFlash("SetRequeueOnError",[e])},SWFUpload.prototype.setHTTPSuccess=function(e){ -"string"==typeof e&&(e=e.replace(" ","").split(",")),this.settings.http_success=e,this.callFlash("SetHTTPSuccess",[e])},SWFUpload.prototype.setAssumeSuccessTimeout=function(e){this.settings.assume_success_timeout=e,this.callFlash("SetAssumeSuccessTimeout",[e])},SWFUpload.prototype.setDebugEnabled=function(e){this.settings.debug_enabled=e,this.callFlash("SetDebugEnabled",[e])},SWFUpload.prototype.setButtonImageURL=function(e){void 0==e&&(e=""),this.settings.button_image_url=e,this.callFlash("SetButtonImageURL",[e])},SWFUpload.prototype.setButtonDimensions=function(e,t){this.settings.button_width=e,this.settings.button_height=t;var n=this.getMovieElement();void 0!=n&&(n.style.width=e+"px",n.style.height=t+"px"),this.callFlash("SetButtonDimensions",[e,t])},SWFUpload.prototype.setButtonText=function(e){this.settings.button_text=e,this.callFlash("SetButtonText",[e])},SWFUpload.prototype.setButtonTextPadding=function(e,t){this.settings.button_text_top_padding=t,this.settings.button_text_left_padding=e,this.callFlash("SetButtonTextPadding",[e,t])},SWFUpload.prototype.setButtonTextStyle=function(e){this.settings.button_text_style=e,this.callFlash("SetButtonTextStyle",[e])},SWFUpload.prototype.setButtonDisabled=function(e){this.settings.button_disabled=e,this.callFlash("SetButtonDisabled",[e])},SWFUpload.prototype.setButtonAction=function(e){this.settings.button_action=e,this.callFlash("SetButtonAction",[e])},SWFUpload.prototype.setButtonCursor=function(e){this.settings.button_cursor=e,this.callFlash("SetButtonCursor",[e])},SWFUpload.prototype.queueEvent=function(e,t){void 0==t?t=[]:t instanceof Array||(t=[t]);var n=this;if("function"==typeof this.settings[e])this.eventQueue.push(function(){this.settings[e].apply(this,t)}),setTimeout(function(){n.executeNextEvent()},0);else if(null!==this.settings[e])throw"Event handler "+e+" is unknown or is not a function"},SWFUpload.prototype.executeNextEvent=function(){var e=this.eventQueue?this.eventQueue.shift():null;"function"==typeof e&&e.apply(this)},SWFUpload.prototype.unescapeFilePostParams=function(e){var t,n=/[$]([0-9a-f]{4})/i,i={};if(void 0!=e){for(var a in e.post)if(e.post.hasOwnProperty(a)){t=a;for(var o;null!==(o=n.exec(t));)t=t.replace(o[0],String.fromCharCode(parseInt("0x"+o[1],16)));i[t]=e.post[a]}e.post=i}return e},SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(e){return!1}},SWFUpload.prototype.flashReady=function(){var e=this.getMovieElement();return e?(this.cleanUp(e),void this.queueEvent("swfupload_loaded_handler")):void this.debug("Flash called back ready but the flash movie can't be found.")},SWFUpload.prototype.cleanUp=function(e){try{if(this.movieElement&&"unknown"==typeof e.CallFunction){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var t in e)try{"function"==typeof e[t]&&(e[t]=null)}catch(n){}}}catch(i){}window.__flash__removeCallback=function(e,t){try{e&&(e[t]=null)}catch(n){}}},SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")},SWFUpload.prototype.fileQueued=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("file_queued_handler",e)},SWFUpload.prototype.fileQueueError=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("file_queue_error_handler",[e,t,n])},SWFUpload.prototype.fileDialogComplete=function(e,t,n){this.queueEvent("file_dialog_complete_handler",[e,t,n])},SWFUpload.prototype.uploadStart=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("return_upload_start_handler",e)},SWFUpload.prototype.returnUploadStart=function(e){var t;if("function"==typeof this.settings.upload_start_handler)e=this.unescapeFilePostParams(e),t=this.settings.upload_start_handler.call(this,e);else if(void 0!=this.settings.upload_start_handler)throw"upload_start_handler must be a function";void 0===t&&(t=!0),t=!!t,this.callFlash("ReturnUploadStart",[t])},SWFUpload.prototype.uploadProgress=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_progress_handler",[e,t,n])},SWFUpload.prototype.uploadError=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_error_handler",[e,t,n])},SWFUpload.prototype.uploadSuccess=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_success_handler",[e,t,n])},SWFUpload.prototype.uploadComplete=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("upload_complete_handler",e)},SWFUpload.prototype.debug=function(e){this.queueEvent("debug_handler",e)},SWFUpload.prototype.debugMessage=function(e){if(this.settings.debug){var t,n=[];if("object"==typeof e&&"string"==typeof e.name&&"string"==typeof e.message){for(var i in e)e.hasOwnProperty(i)&&n.push(i+": "+e[i]);t=n.join("\n")||"",n=t.split("\n"),t="EXCEPTION: "+n.join("\nEXCEPTION: "),SWFUpload.Console.writeLine(t)}else SWFUpload.Console.writeLine(e)}},SWFUpload.Console={},SWFUpload.Console.writeLine=function(e){var t,n;try{t=document.getElementById("SWFUpload_Console"),t||(n=document.createElement("form"),document.getElementsByTagName("body")[0].appendChild(n),t=document.createElement("textarea"),t.id="SWFUpload_Console",t.style.fontFamily="monospace",t.setAttribute("wrap","off"),t.wrap="off",t.style.overflow="auto",t.style.width="700px",t.style.height="350px",t.style.margin="5px",n.appendChild(t)),t.value+=e+"\n",t.scrollTop=t.scrollHeight-t.clientHeight}catch(i){alert("Exception: "+i.name+" Message: "+i.message)}}}(),function(){"function"==typeof SWFUpload&&(SWFUpload.queue={},SWFUpload.prototype.initSettings=function(e){return function(){"function"==typeof e&&e.call(this),this.queueSettings={},this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0,this.queueSettings.user_upload_complete_handler=this.settings.upload_complete_handler,this.queueSettings.user_upload_start_handler=this.settings.upload_start_handler,this.settings.upload_complete_handler=SWFUpload.queue.uploadCompleteHandler,this.settings.upload_start_handler=SWFUpload.queue.uploadStartHandler,this.settings.queue_complete_handler=this.settings.queue_complete_handler||null}}(SWFUpload.prototype.initSettings),SWFUpload.prototype.startUpload=function(e){this.queueSettings.queue_cancelled_flag=!1,this.callFlash("StartUpload",[e])},SWFUpload.prototype.cancelQueue=function(){this.queueSettings.queue_cancelled_flag=!0,this.stopUpload();for(var e=this.getStats();e.files_queued>0;)this.cancelUpload(),e=this.getStats()},SWFUpload.queue.uploadStartHandler=function(e){var t;return"function"==typeof this.queueSettings.user_upload_start_handler&&(t=this.queueSettings.user_upload_start_handler.call(this,e)),t=t!==!1,this.queueSettings.queue_cancelled_flag=!t,t},SWFUpload.queue.uploadCompleteHandler=function(e){var t,n=this.queueSettings.user_upload_complete_handler;if(e.filestatus===SWFUpload.FILE_STATUS.COMPLETE&&this.queueSettings.queue_upload_count++,t="function"==typeof n?n.call(this,e)!==!1:e.filestatus!==SWFUpload.FILE_STATUS.QUEUED){var i=this.getStats();i.files_queued>0&&this.queueSettings.queue_cancelled_flag===!1?this.startUpload():this.queueSettings.queue_cancelled_flag===!1?(this.queueEvent("queue_complete_handler",[this.queueSettings.queue_upload_count]),this.queueSettings.queue_upload_count=0):(this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0)}})}(),KindEditor.plugin("pagebreak",function(e){var t=this,n="pagebreak",i=e.undef(t.pagebreakHtml,'
    ');t.clickToolbar(n,function(){var n=t.cmd,a=n.range;t.focus();var o="br"==t.newlineTag||e.WEBKIT?"":'';if(t.insertHtml(i+o),""!==o){var r=e("#__kindeditor_tail_tag__",t.edit.doc);a.selectNodeContents(r[0]),r.removeAttr("id"),n.select()}})}),KindEditor.plugin("plainpaste",function(e){var t=this,n="plainpaste";t.clickToolbar(n,function(){var i=t.lang(n+"."),a='
    '+i.comment+'
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=r.val();i=e.escape(i),i=i.replace(/ {2}/g,"  "),i="p"==t.newlineTag?i.replace(/^/,"

    ").replace(/$/,"

    ").replace(/\n/g,"

    "):i.replace(/\n/g,"
    $&"),t.insertHtml(i).hideDialog().focus()}}}),r=e("textarea",o.div);r[0].focus()})}),KindEditor.plugin("preview",function(e){var t=this,n="preview";t.clickToolbar(n,function(){var i=(t.lang(n+"."),'

    '),a=t.createDialog({name:n,width:750,title:t.lang(n),body:i}),o=e("iframe",a.div),r=e.iframeDoc(o);r.open(),r.write(t.fullHtml()),r.write("");var l=t.options.cssData,s=t.options.cssPath,d=t.options.bodyClass;e.isArray(s)||(s=[s]),e.each(s,function(e,t){t&&r.write('')}),l&&r.write(""),r.close();var c=e(r.body).css("background-color","#FFF");d&&c.addClass(d),o[0].contentWindow.focus()})}),KindEditor.plugin("quickformat",function(e){function t(e){for(var t=e.first();t&&t.first();)t=t.first();return t}var n=this,i="quickformat",a=e.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");n.clickToolbar(i,function(){n.focus();for(var i,o=n.edit.doc,r=n.cmd.range,l=e(o.body).first(),s=[],d=[],c=r.createBookmark(!0);l;){i=l.next();var u=t(l);u&&"img"==u.name||(a[l.name]?(l.html(l.html().replace(/^(\s| | )+/gi,"")),l.css("text-indent","2em")):d.push(l),(!i||a[i.name]||a[l.name]&&!a[i.name])&&(d.length>0&&s.push(d),d=[])),l=i}e.each(s,function(t,n){var i=e('

    ',o);n[0].before(i),e.each(n,function(e,t){i.append(t)})}),r.moveToBookmark(c),n.addBookmark()})}),KindEditor.plugin("template",function(e){function t(t){return a+t+"?ver="+encodeURIComponent(e.DEBUG?e.TIME:e.VERSION)}var n=this,i="template",a=(n.lang(i+"."),n.pluginsPath+i+"/html/");n.clickToolbar(i,function(){var a=n.lang(i+"."),o=['
    ','
    ','
    ',a.selectTemplate+"
    ",'
    ',' ","
    ",'
    ',"
    ",'',"
    "].join("");var r=n.createDialog({name:i,width:500,title:n.lang(i),body:html,yesBtn:{name:n.lang("yes"),click:function(t){var i=e.iframeDoc(d);n[s[0].checked?"html":"insertHtml"](i.body.innerHTML).hideDialog().focus()}}}),l=e("select",r.div),s=e('[name="replaceFlag"]',r.div),d=e("iframe",r.div);s[0].checked=!0,d.attr("src",t(l.val())),l.change(function(){d.attr("src",t(this.value))})})}),KindEditor.plugin("wordpaste",function(e){var t=this,n="wordpaste";t.clickToolbar(n,function(){var i=t.lang(n+"."),a='
    '+i.comment+'
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=s.body.innerHTML;i=e.clearMsWord(i,t.filterMode?t.htmlTags:e.options.htmlTags),t.insertHtml(i).hideDialog().focus()}}}),r=o.div,l=e("iframe",r),s=e.iframeDoc(l);e.IE||(s.designMode="on"),s.open(),s.write("WordPaste"),s.write(''),e.IE||s.write("
    "),s.write(""),s.close(),e.IE&&(s.body.contentEditable="true"),l[0].contentWindow.focus()})}),$.each(["afterBlur","afterFocus","afterChange","afterTab"],function(e,t){KindEditor.EditorClass.prototype[t]=function(e){return this.handler(t,e)}}),KindEditor.plugin("zui",function(e){var t=this,n=t.options;if(t.uuid=$.zui.uuid(),t.afterBlur(function(){n.syncAfterBlur&&t.sync(),t.container.removeClass("focus")}),t.afterFocus(function(){t.container.addClass("focus")}),t.afterChange(function(){t.edit.srcElement.change().hide()}),t.afterCreate(function(){$(t.edit.srcElement[0]).data("keditor",t);var e=n.spellcheck;void 0!==e&&t.edit.doc.documentElement.setAttribute("spellcheck",e)}),n.transferTab!==!1){var i='input:not([type="hidden"]), textarea:not(.ke-edit-textarea), button[type="submit"], select';t.afterTab(function(){var e=$(t.edit.srcElement[0]),n=e.next(i);if(n.length||(n=e.next().next(i)),n.length||(n=e.parent().next().find(i)),n.length||(n=e.parent().parent().next().find(i)),n=n.first(),n.length){var a=n.data("keditor");return a?a.focus():n.focus(),!0}return!0})}}),KindEditor.EditorClass.prototype.setPlaceholder=function(e,t){var n=this,i=n.options,a=$(n.edit.div[0]),o=a.find(".kindeditor-ph");o.length||(a.css("position","relative"),o=$('
    '),i.placeholderStyle&&o.css(i.placeholderStyle),a.append(o)),n.plugin.hasContent()&&o.hide(),o[t?"html":"text"](e),n.$placeholder=o},KindEditor.EditorClass.prototype.getPlaceholder=function(e){return this.$placeholder?this.$placeholder[e?"html":"text"]():""},KindEditor.plugin("placeholder",function(e){var t=this;t.plugin.hasContent=function(){return""!==t.html().replace(/\s|\n|\r|\t/g,"").replace(//g,"").replace(/

    <\/p>/g,"")},t.afterBlur(function(){t.plugin.hasContent()||t.$placeholder&&t.$placeholder.show()}),t.afterFocus(function(){t.$placeholder&&t.$placeholder.hide()}),t.afterCreate(function(){var e=t.options;e.placeholderHtml?t.setPlaceholder(e.placeholderHtml,!0):e.placeholder&&t.setPlaceholder(e.placeholder)})}),KindEditor.plugin("pasteimage",function(e){var t=this,n={zh_cn:{notSupportMsg:"您的浏览器不支持粘贴图片!",placeholder:"可以在编辑器直接贴图。",failMsg:"贴图失败,请稍后重试。",uploadingHint:"正在上传图片,请稍后..."},zh_tw:{notSupportMsg:"您的瀏覽器不支持粘貼圖片!",placeholder:"可以在編輯器直接貼圖。",failMsg:"貼圖失敗,請稍後重試。",uploadingHint:"正在上傳圖片,請稍後..."},en:{notSupportMsg:"Image is not allowed to paste in your browser!",placeholder:"You can paste images in the editor.",failMsg:"Pasting image failed. Try again later.",uploadingHint:"Uploading..."}};t.afterCreate(function(){var i=t.edit,a=i.doc,o=t.uuid,r=t.options.pasteImage;if(r){"string"==typeof r&&(r={postUrl:r});var l=$.clientLang?$.clientLang():$.zui&&$.zui.clientLang?$.zui.clientLang():"en",s=$.extend({},$.zui&&$.zui.getLangData?$.zui.getLangData("kindeditor.advanceTable",l,n):$.extend({},n.en,t.lang("table."),n[l]),r.lang);if(e.WEBKIT||e.GECKO||$(a.body).on("keyup.ke"+o,function(e){86==e.keyCode&&e.ctrlKey&&alert(s.notSupportMsg)}),t.setPlaceholder){var d=r.placeholder;if(d===!0&&(d=s.placeholder),d){var c=t.getPlaceholder();c?c.indexOf(d)<0&&(d=c+"\n"+d):c=d,t.setPlaceholder(d)}}var u=function(){r.beforePaste&&r.beforePaste();var e='

    '+s.uploadingHint+"
    ";t.readonly(!0),$.fn.enableForm&&$(t.edit.div[0]).closest("form").enableForm(!1),t.cmd.inserthtml(e)},p=function(e){e&&(r.onError?r.onError(e):(e===!0&&(e=s.failMsg),$.zui&&$.zui.messager&&$.zui.messager.danger(e,{placement:"center"}))),r.afterPaste&&r.afterPaste(),t.readonly(!1),$.fn.enableForm&&$(t.edit.div[0]).closest("form").enableForm(!0)},h=r.postUrl;$(a.body).on("paste.ke"+o,function(n){if(e.WEBKIT){var o=n.originalEvent,r=o.clipboardData&&o.clipboardData.items,l=null;if(r)for(var s=/^image\/(p?jpeg|gif|png)$/i,d=0;d';$.post(h,{editor:a},function(e){if(t.undo(),t._redoStack.pop(),e){var a=$(e);i.cmd.insertimage(a.attr("src"),a.attr("title"),a.attr("width"),a.attr("height"))}else i.cmd.insertimage(n);p()}).error(function(){p(!0)})},f.readAsDataURL(c)}else setTimeout(function(){var n=e(a.body).html();n.search(/"),t.undo(),t._redoStack.pop(),i.html(e),p()}).error(function(){p(!0)}))},80)}),t.beforeRemove(function(){$(a.body).off(".ke"+o)})}})}),function(e){function t(t){var n=[],i=0,a=0;t.children("thead,tbody,tfoot").children("tr").each(function(t,o){e(o).children("td,th").each(function(o,r){var l,s,d=e(r),c=0|d.attr("colspan"),u=0|d.attr("rowspan");for(c=c?c:1,u=u?u:1;n[t]&&n[t][o];++o);for(l=o;ltr"),a=i.filter(function(){return!!this.style.backgroundColor}).length;t.stripedRows=a>=Math.floor(i.length/2)}return t}function r(t,n,i){if(!n){var a=d.plugin.getSelectedTable();n=$(a[0])}if(n&&n.length){if(t=o(n,t),n.data("tableSetting",t),void 0!==t.header){if(n.is(".ke-plugin-table-example"))n.find("thead").toggleClass("hidden",!t.header);else{var r=n.find("thead");if(t.header){if(!r.length){var l=["
    '),l=$(""),s=0;s"),u=0;u'+(e.IE?" ":"
    ")+"");c.append(p)}l.append(c)}r.append(l);var h=$("
    ").append(r).html();e.IE||(h+="
    "),d.insertHtml(h);var r=$(d.edit.doc).find("#"+o);return r.attr("id",null),d.cmd.range.selectNodeContents(r.find("th,td").first()[0]).collapse(!0),d.cmd.select(),d.addBookmark(),r}}function s(i){for(var a=$(i[0]),l=[""],s=[""],u=0;u<6;++u){l.push('{tableHead}'),s.push("");for(var p=0;p<6;++p)s.push('{tableContent}');s.push("")}l.push(""),s.push("");var h=['
    ','
    ','
    ','
    ',"",'
    ','
    ',"
    ",'
    ',"",'
    ','
    ',"
    ",'
    ',"",'
    ','{borderColor}','',"
    ","
    ","
    ",'
    ','',l.join(""),s.join(""),"
    ","","",""].join("").format(f),g=$(h),v=g.find(".ke-plugin-table-example"),_=d.cmd.range.createBookmark(),b=g.find(".ke-plugin-table-input-color"),y=e(b[0]);g.on("change.kTable","input[name]",function(){var e=$(this),t={};t[e.attr("name")]=e.is('[type="checkbox"]')?e.is(":checked"):e.val(),r(t,v)});var k=d.createDialog({name:c+"Dialog",width:550,title:d.lang(c),body:g[0],beforeRemove:function(){g.off(".kTable")},yesBtn:{name:d.lang("yes"),click:function(e){r({borderColor:g.find('[name="borderColor"]').val(),header:g.find('[name="header"]').is(":checked"),stripedRows:g.find('[name="stripedRows"]').is(":checked"),hoverRows:g.find('[name="hoverRows"]').is(":checked"),autoWidth:g.find('[name="autoWidth"]:checked').val()},a),d.hideDialog().focus(),d.cmd.range.moveToBookmark(_),d.cmd.select(),d.addBookmark()}}});n(k.div,y,function(e){r({borderColor:e},v)}),r(o(a),v,function(e,n){switch(e){case"borderColor":t(y,n||m);break;case"header":g.find('[name="header"]').prop("checked",!!n);break;case"stripedRows":g.find('[name="stripedRows"]').prop("checked",!!n);break;case"hoverRows":g.find('[name="hoverRows"]').prop("checked",!!n);break;case"autoWidth":g.find('[name="autoWidth"][value="'+(n?"auto":"")+'"]').prop("checked",!0)}})}var d=this,c="table",u={zh_cn:{name:"表格",xRxC:"{0}行 × {1}列",headerRow:"标题行",headerCol:"标题列",tableStyle:"表格样式",addHeaderRow:"添加表格标题行",stripedRows:"隔行变色效果",hoverRows:"鼠标悬停效果",autoChangeTableWidth:"自动调整表格尺寸",tableWidthFixed:"按表格文字自适应",tableWidthFull:"按页面宽度自适应",tableBorder:"表格边框",tableHead:"标题",tableContent:"内容",mergeCells:"合并单元格",defaultColor:"默认颜色",color:"颜色",forecolor:"文字颜色",backcolor:"背景颜色",invalidBoderWidth:"边框大小必须为数字。"},zh_tw:{name:"表格",xRxC:"{0}行×{1}列",headerRow:"標題行",headerCol:"標題列",tableStyle:"表格樣式",addHeaderRow:"添加表格標題行",stripedRows:"隔行變色效果",hoverRows:"鼠標懸停效果",autoChangeTableWidth:"自動調整表格尺寸",tableWidthFixed:"按表格文字自適應",tableWidthFull:"按頁面寬度自適應",tableBorder:"表格邊框",tableHead:"標題",tableContent:"內容",mergeCells:"合併單元格",defaultColor:"默認顏色",color:"顏色",forecolor:"文字顏色",backcolor:"背景顏色",invalidBoderWidth:"邊框大小必須為數字。"},en:{name:"Table",xRxC:"{0} Rows × {1} Columns",headerRow:"Header Row",headerCol:"Header Column",tableStyle:"Table style",addHeaderRow:"Add header row",stripedRows:"Striped effection",hoverRows:"Mouse hover effection",autoChangeTableWidth:"Automatically adjust table size",tableWidthFixed:"Adaptive by form text",tableWidthFull:"Page width adaptive",tableBorder:"Table border",tableHead:"Title",tableContent:"Text",mergeCells:"Merge Cells",defaultColor:"Default color",color:"Color",forecolor:"Text Color",backcolor:"Back Color",invalidBoderWidth:"Border width value must be number"}},p=[],h=$.clientLang?$.clientLang():$.zui&&$.zui.clientLang?$.zui.clientLang():"en",f=$.zui&&$.zui.getLangData?$.extend({},d.lang("table."),$.zui.getLangData("kindeditor.advanceTable",h,u)):$.extend({},u.en,d.lang("table."),u[h]),m=d.options.tableBorderColor||"#ddd";d.tableIdIndex=0;var g=[];if(!d.plugin.table){d.plugin.table={prop:function(){var e=d.plugin.getSelectedTable();e&&e.length&&s(e)},cellprop:function(){var i,a,o,r,r,l,s,u,p,h=['
    ','
    ','",'
    ','
    ',''+f.width+"",'','','","
    ","
    ",'
    ','
    ',''+f.height+"",'','','","
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.textAlign+"",'","
    ","
    ",'
    ','
    ',''+f.verticalAlign+"",'","
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.borderColor+"",'',"
    ","
    ",'
    ','
    ',''+f.size+"",'','px',"
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.forecolor+"",'',"
    ","
    ",'
    ','
    ',''+f.backcolor+"",'',"
    ","
    ","
    ","
    "].join(""),g=d.cmd.range.createBookmark(),v=d.createDialog({name:c,width:500,title:d.lang("tablecell"),body:h,beforeRemove:function(){u.unbind()},yesBtn:{name:d.lang("yes"),click:function(t){var n=a.val(),i=o.val(),c=r.val(),h=heightTypeBox.val(),m=l.val(),v=s.val(),_=p.val(),b=e(u[0]).val()||"",y=e(u[1]).val()||"",k=e(u[2]).val()||"";if(!/^\d*$/.test(n))return alert(d.lang("invalidWidth")),void a[0].focus();if(!/^\d*$/.test(i))return alert(d.lang("invalidHeight")),void o[0].focus();if(!/^\d*$/.test(_))return alert(f.invalidBoderWidth),void p[0].focus();for(var w=d.plugin.getAllSelectedCells(),C={width:""!==n?n+c:"",height:""!==i?i+h:"","background-color":k,"text-align":m,"border-width":_+"px","vertical-align":v,"border-color":b,color:y},S=0;S1?' rowspan="'+h.rowSpan+'"':"")+(h.colSpan>1?' colspan="'+h.colSpan+'"':"")+' style="'+(f?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+"",h=p.cells[l],l=i(n,p,h)}d.cmd.range.selectNodeContents(r).collapse(!0),d.addBookmark(),d.focus()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(t){var n=d.plugin.getSelectedTable()[0],i=d.plugin.getSelectedRow()[0],a=d.plugin.getSelectedCell()[0],l=n.rows[0],s=o($(n)),c=i.rowIndex;1===t&&(c=i.rowIndex+(a.rowSpan-1)+t);for(var u=n.insertRow(c),p="THEAD"===u.parentNode.tagName,h=0,f=l.cells.length;h1&&(f+=g.rowSpan-1);var v=u.insertCell(h);v.outerHTML="<"+(p?"th":"td")+(v.rowSpan>1?' rowspan="'+v.rowSpan+'"':"")+(v.colSpan>1?' colspan="'+v.colSpan+'"':"")+' style="'+(p?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+""}for(var _=c;_>=0;_--){var b=n.rows[_].cells;if(b.length>h){for(var y=a.cellIndex;y>=0;y--)b[y].rowSpan>1&&(b[y].rowSpan+=1);break}}r(null,$(n)),d.cmd.range.selectNodeContents(a).collapse(!0),d.addBookmark(),d.focus()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1); -},rowmerge:function(){var e=d.plugin.getSelectedTable()[0],t=d.plugin.getSelectedRow()[0],n=d.plugin.getSelectedCell()[0],i=t.rowIndex,a=i+n.rowSpan,o=e.rows[a];if(!(e.rows.length<=a)){var r=n.cellIndex;if(!(o.cells.length<=r)){var l=o.cells[r];n.colSpan===l.colSpan&&(n.rowSpan+=l.rowSpan,o.deleteCell(r),d.cmd.range.selectNodeContents(n).collapse(!0),d.addBookmark(),d.focus())}}},colmerge:function(){var e=d.plugin.getSelectedTable()[0],t=d.plugin.getSelectedRow()[0],n=d.plugin.getSelectedCell()[0],i=(t.rowIndex,n.cellIndex),a=i+1;if(!(t.cells.length<=a)){var o=t.cells[a];n.rowSpan===o.rowSpan&&(n.colSpan+=o.colSpan,t.deleteCell(a),r(null,$(e)),d.cmd.range.selectNodeContents(n).collapse(!0),d.addBookmark(),d.focus())}},mergeCells:function(){var e=d.tableSelectionRange;if(e){var t,n=d.plugin.getSelectedTable()[0],i=$(n),a=e.top,o=e.left,l=e.right,s=e.bottom;i.children("thead,tbody,tfoot").children("tr").each(function(){$(this).children("td,th").each(function(){var e=$(this),n=e.cellPos();n.left===o&&n.top===a?t=e:n.right>=o&&n.left<=l&&n.bottom>=a&&n.top<=s&&e.addClass("ke-cell-removed")})}),t&&(t.attr({rowspan:s-a+1,colspan:l-o+1}),i.find(".ke-cell-removed").remove(),r(null,i),d.cmd.range.selectNodeContents(t[0]).collapse(!0),d.addBookmark(),d.focus())}},rowsplit:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getSelectedRow()[0],a=d.plugin.getSelectedCell()[0],l=n.rowIndex,s=o($(t));if(1!==a.rowSpan){for(var c=i(t,n,a),u=1,p=a.rowSpan;u1?a.colSpan:f.colSpan;f.outerHTML="<"+(g?"th":"td")+(f.rowSpan>1?' rowspan="'+f.rowSpan+'"':"")+(v>1?' colspan="'+v+'"':"")+' style="'+(g?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+"",a.colSpan>1&&(f.colSpan=a.colSpan),c=i(t,h,f)}e(a).removeAttr("rowSpan"),r(null,$(t)),d.cmd.range.selectNodeContents(a).collapse(!0),d.addBookmark(),d.focus()}},colsplit:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getSelectedRow()[0],i=d.plugin.getSelectedCell()[0],a=i.cellIndex,l=o($(t));if(1!==i.colSpan){for(var s="THEAD"===n.parentNode.tagName,c=1,u=i.colSpan;c1?i.rowSpan:p.rowSpan,f=p.colSpan;p.outerHTML="<"+(s?"th":"td")+(h>1?' rowspan="'+h+'"':"")+(f>1?' colspan="'+f+'"':"")+' style="'+(s?"background-color: #f1f1f1;":"")+"border: 1px solid "+(l&&l.borderColor||m)+'">'+(e.IE?" ":"
    ")+""}e(i).removeAttr("colSpan"),r(null,$(t)),d.cmd.range.selectNodeContents(i).collapse(!0),d.addBookmark(),d.focus()}},coldelete:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getAllSelectedCells();if(n.length){for(var i=0;i1?(u.colSpan-=1,1===u.colSpan&&e(u).removeAttr("colSpan")):c.deleteCell(r),u.rowSpan>1&&(l+=u.rowSpan-1))}if(0===o.cells.length){d.cmd.range.setStartBefore(t).collapse(!0),e(t).remove();break}}}t.parentNode&&d.cmd.selection(!0),d.addBookmark(),d.focus()}},rowdelete:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getAllSelectedCells();if(n.length){for(var i=0;i=0;l--)t.deleteRow(o.rowIndex+l)}0===t.rows.length?(d.cmd.range.setStartBefore(t).collapse(!0),e(t).remove()):(r(null,$(t)),d.cmd.selection(!0)),d.addBookmark(),d.focus()}}},d.plugin.getSelectedTable=function(){return e($(d.cmd.range.startContainer).closest("table")[0])},d.plugin.getSelectedRow=function(){return e($(d.cmd.range.startContainer).closest("tr")[0])},d.plugin.getSelectedCell=function(){return e($(d.cmd.range.startContainer).closest("td,th")[0])},d.plugin.getSelectedCells=function(){var t=d.plugin.getSelectedTable();if(t&&t.length){var n=e(".ke-select-cell",t.get(0));if(n&&n.length>1)return n}},d.plugin.getSingleSelectedCell=function(){var e=d.plugin.getSelectedCells();if(!(e&&e.length>1))return d.plugin.getSelectedCell()},d.plugin.getAllSelectedCells=function(){var e=d.plugin.getSelectedCells();return e&&e.length?e:d.plugin.getSelectedCell()};var v={mergeCells:"ke-icon-tablecolmerge"};e.each("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,mergeCells,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,delete".split(","),function(t,n){var i;i="prop"===n||"delete"===n?d.plugin.getSelectedTable:"mergeCells"===n?d.plugin.getSelectedCells:"rowmerge"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.length&&$(e.get(0)).parent().next("tr").length)return e}:"colmerge"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.length&&$(e.get(0)).next("th,td").length)return e}:"rowsplit"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.get(0).rowSpan>1)return e}:"colsplit"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.get(0).colSpan>1)return e}:e.inArray(n,["colinsertleft","colinsertright","rowinsertabove","rowinsertbelow"])>-1?d.plugin.getSingleSelectedCell:d.plugin.getSelectedCell,d.addContextmenu({title:f[n]||d.lang("table"+n),click:function(){d.plugin.table[n](),d.hideMenu()},cond:i,width:170,iconClass:v[n]||"ke-icon-table"+n})})}d.clickToolbar(c,function(){if(!d.menu){var e=d.createMenu({name:c,beforeRemove:function(){a()}}),t=$('
    '),n=$('
    '+f.xRxC.format(0,0)+"
    ");t.append(n);var i=$('
    ');i.on("mouseenter.kTable",".ke-plugin-table-grid-cell",function(){var e=$(this),t=e.data("row"),a=e.data("col");n.text(f.xRxC.format(t,a));var o=i.find(".ke-plugin-table-grid-cell");o.each(function(){var e=$(this),n=e.data("row"),i=e.data("col");n<=t&&i<=a?e.css({border:"1px solid #2286d2",background:"#eff7ff"}):e.css({border:"1px solid #ddd",background:"#f1f1f1"})})}).on("click.kTable",".ke-plugin-table-grid-cell",function(e){var t=$(this),n=t.data("row"),i=t.data("col");l(n,i),d.hideMenu().focus(),d.addBookmark(),e.stopPropagation()});for(var o=1;o<11;o++)for(var r=1;r<11;r++)i.append('
    ');p.push(i),t.append(i),e.div.append(t[0])}}),d.afterTab(function(e){var t=d.plugin.getSelectedCell();if(t&&t.length){var n=function(e){if(e.length){var t=e.next();if(t.is("td,th")||(t=e.parent().next("tr").children("th,td").first()),t.is("td,th")||(t=e.closest("tbody,tfoot,thead").next().children("tr").first().children("th,td").first()),t.length)return d.cmd.range.selectNodeContents(t[0]).collapse(!0),d.cmd.select(),!0}return!1},i=$(t.get(0));if(i.length)return d.focus(),n(i)||(d.plugin.table.rowinsertbelow(),n(i)),!0}return e});var _=function(e,t,n){var i=n?Math.min(t.top,n.top):t.top,a=n?Math.min(t.left,n.left):t.left,o=n?Math.max(t.bottom,n.bottom):t.bottom,r=n?Math.max(t.right,n.right):t.right;if(i===o&&a===r)return!1;for(var l=!1,s=!1,c=e.children("thead,tbody,tfoot").children("tr").each(function(){$(this).children("td,th").each(function(){var e=$(this),t=e.cellPos();t.right>=a&&t.left<=r&&t.bottom>=i&&t.top<=o&&(i=Math.min(i,t.top),a=Math.min(a,t.left),o=Math.max(o,t.bottom),r=Math.max(r,t.right),e.addClass("ke-select-cell"),l=!0,s=!0)})});s;)s=!1,c.each(function(){$(this).children("td,th").each(function(){var e=$(this);if(!e.hasClass("ke-select-cell")){var t=e.cellPos();t.right>=a&&t.left<=r&&t.bottom>=i&&t.top<=o&&(i=Math.min(i,t.top),a=Math.min(a,t.left),o=Math.max(o,t.bottom),r=Math.max(r,t.right),e.addClass("ke-select-cell"),s=!0)}})});var u=e.find(".ke-select-cell");return 1===u.length&&(u.removeClass("ke-select-cell"),l=!1),l?d.tableSelectionRange={top:i,left:a,bottom:o,right:r}:d.tableSelectionRange=null,l},b=function(e,t){return _(e,{left:0,right:e.data("tableSize").width-1,top:t,bottom:t})},y=function(e,t){return _(e,{left:t,right:t,top:0,bottom:e.data("tableSize").height-1})};d.afterCreate(function(){var e=!1,t=null,n=null,i=null,a=null,o=function(){e=!1,t=null,a=null};$(d.edit.doc.body).on("mousedown.ke"+d.uuid,function(n){var a=$(n.target).closest("td,th"),o=a.closest("table"),r=!1;a.length&&o.length&&(t=o,e=!0,i=a.cellPos(!0),r=3===n.which,o.removeClass("ke-select-cells")),r||($(d.edit.doc).find(".ke-select-cell").removeClass("ke-select-cell"),d.tableSelectionRange=null)}).on("mousemove.ke"+d.uuid,function(o){var r=$(o.target).closest("td,th");if(!r.length)return e?o.preventDefault():null;var l=r.closest("table");if(!l.length)return e?o.preventDefault():null;if(l.removeClass("ke-select-row ke-select-col ke-select-cells"),a=r.cellPos(),e){if(l[0]!==t[0])return o.preventDefault();$(d.edit.doc).find("table").find(".ke-select-cell").removeClass("ke-select-cell"),_(l,i,a)&&(l.addClass("ke-select-cells"),o.preventDefault())}else{n=l;var s=l.offset(),c=o.pageX,u=o.pageY,p=c-s.left,h=u-s.top;p<8?(l.addClass("ke-select-row"),a.selectRow=a.top,delete a.selectCol,o.preventDefault(),o.stopPropagation()):h<8&&(l.addClass("ke-select-col"),a.selectCol=a.left,delete a.selectRow,o.preventDefault(),o.stopPropagation())}}).on("mouseup.ke"+d.uuid,function(e){var t=$(e.target),i=t.closest("td,th");i.length&&(a&&void 0!==a.selectRow?(b(n,a.selectRow),e.stopPropagation()):a&&void 0!==a.selectCol&&(y(n,a.selectCol),e.stopPropagation())),o()}).on("paste.ke"+d.uuid+" keydown.ke"+d.uuid,function(){$(d.edit.doc).find("table").removeClass("ke-select-row ke-select-col").find(".ke-select-cell").removeClass("ke-select-cell")}),$(document).on("mouseup.ke"+d.uuid,function(){o()}),$(d.edit.doc.head).append([""].join(""));var r=d.cmd.toggle,l=function(e,t,n){var i=this;return void 0!==n&&null!==n||(n=i.commonNode(t)),n?i.remove(t):i.wrap(e),i.select()},s=function(e,t,n){var i=d.cmd.range;if(i&&i.endContainer){var a=$(i.endContainer).closest("th,td");if(!a.length)return;var o=a.closest("table");if(!o.length)return;var r=o.children("thead,tbody,tfoot").children("tr").children(".ke-select-cell");if(r.length)return t&&t(a,o),r.each(e),n&&n(a,o),i.selectNodeContents(a[0]),d.cmd.select(),d.focus(),!0}};d.cmd.toggle=function(e,t){var n;if(!s(function(){d.cmd.range.selectNodeContents(this),d.cmd.select(),l.call(d.cmd,e,t,n)},function(e){d.cmd.range.selectNodeContents(e[0]),d.cmd.select(),n=!!d.cmd.commonNode(t)}))return r.call(d.cmd,e,t)};var c=",justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,",u=d.clickToolbar;d.clickToolbar=function(e,t){if(!(void 0===t&&c.indexOf(","+e+",")>-1&&s(function(){d.cmd.range.selectNode(this),d.cmd.select(),u.call(d,e,t)})))return u.call(d,e,t)}}),d.beforeRemove(function(){$(d.edit.doc.body).off(".ke"+d.uuid),$(document).off(".ke"+d.uuid)})}),KindEditor.lang({table:KindEditor.lang("table")}); \ No newline at end of file +"string"==typeof e&&(e=e.replace(" ","").split(",")),this.settings.http_success=e,this.callFlash("SetHTTPSuccess",[e])},SWFUpload.prototype.setAssumeSuccessTimeout=function(e){this.settings.assume_success_timeout=e,this.callFlash("SetAssumeSuccessTimeout",[e])},SWFUpload.prototype.setDebugEnabled=function(e){this.settings.debug_enabled=e,this.callFlash("SetDebugEnabled",[e])},SWFUpload.prototype.setButtonImageURL=function(e){void 0==e&&(e=""),this.settings.button_image_url=e,this.callFlash("SetButtonImageURL",[e])},SWFUpload.prototype.setButtonDimensions=function(e,t){this.settings.button_width=e,this.settings.button_height=t;var n=this.getMovieElement();void 0!=n&&(n.style.width=e+"px",n.style.height=t+"px"),this.callFlash("SetButtonDimensions",[e,t])},SWFUpload.prototype.setButtonText=function(e){this.settings.button_text=e,this.callFlash("SetButtonText",[e])},SWFUpload.prototype.setButtonTextPadding=function(e,t){this.settings.button_text_top_padding=t,this.settings.button_text_left_padding=e,this.callFlash("SetButtonTextPadding",[e,t])},SWFUpload.prototype.setButtonTextStyle=function(e){this.settings.button_text_style=e,this.callFlash("SetButtonTextStyle",[e])},SWFUpload.prototype.setButtonDisabled=function(e){this.settings.button_disabled=e,this.callFlash("SetButtonDisabled",[e])},SWFUpload.prototype.setButtonAction=function(e){this.settings.button_action=e,this.callFlash("SetButtonAction",[e])},SWFUpload.prototype.setButtonCursor=function(e){this.settings.button_cursor=e,this.callFlash("SetButtonCursor",[e])},SWFUpload.prototype.queueEvent=function(e,t){void 0==t?t=[]:t instanceof Array||(t=[t]);var n=this;if("function"==typeof this.settings[e])this.eventQueue.push(function(){this.settings[e].apply(this,t)}),setTimeout(function(){n.executeNextEvent()},0);else if(null!==this.settings[e])throw"Event handler "+e+" is unknown or is not a function"},SWFUpload.prototype.executeNextEvent=function(){var e=this.eventQueue?this.eventQueue.shift():null;"function"==typeof e&&e.apply(this)},SWFUpload.prototype.unescapeFilePostParams=function(e){var t,n=/[$]([0-9a-f]{4})/i,i={};if(void 0!=e){for(var a in e.post)if(e.post.hasOwnProperty(a)){t=a;for(var o;null!==(o=n.exec(t));)t=t.replace(o[0],String.fromCharCode(parseInt("0x"+o[1],16)));i[t]=e.post[a]}e.post=i}return e},SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(e){return!1}},SWFUpload.prototype.flashReady=function(){var e=this.getMovieElement();return e?(this.cleanUp(e),void this.queueEvent("swfupload_loaded_handler")):void this.debug("Flash called back ready but the flash movie can't be found.")},SWFUpload.prototype.cleanUp=function(e){try{if(this.movieElement&&"unknown"==typeof e.CallFunction){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var t in e)try{"function"==typeof e[t]&&(e[t]=null)}catch(n){}}}catch(i){}window.__flash__removeCallback=function(e,t){try{e&&(e[t]=null)}catch(n){}}},SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")},SWFUpload.prototype.fileQueued=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("file_queued_handler",e)},SWFUpload.prototype.fileQueueError=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("file_queue_error_handler",[e,t,n])},SWFUpload.prototype.fileDialogComplete=function(e,t,n){this.queueEvent("file_dialog_complete_handler",[e,t,n])},SWFUpload.prototype.uploadStart=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("return_upload_start_handler",e)},SWFUpload.prototype.returnUploadStart=function(e){var t;if("function"==typeof this.settings.upload_start_handler)e=this.unescapeFilePostParams(e),t=this.settings.upload_start_handler.call(this,e);else if(void 0!=this.settings.upload_start_handler)throw"upload_start_handler must be a function";void 0===t&&(t=!0),t=!!t,this.callFlash("ReturnUploadStart",[t])},SWFUpload.prototype.uploadProgress=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_progress_handler",[e,t,n])},SWFUpload.prototype.uploadError=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_error_handler",[e,t,n])},SWFUpload.prototype.uploadSuccess=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_success_handler",[e,t,n])},SWFUpload.prototype.uploadComplete=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("upload_complete_handler",e)},SWFUpload.prototype.debug=function(e){this.queueEvent("debug_handler",e)},SWFUpload.prototype.debugMessage=function(e){if(this.settings.debug){var t,n=[];if("object"==typeof e&&"string"==typeof e.name&&"string"==typeof e.message){for(var i in e)e.hasOwnProperty(i)&&n.push(i+": "+e[i]);t=n.join("\n")||"",n=t.split("\n"),t="EXCEPTION: "+n.join("\nEXCEPTION: "),SWFUpload.Console.writeLine(t)}else SWFUpload.Console.writeLine(e)}},SWFUpload.Console={},SWFUpload.Console.writeLine=function(e){var t,n;try{t=document.getElementById("SWFUpload_Console"),t||(n=document.createElement("form"),document.getElementsByTagName("body")[0].appendChild(n),t=document.createElement("textarea"),t.id="SWFUpload_Console",t.style.fontFamily="monospace",t.setAttribute("wrap","off"),t.wrap="off",t.style.overflow="auto",t.style.width="700px",t.style.height="350px",t.style.margin="5px",n.appendChild(t)),t.value+=e+"\n",t.scrollTop=t.scrollHeight-t.clientHeight}catch(i){alert("Exception: "+i.name+" Message: "+i.message)}}}(),function(){"function"==typeof SWFUpload&&(SWFUpload.queue={},SWFUpload.prototype.initSettings=function(e){return function(){"function"==typeof e&&e.call(this),this.queueSettings={},this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0,this.queueSettings.user_upload_complete_handler=this.settings.upload_complete_handler,this.queueSettings.user_upload_start_handler=this.settings.upload_start_handler,this.settings.upload_complete_handler=SWFUpload.queue.uploadCompleteHandler,this.settings.upload_start_handler=SWFUpload.queue.uploadStartHandler,this.settings.queue_complete_handler=this.settings.queue_complete_handler||null}}(SWFUpload.prototype.initSettings),SWFUpload.prototype.startUpload=function(e){this.queueSettings.queue_cancelled_flag=!1,this.callFlash("StartUpload",[e])},SWFUpload.prototype.cancelQueue=function(){this.queueSettings.queue_cancelled_flag=!0,this.stopUpload();for(var e=this.getStats();e.files_queued>0;)this.cancelUpload(),e=this.getStats()},SWFUpload.queue.uploadStartHandler=function(e){var t;return"function"==typeof this.queueSettings.user_upload_start_handler&&(t=this.queueSettings.user_upload_start_handler.call(this,e)),t=t!==!1,this.queueSettings.queue_cancelled_flag=!t,t},SWFUpload.queue.uploadCompleteHandler=function(e){var t,n=this.queueSettings.user_upload_complete_handler;if(e.filestatus===SWFUpload.FILE_STATUS.COMPLETE&&this.queueSettings.queue_upload_count++,t="function"==typeof n?n.call(this,e)!==!1:e.filestatus!==SWFUpload.FILE_STATUS.QUEUED){var i=this.getStats();i.files_queued>0&&this.queueSettings.queue_cancelled_flag===!1?this.startUpload():this.queueSettings.queue_cancelled_flag===!1?(this.queueEvent("queue_complete_handler",[this.queueSettings.queue_upload_count]),this.queueSettings.queue_upload_count=0):(this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0)}})}(),KindEditor.plugin("pagebreak",function(e){var t=this,n="pagebreak",i=e.undef(t.pagebreakHtml,'
    ');t.clickToolbar(n,function(){var n=t.cmd,a=n.range;t.focus();var o="br"==t.newlineTag||e.WEBKIT?"":'';if(t.insertHtml(i+o),""!==o){var r=e("#__kindeditor_tail_tag__",t.edit.doc);a.selectNodeContents(r[0]),r.removeAttr("id"),n.select()}})}),KindEditor.plugin("plainpaste",function(e){var t=this,n="plainpaste";t.clickToolbar(n,function(){var i=t.lang(n+"."),a='
    '+i.comment+'
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=r.val();i=e.escape(i),i=i.replace(/ {2}/g,"  "),i="p"==t.newlineTag?i.replace(/^/,"

    ").replace(/$/,"

    ").replace(/\n/g,"

    "):i.replace(/\n/g,"
    $&"),t.insertHtml(i).hideDialog().focus()}}}),r=e("textarea",o.div);r[0].focus()})}),KindEditor.plugin("preview",function(e){var t=this,n="preview";t.clickToolbar(n,function(){var i=(t.lang(n+"."),'

    '),a=t.createDialog({name:n,width:750,title:t.lang(n),body:i}),o=e("iframe",a.div),r=e.iframeDoc(o);r.open(),r.write(t.fullHtml()),r.write("");var l=t.options.cssData,s=t.options.cssPath,d=t.options.bodyClass;e.isArray(s)||(s=[s]),e.each(s,function(e,t){t&&r.write('')}),l&&r.write(""),r.close();var c=e(r.body).css("background-color","#FFF");d&&c.addClass(d),o[0].contentWindow.focus()})}),KindEditor.plugin("quickformat",function(e){function t(e){for(var t=e.first();t&&t.first();)t=t.first();return t}var n=this,i="quickformat",a=e.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");n.clickToolbar(i,function(){n.focus();for(var i,o=n.edit.doc,r=n.cmd.range,l=e(o.body).first(),s=[],d=[],c=r.createBookmark(!0);l;){i=l.next();var u=t(l);u&&"img"==u.name||(a[l.name]?(l.html(l.html().replace(/^(\s| | )+/gi,"")),l.css("text-indent","2em")):d.push(l),(!i||a[i.name]||a[l.name]&&!a[i.name])&&(d.length>0&&s.push(d),d=[])),l=i}e.each(s,function(t,n){var i=e('

    ',o);n[0].before(i),e.each(n,function(e,t){i.append(t)})}),r.moveToBookmark(c),n.addBookmark()})}),KindEditor.plugin("template",function(e){function t(t){return a+t+"?ver="+encodeURIComponent(e.DEBUG?e.TIME:e.VERSION)}var n=this,i="template",a=(n.lang(i+"."),n.pluginsPath+i+"/html/");n.clickToolbar(i,function(){var a=n.lang(i+"."),o=['
    ','
    ','
    ',a.selectTemplate+"
    ",'
    ',' ","
    ",'
    ',"
    ",'',"
    "].join("");var r=n.createDialog({name:i,width:500,title:n.lang(i),body:html,yesBtn:{name:n.lang("yes"),click:function(t){var i=e.iframeDoc(d);n[s[0].checked?"html":"insertHtml"](i.body.innerHTML).hideDialog().focus()}}}),l=e("select",r.div),s=e('[name="replaceFlag"]',r.div),d=e("iframe",r.div);s[0].checked=!0,d.attr("src",t(l.val())),l.change(function(){d.attr("src",t(this.value))})})}),KindEditor.plugin("wordpaste",function(e){var t=this,n="wordpaste";t.clickToolbar(n,function(){var i=t.lang(n+"."),a='
    '+i.comment+'
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=s.body.innerHTML;i=e.clearMsWord(i,t.filterMode?t.htmlTags:e.options.htmlTags),t.insertHtml(i).hideDialog().focus()}}}),r=o.div,l=e("iframe",r),s=e.iframeDoc(l);e.IE||(s.designMode="on"),s.open(),s.write("WordPaste"),s.write(''),e.IE||s.write("
    "),s.write(""),s.close(),e.IE&&(s.body.contentEditable="true"),l[0].contentWindow.focus()})}),$.each(["afterBlur","afterFocus","afterChange","afterTab"],function(e,t){KindEditor.EditorClass.prototype[t]=function(e){return this.handler(t,e)}}),KindEditor.plugin("zui",function(e){var t=this,n=t.options;if(t.uuid=$.zui.uuid(),t.afterBlur(function(){n.syncAfterBlur&&t.sync(),t.container.removeClass("focus")}),t.afterFocus(function(){t.container.addClass("focus")}),t.afterChange(function(){t.edit.srcElement.change().hide()}),t.afterCreate(function(){$(t.edit.srcElement[0]).data("keditor",t);var e=n.spellcheck;void 0!==e&&t.edit.doc.documentElement.setAttribute("spellcheck",e);var i=n.transferEvents;i!==!1&&$(t.edit.doc).on("string"==typeof i?i:"click mousedown",function(e){$(t.edit.srcElement[0]).trigger(e.type)})}),n.transferTab!==!1){var i='input:not([type="hidden"]), textarea:not(.ke-edit-textarea), button[type="submit"], select';t.afterTab(function(){var e=$(t.edit.srcElement[0]),n=e.next(i);if(n.length||(n=e.next().next(i)),n.length||(n=e.parent().next().find(i)),n.length||(n=e.parent().parent().next().find(i)),n=n.first(),n.length){var a=n.data("keditor");return a?a.focus():n.focus(),!0}return!0})}}),KindEditor.EditorClass.prototype.setPlaceholder=function(e,t){var n=this,i=n.options,a=$(n.edit.div[0]),o=a.find(".kindeditor-ph");o.length||(a.css("position","relative"),o=$('
    '),i.placeholderStyle&&o.css(i.placeholderStyle),a.append(o)),n.plugin.hasContent()&&o.hide(),o[t?"html":"text"](e),n.$placeholder=o},KindEditor.EditorClass.prototype.getPlaceholder=function(e){return this.$placeholder?this.$placeholder[e?"html":"text"]():""},KindEditor.plugin("placeholder",function(e){var t=this;t.plugin.hasContent=function(){return""!==t.html().replace(/\s|\n|\r|\t/g,"").replace(//g,"").replace(/

    <\/p>/g,"")},t.afterBlur(function(){t.plugin.hasContent()||t.$placeholder&&t.$placeholder.show()}),t.afterFocus(function(){t.$placeholder&&t.$placeholder.hide()}),t.afterCreate(function(){var e=t.options;e.placeholderHtml?t.setPlaceholder(e.placeholderHtml,!0):e.placeholder&&t.setPlaceholder(e.placeholder)})}),KindEditor.plugin("pasteimage",function(e){var t=this,n={zh_cn:{notSupportMsg:"您的浏览器不支持粘贴图片!",placeholder:"可以在编辑器直接贴图。",failMsg:"贴图失败,请稍后重试。",uploadingHint:"正在上传图片,请稍后..."},zh_tw:{notSupportMsg:"您的瀏覽器不支持粘貼圖片!",placeholder:"可以在編輯器直接貼圖。",failMsg:"貼圖失敗,請稍後重試。",uploadingHint:"正在上傳圖片,請稍後..."},en:{notSupportMsg:"Image is not allowed to paste in your browser!",placeholder:"You can paste images in the editor.",failMsg:"Pasting image failed. Try again later.",uploadingHint:"Uploading..."}};t.afterCreate(function(){var i=t.edit,a=i.doc,o=t.uuid,r=t.options.pasteImage;if(r){"string"==typeof r&&(r={postUrl:r});var l=$.clientLang?$.clientLang():$.zui&&$.zui.clientLang?$.zui.clientLang():"en",s=$.extend({},$.zui&&$.zui.getLangData?$.zui.getLangData("kindeditor.advanceTable",l,n):$.extend({},n.en,t.lang("table."),n[l]),r.lang);if(e.WEBKIT||e.GECKO||$(a.body).on("keyup.ke"+o,function(e){86==e.keyCode&&e.ctrlKey&&alert(s.notSupportMsg)}),t.setPlaceholder){var d=r.placeholder;if(d===!0&&(d=s.placeholder),d){var c=t.getPlaceholder();c?c.indexOf(d)<0&&(d=c+"\n"+d):c=d,t.setPlaceholder(d)}}var u=function(){r.beforePaste&&r.beforePaste();var e='

    '+s.uploadingHint+"
    ";t.readonly(!0),$.fn.enableForm&&$(t.edit.div[0]).closest("form").enableForm(!1),t.cmd.inserthtml(e)},p=function(e){e&&(r.onError?r.onError(e):(e===!0&&(e=s.failMsg),$.zui&&$.zui.messager&&$.zui.messager.danger(e,{placement:"center"}))),r.afterPaste&&r.afterPaste(),t.readonly(!1),$.fn.enableForm&&$(t.edit.div[0]).closest("form").enableForm(!0)},h=r.postUrl;$(a.body).on("paste.ke"+o,function(n){if(e.WEBKIT){var o=n.originalEvent,r=o.clipboardData&&o.clipboardData.items,l=null;if(r)for(var s=/^image\/(p?jpeg|gif|png)$/i,d=0;d';$.post(h,{editor:a},function(e){if(t.undo(),t._redoStack.pop(),e){var a=$(e);i.cmd.insertimage(a.attr("src"),a.attr("title"),a.attr("width"),a.attr("height"))}else i.cmd.insertimage(n);p()}).error(function(){p(!0)})},f.readAsDataURL(c)}else setTimeout(function(){var n=e(a.body).html();n.search(/"),t.undo(),t._redoStack.pop(),i.html(e),p()}).error(function(){p(!0)}))},80)}),t.beforeRemove(function(){$(a.body).off(".ke"+o)})}})}),function(e){function t(t){var n=[],i=0,a=0;t.children("thead,tbody,tfoot").children("tr").each(function(t,o){e(o).children("td,th").each(function(o,r){var l,s,d=e(r),c=0|d.attr("colspan"),u=0|d.attr("rowspan");for(c=c?c:1,u=u?u:1;n[t]&&n[t][o];++o);for(l=o;ltr"),a=i.filter(function(){return!!this.style.backgroundColor}).length;t.stripedRows=a>=Math.floor(i.length/2)}return t}function r(t,n,i){if(!n){var a=d.plugin.getSelectedTable();n=$(a[0])}if(n&&n.length){if(t=o(n,t),n.data("tableSetting",t),void 0!==t.header){if(n.is(".ke-plugin-table-example"))n.find("thead").toggleClass("hidden",!t.header);else{var r=n.find("thead");if(t.header){if(!r.length){var l=["
    "],s=n.find("tbody>tr:first").children(),c=0;s.each(function(){var e=$(this),t=e.attr("colspan");c+=t?parseInt(t):1});for(var u=0;u'+(e.IE?" ":"
    ")+"");l.push("
    "),r=$(l.join("")),n.prepend(r)}}else r.remove()}i&&i("header",t.header)}if(void 0!==t.stripedRows){var p=n.find("tbody>tr");p.each(function(e){$(this).css("background-color",t.stripedRows&&e%2===0?"#f9f9f9":"")}),i&&i("stripedRows",t.stripedRows)}void 0!==t.autoWidth&&(n.css(t.autoWidth?{width:"auto",maxWidth:"100%"}:{width:"100%"}),i&&i("autoWidth",t.autoWidth)),void 0!==t.borderColor&&(n.find("td,th").css("border-color",t.borderColor),i&&i("borderColor",t.borderColor))}}function l(t,n,i,a){if(t*n){for(var o="ke-table-"+d.tableIdIndex++,r=$('
    '),l=$(""),s=0;s"),u=0;u'+(e.IE?" ":"
    ")+"");c.append(p)}l.append(c)}r.append(l);var h=$("
    ").append(r).html();e.IE||(h+="
    "),d.insertHtml(h);var r=$(d.edit.doc).find("#"+o);return r.attr("id",null),d.cmd.range.selectNodeContents(r.find("th,td").first()[0]).collapse(!0),d.cmd.select(),d.addBookmark(),r}}function s(i){for(var a=$(i[0]),l=[""],s=[""],u=0;u<6;++u){l.push('{tableHead}'),s.push("");for(var p=0;p<6;++p)s.push('{tableContent}');s.push("")}l.push(""),s.push("");var h=['
    ','
    ','
    ','
    ',"",'
    ','
    ',"
    ",'
    ',"",'
    ','
    ',"
    ",'
    ',"",'
    ','{borderColor}','',"
    ","
    ","
    ",'
    ','',l.join(""),s.join(""),"
    ","","",""].join("").format(f),g=$(h),v=g.find(".ke-plugin-table-example"),_=d.cmd.range.createBookmark(),b=g.find(".ke-plugin-table-input-color"),y=e(b[0]);g.on("change.kTable","input[name]",function(){var e=$(this),t={};t[e.attr("name")]=e.is('[type="checkbox"]')?e.is(":checked"):e.val(),r(t,v)});var k=d.createDialog({name:c+"Dialog",width:550,title:d.lang(c),body:g[0],beforeRemove:function(){g.off(".kTable")},yesBtn:{name:d.lang("yes"),click:function(e){r({borderColor:g.find('[name="borderColor"]').val(),header:g.find('[name="header"]').is(":checked"),stripedRows:g.find('[name="stripedRows"]').is(":checked"),hoverRows:g.find('[name="hoverRows"]').is(":checked"),autoWidth:g.find('[name="autoWidth"]:checked').val()},a),d.hideDialog().focus(),d.cmd.range.moveToBookmark(_),d.cmd.select(),d.addBookmark()}}});n(k.div,y,function(e){r({borderColor:e},v)}),r(o(a),v,function(e,n){switch(e){case"borderColor":t(y,n||m);break;case"header":g.find('[name="header"]').prop("checked",!!n);break;case"stripedRows":g.find('[name="stripedRows"]').prop("checked",!!n);break;case"hoverRows":g.find('[name="hoverRows"]').prop("checked",!!n);break;case"autoWidth":g.find('[name="autoWidth"][value="'+(n?"auto":"")+'"]').prop("checked",!0)}})}var d=this,c="table",u={zh_cn:{name:"表格",xRxC:"{0}行 × {1}列",headerRow:"标题行",headerCol:"标题列",tableStyle:"表格样式",addHeaderRow:"添加表格标题行",stripedRows:"隔行变色效果",hoverRows:"鼠标悬停效果",autoChangeTableWidth:"自动调整表格尺寸",tableWidthFixed:"按表格文字自适应",tableWidthFull:"按页面宽度自适应",tableBorder:"表格边框",tableHead:"标题",tableContent:"内容",mergeCells:"合并单元格",defaultColor:"默认颜色",color:"颜色",forecolor:"文字颜色",backcolor:"背景颜色",invalidBoderWidth:"边框大小必须为数字。"},zh_tw:{name:"表格",xRxC:"{0}行×{1}列",headerRow:"標題行",headerCol:"標題列",tableStyle:"表格樣式",addHeaderRow:"添加表格標題行",stripedRows:"隔行變色效果",hoverRows:"鼠標懸停效果",autoChangeTableWidth:"自動調整表格尺寸",tableWidthFixed:"按表格文字自適應",tableWidthFull:"按頁面寬度自適應",tableBorder:"表格邊框",tableHead:"標題",tableContent:"內容",mergeCells:"合併單元格",defaultColor:"默認顏色",color:"顏色",forecolor:"文字顏色",backcolor:"背景顏色",invalidBoderWidth:"邊框大小必須為數字。"},en:{name:"Table",xRxC:"{0} Rows × {1} Columns",headerRow:"Header Row",headerCol:"Header Column",tableStyle:"Table style",addHeaderRow:"Add header row",stripedRows:"Striped effection",hoverRows:"Mouse hover effection",autoChangeTableWidth:"Automatically adjust table size",tableWidthFixed:"Adaptive by form text",tableWidthFull:"Page width adaptive",tableBorder:"Table border",tableHead:"Title",tableContent:"Text",mergeCells:"Merge Cells",defaultColor:"Default color",color:"Color",forecolor:"Text Color",backcolor:"Back Color",invalidBoderWidth:"Border width value must be number"}},p=[],h=$.clientLang?$.clientLang():$.zui&&$.zui.clientLang?$.zui.clientLang():"en",f=$.zui&&$.zui.getLangData?$.extend({},d.lang("table."),$.zui.getLangData("kindeditor.advanceTable",h,u)):$.extend({},u.en,d.lang("table."),u[h]),m=d.options.tableBorderColor||"#ddd";d.tableIdIndex=0;var g=[];if(!d.plugin.table){d.plugin.table={prop:function(){var e=d.plugin.getSelectedTable();e&&e.length&&s(e)},cellprop:function(){var i,a,o,r,r,l,s,u,p,h=['
    ','
    ','",'
    ','
    ',''+f.width+"",'','','","
    ","
    ",'
    ','
    ',''+f.height+"",'','','","
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.textAlign+"",'","
    ","
    ",'
    ','
    ',''+f.verticalAlign+"",'","
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.borderColor+"",'',"
    ","
    ",'
    ','
    ',''+f.size+"",'','px',"
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.forecolor+"",'',"
    ","
    ",'
    ','
    ',''+f.backcolor+"",'',"
    ","
    ","
    ","
    "].join(""),g=d.cmd.range.createBookmark(),v=d.createDialog({name:c,width:500,title:d.lang("tablecell"),body:h,beforeRemove:function(){u.unbind()},yesBtn:{name:d.lang("yes"),click:function(t){var n=a.val(),i=o.val(),c=r.val(),h=heightTypeBox.val(),m=l.val(),v=s.val(),_=p.val(),b=e(u[0]).val()||"",y=e(u[1]).val()||"",k=e(u[2]).val()||"";if(!/^\d*$/.test(n))return alert(d.lang("invalidWidth")),void a[0].focus();if(!/^\d*$/.test(i))return alert(d.lang("invalidHeight")),void o[0].focus();if(!/^\d*$/.test(_))return alert(f.invalidBoderWidth),void p[0].focus();for(var w=d.plugin.getAllSelectedCells(),C={width:""!==n?n+c:"",height:""!==i?i+h:"","background-color":k,"text-align":m,"border-width":_+"px","vertical-align":v,"border-color":b,color:y},S=0;S1?' rowspan="'+h.rowSpan+'"':"")+(h.colSpan>1?' colspan="'+h.colSpan+'"':"")+' style="'+(f?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+"",h=p.cells[l],l=i(n,p,h)}d.cmd.range.selectNodeContents(r).collapse(!0),d.addBookmark(),d.focus()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(t){var n=d.plugin.getSelectedTable()[0],i=d.plugin.getSelectedRow()[0],a=d.plugin.getSelectedCell()[0],l=n.rows[0],s=o($(n)),c=i.rowIndex;1===t&&(c=i.rowIndex+(a.rowSpan-1)+t);for(var u=n.insertRow(c),p="THEAD"===u.parentNode.tagName,h=0,f=l.cells.length;h1&&(f+=g.rowSpan-1);var v=u.insertCell(h);v.outerHTML="<"+(p?"th":"td")+(v.rowSpan>1?' rowspan="'+v.rowSpan+'"':"")+(v.colSpan>1?' colspan="'+v.colSpan+'"':"")+' style="'+(p?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+""}for(var _=c;_>=0;_--){var b=n.rows[_].cells;if(b.length>h){for(var y=a.cellIndex;y>=0;y--)b[y].rowSpan>1&&(b[y].rowSpan+=1);break}}r(null,$(n)),d.cmd.range.selectNodeContents(a).collapse(!0), +d.addBookmark(),d.focus()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1)},rowmerge:function(){var e=d.plugin.getSelectedTable()[0],t=d.plugin.getSelectedRow()[0],n=d.plugin.getSelectedCell()[0],i=t.rowIndex,a=i+n.rowSpan,o=e.rows[a];if(!(e.rows.length<=a)){var r=n.cellIndex;if(!(o.cells.length<=r)){var l=o.cells[r];n.colSpan===l.colSpan&&(n.rowSpan+=l.rowSpan,o.deleteCell(r),d.cmd.range.selectNodeContents(n).collapse(!0),d.addBookmark(),d.focus())}}},colmerge:function(){var e=d.plugin.getSelectedTable()[0],t=d.plugin.getSelectedRow()[0],n=d.plugin.getSelectedCell()[0],i=(t.rowIndex,n.cellIndex),a=i+1;if(!(t.cells.length<=a)){var o=t.cells[a];n.rowSpan===o.rowSpan&&(n.colSpan+=o.colSpan,t.deleteCell(a),r(null,$(e)),d.cmd.range.selectNodeContents(n).collapse(!0),d.addBookmark(),d.focus())}},mergeCells:function(){var e=d.tableSelectionRange;if(e){var t,n=d.plugin.getSelectedTable()[0],i=$(n),a=e.top,o=e.left,l=e.right,s=e.bottom;i.children("thead,tbody,tfoot").children("tr").each(function(){$(this).children("td,th").each(function(){var e=$(this),n=e.cellPos();n.left===o&&n.top===a?t=e:n.right>=o&&n.left<=l&&n.bottom>=a&&n.top<=s&&e.addClass("ke-cell-removed")})}),t&&(t.attr({rowspan:s-a+1,colspan:l-o+1}),i.find(".ke-cell-removed").remove(),r(null,i),d.cmd.range.selectNodeContents(t[0]).collapse(!0),d.addBookmark(),d.focus())}},rowsplit:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getSelectedRow()[0],a=d.plugin.getSelectedCell()[0],l=n.rowIndex,s=o($(t));if(1!==a.rowSpan){for(var c=i(t,n,a),u=1,p=a.rowSpan;u1?a.colSpan:f.colSpan;f.outerHTML="<"+(g?"th":"td")+(f.rowSpan>1?' rowspan="'+f.rowSpan+'"':"")+(v>1?' colspan="'+v+'"':"")+' style="'+(g?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+"",a.colSpan>1&&(f.colSpan=a.colSpan),c=i(t,h,f)}e(a).removeAttr("rowSpan"),r(null,$(t)),d.cmd.range.selectNodeContents(a).collapse(!0),d.addBookmark(),d.focus()}},colsplit:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getSelectedRow()[0],i=d.plugin.getSelectedCell()[0],a=i.cellIndex,l=o($(t));if(1!==i.colSpan){for(var s="THEAD"===n.parentNode.tagName,c=1,u=i.colSpan;c1?i.rowSpan:p.rowSpan,f=p.colSpan;p.outerHTML="<"+(s?"th":"td")+(h>1?' rowspan="'+h+'"':"")+(f>1?' colspan="'+f+'"':"")+' style="'+(s?"background-color: #f1f1f1;":"")+"border: 1px solid "+(l&&l.borderColor||m)+'">'+(e.IE?" ":"
    ")+""}e(i).removeAttr("colSpan"),r(null,$(t)),d.cmd.range.selectNodeContents(i).collapse(!0),d.addBookmark(),d.focus()}},coldelete:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getAllSelectedCells();if(n.length){for(var i=0;i1?(u.colSpan-=1,1===u.colSpan&&e(u).removeAttr("colSpan")):c.deleteCell(r),u.rowSpan>1&&(l+=u.rowSpan-1))}if(0===o.cells.length){d.cmd.range.setStartBefore(t).collapse(!0),e(t).remove();break}}}t.parentNode&&d.cmd.selection(!0),d.addBookmark(),d.focus()}},rowdelete:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getAllSelectedCells();if(n.length){for(var i=0;i=0;l--)t.deleteRow(o.rowIndex+l)}0===t.rows.length?(d.cmd.range.setStartBefore(t).collapse(!0),e(t).remove()):(r(null,$(t)),d.cmd.selection(!0)),d.addBookmark(),d.focus()}}},d.plugin.getSelectedTable=function(){return e($(d.cmd.range.startContainer).closest("table")[0])},d.plugin.getSelectedRow=function(){return e($(d.cmd.range.startContainer).closest("tr")[0])},d.plugin.getSelectedCell=function(){return e($(d.cmd.range.startContainer).closest("td,th")[0])},d.plugin.getSelectedCells=function(){var t=d.plugin.getSelectedTable();if(t&&t.length){var n=e(".ke-select-cell",t.get(0));if(n&&n.length>1)return n}},d.plugin.getSingleSelectedCell=function(){var e=d.plugin.getSelectedCells();if(!(e&&e.length>1))return d.plugin.getSelectedCell()},d.plugin.getAllSelectedCells=function(){var e=d.plugin.getSelectedCells();return e&&e.length?e:d.plugin.getSelectedCell()};var v={mergeCells:"ke-icon-tablecolmerge"};e.each("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,mergeCells,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,delete".split(","),function(t,n){var i;i="prop"===n||"delete"===n?d.plugin.getSelectedTable:"mergeCells"===n?d.plugin.getSelectedCells:"rowmerge"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.length&&$(e.get(0)).parent().next("tr").length)return e}:"colmerge"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.length&&$(e.get(0)).next("th,td").length)return e}:"rowsplit"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.get(0).rowSpan>1)return e}:"colsplit"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.get(0).colSpan>1)return e}:e.inArray(n,["colinsertleft","colinsertright","rowinsertabove","rowinsertbelow"])>-1?d.plugin.getSingleSelectedCell:d.plugin.getSelectedCell,d.addContextmenu({title:f[n]||d.lang("table"+n),click:function(){d.plugin.table[n](),d.hideMenu()},cond:i,width:170,iconClass:v[n]||"ke-icon-table"+n})})}d.clickToolbar(c,function(){if(!d.menu){var e=d.createMenu({name:c,beforeRemove:function(){a()}}),t=$('
    '),n=$('
    '+f.xRxC.format(0,0)+"
    ");t.append(n);var i=$('
    ');i.on("mouseenter.kTable",".ke-plugin-table-grid-cell",function(){var e=$(this),t=e.data("row"),a=e.data("col");n.text(f.xRxC.format(t,a));var o=i.find(".ke-plugin-table-grid-cell");o.each(function(){var e=$(this),n=e.data("row"),i=e.data("col");n<=t&&i<=a?e.css({border:"1px solid #2286d2",background:"#eff7ff"}):e.css({border:"1px solid #ddd",background:"#f1f1f1"})})}).on("click.kTable",".ke-plugin-table-grid-cell",function(e){var t=$(this),n=t.data("row"),i=t.data("col");l(n,i),d.hideMenu().focus(),d.addBookmark(),e.stopPropagation()});for(var o=1;o<11;o++)for(var r=1;r<11;r++)i.append('
    ');p.push(i),t.append(i),e.div.append(t[0])}}),d.afterTab(function(e){var t=d.plugin.getSelectedCell();if(t&&t.length){var n=function(e){if(e.length){var t=e.next();if(t.is("td,th")||(t=e.parent().next("tr").children("th,td").first()),t.is("td,th")||(t=e.closest("tbody,tfoot,thead").next().children("tr").first().children("th,td").first()),t.length)return d.cmd.range.selectNodeContents(t[0]).collapse(!0),d.cmd.select(),!0}return!1},i=$(t.get(0));if(i.length)return d.focus(),n(i)||(d.plugin.table.rowinsertbelow(),n(i)),!0}return e});var _=function(e,t,n){var i=n?Math.min(t.top,n.top):t.top,a=n?Math.min(t.left,n.left):t.left,o=n?Math.max(t.bottom,n.bottom):t.bottom,r=n?Math.max(t.right,n.right):t.right;if(i===o&&a===r)return!1;for(var l=!1,s=!1,c=e.children("thead,tbody,tfoot").children("tr").each(function(){$(this).children("td,th").each(function(){var e=$(this),t=e.cellPos();t.right>=a&&t.left<=r&&t.bottom>=i&&t.top<=o&&(i=Math.min(i,t.top),a=Math.min(a,t.left),o=Math.max(o,t.bottom),r=Math.max(r,t.right),e.addClass("ke-select-cell"),l=!0,s=!0)})});s;)s=!1,c.each(function(){$(this).children("td,th").each(function(){var e=$(this);if(!e.hasClass("ke-select-cell")){var t=e.cellPos();t.right>=a&&t.left<=r&&t.bottom>=i&&t.top<=o&&(i=Math.min(i,t.top),a=Math.min(a,t.left),o=Math.max(o,t.bottom),r=Math.max(r,t.right),e.addClass("ke-select-cell"),s=!0)}})});var u=e.find(".ke-select-cell");return 1===u.length&&(u.removeClass("ke-select-cell"),l=!1),l?d.tableSelectionRange={top:i,left:a,bottom:o,right:r}:d.tableSelectionRange=null,l},b=function(e,t){return _(e,{left:0,right:e.data("tableSize").width-1,top:t,bottom:t})},y=function(e,t){return _(e,{left:t,right:t,top:0,bottom:e.data("tableSize").height-1})};d.afterCreate(function(){var e=!1,t=null,n=null,i=null,a=null,o=function(){e=!1,t=null,a=null};$(d.edit.doc.body).on("mousedown.ke"+d.uuid,function(n){var a=$(n.target).closest("td,th"),o=a.closest("table"),r=!1;a.length&&o.length&&(t=o,e=!0,i=a.cellPos(!0),r=3===n.which,o.removeClass("ke-select-cells")),r||($(d.edit.doc).find(".ke-select-cell").removeClass("ke-select-cell"),d.tableSelectionRange=null)}).on("mousemove.ke"+d.uuid,function(o){var r=$(o.target).closest("td,th");if(!r.length)return e?o.preventDefault():null;var l=r.closest("table");if(!l.length)return e?o.preventDefault():null;if(l.removeClass("ke-select-row ke-select-col ke-select-cells"),a=r.cellPos(),e){if(l[0]!==t[0])return o.preventDefault();$(d.edit.doc).find("table").find(".ke-select-cell").removeClass("ke-select-cell"),_(l,i,a)&&(l.addClass("ke-select-cells"),o.preventDefault())}else{n=l;var s=l.offset(),c=o.pageX,u=o.pageY,p=c-s.left,h=u-s.top;p<8?(l.addClass("ke-select-row"),a.selectRow=a.top,delete a.selectCol,o.preventDefault(),o.stopPropagation()):h<8&&(l.addClass("ke-select-col"),a.selectCol=a.left,delete a.selectRow,o.preventDefault(),o.stopPropagation())}}).on("mouseup.ke"+d.uuid,function(e){var t=$(e.target),i=t.closest("td,th");i.length&&(a&&void 0!==a.selectRow?(b(n,a.selectRow),e.stopPropagation()):a&&void 0!==a.selectCol&&(y(n,a.selectCol),e.stopPropagation())),o()}).on("paste.ke"+d.uuid+" keydown.ke"+d.uuid,function(){$(d.edit.doc).find("table").removeClass("ke-select-row ke-select-col").find(".ke-select-cell").removeClass("ke-select-cell")}),$(document).on("mouseup.ke"+d.uuid,function(){o()}),$(d.edit.doc.head).append([""].join(""));var r=d.cmd.toggle,l=function(e,t,n){var i=this;return void 0!==n&&null!==n||(n=i.commonNode(t)),n?i.remove(t):i.wrap(e),i.select()},s=function(e,t,n){var i=d.cmd.range;if(i&&i.endContainer){var a=$(i.endContainer).closest("th,td");if(!a.length)return;var o=a.closest("table");if(!o.length)return;var r=o.children("thead,tbody,tfoot").children("tr").children(".ke-select-cell");if(r.length)return t&&t(a,o),r.each(e),n&&n(a,o),i.selectNodeContents(a[0]),d.cmd.select(),d.focus(),!0}};d.cmd.toggle=function(e,t){var n;if(!s(function(){d.cmd.range.selectNodeContents(this),d.cmd.select(),l.call(d.cmd,e,t,n)},function(e){d.cmd.range.selectNodeContents(e[0]),d.cmd.select(),n=!!d.cmd.commonNode(t)}))return r.call(d.cmd,e,t)};var c=",justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,",u=d.clickToolbar;d.clickToolbar=function(e,t){if(!(void 0===t&&c.indexOf(","+e+",")>-1&&s(function(){d.cmd.range.selectNode(this),d.cmd.select(),u.call(d,e,t)})))return u.call(d,e,t)}}),d.beforeRemove(function(){$(d.edit.doc.body).off(".ke"+d.uuid),$(document).off(".ke"+d.uuid)})}),KindEditor.lang({table:KindEditor.lang("table")}); \ No newline at end of file From bc180ce00c1d99e9cc7bee8530f3b30993fd87e9 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 11 Dec 2020 15:08:04 +0800 Subject: [PATCH 69/82] * Adjust code. --- db/update20.0.alpha.sql | 5 +---- db/zentao.sql | 4 +--- module/budget/control.php | 20 ++++++++++---------- module/budget/model.php | 22 +++++++++++----------- module/budget/view/summary.html.php | 8 ++++---- module/doc/model.php | 2 +- module/programplan/model.php | 12 ------------ 7 files changed, 28 insertions(+), 45 deletions(-) diff --git a/db/update20.0.alpha.sql b/db/update20.0.alpha.sql index f29cdf4c9e..0cb26e6052 100644 --- a/db/update20.0.alpha.sql +++ b/db/update20.0.alpha.sql @@ -318,10 +318,7 @@ CREATE TABLE IF NOT EXISTS `zt_weeklyreport`( UNIQUE KEY `week` (`PRJ`,`weekStart`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES -('system','custom','','hourPoint','1'), -('system','custom','','URAndSR','1'), -('system','custom','common','URSRName','{\"URCommon\":{\"zh-cn\":\"\\u7528\\u6237\\u9700\\u6c42\"},\"SRCommon\":{\"zh-cn\":\"\\u8f6f\\u4ef6\\u9700\\u6c42\"}}'); +REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system','custom','','hourPoint','1'); ALTER TABLE `zt_block` ADD `type` char(30) NOT NULL AFTER `module`; ALTER TABLE `zt_block` ADD UNIQUE `account_module_type_order` (`account`, `module`, `type`, `order`), DROP INDEX `accountModuleOrder`; diff --git a/db/zentao.sql b/db/zentao.sql index 6f24f5cc00..391179e74e 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -4101,8 +4101,6 @@ INSERT INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) VA ('zh-cn', 'custom', 'SRList', '3', '故事', '1'), ('zh-cn', 'custom', 'SRList', '4', '故事', '1'); -INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES -('system','custom','','hourPoint','1'), -('system','custom','','URAndSR','1'); +INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'custom', '', 'hourPoint', '1'); INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProduct', '1'); INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProject', '1'); diff --git a/module/budget/control.php b/module/budget/control.php index f4fe835c3c..e0b690534c 100644 --- a/module/budget/control.php +++ b/module/budget/control.php @@ -48,7 +48,7 @@ class budget extends control $this->view->orderBy = $orderBy; $this->view->pager = $pager; $this->view->modules = $this->loadModel('tree')->getOptionMenu(0, 'subject'); - $this->view->stages = $this->loadModel('programplan')->getPlanPairsForBudget($this->session->PRJ); + $this->view->stages = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); $this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter'); $this->display(); } @@ -67,11 +67,11 @@ class budget extends control $this->view->position[] = $this->lang->budget->common; $this->view->position[] = $this->lang->budget->summary; - $this->view->subjects = $subjects; - $this->view->subSubject = $this->budget->getSubSubject($subjects); - $this->view->plans = $this->loadModel('programplan')->getPlanPairsForBudget($this->session->PRJ); - $this->view->summary = $this->budget->getSummary($this->session->PRJ, $subjects); - $this->view->modules = $this->loadModel('tree')->getOptionMenu(0, $viewType = 'subject', $startModuleID = 0); + $this->view->subjects = $subjects; + $this->view->hasSubSubject = $this->budget->checkSubSubject($subjects); + $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); + $this->view->summary = $this->budget->getSummary($this->session->PRJ, $subjects); + $this->view->modules = $this->loadModel('tree')->getOptionMenu(0, $viewType = 'subject', $startModuleID = 0); $this->display(); } @@ -103,7 +103,7 @@ class budget extends control $this->view->position[] = $this->lang->budget->create; $this->view->subjects = array(0 => '') + $this->budget->getSubjectOption(); - $this->view->plans = $this->loadModel('programplan')->getPlanPairsForBudget($this->session->PRJ); + $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); $this->display(); } @@ -140,7 +140,7 @@ class budget extends control $this->view->position[] = $this->lang->budget->edit; $this->view->subjects = array('' => '') + $this->budget->getSubjectOption(); - $this->view->plans = $this->loadModel('programplan')->getPlanPairsForBudget($this->session->PRJ); + $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); $this->view->budget = $this->budget->getByID($budgetID); $this->display(); } @@ -159,7 +159,7 @@ class budget extends control $this->view->position[] = $this->lang->budget->view; $this->view->subjects = $this->budget->getSubjectOption(); - $this->view->plans = $this->loadModel('programplan')->getPlanPairsForBudget($this->session->PRJ); + $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); $this->view->budget = $this->budget->getByID($budgetID); $this->view->actions = $this->loadModel('action')->getList('budget', $budgetID); $this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter'); @@ -215,7 +215,7 @@ class budget extends control $this->view->position[] = $this->lang->budget->batchCreate; $this->view->subjects = array('' => '') + $this->budget->getSubjectOption(); - $this->view->plans = $this->loadModel('programplan')->getPlanPairsForBudget($this->session->PRJ); + $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); $this->display(); } } diff --git a/module/budget/model.php b/module/budget/model.php index 858d2ce026..9fb288708a 100644 --- a/module/budget/model.php +++ b/module/budget/model.php @@ -81,7 +81,7 @@ class budgetModel extends model * @access public * @return array */ - public function getSubjects($projectID) + public function getSubjectPairs($projectID) { return $this->dao->select('subject')->from(TABLE_BUDGET)->where('PRJ')->eq($projectID)->andWhere('deleted')->eq(0)->orderBy('subject_asc')->fetchPairs(); } @@ -96,12 +96,12 @@ class budgetModel extends model { $this->loadModel('tree'); - $structure = array(); - $subjects = $this->getSubjects($this->session->PRJ); + $structure = array(); + $subjectPairs = $this->getSubjectPairs($this->session->PRJ); + $subjects = $this->dao->select('*')->from(TABLE_MODULE)->where('id')->in($subjectPairs)->fetchAll('id'); - foreach($subjects as $subjectID) + foreach($subjects as $subject) { - $subject = $this->tree->getById($subjectID); if($subject->grade == 1) { $structure[$subject->id][] = $subject->id; @@ -115,17 +115,17 @@ class budgetModel extends model } /** - * Existence of sub-subjects. + * Check if has sub-subjects. * * @param array $subjects * @access public * @return bool */ - public function getSubSubject($subjects) + public function checkSubSubject($subjects) { foreach($subjects as $id => $subject) { - if($subject[0] != $id) return true; + if(count($subject) > 1 || $id != $subject[0]) return true; } return false; @@ -147,14 +147,14 @@ class budgetModel extends model /* Assign each subject to a stage. */ $summary['stages'] = array(); $summary['subjects'] = array(); - foreach($stages as $stage) + foreach($stages as $stageID) { foreach($subjects as $subject) { foreach($subject as $children) { - $summary['stages'][$stage][$children] = 0; - $summary['subjects'][$children] = 0; + $summary['stages'][$stageID][$children] = 0; + $summary['subjects'][$children] = 0; } } } diff --git a/module/budget/view/summary.html.php b/module/budget/view/summary.html.php index ec68631338..d8c8057851 100644 --- a/module/budget/view/summary.html.php +++ b/module/budget/view/summary.html.php @@ -32,15 +32,15 @@
    - + $subject):?> - + - - + $subject):?> + diff --git a/module/doc/model.php b/module/doc/model.php index f32bd4ce88..6a70e92f01 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -1307,7 +1307,7 @@ class docModel extends model $searchTitle = $this->get->title; if($type == 'product') { - $storyIdList = $this->dao->select('id')->from(TABLE_STORY)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->andWhere('type')->in('story,requirement')->get(); + $storyIdList = $this->dao->select('id')->from(TABLE_STORY)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->get(); $bugIdList = $this->dao->select('id')->from(TABLE_BUG)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->get(); $releaseIdList = $this->dao->select('id')->from(TABLE_RELEASE)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->get(); $planIdList = $this->dao->select('id')->from(TABLE_PRODUCTPLAN)->where('product')->eq($objectID)->andWhere('deleted')->eq('0')->andWhere('product')->in($this->app->user->view->products)->get(); diff --git a/module/programplan/model.php b/module/programplan/model.php index ea6e9f71e0..5e2c0a317b 100644 --- a/module/programplan/model.php +++ b/module/programplan/model.php @@ -85,18 +85,6 @@ class programplanModel extends model return $this->processPlans($plans); } - /** - * Get plan pairs for budget. - * - * @param int $programID - * @access public - * @return array - */ - public function getPlanPairsForBudget($programID = 0) - { - return $this->loadModel('project')->getExecutionsByProject($programID, 'all', 0, true); - } - /** * Get plans. * From e82c98d242411aca2115bb643316ba2ffaf1f67a Mon Sep 17 00:00:00 2001 From: Catouse Date: Fri, 11 Dec 2020 16:03:17 +0800 Subject: [PATCH 70/82] * update kindeditor to support transfer events from iframe to parent document. --- www/js/kindeditor/kindeditor.js | 7 +++++++ www/js/kindeditor/kindeditor.min.js | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/www/js/kindeditor/kindeditor.js b/www/js/kindeditor/kindeditor.js index 939cf9602f..97fa9158d3 100644 --- a/www/js/kindeditor/kindeditor.js +++ b/www/js/kindeditor/kindeditor.js @@ -10124,6 +10124,13 @@ KindEditor.plugin('zui', function(K) { if (spellcheck !== undefined) { self.edit.doc.documentElement.setAttribute('spellcheck', spellcheck); } + + var transferEvents = options.transferEvents; + if (transferEvents !== false) { + $(self.edit.doc).on(typeof transferEvents === 'string' ? transferEvents : 'click mousedown', function(event) { + $(self.edit.srcElement[0]).trigger(event.type); + }); + } }); if (options.transferTab !== false) { diff --git a/www/js/kindeditor/kindeditor.min.js b/www/js/kindeditor/kindeditor.min.js index a11ec08c3f..8e5bcf05b4 100644 --- a/www/js/kindeditor/kindeditor.min.js +++ b/www/js/kindeditor/kindeditor.min.js @@ -4,5 +4,5 @@ a.select()),e.insertHtml("    ")}})}function _bindFocusEvent e.collapse(!1),a.select(!1)}var a=this,o=a.range;if(""===e)return a;if(_IERANGE&&t){try{n(o,e)}catch(r){i(o,e)}return a}return i(o,e),a},hr:function(){return this.inserthtml("
    ")},print:function(){return this.win.print(),this},insertimage:function(e,t,n,i,a,o){t=_undef(t,""),a=_undef(a,0);var r='",i.inserthtml(l);if(o.isControl()){var s=K(o.startContainer.childNodes[o.startOffset]);return l+=">",s.after(K(l,a)),s.next().append(s),o.selectNode(s[0]),i.select()}var d=o.startContainer,c=o.startOffset,u=o.endContainer,p=o.endOffset;if(1==d.nodeType&&d===u&&c+1===p){var h=d.childNodes[c];if("a"==h.nodeName.toLowerCase())return n(h,e,t),i}return _nativeCommand(a,"createlink","__kindeditor_temp_url__"),K('a[href="__kindeditor_temp_url__"]',a).each(function(){n(this,e,t)}),i},unlink:function(){var e=this,t=e.doc,n=e.range;if(e.select(),n.collapsed){var i=e.commonNode({a:"*"});if(i&&(n.selectNode(i.get()),e.select()),_nativeCommand(t,"unlink",null),_WEBKIT&&"img"===K(n.startContainer).name){var a=K(n.startContainer).parent();"a"===a.name&&a.remove(!0)}}else _nativeCommand(t,"unlink",null);return e}}),_each("formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript".split(","),function(e,t){KCmd.prototype[t]=function(e){var n=this;return n.select(),_nativeCommand(n.doc,t,e),_IERANGE&&_inArray(t,"justifyleft,justifycenter,justifyright,justifyfull".split(","))>=0&&n.selection(),(!_IERANGE||_inArray(t,"formatblock,selectall,insertorderedlist,insertunorderedlist".split(","))>=0)&&n.selection(),n}}),_each("cut,copy,paste".split(","),function(e,t){KCmd.prototype[t]=function(){var e=this;if(!e.doc.queryCommandSupported(t))throw"not supported";return e.select(),_nativeCommand(e.doc,t,null),e}}),K.CmdClass=KCmd,K.cmd=_cmd,_extend(KWidget,{init:function(e){var t=this;if(t.name=e.name||"",t.doc=e.doc||document,t.win=_getWin(t.doc),t.x=_addUnit(e.x),t.y=_addUnit(e.y),t.z=e.z,t.width=_addUnit(e.width),t.height=_addUnit(e.height),t.div=K('
    '),t.options=e,t._alignEl=e.alignEl,t.width&&t.div.css("width",t.width),t.height&&t.div.css("height",t.height),t.z&&t.div.css({position:"absolute",left:t.x,top:t.y,"z-index":t.z}),!t.z||t.x!==undefined&&t.y!==undefined||t.autoPos(t.width,t.height),e.cls&&t.div.addClass(e.cls),e.shadowMode&&t.div.addClass("ke-shadow"),e.css&&t.div.css(e.css),e.src?K(e.src).replaceWith(t.div):K(t.doc.body).append(t.div),e.html&&t.div.html(e.html),e.autoScroll)if(_IE&&_V<7||_QUIRKS){var n=_getScrollPos();K(t.win).bind("scroll",function(e){var i=_getScrollPos(),a=i.x-n.x,o=i.y-n.y;t.pos(_removeUnit(t.x)+a,_removeUnit(t.y)+o,!1)})}else t.div.css("position","fixed")},pos:function(e,t,n){var i=this;return n=_undef(n,!0),null!==e&&(e=e<0?0:_addUnit(Math.floor(e)),i.div.css("left",e),n&&(i.x=e)),null!==t&&(t=t<0?0:_addUnit(Math.floor(t)),i.div.css("top",t),n&&(i.y=t)),i},autoPos:function(e,t){var n=this,i=_removeUnit(e)||0,a=_removeUnit(t)||0,o=_getScrollPos();if(n._alignEl){var r=K(n._alignEl),l=r.pos(),s=_round(r[0].clientWidth/2-i/2),d=_round(r[0].clientHeight/2-a/2);x=s<0?l.x:l.x+s,y=d<0?l.y:l.y+d}else{var c=_docElement(n.doc);x=_round(o.x+(c.clientWidth-i)/2),y=_round(o.y+(c.clientHeight-a)/2)}return _IE&&_V<7||_QUIRKS||(x-=o.x,y-=o.y),n.pos(x,y)},remove:function(){var e=this;return(_IE&&_V<7||_QUIRKS)&&K(e.win).unbind("scroll"),e.div.remove(),_each(e,function(t){e[t]=null}),this},show:function(){return this.div.show(),this},hide:function(){return this.div.hide(),this},draggable:function(e){var t=this;return e=e||{},e.moveEl=t.div,e.moveFn=function(e,n,i,a,o,r){(e+=o)<0&&(e=0),(n+=r)<0&&(n=0),t.pos(e,n)},_drag(e),t}}),K.WidgetClass=KWidget,K.widget=_widget;var html,_direction="";(html=document.getElementsByTagName("html"))&&(_direction=html[0].dir),_extend(KEdit,KWidget,{init:function(e){function t(){var t=_iframeDoc(n.iframe);t.open(),l&&(t.domain=document.domain),t.write(_getInitHtml(i,a,o,r)),t.close(),n.win=n.iframe[0].contentWindow,n.doc=t;var s=_cmd(t);n.afterChange(function(e){s.selection()}),_WEBKIT&&K(t).click(function(e){"img"===K(e.target).name&&(s.selection(!0),s.range.selectNode(e.target),s.select())}),_IE&&(n._mousedownHandler=function(){var e=s.range.cloneRange();e.shrink(),e.isControl()&&n.blur()},K(document).mousedown(n._mousedownHandler),K(t).keydown(function(e){if(8==e.which){s.selection();var t=s.range;t.isControl()&&(t.collapse(!0),K(t.startContainer.childNodes[t.startOffset]).remove(),e.preventDefault())}})),n.cmd=s,n.html(_elementVal(n.srcElement)),_IE?(t.body.disabled=!0,t.body.contentEditable=!0,t.body.removeAttribute("disabled")):t.designMode="on",e.afterCreate&&e.afterCreate.call(n)}var n=this;KEdit.parent.init.call(n,e),n.srcElement=K(e.srcElement),n.div.addClass("ke-edit"),n.designMode=_undef(e.designMode,!0),n.beforeGetHtml=e.beforeGetHtml,n.beforeSetHtml=e.beforeSetHtml,n.afterSetHtml=e.afterSetHtml;var i=_undef(e.themesPath,""),a=e.bodyClass,o=e.cssPath,r=e.cssData,l="res:"!=location.protocol&&location.host.replace(/:\d+/,"")!==document.domain,s="document.open();"+(l?'document.domain="'+document.domain+'";':"")+"document.close();",d=_IE?' src="javascript:void(function(){'+encodeURIComponent(s)+'}())"':"";n.iframe=K('").css("width","100%"),n.textarea=K('').css("width","100%"),n.tabIndex=isNaN(parseInt(e.tabIndex,10))?n.srcElement.attr("tabindex"):parseInt(e.tabIndex,10),n.iframe.attr("tabindex",n.tabIndex),n.textarea.attr("tabindex",n.tabIndex),n.width&&n.setWidth(n.width),n.height&&n.setHeight(n.height),n.designMode?n.textarea.hide():n.iframe.hide(),l&&n.iframe.bind("load",function(e){n.iframe.unbind("load"),_IE?t():setTimeout(t,0)}),n.div.append(n.iframe),n.div.append(n.textarea),n.srcElement.hide(),!l&&t()},setWidth:function(e){return this.div.css("width",_addUnit(e)),this},setHeight:function(e){var t=this;return e=_addUnit(e),t.div.css("height",e),t.iframe.css("height",e),(_IE&&_V<8||_QUIRKS)&&(e=_addUnit(_removeUnit(e)-2)),t.textarea.css("height",e),t},remove:function(){var e=this,t=e.doc;K(t.body).unbind(),K(t).unbind(),K(e.win).unbind(),e._mousedownHandler&&K(document).unbind("mousedown",e._mousedownHandler),_elementVal(e.srcElement,e.html()),e.srcElement.show(),t.write(""),e.iframe.unbind(),e.textarea.unbind(),KEdit.parent.remove.call(e)},html:function(e,t){var n=this,i=n.doc;if(n.designMode){var a=i.body;return e===undefined?(e=t?""+a.parentNode.innerHTML+"":a.innerHTML,n.beforeGetHtml&&(e=n.beforeGetHtml(e)),_GECKO&&"
    "==e&&(e=""),e):(n.beforeSetHtml&&(e=n.beforeSetHtml(e)),_IE&&_V>=9&&(e=e.replace(/(<.*?checked=")checked(".*>)/gi,"$1$2")),K(a).html(e),n.afterSetHtml&&n.afterSetHtml(),n)}return e===undefined?n.textarea.val():(n.textarea.val(e),n)},design:function(e){var t,n=this;return(e===undefined?!n.designMode:e)?n.designMode||(t=n.html(),n.designMode=!0,n.html(t),n.textarea.hide(),n.iframe.show()):n.designMode&&(t=n.html(),n.designMode=!1,n.html(t),n.iframe.hide(),n.textarea.show()),n.focus()},focus:function(){var e=this;return e.designMode?e.win.focus():e.textarea[0].focus(),e},blur:function(){var e=this;if(_IE){var t=K('',e.div);e.div.append(t),t[0].focus(),t.remove()}else e.designMode?e.win.blur():e.textarea[0].blur();return e},afterChange:function(e){function t(t){setTimeout(function(){e(t)},1)}var n=this,i=n.doc,a=i.body;return K(i).keyup(function(t){t.ctrlKey||t.altKey||!_CHANGE_KEY_MAP[t.which]||e(t)}),K(i).mouseup(e).contextmenu(e),K(n.win).blur(e),K(a).bind("paste",t),K(a).bind("cut",t),n}}),K.EditClass=KEdit,K.edit=_edit,K.iframeDoc=_iframeDoc,_extend(KToolbar,KWidget,{init:function(e){function t(e){var t=K(e);return t.hasClass("ke-outline")?t:t.hasClass("ke-toolbar-icon")?t.parent():void 0}function n(e,n){var i=t(e.target);if(i){if(i.hasClass("ke-disabled"))return;if(i.hasClass("ke-selected"))return;i[n]("ke-on")}}var i=this;KToolbar.parent.init.call(i,e),i.disableMode=_undef(e.disableMode,!1),i.noDisableItemMap=_toMap(_undef(e.noDisableItems,[])),i._itemMap={},i.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",function(e){e.preventDefault()}).attr("unselectable","on"),i.div.mouseover(function(e){n(e,"addClass")}).mouseout(function(e){n(e,"removeClass")}).click(function(e){var n=t(e.target);if(n){if(n.hasClass("ke-disabled"))return;i.options.click.call(this,e,n.attr("data-name"))}})},get:function(e){return this._itemMap[e]?this._itemMap[e]:this._itemMap[e]=K("span.ke-icon-"+e,this.div).parent()},select:function(e){return _selectToolbar.call(this,e,function(e){e.addClass("ke-selected")}),self},unselect:function(e){return _selectToolbar.call(this,e,function(e){e.removeClass("ke-selected").removeClass("ke-on")}),self},enable:function(e){var t=this,n=e.get?e:t.get(e);return n&&(n.removeClass("ke-disabled"),n.opacity(1)),t},disable:function(e){var t=this,n=e.get?e:t.get(e);return n&&(n.removeClass("ke-selected").addClass("ke-disabled"),n.opacity(.5)),t},disableAll:function(e,t){var n=this,i=n.noDisableItemMap;return t&&(i=_toMap(t)),(e===undefined?!n.disableMode:e)?(K("span.ke-outline",n.div).each(function(){var e=K(this),t=e[0].getAttribute("data-name",2);i[t]||n.disable(e)}),n.disableMode=!0):(K("span.ke-outline",n.div).each(function(){var e=K(this),t=e[0].getAttribute("data-name",2);i[t]||n.enable(e)}),n.disableMode=!1),n}}),K.ToolbarClass=KToolbar,K.toolbar=_toolbar,_extend(KMenu,KWidget,{init:function(e){var t=this;e.z=e.z||811213,KMenu.parent.init.call(t,e),t.centerLineMode=_undef(e.centerLineMode,!0),t.div.addClass("ke-menu").bind("click,mousedown",function(e){e.stopPropagation()}).attr("unselectable","on")},addItem:function(e){var t=this;if("-"===e.title)return void t.div.append(K('
    '));var n=K('
    '),i=K('
    '),a=K('
    '),o=_addUnit(e.height),r=_undef(e.iconClass,"");t.div.append(n),o&&(n.css("height",o),a.css("line-height",o));var l;return t.centerLineMode&&(l=K('
    '),o&&l.css("height",o)),n.mouseover(function(e){K(this).addClass("ke-menu-item-on"),l&&l.addClass("ke-menu-item-center-on")}).mouseout(function(e){K(this).removeClass("ke-menu-item-on"),l&&l.removeClass("ke-menu-item-center-on")}).click(function(t){e.click.call(K(this)),t.stopPropagation()}).append(i),l&&n.append(l),n.append(a),e.checked&&(r="ke-icon-checked"),""!==r&&i.html(''),a.html(e.title),t},remove:function(){var e=this;return e.options.beforeRemove&&e.options.beforeRemove.call(e),K(".ke-menu-item",e.div[0]).unbind(),KMenu.parent.remove.call(e),e}}),K.MenuClass=KMenu,K.menu=_menu,_extend(KColorPicker,KWidget,{init:function(e){var t=this;e.z=e.z||811213,KColorPicker.parent.init.call(t,e);var n=e.colors||[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]];t.selectedColor=(e.selectedColor||"").toLowerCase(),t._cells=[],t.div.addClass("ke-colorpicker").bind("click,mousedown",function(e){e.stopPropagation()}).attr("unselectable","on");var i=t.doc.createElement("table");t.div.append(i),i.className="ke-colorpicker-table",i.cellPadding=0,i.cellSpacing=0,i.border=0;var a=i.insertRow(0),o=a.insertCell(0);o.colSpan=n[0].length,t._addAttr(o,"","ke-colorpicker-cell-top");for(var r=0;r').css("background-color",t)):e.html(i.options.noColor),K(e).attr("unselectable","on"),i._cells.push(e)},remove:function(){var e=this;return _each(e._cells,function(){this.unbind()}),KColorPicker.parent.remove.call(e),e}}),K.ColorPickerClass=KColorPicker,K.colorpicker=_colorpicker,_extend(KUploadButton,{init:function(e){var t=this,n=K(e.button),i=e.fieldName||"file",a=e.url||"",o=n.val(),r=e.extraParams||{},l=n[0].className||"",s=e.target||"kindeditor_upload_iframe_"+(new Date).getTime();e.afterError=e.afterError||function(e){alert(e)};var d=[];for(var c in r)d.push('');var u=['
    ',e.target?"":'',e.form?'
    ':'
    ','',d.join(""),'',"",'',e.form?"
    ":"","
    "].join(""),p=K(u,n.doc);n.hide(),n.before(p),t.div=p,t.button=n,t.iframe=e.target?K('iframe[name="'+s+'"]'):K("iframe",p),t.form=e.form?K(e.form):K("form",p),t.fileBox=K(".ke-upload-file",p),t.options=e},submit:function(){var e=this,t=e.iframe;return t.bind("load",function(){t.unbind();var n=document.createElement("form");e.fileBox.before(n),K(n).append(e.fileBox),n.reset(),K(n).remove(!0);var i,a=K.iframeDoc(t),o=a.getElementsByTagName("pre")[0],r="";r=o?o.innerHTML:a.body.innerHTML,r=_unescape(r),t[0].src="javascript:false";try{i=K.json(r)}catch(l){e.options.afterError.call(e,""+a.body.parentNode.innerHTML+"")}i&&e.options.afterUpload.call(e,i)}),e.form[0].submit(),e},remove:function(){var e=this;return e.fileBox&&e.fileBox.unbind(),e.iframe.remove(),e.div.remove(),e.button.show(),e}}),K.UploadButtonClass=KUploadButton,K.uploadbutton=_uploadbutton,_extend(KDialog,KWidget,{init:function(e){var t=this,n=_undef(e.shadowMode,!0);e.z=e.z||811213,e.shadowMode=!1,e.autoScroll=_undef(e.autoScroll,!0),KDialog.parent.init.call(t,e);var i=e.title,a=K(e.body,t.doc),o=e.previewBtn,r=e.yesBtn,l=e.noBtn,s=e.closeBtn,d=_undef(e.showMask,!0);t.div.addClass("ke-dialog").bind("click,mousedown",function(e){e.stopPropagation()});var c=K('
    ').appendTo(t.div);_IE&&_V<7?t.iframeMask=K('').appendTo(t.div):n&&K('
    ').appendTo(t.div);var u=K('
    ');c.append(u),u.html(i),t.closeIcon=K('').click(s.click),u.append(t.closeIcon),t.draggable({clickEl:u,beforeDrag:e.beforeDrag});var p=K('
    ');c.append(p),p.append(a);var h=K('');if((o||r||l)&&c.append(h),_each([{btn:o,name:"preview"},{btn:r,name:"yes"},{btn:l,name:"no"}],function(){if(this.btn){var e=_createButton(this.btn);e.addClass("ke-dialog-"+this.name),h.append(e)}}),t.height&&p.height(_removeUnit(t.height)-u.height()-h.height()),t.div.width(t.div.width()),t.div.height(t.div.height()),t.mask=null,d){var f=_docElement(t.doc),m=Math.max(f.scrollWidth,f.clientWidth),g=Math.max(f.scrollHeight,f.clientHeight);t.mask=_widget({x:0,y:0,z:t.z-1,cls:"ke-dialog-mask",width:m,height:g})}t.autoPos(t.div.width(),t.div.height()),t.footerDiv=h,t.bodyDiv=p,t.headerDiv=u,t.isLoading=!1},setMaskIndex:function(e){var t=this;t.mask.div.css("z-index",e)},showLoading:function(e){e=_undef(e,"");var t=this,n=t.bodyDiv;return t.loading=K('
    '+e+"
    ").width(n.width()).height(n.height()).css("top",t.headerDiv.height()+"px"),n.css("visibility","hidden").after(t.loading),t.isLoading=!0,t},hideLoading:function(){return this.loading&&this.loading.remove(),this.bodyDiv.css("visibility","visible"),this.isLoading=!1,this},remove:function(){var e=this;return e.options.beforeRemove&&e.options.beforeRemove.call(e),e.mask&&e.mask.remove(),e.iframeMask&&e.iframeMask.remove(),e.closeIcon.unbind(),K("input",e.div).unbind(),K("button",e.div).unbind(),e.footerDiv.unbind(),e.bodyDiv.unbind(),e.headerDiv.unbind(),K("iframe",e.div).each(function(){K(this).remove()}),KDialog.parent.remove.call(e),e}}),K.DialogClass=KDialog,K.dialog=_dialog,K.tabs=_tabs,K.loadScript=_loadScript,K.loadStyle=_loadStyle,K.ajax=_ajax;var _plugins={},_language={};KEditor.prototype={lang:function(e){return _lang(e,this.langType)},loadPlugin:function(e,t){var n=this;return _plugins[e]?_isFunction(_plugins[e])?(_plugins[e].call(n,KindEditor),t&&t.call(n),n):(setTimeout(function(){n.loadPlugin(e,t)},100),n):(_plugins[e]="loading",_loadScript(n.pluginsPath+e+"/"+e+".js?ver="+encodeURIComponent(K.DEBUG?_TIME:_VERSION),function(){setTimeout(function(){_plugins[e]&&n.loadPlugin(e,t)},0)}),n)},handler:function(e,t){var n=this;return n._handlers[e]||(n._handlers[e]=[]),_isFunction(t)?(n._handlers[e].push(t),n):(_each(n._handlers[e],function(){t=this.call(n,t)}),t)},clickToolbar:function(e,t){var n=this,i="clickToolbar"+e;return t===undefined?n._handlers[i]?n.handler(i):(n.loadPlugin(e,function(){n.handler(i)}),n):n.handler(i,t)},updateState:function(){var e=this;return _each("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,subscript,superscript,bold,italic,underline,strikethrough".split(","),function(t,n){e.cmd.state(n)?e.toolbar.select(n):e.toolbar.unselect(n)}),e},addContextmenu:function(e){return this._contextmenus.push(e),this},afterCreate:function(e){return this.handler("afterCreate",e)},beforeRemove:function(e){return this.handler("beforeRemove",e)},beforeGetHtml:function(e){return this.handler("beforeGetHtml",e)},beforeSetHtml:function(e){return this.handler("beforeSetHtml",e)},afterSetHtml:function(e){return this.handler("afterSetHtml",e)},create:function(){function e(){return 0===s.height()?void setTimeout(e,100):void t.resize(i,a,!1)}var t=this,n=t.fullscreenMode;if(t.isCreated)return t;if(t.srcElement.data("kindeditor"))return t;t.srcElement.data("kindeditor","true"),n?_docElement().style.overflow="hidden":_docElement().style.overflow="";var i=n?_docElement().clientWidth+"px":t.width,a=n?_docElement().clientHeight+"px":t.height;(_IE&&_V<8||_QUIRKS)&&(a=_addUnit(_removeUnit(a)+2));var o=t.container=K(t.layout);n?K(document.body).append(o):t.srcElement.before(o);var r=K(".toolbar",o),l=K(".edit",o),s=t.statusbar=K(".statusbar",o);o.removeClass("container").addClass("ke-container ke-container-"+t.themeType).css("width",i),n?(o.css({position:"absolute",left:0,top:0,"z-index":811211}),_GECKO||(t._scrollPos=_getScrollPos()),window.scrollTo(0,0),K(document.body).css({height:"1px",overflow:"hidden"}),K(document.body.parentNode).css("overflow","hidden"),t._fullscreenExecuted=!0):(t._fullscreenExecuted&&(K(document.body).css({height:"",overflow:""}),K(document.body.parentNode).css("overflow","")),t._scrollPos&&window.scrollTo(t._scrollPos.x,t._scrollPos.y));var d=[];K.each(t.items,function(e,n){"|"==n?d.push(''):"/"==n?d.push('
    '):(d.push(''),d.push(''))});var c=t.toolbar=_toolbar({src:r,html:d.join(""),noDisableItems:t.noDisableItems,click:function(e,n){if(e.stop(),t.menu){var i=t.menu.name;if(t.hideMenu(),i===n)return}t.clickToolbar(n)}}),u=_removeUnit(a)-c.div.height(),p=t.edit=_edit({height:u>0&&_removeUnit(a)>t.minHeight?u:t.minHeight,src:l,srcElement:t.srcElement,designMode:t.designMode,themesPath:t.themesPath,bodyClass:t.bodyClass,cssPath:t.cssPath,cssData:t.cssData,beforeGetHtml:function(e){return e=t.beforeGetHtml(e),e=_removeBookmarkTag(_removeTempTag(e)),_formatHtml(e,t.filterMode?t.htmlTags:null,t.urlType,t.wellFormatMode,t.indentChar,t.simpleWrap)},beforeSetHtml:function(e){return e=_formatHtml(e,t.filterMode?t.htmlTags:null,"",!1),t.beforeSetHtml(e)},afterSetHtml:function(){t.edit=p=this,t.afterSetHtml()},afterCreate:function(){if(t.edit=p=this,t.cmd=p.cmd,t._docMousedownFn=function(e){t.menu&&t.hideMenu()},K(p.doc,document).mousedown(t._docMousedownFn),_bindContextmenuEvent.call(t),_bindNewlineEvent.call(t),_bindTabEvent.call(t),_bindFocusEvent.call(t),p.afterChange(function(e){p.designMode&&(t.updateState(),t.addBookmark(),t.options.afterChange&&t.options.afterChange.call(t))}),p.textarea.keyup(function(e){e.ctrlKey||e.altKey||!_INPUT_KEY_MAP[e.which]||t.options.afterChange&&t.options.afterChange.call(t)}),t.readonlyMode&&t.readonly(),t.isCreated=!0,""===t.initContent&&(t.initContent=t.html()),t._undoStack.length>0){var e=t._undoStack.pop();e.start&&(t.html(e.html),p.cmd.range.moveToBookmark(e),t.select())}t.afterCreate(),t.options.afterCreate&&t.options.afterCreate.call(t),t.container.removeClass("ke-loading")}});return s.removeClass("statusbar").addClass("ke-statusbar").append(''),t._fullscreenResizeHandler&&(K(window).unbind("resize",t._fullscreenResizeHandler),t._fullscreenResizeHandler=null),e(),n?(t._fullscreenResizeHandler=function(e){t.isCreated&&t.resize(_docElement().clientWidth,_docElement().clientHeight,!1)},K(window).bind("resize",t._fullscreenResizeHandler),c.select("fullscreen")):(_GECKO&&K(window).bind("scroll",function(e){t._scrollPos=_getScrollPos()}),t.resizeType>0&&_drag({moveEl:o,clickEl:s,moveFn:function(e,n,i,a,o,r){a+=r,t.resize(null,a)}}),2===t.resizeType&&_drag({moveEl:o,clickEl:s.last(),moveFn:function(e,n,i,a,o,r){i+=o,a+=r,t.resize(i,a)}})),t},remove:function(){var e=this;return e.isCreated?(e.beforeRemove(),e.srcElement.data("kindeditor",""),e.menu&&e.hideMenu(),_each(e.dialogs,function(){e.hideDialog()}),K(document).unbind("mousedown",e._docMousedownFn),e.toolbar.remove(),e.edit.remove(),e.statusbar.last().unbind(),e.statusbar.unbind(),e.container.remove(),e.container=e.toolbar=e.edit=e.menu=null,e.dialogs=[],e.isCreated=!1,e):e},resize:function(e,t,n){var i=this;return n=_undef(n,!0),e&&(/%/.test(e)||(e=_removeUnit(e),e=e/gi,"").replace(/ /gi," ")):t.html(_escape(e))},isEmpty:function(){return""===_trim(this.text().replace(/\r\n|\n|\r/,""))},isDirty:function(){return _trim(this.initContent.replace(/\r\n|\n|\r|t/g,""))!==_trim(this.html().replace(/\r\n|\n|\r|t/g,""))},selectedHtml:function(){var e=this.isCreated?this.cmd.range.html():"";return e=_removeBookmarkTag(_removeTempTag(e))},count:function(e){var t=this;return e=(e||"html").toLowerCase(),"html"===e?t.html().length:"text"===e?t.text().replace(/<(?:img|embed).*?>/gi,"K").replace(/\r\n|\n|\r/g,"").length:0},exec:function(e){e=e.toLowerCase();var t=this,n=t.cmd,i=_inArray(e,"selectall,copy,paste,print".split(","))<0;return i&&t.addBookmark(!1),n[e].apply(n,_toArray(arguments,1)),i&&(t.updateState(),t.addBookmark(!1),t.options.afterChange&&t.options.afterChange.call(t)),t},insertHtml:function(e,t){return this.isCreated?(e=this.beforeSetHtml(e),this.exec("inserthtml",e,t),this):this},appendHtml:function(e){if(this.html(this.html()+e),this.isCreated){var t=this.cmd;t.range.selectNodeContents(t.doc.body).collapse(!1),t.select()}return this},sync:function(){return _elementVal(this.srcElement,this.html()),this},focus:function(){return this.isCreated?this.edit.focus():this.srcElement[0].focus(),this},blur:function(){return this.isCreated?this.edit.blur():this.srcElement[0].blur(),this},addBookmark:function(e){e=_undef(e,!0);var t,n=this,i=n.edit,a=i.doc.body,o=_removeTempTag(a.innerHTML);if(e&&n._undoStack.length>0){var r=n._undoStack[n._undoStack.length-1];if(Math.abs(o.length-_removeBookmarkTag(r.html).length)0){var n=t.dialogs[0],i=t.dialogs[t.dialogs.length-1];n.setMaskIndex(i.z+2),e.z=i.z+3,e.showMask=!1}var a=_dialog(e);return t.dialogs.push(a),a},hideDialog:function(){var e=this;if(e.dialogs.length>0&&e.dialogs.pop().remove(),e.dialogs.length>0){var t=e.dialogs[0],n=e.dialogs[e.dialogs.length-1];t.setMaskIndex(n.z-1)}return e},errorDialog:function(e){var t=this,n=t.createDialog({width:750,title:t.lang("uploadError"),body:'
    '}),i=K("iframe",n.div),a=K.iframeDoc(i);return a.open(),a.write(e),a.close(),K(a.body).css("background-color","#FFF"),i[0].contentWindow.focus(),t}},_instances=[],K.remove=function(e){_eachEditor(e,function(e){this.remove(),_instances.splice(e,1)})},K.sync=function(e){_eachEditor(e,function(){this.sync()})},K.html=function(e,t){_eachEditor(e,function(){this.html(t)})},K.insertHtml=function(e,t){_eachEditor(e,function(){this.insertHtml(t)})},K.appendHtml=function(e,t){_eachEditor(e,function(){this.appendHtml(t)})},_IE&&_V<7&&_nativeCommand(document,"BackgroundImageCache",!0),K.EditorClass=KEditor,K.editor=_editor,K.create=_create,K.instances=_instances,K.plugin=_plugin,K.lang=_lang,_plugin("core",function(e){var t=this,n={undo:"Z",redo:"Y",bold:"B",italic:"I",underline:"U",print:"P",selectall:"A"};if(t.afterSetHtml(function(){t.options.afterChange&&t.options.afterChange.call(t)}),t.afterCreate(function(){if("form"==t.syncType){for(var n=e(t.srcElement),i=!1;n=n.parent();)if("form"==n.name){i=!0;break}if(i){n.bind("submit",function(n){t.sync(),e(window).bind("unload",function(){t.edit.textarea.remove()})});var a=e('[type="reset"]',n);a.click(function(){t.html(t.initContent),t.cmd.selection()}),t.beforeRemove(function(){n.unbind(),a.unbind()})}}}),t.clickToolbar("source",function(){t.edit.designMode?(t.toolbar.disableAll(!0),t.edit.design(!1),t.toolbar.select("source")):(t.toolbar.disableAll(!1),t.edit.design(!0),t.toolbar.unselect("source"),_GECKO?setTimeout(function(){t.cmd.selection()},0):t.cmd.selection()),t.designMode=t.edit.designMode}),t.afterCreate(function(){t.designMode||t.toolbar.disableAll(!0).select("source")}),t.clickToolbar("fullscreen",function(){t.fullscreen()}),t.fullscreenShortcut){var i=!1;t.afterCreate(function(){if(e(t.edit.doc,t.edit.textarea).keyup(function(e){27==e.which&&setTimeout(function(){t.fullscreen()},0)}),i){if(_IE&&!t.designMode)return;t.focus()}i||(i=!0)})}_each("undo,redo".split(","),function(e,i){n[i]&&t.afterCreate(function(){_ctrl(this.edit.doc,n[i],function(){t.clickToolbar(i)})}),t.clickToolbar(i,function(){t[i]()})}),t.clickToolbar("formatblock",function(){var e=t.lang("formatblock.formatBlock"),n={h1:28,h2:24,h3:18,H4:14,p:12},i=t.cmd.val("formatblock"),a=t.createMenu({name:"formatblock",width:"en"==t.langType?200:150});_each(e,function(e,o){var r="font-size:"+n[e]+"px;";"h"===e.charAt(0)&&(r+="font-weight:bold;"),a.addItem({title:''+o+"",height:n[e]+12,checked:i===e||i===o,click:function(){t.select().exec("formatblock","<"+e+">").hideMenu()}})})}),t.clickToolbar("fontname",function(){var e=t.cmd.val("fontname"),n=t.createMenu({name:"fontname",width:150});_each(t.lang("fontname.fontName"),function(i,a){n.addItem({title:''+a+"",checked:e===i.toLowerCase()||e===a.toLowerCase(),click:function(){t.exec("fontname",i).hideMenu()}})})}),t.clickToolbar("fontsize",function(){var e=t.cmd.val("fontsize"),n=t.createMenu({name:"fontsize",width:150});_each(t.fontSizeTable,function(i,a){n.addItem({title:''+a+"",height:_removeUnit(a)+12,checked:e===a,click:function(){t.exec("fontsize",a).hideMenu()}})})}),_each("forecolor,hilitecolor".split(","),function(e,n){t.clickToolbar(n,function(){t.createMenu({name:n,selectedColor:t.cmd.val(n)||"default",colors:t.colorTable,click:function(e){t.exec(n,e).hideMenu()}})})}),_each("cut,copy,paste".split(","),function(e,n){t.clickToolbar(n,function(){t.focus();try{t.exec(n,null)}catch(e){alert(t.lang(n+"Error"))}})}),t.clickToolbar("about",function(){var e='
    KindEditor '+_VERSION+'
    Copyright © kindsoft.net All rights reserved.
    ';t.createDialog({name:"about",width:350,title:t.lang("about"),body:e})}),t.plugin.getSelectedLink=function(){return t.cmd.commonAncestor("a"); },t.plugin.getSelectedImage=function(){return _getImageFromRange(t.edit.cmd.range,function(e){return!/^ke-\w+$/i.test(e[0].className)})},t.plugin.getSelectedFlash=function(){return _getImageFromRange(t.edit.cmd.range,function(e){return"ke-flash"==e[0].className})},t.plugin.getSelectedMedia=function(){return _getImageFromRange(t.edit.cmd.range,function(e){return"ke-media"==e[0].className||"ke-video"==e[0].className||"ke-audio"==e[0].className})},t.plugin.getSelectedAnchor=function(){return _getImageFromRange(t.edit.cmd.range,function(e){return"ke-anchor"==e[0].className})},_each("link,image,flash,media,anchor".split(","),function(e,n){var i=n.charAt(0).toUpperCase()+n.substr(1);_each("edit,delete".split(","),function(e,a){t.addContextmenu({title:t.lang(a+i),click:function(){t.loadPlugin(n,function(){t.plugin[n][a](),t.hideMenu()})},cond:t.plugin["getSelected"+i],width:150,iconClass:"edit"==a?"ke-icon-"+n:undefined})}),t.addContextmenu({title:"-"})}),t.addContextmenu({title:"-"}),_each("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript,hr,print,bold,italic,underline,strikethrough,removeformat,unlink".split(","),function(e,i){n[i]&&t.afterCreate(function(){_ctrl(this.edit.doc,n[i],function(){t.cmd.selection(),t.clickToolbar(i)})}),t.clickToolbar(i,function(){t.focus().exec(i,null)})}),t.afterCreate(function(){function n(){i.range.moveToBookmark(a),i.select(),_WEBKIT&&(e("div."+l,o).each(function(){e(this).after("
    ").remove(!0)}),e("span.Apple-style-span",o).remove(!0),e("span.Apple-tab-span",o).remove(!0),e("span[style]",o).each(function(){"nowrap"==e(this).css("white-space")&&e(this).remove(!0)}),e("meta",o).remove());var n=o[0].innerHTML;o.remove(),""!==n&&(_WEBKIT&&(n=n.replace(/(
    )\1/gi,"$1")),2===t.pasteType&&(n=n.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,""),/schemas-microsoft-com|worddocument|mso-\w+/i.test(n)?n=_clearMsWord(n,t.filterMode?t.htmlTags:e.options.htmlTags):(n=_formatHtml(n,t.filterMode?t.htmlTags:null),n=t.beforeSetHtml(n))),1===t.pasteType&&(n=n.replace(/ /gi," "),n=n.replace(/\n\s*\n/g,"\n"),n=n.replace(/]*>/gi,"\n"),n=n.replace(/<\/p>]*>/gi,"\n"),n=n.replace(/<[^>]+>/g,""),n=n.replace(/ {2}/g,"  "),"p"==t.newlineTag?/\n/.test(n)&&(n=n.replace(/^/,"

    ").replace(/$/,"

    ").replace(/\n/g,"

    ")):n=n.replace(/\n/g,"
    $&")),t.insertHtml(n,!0))}var i,a,o,r=t.edit.doc,l="__kindeditor_paste__",s=!1;e(r.body).bind("paste",function(d){if(0===t.pasteType)return void d.stop();if(!s){if(s=!0,e("div."+l,r).remove(),i=t.cmd.selection(),a=i.range.createBookmark(),o=e('

    ',r).css({position:"absolute",width:"1px",height:"1px",overflow:"hidden",left:"-1981px",top:e(a.start).pos().y+"px","white-space":"nowrap"}),e(r.body).append(o),_IE){var c=i.range.get(!0);c.moveToElementText(o[0]),c.select(),c.execCommand("paste"),d.preventDefault()}else i.range.selectNodeContents(o[0]),i.select(),o[0].tabIndex=-1,o[0].focus();setTimeout(function(){n(),s=!1},0)}})}),t.beforeGetHtml(function(e){return _IE&&_V<=8&&(e=e.replace(/]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(e,t){return unescape(t)}),e=e.replace(/(]*)?>)/gi,function(e,t,n){return/\s+type="[^"]+"/i.test(e)?e:t+' type="text"'+n})),e.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/gi,function(e,t,n,i){return t+_unescape(n).replace(/\s+/g," ")+i}).replace(/]*class="?ke-(media|video|audio)"?[^>]*>/gi,function(e,t){var n=_getAttrList(e),i=_getCssList(n.style||""),a=_mediaAttrs(n["data-ke-tag"]),o=_undef(i.width,""),r=_undef(i.height,"");return/px/i.test(o)&&(o=_removeUnit(o)),/px/i.test(r)&&(r=_removeUnit(r)),a.width=_undef(n.width,o),a.height=_undef(n.height,r),_mediaEmbed(a,t)}).replace(/]*class="?ke-anchor"?[^>]*>/gi,function(e){var t=_getAttrList(e);return''}).replace(/]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(e,t,n){return""+unescape(n)+""}).replace(/]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(e,t,n){return""+unescape(n)+""}).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/gi,function(e,t,n,i){return e=e.replace(/(\s+(?:href|src)=")[^"]*(")/i,function(e,t,i){return t+_unescape(n)+i}),e=e.replace(/\s+data-ke-src="[^"]*"/i,"")}).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/gi,function(e,t,n){return t+n})}),t.beforeSetHtml(function(e){return _IE&&_V<=8&&(e=e.replace(/]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/gi,function(e){var t=_getAttrList(e),n=_getCssList(t.style||"");return"none"==n.display?'
    ':e})),e.replace(/]*type="([^"]+)"[^>]*>(?:<\/embed>)?/gi,function(e){var n=_getAttrList(e);return n.src=_undef(n.src,""),n.width=_undef(n.width,0),n.height=_undef(n.height,0),_mediaImg(t.themesPath+"common/blank.gif",n)}).replace(/<(video|audio)[^>]*>((\s*]*>\s*)*)(?:<\/(video|audio)>)?/gi,function(e,n,i){var a=_getAttrList(i?e.replace(i,""):e);if(i){var o=[];$(i).filter("source").each(function(){var e=$(this),t=e.attr("src"),n=e.attr("type");n&&(t+="#"+n),o.push(t)}),a.src=o.join(",")}else a.src=_undef(a.src,"");return a.width=_undef(a.width,0),a.height=_undef(a.height,0),a.type=n,_mediaImg(t.themesPath+"common/blank.gif",a)}).replace(/]*name="([^"]+)"[^>]*>(?:<\/a>)?/gi,function(e){var n=_getAttrList(e);return n.href!==undefined?e:''}).replace(/]*)>([\s\S]*?)<\/script>/gi,function(e,t,n){return'
    '+escape(n)+"
    "}).replace(/]*)>([\s\S]*?)<\/noscript>/gi,function(e,t,n){return'
    '+escape(n)+"
    "}).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/gi,function(e,t,n,i,a){return e.match(/\sdata-ke-src="[^"]*"/i)?e:e=t+n+'="'+i+'" data-ke-src="'+_escape(i)+'"'+a}).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/gi,function(e,t,n){return t+"data-ke-"+n}).replace(/]*\s+border="0"[^>]*>/gi,function(e){return e.indexOf("ke-zeroborder")>=0?e:_addClassToTag(e,"ke-zeroborder")})})})}}(window),KindEditor.lang({source:"HTML代码",preview:"预览",undo:"后退(Ctrl+Z)",redo:"前进(Ctrl+Y)",cut:"剪切(Ctrl+X)",copy:"复制(Ctrl+C)",paste:"粘贴(Ctrl+V)",plainpaste:"粘贴为无格式文本",wordpaste:"从Word粘贴",selectall:"全选(Ctrl+A)",justifyleft:"左对齐",justifycenter:"居中",justifyright:"右对齐",justifyfull:"两端对齐",insertorderedlist:"编号",insertunorderedlist:"项目符号",indent:"增加缩进",outdent:"减少缩进",subscript:"下标",superscript:"上标",formatblock:"段落",fontname:"字体",fontsize:"文字大小",forecolor:"文字颜色",hilitecolor:"文字背景",bold:"粗体(Ctrl+B)",italic:"斜体(Ctrl+I)",underline:"下划线(Ctrl+U)",strikethrough:"删除线",removeformat:"删除格式",image:"图片",multiimage:"批量图片上传",flash:"Flash",media:"视音频",table:"表格",tablecell:"单元格",hr:"插入横线",emoticons:"插入表情",link:"超级链接",unlink:"取消超级链接",fullscreen:"全屏显示",about:"关于",print:"打印(Ctrl+P)",filemanager:"文件空间",code:"插入程序代码",map:"Google地图",baidumap:"百度地图",lineheight:"行距",clearhtml:"清理HTML代码",pagebreak:"插入分页符",quickformat:"一键排版",insertfile:"插入文件",template:"插入模板",anchor:"锚点",yes:"确定",no:"取消",close:"关闭",editImage:"图片属性",deleteImage:"删除图片",editFlash:"Flash属性",deleteFlash:"删除Flash",editMedia:"视音频属性",deleteMedia:"删除视音频",editLink:"超级链接属性",deleteLink:"取消超级链接",editAnchor:"锚点属性",deleteAnchor:"删除锚点",tableprop:"表格属性",tablecellprop:"单元格属性",tableinsert:"插入表格",tabledelete:"删除表格",tablecolinsertleft:"左侧插入列",tablecolinsertright:"右侧插入列",tablerowinsertabove:"上方插入行",tablerowinsertbelow:"下方插入行",tablerowmerge:"向下合并单元格",tablecolmerge:"向右合并单元格",tablerowsplit:"拆分行",tablecolsplit:"拆分列",tablecoldelete:"删除列",tablerowdelete:"删除行",noColor:"无颜色",pleaseSelectFile:"请选择文件。",invalidImg:"请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",invalidMedia:"请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",invalidWidth:"宽度必须为数字。",invalidHeight:"高度必须为数字。",invalidBorder:"边框必须为数字。",invalidUrl:"请输入有效的URL地址。",invalidRows:"行数为必选项,只允许输入大于0的数字。",invalidCols:"列数为必选项,只允许输入大于0的数字。",invalidPadding:"边距必须为数字。",invalidSpacing:"间距必须为数字。",invalidJson:"服务器发生故障。",uploadSuccess:"上传成功。",cutError:"您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。",copyError:"您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。",pasteError:"您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。",ajaxLoading:"加载中,请稍候 ...",uploadLoading:"上传中,请稍候 ...",uploadError:"上传错误","plainpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","wordpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","code.pleaseInput":"请输入程序代码。","link.url":"URL","link.linkType":"打开类型","link.newWindow":"新窗口","link.selfWindow":"当前窗口","flash.url":"URL","flash.width":"宽度","flash.height":"高度","flash.upload":"上传","flash.viewServer":"文件空间","media.url":"URL","media.urlTip":"多个 URL 使用英文逗号分隔","media.width":"宽度","media.height":"高度","media.autostart":"自动播放","media.upload":"上传","media.viewServer":"文件空间","media.controls":"播放控件","image.remoteImage":"网络图片","image.localImage":"本地上传","image.remoteUrl":"图片地址","image.localUrl":"上传文件","image.size":"图片大小","image.width":"宽","image.height":"高","image.resetSize":"重置大小","image.align":"对齐方式","image.defaultAlign":"默认方式","image.leftAlign":"左对齐","image.rightAlign":"右对齐","image.imgTitle":"图片说明","image.upload":"浏览...","image.viewServer":"图片空间","multiimage.uploadDesc":"允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>","multiimage.startUpload":"开始上传","multiimage.clearAll":"全部清空","multiimage.insertAll":"全部插入","multiimage.queueLimitExceeded":"文件数量超过限制。","multiimage.fileExceedsSizeLimit":"文件大小超过限制。","multiimage.zeroByteFile":"无法上传空文件。","multiimage.invalidFiletype":"文件类型不正确。","multiimage.unknownError":"发生异常,无法上传。","multiimage.pending":"等待上传","multiimage.uploadError":"上传失败","filemanager.emptyFolder":"空文件夹","filemanager.moveup":"移到上一级文件夹","filemanager.viewType":"显示方式:","filemanager.viewImage":"缩略图","filemanager.listImage":"详细信息","filemanager.orderType":"排序方式:","filemanager.fileName":"名称","filemanager.fileSize":"大小","filemanager.fileType":"类型","insertfile.url":"URL","insertfile.title":"文件说明","insertfile.upload":"上传","insertfile.viewServer":"文件空间","table.cells":"单元格数","table.rows":"行数","table.cols":"列数","table.size":"大小","table.width":"宽度","table.height":"高度","table.percent":"%","table.px":"px","table.space":"边距间距","table.padding":"边距","table.spacing":"间距","table.align":"对齐方式","table.textAlign":"水平对齐","table.verticalAlign":"垂直对齐","table.alignDefault":"默认","table.alignLeft":"左对齐","table.alignCenter":"居中","table.alignRight":"右对齐","table.alignTop":"顶部","table.alignMiddle":"中部","table.alignBottom":"底部","table.alignBaseline":"基线","table.border":"边框","table.borderWidth":"边框","table.borderColor":"颜色","table.backgroundColor":"背景颜色","map.address":"地址: ","map.search":"搜索","baidumap.address":"地址: ","baidumap.search":"搜索","baidumap.insertDynamicMap":"插入动态地图","anchor.name":"锚点名称","formatblock.formatBlock":{h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",p:"正 文"},"fontname.fontName":{SimSun:"宋体",NSimSun:"新宋体",FangSong_GB2312:"仿宋_GB2312",KaiTi_GB2312:"楷体_GB2312",SimHei:"黑体","Source Han Sans":"思源黑体","Source Han Serif":"思源宋体","Microsoft YaHei":"微软雅黑",Arial:"Arial","Arial Black":"Arial Black","Times New Roman":"Times New Roman","Courier New":"Courier New",Tahoma:"Tahoma",Verdana:"Verdana"},"lineheight.lineHeight":[{1:"单倍行距"},{1.5:"1.5倍行距"},{2:"2倍行距"},{2.5:"2.5倍行距"},{3:"3倍行距"}],"template.selectTemplate":"可选模板","template.replaceContent":"替换当前内容","template.fileList":{"1.html":"图片和文字","2.html":"表格","3.html":"项目编号"}},"zh_CN"),window.$&&$.zui&&$.zui.getLangData){var langData=$.zui.getLangData("kindeditor");langData&&$.each(langData,function(e){var t=langData[e];"zh_cn"===e?e="zh_CN":"zh_tw"===e&&(e="zh_TW"),KindEditor.lang(t,e)})}KindEditor.plugin("anchor",function(e){var t=this,n="anchor",i=t.lang(n+".");t.plugin.anchor={edit:function(){var a=['
    ','
    ','",'',"
    ","
    "].join(""),o=t.createDialog({name:n,width:300,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(e){t.insertHtml('').hideDialog().focus()}}}),r=o.div,l=e('input[name="name"]',r),s=t.plugin.getSelectedAnchor();s&&l.val(unescape(s.attr("data-ke-name"))),l[0].focus(),l[0].select()},"delete":function(){t.plugin.getSelectedAnchor().remove()}},t.clickToolbar(n,t.plugin.anchor.edit)}),KindEditor.plugin("autoheight",function(e){function t(){i.iframe.height(o),n.resize(null,Math.max((e.IE?a.scrollHeight:a.offsetHeight)+76,o))}var n=this;if(n.autoHeightMode){var i=n.edit,a=i.doc.body,o=e.removeUnit(n.height);i.iframe[0].scroll="no",a.style.overflowY="hidden",i.afterChange(t),n.isCreated?t():n.afterCreate(t)}}),KindEditor.plugin("baidumap",function(e){var t=this,n="baidumap",i=t.lang(n+"."),a=t.options.baidumapAk||"plddmxBud2dRsVAXHS7WLqqzQQTocDkO",o=e.undef(t.mapWidth,558),r=e.undef(t.mapHeight,360);t.clickToolbar(n,function(){function l(){s=g[0].contentWindow,d=e.iframeDoc(g)}var s,d,c=['
    ','
    ','
    ',i.address+' ','','',"","
    ",'
    ',' ","
    ",'
    ',"
    ",'
    ',"
    "].join(""),u=t.createDialog({name:n,width:o+42,title:t.lang(n),body:c,yesBtn:{name:t.lang("yes"),click:function(e){var n=s.map,i=n.getCenter(),l=i.lng+","+i.lat,d=n.getZoom(),c=[m[0].checked?t.pluginsPath+"baidumap/index.html?ak="+a:"http://api.map.baidu.com/staticimage/v2?ak="+a,"¢er="+encodeURIComponent(l),"&zoom="+encodeURIComponent(d),"&width="+o,"&height="+r,"&markers="+encodeURIComponent(l),"&markerStyles="+encodeURIComponent("l,A")].join("");m[0].checked?t.insertHtml(''):t.exec("insertimage",c),t.hideDialog().focus()}},beforeRemove:function(){f.remove(),d&&d.write(""),g.remove()}}),p=u.div,h=e('[name="address"]',p),f=e('[name="searchBtn"]',p),m=e('[name="insertDynamicMap"]',u.div),g=e('');g.bind("load",function(){g.unbind("load"),e.IE?l():setTimeout(l,0)}),e(".ke-map",p).replaceWith(g),f.click(function(){s.search(h.val())})})}),KindEditor.plugin("clearhtml",function(e){var t=this,n="clearhtml";t.clickToolbar(n,function(){t.focus();var n=t.html();n=n.replace(/(]*>)([\s\S]*?)(<\/script>)/gi,""),n=n.replace(/(]*>)([\s\S]*?)(<\/style>)/gi,""),n=e.formatHtml(n,{a:["href","target"],embed:["src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess"],img:["src","width","height","border","alt","title",".width",".height"],table:["border"],"td,th":["rowspan","colspan"],"div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":[]}),t.html(n),t.cmd.selection(!0),t.addBookmark()})}),KindEditor.plugin("code",function(e){var t=this,n="code";t.clickToolbar(n,function(){var i=t.lang(n+"."),a=['
    ','
    ','","
    ",'',"
    "].join(""),o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var a=e(".ke-code-type",o.div).val(),l=r.val(),s=""===a?"":" lang-"+a,d='
    \n'+e.escape(l)+"
    ";return""===e.trim(l)?(alert(i.pleaseInput),void r[0].focus()):void t.insertHtml(d).hideDialog().focus()}}}),r=e("textarea",o.div);r[0].focus()})}),KindEditor.plugin("emoticons",function(e){var t=this,n="emoticons",i=t.emoticonsPath||t.pluginsPath+"emoticons/images/",a=void 0===t.allowPreviewEmoticons||t.allowPreviewEmoticons,o=1;t.clickToolbar(n,function(){function r(n,a,o){k?n.mouseover(function(){a>v?(k.css("left",0),k.css("right","")):(k.css("left",""),k.css("right",0)),w.attr("src",i+o+".gif"),e(this).addClass("ke-on")}):n.mouseover(function(){e(this).addClass("ke-on")}),n.mouseout(function(){e(this).removeClass("ke-on")}),n.click(function(e){t.insertHtml('').hideMenu().focus(),e.stop()})}function l(t,n){var a=document.createElement("table");n.append(a),k&&(e(a).mouseover(function(){k.show("block")}),e(a).mouseout(function(){k.hide()}),b.push(e(a))),a.className="ke-table",a.cellPadding=0,a.cellSpacing=0,a.border=0;for(var o=(t-1)*m+f,l=0;l').css("background-position","-"+24*o+"px 0px").css("background-image","url("+i+"static.gif)");c.append(h),b.push(c),o++}return a}function s(){e.each(b,function(){this.unbind()})}function d(e,t){e.click(function(e){s(),S.parentNode.removeChild(S),C.remove(),S=l(t,_),c(t),o=t,e.stop()})}function c(t){C=e('
    '),_.append(C);for(var n=1;n<=g;n++){if(t!==n){var i=e('
    ['+n+"]");d(i,n),C.append(i),b.push(i)}else C.append(e("@["+n+"]"));C.append(e("@ "))}}var u=5,p=9,h=135,f=0,m=u*p,g=Math.ceil(h/m),v=Math.floor(p/2),_=e('
    '),b=[],y=t.createMenu({name:n,beforeRemove:function(){s()}});y.div.append(_);var k,w;a&&(k=e('
    ').css("right",0),w=e(''),_.append(k),k.append(w));var C,S=l(o,_);c(o)})}),KindEditor.plugin("filemanager",function(e){function t(e,t,n){return e+" ("+Math.ceil(t/1024)+"KB, "+n+")"}function n(e,n){n.is_dir?e.attr("title",n.filename):e.attr("title",t(n.filename,n.filesize,n.datetime))}var i=this,a="filemanager",o=e.undef(i.fileManagerJson,i.basePath+"php/file_manager_json.php"),r=i.pluginsPath+a+"/images/",l=i.lang(a+".");i.plugin.filemanagerDialog=function(t){function s(t,n,a){var r="path="+t+"&order="+n+"&dir="+m;b.showLoading(i.lang("ajaxLoading")),e.ajax(e.addParam(o,r+"&"+(new Date).getTime()),function(e){b.hideLoading(),a(e)})}function d(t,n,i,a){var o=e.formatUrl(n.current_url+i.filename,"absolute"),r=encodeURIComponent(n.current_dir_path+i.filename+"/");i.is_dir?t.click(function(e){s(r,S.val(),a)}):i.is_photo?t.click(function(e){v.call(this,o,i.filename)}):t.click(function(e){v.call(this,o,i.filename)}),x.push(t)}function c(t,n){function i(){"VIEW"==C.val()?s(t.current_dir_path,S.val(),p):s(t.current_dir_path,S.val(),u)}e.each(x,function(){this.unbind()}),w.unbind(),C.unbind(),S.unbind(),t.current_dir_path&&w.click(function(e){s(t.moveup_dir_path,S.val(),n)}),C.change(i),S.change(i),k.html("")}function u(t){c(t,u);var n=document.createElement("table");n.className="ke-table",n.cellPadding=0,n.cellSpacing=0,n.border=0,k.append(n);for(var i=t.file_list,a=0,o=i.length;a'),m=e(p[0].insertCell(0)).addClass("ke-cell ke-name").append(f).append(document.createTextNode(" "+s.filename));!s.is_dir||s.has_file?(p.css("cursor","pointer"),m.attr("title",s.filename),d(m,t,s,u)):m.attr("title",l.emptyFolder),e(p[0].insertCell(1)).addClass("ke-cell ke-size").html(s.is_dir?"-":Math.ceil(s.filesize/1024)+"KB"),e(p[0].insertCell(2)).addClass("ke-cell ke-datetime").html(s.datetime)}}function p(t){c(t,p);for(var i=t.file_list,a=0,o=i.length;a');k.append(u);var h=e('
    ').mouseover(function(t){e(this).addClass("ke-on")}).mouseout(function(t){e(this).removeClass("ke-on")});u.append(h);var f=t.current_url+s.filename,m=s.is_dir?r+"folder-64.gif":s.is_photo?f:r+"file-64.gif",g=e(''+s.filename+'');!s.is_dir||s.has_file?(h.css("cursor","pointer"),n(h,s),d(h,t,s,p)):h.attr("title",l.emptyFolder),h.append(g),u.append('
    '+s.filename+"
    ")}}var h=e.undef(t.width,650),f=e.undef(t.height,510),m=e.undef(t.dirName,""),g=e.undef(t.viewType,"VIEW").toUpperCase(),v=t.clickFn,_=['
    ','
    ','
    ',' ',''+l.moveup+"","
    ",'
    ',l.viewType+' ",l.orderType+' ","
    ",'
    ',"
    ",'
    ',"
    "].join(""),b=i.createDialog({name:a,width:h,height:f,title:i.lang(a),body:_}),y=b.div,k=e(".ke-plugin-filemanager-body",y),w=(e('[name="moveupImg"]',y),e('[name="moveupLink"]',y)),C=(e('[name="viewServer"]',y),e('[name="viewType"]',y)),S=e('[name="orderType"]',y),x=[];return C.val(g),s("",S.val(),"VIEW"==g?p:u),b}}),KindEditor.plugin("flash",function(e){var t=this,n="flash",i=t.lang(n+"."),a=e.undef(t.allowFlashUpload,!0),o=e.undef(t.allowFileManager,!1),r=e.undef(t.formatUploadUrl,!0),l=e.undef(t.extraFileUploadParams,{}),s=e.undef(t.filePostName,"imgFile"),d=e.undef(t.uploadJson,t.basePath+"php/upload_json.php");t.plugin.flash={edit:function(){var c=['
    ','
    ','",'  ','  ','','',"","
    ",'
    ','",' ',"
    ",'
    ','",' ',"
    ","
    "].join(""),u=t.createDialog({name:n,width:450,title:t.lang(n),body:c,yesBtn:{name:t.lang("yes"),click:function(n){var i=e.trim(h.val()),a=m.val(),o=g.val();if("http://"==i||e.invalidUrl(i))return alert(t.lang("invalidUrl")),void h[0].focus();if(!/^\d*$/.test(a))return alert(t.lang("invalidWidth")),void m[0].focus();if(!/^\d*$/.test(o))return alert(t.lang("invalidHeight")),void g[0].focus();var r=e.mediaImg(t.themesPath+"common/blank.gif",{src:i,type:e.mediaType(".swf"),width:a,height:o,quality:"high"});t.insertHtml(r).hideDialog().focus()}}}),p=u.div,h=e('[name="url"]',p),f=e('[name="viewServer"]',p),m=e('[name="width"]',p),g=e('[name="height"]',p);if(h.val("http://"),a){var v=e.uploadbutton({button:e(".ke-upload-button",p)[0],fieldName:s,extraParams:l,url:e.addParam(d,"dir=flash"),afterUpload:function(i){if(u.hideLoading(),0===i.error){var a=i.url;r&&(a=e.formatUrl(a,"absolute")),h.val(a),t.afterUpload&&t.afterUpload.call(t,a,i,n),alert(t.lang("uploadSuccess"))}else alert(i.message)},afterError:function(e){u.hideLoading(),t.errorDialog(e)}});v.fileBox.change(function(e){u.showLoading(t.lang("uploadLoading")),v.submit()})}else e(".ke-upload-button",p).hide();o?f.click(function(n){t.loadPlugin("filemanager",function(){t.plugin.filemanagerDialog({viewType:"LIST",dirName:"flash",clickFn:function(n,i){t.dialogs.length>1&&(e('[name="url"]',p).val(n),t.afterSelectFile&&t.afterSelectFile.call(t,n),t.hideDialog())}})})}):f.hide();var _=t.plugin.getSelectedFlash();if(_){var b=e.mediaAttrs(_.attr("data-ke-tag"));h.val(b.src),m.val(e.removeUnit(_.css("width"))||b.width||0),g.val(e.removeUnit(_.css("height"))||b.height||0)}h[0].focus(),h[0].select()},"delete":function(){t.plugin.getSelectedFlash().remove(),t.addBookmark()}},t.clickToolbar(n,t.plugin.flash.edit)}),KindEditor.plugin("image",function(e){var t=this,n="image",i=e.undef(t.allowImageUpload,!0),a=e.undef(t.allowImageRemote,!0),o=e.undef(t.formatUploadUrl,!0),r=e.undef(t.allowFileManager,!1),l=e.undef(t.uploadJson,t.basePath+"php/upload_json.php"),s=e.undef(t.imageTabIndex,0),d=t.pluginsPath+"image/images/",c=e.undef(t.extraFileUploadParams,{}),u=e.undef(t.filePostName,"imgFile"),p=e.undef(t.fillDescAfterUploadImage,!1),h=t.lang(n+".");t.plugin.imageDialog=function(i){function a(e,t){K.val(e),U.val(t),R=e,M=t}var s=(i.imageUrl,e.undef(i.imageWidth,""),e.undef(i.imageHeight,""),e.undef(i.imageTitle,""),e.undef(i.imageAlign,""),e.undef(i.showRemote,!0)),f=e.undef(i.showLocal,!0),m=e.undef(i.tabIndex,0),g=i.clickFn,v="kindeditor_upload_iframe_"+(new Date).getTime(),_=[];for(var b in c)_.push('');var y,k=['
    ','
    ','",'","
    "].join(""),w=f||r?450:400,C=f&&s?300:250,S=t.createDialog({name:n,width:w,height:C,title:t.lang(n),body:k,yesBtn:{name:t.lang("yes"),click:function(n){if(!S.isLoading){if(f&&s&&y&&1===y.selectedIndex||!s)return""==D.fileBox.val()?void alert(t.lang("pleaseSelectFile")):(S.showLoading(t.lang("uploadLoading")),D.submit(),void T.val(""));var i=e.trim(E.val()),a=K.val(),o=U.val(),r=N.val(),l="";return I.each(function(){if(this.checked)return l=this.value,!1}),"http://"==i||e.invalidUrl(i)?(alert(t.lang("invalidUrl")),void E[0].focus()):/^\d*$/.test(a)?/^\d*$/.test(o)?void g.call(t,i,r,a,o,0,l):(alert(t.lang("invalidHeight")),void U[0].focus()):(alert(t.lang("invalidWidth")),void K[0].focus())}}},beforeRemove:function(){A.unbind(),K.unbind(),U.unbind(),F.unbind()}}),x=S.div,E=e('[name="url"]',x),T=e('[name="localUrl"]',x),A=e('[name="viewServer"]',x),K=e('.tab1 [name="width"]',x),U=e('.tab1 [name="height"]',x),F=e(".ke-refresh-btn",x),N=e('.tab1 [name="title"]',x),I=e('.tab1 [name="align"]',x);s&&f?(y=e.tabs({src:e(".tabs",x),afterSelect:function(e){}}),y.add({title:h.remoteImage,panel:e(".tab1",x)}),y.add({title:h.localImage,panel:e(".tab2",x)}),y.select(m)):s?e(".tab1",x).show():f&&e(".tab2",x).show();var D=e.uploadbutton({button:e(".ke-upload-button",x)[0],fieldName:u,form:e(".ke-form",x),target:v,width:70,afterUpload:function(i){if(S.hideLoading(),0===i.error){var a=i.url;o&&(a=e.formatUrl(a,"absolute")),t.afterUpload&&t.afterUpload.call(t,a,i,n),p?(e(".ke-dialog-row #remoteUrl",x).val(a),e(".ke-tabs-li",x)[0].click(),e(".ke-refresh-btn",x).click()):g.call(t,a,i.title,i.width,i.height,i.border,i.align)}else alert(i.message)},afterError:function(e){S.hideLoading(),t.errorDialog(e)}});D.fileBox.change(function(e){T.val(D.fileBox.val())}),r?A.click(function(n){t.loadPlugin("filemanager",function(){t.plugin.filemanagerDialog({viewType:"VIEW",dirName:"image",clickFn:function(n,i){t.dialogs.length>1&&(e('[name="url"]',x).val(n),t.afterSelectFile&&t.afterSelectFile.call(t,n),t.hideDialog())}})})}):A.hide();var R=0,M=0;return F.click(function(t){var n=e('',document).css({position:"absolute",visibility:"hidden",top:0,left:"-1000px"});n.bind("load",function(){a(n.width(),n.height()),n.remove()}),e(document.body).append(n)}),K.change(function(e){R>0&&U.val(Math.round(M/R*parseInt(this.value,10)))}),U.change(function(e){M>0&&K.val(Math.round(R/M*parseInt(this.value,10)))}),E.val(i.imageUrl),a(i.imageWidth,i.imageHeight),N.val(i.imageTitle),I.each(function(){if(this.value===i.imageAlign)return this.checked=!0,!1}),s&&0===m&&(E[0].focus(),E[0].select()),S},t.plugin.image={edit:function(){var e=t.plugin.getSelectedImage();t.plugin.imageDialog({imageUrl:e?e.attr("data-ke-src"):"http://",imageWidth:e?e.width():"",imageHeight:e?e.height():"",imageTitle:e?e.attr("title"):"",imageAlign:e?e.attr("align"):"",showRemote:a,showLocal:i,tabIndex:e?0:s,clickFn:function(n,i,a,o,r,l){e?(e.attr("src",n),e.attr("data-ke-src",n),e.attr("width",a),e.attr("height",o),e.attr("title",i),e.attr("align",l),e.attr("alt",i)):t.exec("insertimage",n,i,a,o,r,l),setTimeout(function(){t.hideDialog().focus()},0)}})},"delete":function(){var e=t.plugin.getSelectedImage(); "a"==e.parent().name&&(e=e.parent()),e.remove(),t.addBookmark()}},t.clickToolbar(n,t.plugin.image.edit)}),KindEditor.plugin("insertfile",function(e){var t=this,n="insertfile",i=e.undef(t.allowFileUpload,!0),a=e.undef(t.allowFileManager,!1),o=e.undef(t.formatUploadUrl,!0),r=e.undef(t.uploadJson,t.basePath+"php/upload_json.php"),l=e.undef(t.extraFileUploadParams,{}),s=e.undef(t.filePostName,"imgFile"),d=t.lang(n+".");t.plugin.fileDialog=function(c){var u=e.undef(c.fileUrl,"http://"),p=e.undef(c.fileTitle,""),h=c.clickFn,f=['
    ','
    ','",'  ','  ','','',"","
    ",'
    ','",'
    ',"
    ","",""].join(""),m=t.createDialog({name:n,width:450,title:t.lang(n),body:f,yesBtn:{name:t.lang("yes"),click:function(n){var i=e.trim(v.val()),a=b.val();return"http://"==i||e.invalidUrl(i)?(alert(t.lang("invalidUrl")),void v[0].focus()):(""===e.trim(a)&&(a=i),void h.call(t,i,a))}}}),g=m.div,v=e('[name="url"]',g),_=e('[name="viewServer"]',g),b=e('[name="title"]',g);if(i){var y=e.uploadbutton({button:e(".ke-upload-button",g)[0],fieldName:s,url:e.addParam(r,"dir=file"),extraParams:l,afterUpload:function(i){if(m.hideLoading(),0===i.error){var a=i.url;o&&(a=e.formatUrl(a,"absolute")),v.val(a),t.afterUpload&&t.afterUpload.call(t,a,i,n),alert(t.lang("uploadSuccess"))}else alert(i.message)},afterError:function(e){m.hideLoading(),t.errorDialog(e)}});y.fileBox.change(function(e){m.showLoading(t.lang("uploadLoading")),y.submit()})}else e(".ke-upload-button",g).hide();a?_.click(function(n){t.loadPlugin("filemanager",function(){t.plugin.filemanagerDialog({viewType:"LIST",dirName:"file",clickFn:function(n,i){t.dialogs.length>1&&(e('[name="url"]',g).val(n),t.afterSelectFile&&t.afterSelectFile.call(t,n),t.hideDialog())}})})}):_.hide(),v.val(u),b.val(p),v[0].focus(),v[0].select()},t.clickToolbar(n,function(){t.plugin.fileDialog({clickFn:function(e,n){var i=''+n+"";t.insertHtml(i).hideDialog().focus()}})})}),KindEditor.plugin("lineheight",function(e){var t=this,n="lineheight",i=t.lang(n+".");t.clickToolbar(n,function(){var a="",o=t.cmd.commonNode({"*":".line-height"});o&&(a=o.css("line-height"));var r=t.createMenu({name:n,width:150});e.each(i.lineHeight,function(n,i){e.each(i,function(e,n){r.addItem({title:n,checked:a===e,click:function(){t.cmd.toggle('',{span:".line-height="+e}),t.updateState(),t.addBookmark(),t.hideMenu()}})})})})}),KindEditor.plugin("link",function(e){var t=this,n="link";t.plugin.link={edit:function(){var i=t.lang(n+"."),a='
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=e.trim(l.val());return"http://"==i||e.invalidUrl(i)?(alert(t.lang("invalidUrl")),void l[0].focus()):void t.exec("createlink",i,s.val()).hideDialog().focus()}}}),r=o.div,l=e('input[name="url"]',r),s=e('select[name="type"]',r);l.val("http://"),s[0].options[0]=new Option(i.newWindow,"_blank"),s[0].options[1]=new Option(i.selfWindow,""),t.cmd.selection();var d=t.plugin.getSelectedLink();d&&(t.cmd.range.selectNode(d[0]),t.cmd.select(),l.val(d.attr("data-ke-src")),s.val(d.attr("target"))),l[0].focus(),l[0].select()},"delete":function(){t.exec("unlink",null)}},t.clickToolbar(n,t.plugin.link.edit)}),KindEditor.plugin("map",function(e){var t=this,n="map",i=t.lang(n+".");t.clickToolbar(n,function(){function a(){o=p[0].contentWindow,r=e.iframeDoc(p)}var o,r,l=['
    ','
    ',i.address+' ','','',"","
    ",'
    ',"
    "].join(""),s=t.createDialog({name:n,width:600,title:t.lang(n),body:l,yesBtn:{name:t.lang("yes"),click:function(e){var n=(o.geocoder,o.map),i=n.getCenter().lat()+","+n.getCenter().lng(),a=n.getZoom(),r=n.getMapTypeId(),l="http://maps.googleapis.com/maps/api/staticmap";l+="?center="+encodeURIComponent(i),l+="&zoom="+encodeURIComponent(a),l+="&size=558x360",l+="&maptype="+encodeURIComponent(r),l+="&markers="+encodeURIComponent(i),l+="&language="+t.langType,l+="&sensor=false",t.exec("insertimage",l).hideDialog().focus()}},beforeRemove:function(){u.remove(),r&&r.write(""),p.remove()}}),d=s.div,c=e('[name="address"]',d),u=e('[name="searchBtn"]',d),p=(["",'',"",'',"","",'','
    ',""].join("\n"),e(''));p.bind("load",function(){p.unbind("load"),e.IE?a():setTimeout(a,0)}),e(".ke-map",d).replaceWith(p),u.click(function(){o.search(c.val())})})}),KindEditor.plugin("media",function(e){var t=this,n="media",i=t.lang(n+"."),a=e.undef(t.allowMediaUpload,!0),o=e.undef(t.allowFileManager,!1),r=e.undef(t.formatUploadUrl,!0),l=e.undef(t.extraFileUploadParams,{}),s=e.undef(t.filePostName,"imgFile"),d=e.undef(t.uploadJson,t.basePath+"php/upload_json.php");t.plugin.media={edit:function(){var c=['
    ','
    ','",'  ','  ','','',"","
    ",'
    ','",'',"
    ",'
    ','",'',"
    ",'",'
    ','",' ',"
    ","
    "].join(""),u=t.createDialog({name:n,width:450,height:240,title:t.lang(n),body:c,yesBtn:{name:t.lang("yes"),click:function(n){var i=e.trim(h.val()),a=m.val(),o=g.val();if("http://"==i||e.invalidUrl(i))return alert(t.lang("invalidUrl")),void h[0].focus();if(!/^\d*$/.test(a))return alert(t.lang("invalidWidth")),void m[0].focus();if(!/^\d*$/.test(o))return alert(t.lang("invalidHeight")),void g[0].focus();var r=e.mediaImg(t.themesPath+"common/blank.gif",{src:i,type:e.mediaType(i),width:a,height:o,autoplay:!!_[0].checked,controls:!!v[0].checked});t.insertHtml(r).hideDialog().focus()}}}),p=u.div,h=e('[name="url"]',p),f=e('[name="viewServer"]',p),m=e('[name="width"]',p),g=e('[name="height"]',p),v=e('[name="controls"]',p),_=e('[name="autostart"]',p);if(h.val("http://"),a){var b=e.uploadbutton({button:e(".ke-upload-button",p)[0],fieldName:s,extraParams:l,url:e.addParam(d,"dir=media"),afterUpload:function(i){if(u.hideLoading(),0===i.error){var a=i.url;r&&(a=e.formatUrl(a,"absolute")),h.val(a),t.afterUpload&&t.afterUpload.call(t,a,i,n),alert(t.lang("uploadSuccess"))}else alert(i.message)},afterError:function(e){u.hideLoading(),t.errorDialog(e)}});b.fileBox.change(function(e){u.showLoading(t.lang("uploadLoading")),b.submit()})}else e(".ke-upload-button",p).hide();o?f.click(function(n){t.loadPlugin("filemanager",function(){t.plugin.filemanagerDialog({viewType:"LIST",dirName:"media",clickFn:function(n,i){t.dialogs.length>1&&(e('[name="url"]',p).val(n),t.afterSelectFile&&t.afterSelectFile.call(t,n),t.hideDialog())}})})}):f.hide();var y=t.plugin.getSelectedMedia();if(y){var k=e.mediaAttrs(y.attr("data-ke-tag"));h.val(k.src),m.val(e.removeUnit(y.css("width"))||k.width||0),g.val(e.removeUnit(y.css("height"))||k.height||0),_[0].checked=void 0!==k.autoplay&&"false"!==k.autoplay,v[0].checked=void 0!==k.controls&&"false"!==k.controls}h[0].focus(),h[0].select()},"delete":function(){t.plugin.getSelectedMedia().remove(),t.addBookmark()}},t.clickToolbar(n,t.plugin.media.edit)}),function(e){function t(e){this.init(e)}e.extend(t,{init:function(t){function n(t,n){e(".ke-status > div",t).hide(),e(".ke-message",t).addClass("ke-error").show().html(e.escape(n))}var i=this;t.afterError=t.afterError||function(e){alert(e)},i.options=t,i.progressbars={},i.div=e(t.container).html(['
    ','
    ','
    ','',"
    ",'
    '+t.uploadDesc+"
    ",'','',"","
    ",'
    ',"
    "].join("")),i.bodyDiv=e(".ke-swfupload-body",i.div);var a={debug:!1,upload_url:t.uploadUrl,flash_url:t.flashUrl,file_post_name:t.filePostName,button_placeholder:e(".ke-swfupload-button > input",i.div)[0],button_image_url:t.buttonImageUrl,button_width:t.buttonWidth,button_height:t.buttonHeight,button_cursor:SWFUpload.CURSOR.HAND,file_types:t.fileTypes,file_types_description:t.fileTypesDesc,file_upload_limit:t.fileUploadLimit,file_size_limit:t.fileSizeLimit,post_params:t.postParams,file_queued_handler:function(e){e.url=i.options.fileIconUrl,i.appendFile(e)},file_queue_error_handler:function(n,i,a){var o="";switch(i){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:o=t.queueLimitExceeded;break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:o=t.fileExceedsSizeLimit;break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:o=t.zeroByteFile;break;case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:o=t.invalidFiletype;break;default:o=t.unknownError}e.DEBUG&&alert(o)},upload_start_handler:function(t){var n=this,i=e('div[data-id="'+t.id+'"]',n.bodyDiv);e(".ke-status > div",i).hide(),e(".ke-progressbar",i).show()},upload_progress_handler:function(e,t,n){var a=Math.round(100*t/n),o=i.progressbars[e.id];o.bar.css("width",Math.round(80*a/100)+"px"),o.percent.html(a+"%")},upload_error_handler:function(t,a,o){if(t&&t.filestatus==SWFUpload.FILE_STATUS.ERROR){var r=e('div[data-id="'+t.id+'"]',i.bodyDiv).eq(0);n(r,i.options.errorMessage)}},upload_success_handler:function(t,a){var o=e('div[data-id="'+t.id+'"]',i.bodyDiv).eq(0),r={};try{r=e.json(a)}catch(l){i.options.afterError.call(this,""+a+"")}return 0!==r.error?void n(o,e.DEBUG?r.message:i.options.errorMessage):(t.url=r.url,e(".ke-img",o).attr("src",t.url).attr("data-status",t.filestatus).data("data",r),void e(".ke-status > div",o).hide())}};i.swfu=new SWFUpload(a),e(".ke-swfupload-startupload input",i.div).click(function(){i.swfu.startUpload()})},getUrlList:function(){var t=[];return e(".ke-img",self.bodyDiv).each(function(){var n=e(this),i=n.attr("data-status");i==SWFUpload.FILE_STATUS.COMPLETE&&t.push(n.data("data"))}),t},removeFile:function(t){var n=this;n.swfu.cancelUpload(t);var i=e('div[data-id="'+t+'"]',n.bodyDiv);e(".ke-photo",i).unbind(),e(".ke-delete",i).unbind(),i.remove()},removeFiles:function(){var t=this;e(".ke-item",t.bodyDiv).each(function(){t.removeFile(e(this).attr("data-id"))})},appendFile:function(t){var n=this,i=e('
    ');n.bodyDiv.append(i);var a=e('
    ').mouseover(function(t){e(this).addClass("ke-on")}).mouseout(function(t){e(this).removeClass("ke-on")});i.append(a);var o=e(''+t.name+'');a.append(o),e('').appendTo(a).click(function(){n.removeFile(t.id)});var r=e('
    ').appendTo(a);e(['
    ','
    ','
    0%
    '].join("")).hide().appendTo(r),e('
    '+n.options.pendingMessage+"
    ").appendTo(r),i.append('
    '+t.name+"
    "),n.progressbars[t.id]={bar:e(".ke-progressbar-bar-inner",a),percent:e(".ke-progressbar-percent",a)}},remove:function(){this.removeFiles(),this.swfu.destroy(),this.div.html("")}}),e.swfupload=function(e,n){return new t(e,n)}}(KindEditor),KindEditor.plugin("multiimage",function(e){var t=this,n="multiimage",i=(e.undef(t.formatUploadUrl,!0),e.undef(t.uploadJson,t.basePath+"php/upload_json.php")),a=t.pluginsPath+"multiimage/images/",o=e.undef(t.imageSizeLimit,"1MB"),r=(e.undef(t.imageFileTypes,"*.jpg;*.gif;*.png"),e.undef(t.imageUploadLimit,20)),l=e.undef(t.filePostName,"imgFile"),s=t.lang(n+".");t.plugin.multiImageDialog=function(d){var c=d.clickFn,u=e.tmpl(s.uploadDesc,{uploadLimit:r,sizeLimit:o}),p=['
    ','
    ',"
    ","
    "].join(""),h=t.createDialog({name:n,width:650,height:510,title:t.lang(n),body:p,previewBtn:{name:s.insertAll,click:function(e){c.call(t,m.getUrlList())}},yesBtn:{name:s.clearAll,click:function(e){m.removeFiles()}},beforeRemove:function(){(!e.IE||e.V<=8)&&m.remove()}}),f=h.div,m=e.swfupload({container:e(".swfupload",f),buttonImageUrl:a+("zh-CN"==t.langType?"select-files-zh-CN.png":"select-files-en.png"),buttonWidth:"zh-CN"==t.langType?72:88,buttonHeight:23,fileIconUrl:a+"image.png",uploadDesc:u,startButtonValue:s.startUpload,uploadUrl:e.addParam(i,"dir=image"),flashUrl:a+"swfupload.swf",filePostName:l,fileTypes:"*.jpg;*.jpeg;*.gif;*.png;*.bmp",fileTypesDesc:"Image Files",fileUploadLimit:r,fileSizeLimit:o,postParams:e.undef(t.extraFileUploadParams,{}),queueLimitExceeded:s.queueLimitExceeded,fileExceedsSizeLimit:s.fileExceedsSizeLimit,zeroByteFile:s.zeroByteFile,invalidFiletype:s.invalidFiletype,unknownError:s.unknownError,pendingMessage:s.pending,errorMessage:s.uploadError,afterError:function(e){t.errorDialog(e)}});return h},t.clickToolbar(n,function(){t.plugin.multiImageDialog({clickFn:function(n){0!==n.length&&(e.each(n,function(e,n){t.afterUpload&&t.afterUpload.call(t,n.url,n,"multiimage"),t.exec("insertimage",n.url,n.title,n.width,n.height,n.border,n.align)}),setTimeout(function(){t.hideDialog().focus()},0))}})})}),function(){window.SWFUpload=function(e){this.initSWFUpload(e)},SWFUpload.prototype.initSWFUpload=function(e){try{this.customSettings={},this.settings=e,this.eventQueue=[],this.movieName="KindEditor_SWFUpload_"+SWFUpload.movieCount++,this.movieElement=null,SWFUpload.instances[this.movieName]=this,this.initSettings(),this.loadFlash(),this.displayDebugInfo()}catch(t){throw delete SWFUpload.instances[this.movieName],t}},SWFUpload.instances={},SWFUpload.movieCount=0,SWFUpload.version="2.2.0 2009-03-25",SWFUpload.QUEUE_ERROR={QUEUE_LIMIT_EXCEEDED:-100,FILE_EXCEEDS_SIZE_LIMIT:-110,ZERO_BYTE_FILE:-120,INVALID_FILETYPE:-130},SWFUpload.UPLOAD_ERROR={HTTP_ERROR:-200,MISSING_UPLOAD_URL:-210,IO_ERROR:-220,SECURITY_ERROR:-230,UPLOAD_LIMIT_EXCEEDED:-240,UPLOAD_FAILED:-250,SPECIFIED_FILE_ID_NOT_FOUND:-260,FILE_VALIDATION_FAILED:-270,FILE_CANCELLED:-280,UPLOAD_STOPPED:-290},SWFUpload.FILE_STATUS={QUEUED:-1,IN_PROGRESS:-2,ERROR:-3,COMPLETE:-4,CANCELLED:-5},SWFUpload.BUTTON_ACTION={SELECT_FILE:-100,SELECT_FILES:-110,START_UPLOAD:-120},SWFUpload.CURSOR={ARROW:-1,HAND:-2},SWFUpload.WINDOW_MODE={WINDOW:"window",TRANSPARENT:"transparent",OPAQUE:"opaque"},SWFUpload.completeURL=function(e){if("string"!=typeof e||e.match(/^https?:\/\//i)||e.match(/^\//))return e;var t=(window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:""),window.location.pathname.lastIndexOf("/"));return t<=0?path="/":path=window.location.pathname.substr(0,t)+"/",path+e},SWFUpload.prototype.initSettings=function(){this.ensureDefault=function(e,t){this.settings[e]=void 0==this.settings[e]?t:this.settings[e]},this.ensureDefault("upload_url",""),this.ensureDefault("preserve_relative_urls",!1),this.ensureDefault("file_post_name","Filedata"),this.ensureDefault("post_params",{}),this.ensureDefault("use_query_string",!1),this.ensureDefault("requeue_on_error",!1),this.ensureDefault("http_success",[]),this.ensureDefault("assume_success_timeout",0),this.ensureDefault("file_types","*.*"),this.ensureDefault("file_types_description","All Files"),this.ensureDefault("file_size_limit",0),this.ensureDefault("file_upload_limit",0),this.ensureDefault("file_queue_limit",0),this.ensureDefault("flash_url","swfupload.swf"),this.ensureDefault("prevent_swf_caching",!0),this.ensureDefault("button_image_url",""),this.ensureDefault("button_width",1),this.ensureDefault("button_height",1),this.ensureDefault("button_text",""),this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;"),this.ensureDefault("button_text_top_padding",0),this.ensureDefault("button_text_left_padding",0),this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES),this.ensureDefault("button_disabled",!1),this.ensureDefault("button_placeholder_id",""),this.ensureDefault("button_placeholder",null),this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW),this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW),this.ensureDefault("debug",!1),this.settings.debug_enabled=this.settings.debug,this.settings.return_upload_start_handler=this.returnUploadStart,this.ensureDefault("swfupload_loaded_handler",null),this.ensureDefault("file_dialog_start_handler",null),this.ensureDefault("file_queued_handler",null),this.ensureDefault("file_queue_error_handler",null),this.ensureDefault("file_dialog_complete_handler",null),this.ensureDefault("upload_start_handler",null),this.ensureDefault("upload_progress_handler",null),this.ensureDefault("upload_error_handler",null),this.ensureDefault("upload_success_handler",null),this.ensureDefault("upload_complete_handler",null),this.ensureDefault("debug_handler",this.debugMessage),this.ensureDefault("custom_settings",{}),this.customSettings=this.settings.custom_settings,this.settings.prevent_swf_caching&&(this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+(new Date).getTime()),this.settings.preserve_relative_urls||(this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url),this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url)),delete this.ensureDefault},SWFUpload.prototype.loadFlash=function(){var e,t;if(null!==document.getElementById(this.movieName))throw"ID "+this.movieName+" is already in use. The Flash Object could not be added";if(e=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder,void 0==e)throw"Could not find the placeholder element: "+this.settings.button_placeholder_id;t=document.createElement("div"),t.innerHTML=this.getFlashHTML(),e.parentNode.replaceChild(t.firstChild,e),void 0==window[this.movieName]&&(window[this.movieName]=this.getMovieElement())},SWFUpload.prototype.getFlashHTML=function(){var e="";return KindEditor.IE&&KindEditor.V>8&&(e=' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'),['','','','','','','',""].join("")},SWFUpload.prototype.getFlashVars=function(){var e=this.buildParamString(),t=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&uploadURL=",encodeURIComponent(this.settings.upload_url),"&useQueryString=",encodeURIComponent(this.settings.use_query_string),"&requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&httpSuccess=",encodeURIComponent(t),"&assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&params=",encodeURIComponent(e),"&filePostName=",encodeURIComponent(this.settings.file_post_name),"&fileTypes=",encodeURIComponent(this.settings.file_types),"&fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&buttonWidth=",encodeURIComponent(this.settings.button_width),"&buttonHeight=",encodeURIComponent(this.settings.button_height),"&buttonText=",encodeURIComponent(this.settings.button_text),"&buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&buttonAction=",encodeURIComponent(this.settings.button_action),"&buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("")},SWFUpload.prototype.getMovieElement=function(){if(void 0==this.movieElement&&(this.movieElement=document.getElementById(this.movieName)),null===this.movieElement)throw"Could not find Flash element";return this.movieElement},SWFUpload.prototype.buildParamString=function(){var e=this.settings.post_params,t=[];if("object"==typeof e)for(var n in e)e.hasOwnProperty(n)&&t.push(encodeURIComponent(n.toString())+"="+encodeURIComponent(e[n].toString()));return t.join("&")},SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,!1);var e=null;if(e=this.getMovieElement(),e&&"unknown"==typeof e.CallFunction){for(var t in e)try{"function"==typeof e[t]&&(e[t]=null)}catch(n){}try{e.parentNode.removeChild(e)}catch(i){}}return window[this.movieName]=null,SWFUpload.instances[this.movieName]=null,delete SWFUpload.instances[this.movieName],this.movieElement=null,this.settings=null,this.customSettings=null,this.eventQueue=null,this.movieName=null,!0}catch(a){return!1}},SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n","\t","upload_url: ",this.settings.upload_url,"\n","\t","flash_url: ",this.settings.flash_url,"\n","\t","use_query_string: ",this.settings.use_query_string.toString(),"\n","\t","requeue_on_error: ",this.settings.requeue_on_error.toString(),"\n","\t","http_success: ",this.settings.http_success.join(", "),"\n","\t","assume_success_timeout: ",this.settings.assume_success_timeout,"\n","\t","file_post_name: ",this.settings.file_post_name,"\n","\t","post_params: ",this.settings.post_params.toString(),"\n","\t","file_types: ",this.settings.file_types,"\n","\t","file_types_description: ",this.settings.file_types_description,"\n","\t","file_size_limit: ",this.settings.file_size_limit,"\n","\t","file_upload_limit: ",this.settings.file_upload_limit,"\n","\t","file_queue_limit: ",this.settings.file_queue_limit,"\n","\t","debug: ",this.settings.debug.toString(),"\n","\t","prevent_swf_caching: ",this.settings.prevent_swf_caching.toString(),"\n","\t","button_placeholder_id: ",this.settings.button_placeholder_id.toString(),"\n","\t","button_placeholder: ",this.settings.button_placeholder?"Set":"Not Set","\n","\t","button_image_url: ",this.settings.button_image_url.toString(),"\n","\t","button_width: ",this.settings.button_width.toString(),"\n","\t","button_height: ",this.settings.button_height.toString(),"\n","\t","button_text: ",this.settings.button_text.toString(),"\n","\t","button_text_style: ",this.settings.button_text_style.toString(),"\n","\t","button_text_top_padding: ",this.settings.button_text_top_padding.toString(),"\n","\t","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n","\t","button_action: ",this.settings.button_action.toString(),"\n","\t","button_disabled: ",this.settings.button_disabled.toString(),"\n","\t","custom_settings: ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n","\t","swfupload_loaded_handler assigned: ",("function"==typeof this.settings.swfupload_loaded_handler).toString(),"\n","\t","file_dialog_start_handler assigned: ",("function"==typeof this.settings.file_dialog_start_handler).toString(),"\n","\t","file_queued_handler assigned: ",("function"==typeof this.settings.file_queued_handler).toString(),"\n","\t","file_queue_error_handler assigned: ",("function"==typeof this.settings.file_queue_error_handler).toString(),"\n","\t","upload_start_handler assigned: ",("function"==typeof this.settings.upload_start_handler).toString(),"\n","\t","upload_progress_handler assigned: ",("function"==typeof this.settings.upload_progress_handler).toString(),"\n","\t","upload_error_handler assigned: ",("function"==typeof this.settings.upload_error_handler).toString(),"\n","\t","upload_success_handler assigned: ",("function"==typeof this.settings.upload_success_handler).toString(),"\n","\t","upload_complete_handler assigned: ",("function"==typeof this.settings.upload_complete_handler).toString(),"\n","\t","debug_handler assigned: ",("function"==typeof this.settings.debug_handler).toString(),"\n"].join(""))},SWFUpload.prototype.addSetting=function(e,t,n){return void 0==t?this.settings[e]=n:this.settings[e]=t},SWFUpload.prototype.getSetting=function(e){return void 0!=this.settings[e]?this.settings[e]:""},SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement(),returnValue,returnString;try{returnString=movieElement.CallFunction(''+__flash__argumentsToXML(argumentArray,0)+""),returnValue=eval(returnString)}catch(ex){throw"Call to "+functionName+" failed"}return void 0!=returnValue&&"object"==typeof returnValue.post&&(returnValue=this.unescapeFilePostParams(returnValue)),returnValue},SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile")},SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles")},SWFUpload.prototype.startUpload=function(e){this.callFlash("StartUpload",[e])},SWFUpload.prototype.cancelUpload=function(e,t){t!==!1&&(t=!0),this.callFlash("CancelUpload",[e,t])},SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload")},SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats")},SWFUpload.prototype.setStats=function(e){this.callFlash("SetStats",[e])},SWFUpload.prototype.getFile=function(e){return"number"==typeof e?this.callFlash("GetFileByIndex",[e]):this.callFlash("GetFile",[e])},SWFUpload.prototype.addFileParam=function(e,t,n){return this.callFlash("AddFileParam",[e,t,n])},SWFUpload.prototype.removeFileParam=function(e,t){this.callFlash("RemoveFileParam",[e,t])},SWFUpload.prototype.setUploadURL=function(e){this.settings.upload_url=e.toString(),this.callFlash("SetUploadURL",[e])},SWFUpload.prototype.setPostParams=function(e){this.settings.post_params=e,this.callFlash("SetPostParams",[e])},SWFUpload.prototype.addPostParam=function(e,t){this.settings.post_params[e]=t,this.callFlash("SetPostParams",[this.settings.post_params])},SWFUpload.prototype.removePostParam=function(e){delete this.settings.post_params[e],this.callFlash("SetPostParams",[this.settings.post_params])},SWFUpload.prototype.setFileTypes=function(e,t){this.settings.file_types=e,this.settings.file_types_description=t,this.callFlash("SetFileTypes",[e,t])},SWFUpload.prototype.setFileSizeLimit=function(e){this.settings.file_size_limit=e,this.callFlash("SetFileSizeLimit",[e])},SWFUpload.prototype.setFileUploadLimit=function(e){this.settings.file_upload_limit=e,this.callFlash("SetFileUploadLimit",[e])},SWFUpload.prototype.setFileQueueLimit=function(e){this.settings.file_queue_limit=e,this.callFlash("SetFileQueueLimit",[e])},SWFUpload.prototype.setFilePostName=function(e){this.settings.file_post_name=e,this.callFlash("SetFilePostName",[e])},SWFUpload.prototype.setUseQueryString=function(e){this.settings.use_query_string=e,this.callFlash("SetUseQueryString",[e])},SWFUpload.prototype.setRequeueOnError=function(e){this.settings.requeue_on_error=e,this.callFlash("SetRequeueOnError",[e])},SWFUpload.prototype.setHTTPSuccess=function(e){ -"string"==typeof e&&(e=e.replace(" ","").split(",")),this.settings.http_success=e,this.callFlash("SetHTTPSuccess",[e])},SWFUpload.prototype.setAssumeSuccessTimeout=function(e){this.settings.assume_success_timeout=e,this.callFlash("SetAssumeSuccessTimeout",[e])},SWFUpload.prototype.setDebugEnabled=function(e){this.settings.debug_enabled=e,this.callFlash("SetDebugEnabled",[e])},SWFUpload.prototype.setButtonImageURL=function(e){void 0==e&&(e=""),this.settings.button_image_url=e,this.callFlash("SetButtonImageURL",[e])},SWFUpload.prototype.setButtonDimensions=function(e,t){this.settings.button_width=e,this.settings.button_height=t;var n=this.getMovieElement();void 0!=n&&(n.style.width=e+"px",n.style.height=t+"px"),this.callFlash("SetButtonDimensions",[e,t])},SWFUpload.prototype.setButtonText=function(e){this.settings.button_text=e,this.callFlash("SetButtonText",[e])},SWFUpload.prototype.setButtonTextPadding=function(e,t){this.settings.button_text_top_padding=t,this.settings.button_text_left_padding=e,this.callFlash("SetButtonTextPadding",[e,t])},SWFUpload.prototype.setButtonTextStyle=function(e){this.settings.button_text_style=e,this.callFlash("SetButtonTextStyle",[e])},SWFUpload.prototype.setButtonDisabled=function(e){this.settings.button_disabled=e,this.callFlash("SetButtonDisabled",[e])},SWFUpload.prototype.setButtonAction=function(e){this.settings.button_action=e,this.callFlash("SetButtonAction",[e])},SWFUpload.prototype.setButtonCursor=function(e){this.settings.button_cursor=e,this.callFlash("SetButtonCursor",[e])},SWFUpload.prototype.queueEvent=function(e,t){void 0==t?t=[]:t instanceof Array||(t=[t]);var n=this;if("function"==typeof this.settings[e])this.eventQueue.push(function(){this.settings[e].apply(this,t)}),setTimeout(function(){n.executeNextEvent()},0);else if(null!==this.settings[e])throw"Event handler "+e+" is unknown or is not a function"},SWFUpload.prototype.executeNextEvent=function(){var e=this.eventQueue?this.eventQueue.shift():null;"function"==typeof e&&e.apply(this)},SWFUpload.prototype.unescapeFilePostParams=function(e){var t,n=/[$]([0-9a-f]{4})/i,i={};if(void 0!=e){for(var a in e.post)if(e.post.hasOwnProperty(a)){t=a;for(var o;null!==(o=n.exec(t));)t=t.replace(o[0],String.fromCharCode(parseInt("0x"+o[1],16)));i[t]=e.post[a]}e.post=i}return e},SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(e){return!1}},SWFUpload.prototype.flashReady=function(){var e=this.getMovieElement();return e?(this.cleanUp(e),void this.queueEvent("swfupload_loaded_handler")):void this.debug("Flash called back ready but the flash movie can't be found.")},SWFUpload.prototype.cleanUp=function(e){try{if(this.movieElement&&"unknown"==typeof e.CallFunction){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var t in e)try{"function"==typeof e[t]&&(e[t]=null)}catch(n){}}}catch(i){}window.__flash__removeCallback=function(e,t){try{e&&(e[t]=null)}catch(n){}}},SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")},SWFUpload.prototype.fileQueued=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("file_queued_handler",e)},SWFUpload.prototype.fileQueueError=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("file_queue_error_handler",[e,t,n])},SWFUpload.prototype.fileDialogComplete=function(e,t,n){this.queueEvent("file_dialog_complete_handler",[e,t,n])},SWFUpload.prototype.uploadStart=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("return_upload_start_handler",e)},SWFUpload.prototype.returnUploadStart=function(e){var t;if("function"==typeof this.settings.upload_start_handler)e=this.unescapeFilePostParams(e),t=this.settings.upload_start_handler.call(this,e);else if(void 0!=this.settings.upload_start_handler)throw"upload_start_handler must be a function";void 0===t&&(t=!0),t=!!t,this.callFlash("ReturnUploadStart",[t])},SWFUpload.prototype.uploadProgress=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_progress_handler",[e,t,n])},SWFUpload.prototype.uploadError=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_error_handler",[e,t,n])},SWFUpload.prototype.uploadSuccess=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_success_handler",[e,t,n])},SWFUpload.prototype.uploadComplete=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("upload_complete_handler",e)},SWFUpload.prototype.debug=function(e){this.queueEvent("debug_handler",e)},SWFUpload.prototype.debugMessage=function(e){if(this.settings.debug){var t,n=[];if("object"==typeof e&&"string"==typeof e.name&&"string"==typeof e.message){for(var i in e)e.hasOwnProperty(i)&&n.push(i+": "+e[i]);t=n.join("\n")||"",n=t.split("\n"),t="EXCEPTION: "+n.join("\nEXCEPTION: "),SWFUpload.Console.writeLine(t)}else SWFUpload.Console.writeLine(e)}},SWFUpload.Console={},SWFUpload.Console.writeLine=function(e){var t,n;try{t=document.getElementById("SWFUpload_Console"),t||(n=document.createElement("form"),document.getElementsByTagName("body")[0].appendChild(n),t=document.createElement("textarea"),t.id="SWFUpload_Console",t.style.fontFamily="monospace",t.setAttribute("wrap","off"),t.wrap="off",t.style.overflow="auto",t.style.width="700px",t.style.height="350px",t.style.margin="5px",n.appendChild(t)),t.value+=e+"\n",t.scrollTop=t.scrollHeight-t.clientHeight}catch(i){alert("Exception: "+i.name+" Message: "+i.message)}}}(),function(){"function"==typeof SWFUpload&&(SWFUpload.queue={},SWFUpload.prototype.initSettings=function(e){return function(){"function"==typeof e&&e.call(this),this.queueSettings={},this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0,this.queueSettings.user_upload_complete_handler=this.settings.upload_complete_handler,this.queueSettings.user_upload_start_handler=this.settings.upload_start_handler,this.settings.upload_complete_handler=SWFUpload.queue.uploadCompleteHandler,this.settings.upload_start_handler=SWFUpload.queue.uploadStartHandler,this.settings.queue_complete_handler=this.settings.queue_complete_handler||null}}(SWFUpload.prototype.initSettings),SWFUpload.prototype.startUpload=function(e){this.queueSettings.queue_cancelled_flag=!1,this.callFlash("StartUpload",[e])},SWFUpload.prototype.cancelQueue=function(){this.queueSettings.queue_cancelled_flag=!0,this.stopUpload();for(var e=this.getStats();e.files_queued>0;)this.cancelUpload(),e=this.getStats()},SWFUpload.queue.uploadStartHandler=function(e){var t;return"function"==typeof this.queueSettings.user_upload_start_handler&&(t=this.queueSettings.user_upload_start_handler.call(this,e)),t=t!==!1,this.queueSettings.queue_cancelled_flag=!t,t},SWFUpload.queue.uploadCompleteHandler=function(e){var t,n=this.queueSettings.user_upload_complete_handler;if(e.filestatus===SWFUpload.FILE_STATUS.COMPLETE&&this.queueSettings.queue_upload_count++,t="function"==typeof n?n.call(this,e)!==!1:e.filestatus!==SWFUpload.FILE_STATUS.QUEUED){var i=this.getStats();i.files_queued>0&&this.queueSettings.queue_cancelled_flag===!1?this.startUpload():this.queueSettings.queue_cancelled_flag===!1?(this.queueEvent("queue_complete_handler",[this.queueSettings.queue_upload_count]),this.queueSettings.queue_upload_count=0):(this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0)}})}(),KindEditor.plugin("pagebreak",function(e){var t=this,n="pagebreak",i=e.undef(t.pagebreakHtml,'
    ');t.clickToolbar(n,function(){var n=t.cmd,a=n.range;t.focus();var o="br"==t.newlineTag||e.WEBKIT?"":'';if(t.insertHtml(i+o),""!==o){var r=e("#__kindeditor_tail_tag__",t.edit.doc);a.selectNodeContents(r[0]),r.removeAttr("id"),n.select()}})}),KindEditor.plugin("plainpaste",function(e){var t=this,n="plainpaste";t.clickToolbar(n,function(){var i=t.lang(n+"."),a='
    '+i.comment+'
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=r.val();i=e.escape(i),i=i.replace(/ {2}/g,"  "),i="p"==t.newlineTag?i.replace(/^/,"

    ").replace(/$/,"

    ").replace(/\n/g,"

    "):i.replace(/\n/g,"
    $&"),t.insertHtml(i).hideDialog().focus()}}}),r=e("textarea",o.div);r[0].focus()})}),KindEditor.plugin("preview",function(e){var t=this,n="preview";t.clickToolbar(n,function(){var i=(t.lang(n+"."),'

    '),a=t.createDialog({name:n,width:750,title:t.lang(n),body:i}),o=e("iframe",a.div),r=e.iframeDoc(o);r.open(),r.write(t.fullHtml()),r.write("");var l=t.options.cssData,s=t.options.cssPath,d=t.options.bodyClass;e.isArray(s)||(s=[s]),e.each(s,function(e,t){t&&r.write('')}),l&&r.write(""),r.close();var c=e(r.body).css("background-color","#FFF");d&&c.addClass(d),o[0].contentWindow.focus()})}),KindEditor.plugin("quickformat",function(e){function t(e){for(var t=e.first();t&&t.first();)t=t.first();return t}var n=this,i="quickformat",a=e.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");n.clickToolbar(i,function(){n.focus();for(var i,o=n.edit.doc,r=n.cmd.range,l=e(o.body).first(),s=[],d=[],c=r.createBookmark(!0);l;){i=l.next();var u=t(l);u&&"img"==u.name||(a[l.name]?(l.html(l.html().replace(/^(\s| | )+/gi,"")),l.css("text-indent","2em")):d.push(l),(!i||a[i.name]||a[l.name]&&!a[i.name])&&(d.length>0&&s.push(d),d=[])),l=i}e.each(s,function(t,n){var i=e('

    ',o);n[0].before(i),e.each(n,function(e,t){i.append(t)})}),r.moveToBookmark(c),n.addBookmark()})}),KindEditor.plugin("template",function(e){function t(t){return a+t+"?ver="+encodeURIComponent(e.DEBUG?e.TIME:e.VERSION)}var n=this,i="template",a=(n.lang(i+"."),n.pluginsPath+i+"/html/");n.clickToolbar(i,function(){var a=n.lang(i+"."),o=['
    ','
    ','
    ',a.selectTemplate+"
    ",'
    ',' ","
    ",'
    ',"
    ",'',"
    "].join("");var r=n.createDialog({name:i,width:500,title:n.lang(i),body:html,yesBtn:{name:n.lang("yes"),click:function(t){var i=e.iframeDoc(d);n[s[0].checked?"html":"insertHtml"](i.body.innerHTML).hideDialog().focus()}}}),l=e("select",r.div),s=e('[name="replaceFlag"]',r.div),d=e("iframe",r.div);s[0].checked=!0,d.attr("src",t(l.val())),l.change(function(){d.attr("src",t(this.value))})})}),KindEditor.plugin("wordpaste",function(e){var t=this,n="wordpaste";t.clickToolbar(n,function(){var i=t.lang(n+"."),a='
    '+i.comment+'
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=s.body.innerHTML;i=e.clearMsWord(i,t.filterMode?t.htmlTags:e.options.htmlTags),t.insertHtml(i).hideDialog().focus()}}}),r=o.div,l=e("iframe",r),s=e.iframeDoc(l);e.IE||(s.designMode="on"),s.open(),s.write("WordPaste"),s.write(''),e.IE||s.write("
    "),s.write(""),s.close(),e.IE&&(s.body.contentEditable="true"),l[0].contentWindow.focus()})}),$.each(["afterBlur","afterFocus","afterChange","afterTab"],function(e,t){KindEditor.EditorClass.prototype[t]=function(e){return this.handler(t,e)}}),KindEditor.plugin("zui",function(e){var t=this,n=t.options;if(t.uuid=$.zui.uuid(),t.afterBlur(function(){n.syncAfterBlur&&t.sync(),t.container.removeClass("focus")}),t.afterFocus(function(){t.container.addClass("focus")}),t.afterChange(function(){t.edit.srcElement.change().hide()}),t.afterCreate(function(){$(t.edit.srcElement[0]).data("keditor",t);var e=n.spellcheck;void 0!==e&&t.edit.doc.documentElement.setAttribute("spellcheck",e)}),n.transferTab!==!1){var i='input:not([type="hidden"]), textarea:not(.ke-edit-textarea), button[type="submit"], select';t.afterTab(function(){var e=$(t.edit.srcElement[0]),n=e.next(i);if(n.length||(n=e.next().next(i)),n.length||(n=e.parent().next().find(i)),n.length||(n=e.parent().parent().next().find(i)),n=n.first(),n.length){var a=n.data("keditor");return a?a.focus():n.focus(),!0}return!0})}}),KindEditor.EditorClass.prototype.setPlaceholder=function(e,t){var n=this,i=n.options,a=$(n.edit.div[0]),o=a.find(".kindeditor-ph");o.length||(a.css("position","relative"),o=$('
    '),i.placeholderStyle&&o.css(i.placeholderStyle),a.append(o)),n.plugin.hasContent()&&o.hide(),o[t?"html":"text"](e),n.$placeholder=o},KindEditor.EditorClass.prototype.getPlaceholder=function(e){return this.$placeholder?this.$placeholder[e?"html":"text"]():""},KindEditor.plugin("placeholder",function(e){var t=this;t.plugin.hasContent=function(){return""!==t.html().replace(/\s|\n|\r|\t/g,"").replace(//g,"").replace(/

    <\/p>/g,"")},t.afterBlur(function(){t.plugin.hasContent()||t.$placeholder&&t.$placeholder.show()}),t.afterFocus(function(){t.$placeholder&&t.$placeholder.hide()}),t.afterCreate(function(){var e=t.options;e.placeholderHtml?t.setPlaceholder(e.placeholderHtml,!0):e.placeholder&&t.setPlaceholder(e.placeholder)})}),KindEditor.plugin("pasteimage",function(e){var t=this,n={zh_cn:{notSupportMsg:"您的浏览器不支持粘贴图片!",placeholder:"可以在编辑器直接贴图。",failMsg:"贴图失败,请稍后重试。",uploadingHint:"正在上传图片,请稍后..."},zh_tw:{notSupportMsg:"您的瀏覽器不支持粘貼圖片!",placeholder:"可以在編輯器直接貼圖。",failMsg:"貼圖失敗,請稍後重試。",uploadingHint:"正在上傳圖片,請稍後..."},en:{notSupportMsg:"Image is not allowed to paste in your browser!",placeholder:"You can paste images in the editor.",failMsg:"Pasting image failed. Try again later.",uploadingHint:"Uploading..."}};t.afterCreate(function(){var i=t.edit,a=i.doc,o=t.uuid,r=t.options.pasteImage;if(r){"string"==typeof r&&(r={postUrl:r});var l=$.clientLang?$.clientLang():$.zui&&$.zui.clientLang?$.zui.clientLang():"en",s=$.extend({},$.zui&&$.zui.getLangData?$.zui.getLangData("kindeditor.advanceTable",l,n):$.extend({},n.en,t.lang("table."),n[l]),r.lang);if(e.WEBKIT||e.GECKO||$(a.body).on("keyup.ke"+o,function(e){86==e.keyCode&&e.ctrlKey&&alert(s.notSupportMsg)}),t.setPlaceholder){var d=r.placeholder;if(d===!0&&(d=s.placeholder),d){var c=t.getPlaceholder();c?c.indexOf(d)<0&&(d=c+"\n"+d):c=d,t.setPlaceholder(d)}}var u=function(){r.beforePaste&&r.beforePaste();var e='

    '+s.uploadingHint+"
    ";t.readonly(!0),$.fn.enableForm&&$(t.edit.div[0]).closest("form").enableForm(!1),t.cmd.inserthtml(e)},p=function(e){e&&(r.onError?r.onError(e):(e===!0&&(e=s.failMsg),$.zui&&$.zui.messager&&$.zui.messager.danger(e,{placement:"center"}))),r.afterPaste&&r.afterPaste(),t.readonly(!1),$.fn.enableForm&&$(t.edit.div[0]).closest("form").enableForm(!0)},h=r.postUrl;$(a.body).on("paste.ke"+o,function(n){if(e.WEBKIT){var o=n.originalEvent,r=o.clipboardData&&o.clipboardData.items,l=null;if(r)for(var s=/^image\/(p?jpeg|gif|png)$/i,d=0;d';$.post(h,{editor:a},function(e){if(t.undo(),t._redoStack.pop(),e){var a=$(e);i.cmd.insertimage(a.attr("src"),a.attr("title"),a.attr("width"),a.attr("height"))}else i.cmd.insertimage(n);p()}).error(function(){p(!0)})},f.readAsDataURL(c)}else setTimeout(function(){var n=e(a.body).html();n.search(/"),t.undo(),t._redoStack.pop(),i.html(e),p()}).error(function(){p(!0)}))},80)}),t.beforeRemove(function(){$(a.body).off(".ke"+o)})}})}),function(e){function t(t){var n=[],i=0,a=0;t.children("thead,tbody,tfoot").children("tr").each(function(t,o){e(o).children("td,th").each(function(o,r){var l,s,d=e(r),c=0|d.attr("colspan"),u=0|d.attr("rowspan");for(c=c?c:1,u=u?u:1;n[t]&&n[t][o];++o);for(l=o;ltr"),a=i.filter(function(){return!!this.style.backgroundColor}).length;t.stripedRows=a>=Math.floor(i.length/2)}return t}function r(t,n,i){if(!n){var a=d.plugin.getSelectedTable();n=$(a[0])}if(n&&n.length){if(t=o(n,t),n.data("tableSetting",t),void 0!==t.header){if(n.is(".ke-plugin-table-example"))n.find("thead").toggleClass("hidden",!t.header);else{var r=n.find("thead");if(t.header){if(!r.length){var l=["
    "],s=n.find("tbody>tr:first").children(),c=0;s.each(function(){var e=$(this),t=e.attr("colspan");c+=t?parseInt(t):1});for(var u=0;u'+(e.IE?" ":"
    ")+"");l.push("
    "),r=$(l.join("")),n.prepend(r)}}else r.remove()}i&&i("header",t.header)}if(void 0!==t.stripedRows){var p=n.find("tbody>tr");p.each(function(e){$(this).css("background-color",t.stripedRows&&e%2===0?"#f9f9f9":"")}),i&&i("stripedRows",t.stripedRows)}void 0!==t.autoWidth&&(n.css(t.autoWidth?{width:"auto",maxWidth:"100%"}:{width:"100%"}),i&&i("autoWidth",t.autoWidth)),void 0!==t.borderColor&&(n.find("td,th").css("border-color",t.borderColor),i&&i("borderColor",t.borderColor))}}function l(t,n,i,a){if(t*n){for(var o="ke-table-"+d.tableIdIndex++,r=$('
    budget->subject . '/' . $lang->budget->stage;?>budget->subject . '/' . $lang->budget->stage;?> budget->summary;?>budget->summary;?>
    '),l=$(""),s=0;s"),u=0;u'+(e.IE?" ":"
    ")+"");c.append(p)}l.append(c)}r.append(l);var h=$("
    ").append(r).html();e.IE||(h+="
    "),d.insertHtml(h);var r=$(d.edit.doc).find("#"+o);return r.attr("id",null),d.cmd.range.selectNodeContents(r.find("th,td").first()[0]).collapse(!0),d.cmd.select(),d.addBookmark(),r}}function s(i){for(var a=$(i[0]),l=[""],s=[""],u=0;u<6;++u){l.push('{tableHead}'),s.push("");for(var p=0;p<6;++p)s.push('{tableContent}');s.push("")}l.push(""),s.push("");var h=['
    ','
    ','
    ','
    ',"",'
    ','
    ',"
    ",'
    ',"",'
    ','
    ',"
    ",'
    ',"",'
    ','{borderColor}','',"
    ","
    ","
    ",'
    ','',l.join(""),s.join(""),"
    ","","",""].join("").format(f),g=$(h),v=g.find(".ke-plugin-table-example"),_=d.cmd.range.createBookmark(),b=g.find(".ke-plugin-table-input-color"),y=e(b[0]);g.on("change.kTable","input[name]",function(){var e=$(this),t={};t[e.attr("name")]=e.is('[type="checkbox"]')?e.is(":checked"):e.val(),r(t,v)});var k=d.createDialog({name:c+"Dialog",width:550,title:d.lang(c),body:g[0],beforeRemove:function(){g.off(".kTable")},yesBtn:{name:d.lang("yes"),click:function(e){r({borderColor:g.find('[name="borderColor"]').val(),header:g.find('[name="header"]').is(":checked"),stripedRows:g.find('[name="stripedRows"]').is(":checked"),hoverRows:g.find('[name="hoverRows"]').is(":checked"),autoWidth:g.find('[name="autoWidth"]:checked').val()},a),d.hideDialog().focus(),d.cmd.range.moveToBookmark(_),d.cmd.select(),d.addBookmark()}}});n(k.div,y,function(e){r({borderColor:e},v)}),r(o(a),v,function(e,n){switch(e){case"borderColor":t(y,n||m);break;case"header":g.find('[name="header"]').prop("checked",!!n);break;case"stripedRows":g.find('[name="stripedRows"]').prop("checked",!!n);break;case"hoverRows":g.find('[name="hoverRows"]').prop("checked",!!n);break;case"autoWidth":g.find('[name="autoWidth"][value="'+(n?"auto":"")+'"]').prop("checked",!0)}})}var d=this,c="table",u={zh_cn:{name:"表格",xRxC:"{0}行 × {1}列",headerRow:"标题行",headerCol:"标题列",tableStyle:"表格样式",addHeaderRow:"添加表格标题行",stripedRows:"隔行变色效果",hoverRows:"鼠标悬停效果",autoChangeTableWidth:"自动调整表格尺寸",tableWidthFixed:"按表格文字自适应",tableWidthFull:"按页面宽度自适应",tableBorder:"表格边框",tableHead:"标题",tableContent:"内容",mergeCells:"合并单元格",defaultColor:"默认颜色",color:"颜色",forecolor:"文字颜色",backcolor:"背景颜色",invalidBoderWidth:"边框大小必须为数字。"},zh_tw:{name:"表格",xRxC:"{0}行×{1}列",headerRow:"標題行",headerCol:"標題列",tableStyle:"表格樣式",addHeaderRow:"添加表格標題行",stripedRows:"隔行變色效果",hoverRows:"鼠標懸停效果",autoChangeTableWidth:"自動調整表格尺寸",tableWidthFixed:"按表格文字自適應",tableWidthFull:"按頁面寬度自適應",tableBorder:"表格邊框",tableHead:"標題",tableContent:"內容",mergeCells:"合併單元格",defaultColor:"默認顏色",color:"顏色",forecolor:"文字顏色",backcolor:"背景顏色",invalidBoderWidth:"邊框大小必須為數字。"},en:{name:"Table",xRxC:"{0} Rows × {1} Columns",headerRow:"Header Row",headerCol:"Header Column",tableStyle:"Table style",addHeaderRow:"Add header row",stripedRows:"Striped effection",hoverRows:"Mouse hover effection",autoChangeTableWidth:"Automatically adjust table size",tableWidthFixed:"Adaptive by form text",tableWidthFull:"Page width adaptive",tableBorder:"Table border",tableHead:"Title",tableContent:"Text",mergeCells:"Merge Cells",defaultColor:"Default color",color:"Color",forecolor:"Text Color",backcolor:"Back Color",invalidBoderWidth:"Border width value must be number"}},p=[],h=$.clientLang?$.clientLang():$.zui&&$.zui.clientLang?$.zui.clientLang():"en",f=$.zui&&$.zui.getLangData?$.extend({},d.lang("table."),$.zui.getLangData("kindeditor.advanceTable",h,u)):$.extend({},u.en,d.lang("table."),u[h]),m=d.options.tableBorderColor||"#ddd";d.tableIdIndex=0;var g=[];if(!d.plugin.table){d.plugin.table={prop:function(){var e=d.plugin.getSelectedTable();e&&e.length&&s(e)},cellprop:function(){var i,a,o,r,r,l,s,u,p,h=['
    ','
    ','",'
    ','
    ',''+f.width+"",'','','","
    ","
    ",'
    ','
    ',''+f.height+"",'','','","
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.textAlign+"",'","
    ","
    ",'
    ','
    ',''+f.verticalAlign+"",'","
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.borderColor+"",'',"
    ","
    ",'
    ','
    ',''+f.size+"",'','px',"
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.forecolor+"",'',"
    ","
    ",'
    ','
    ',''+f.backcolor+"",'',"
    ","
    ","
    ","
    "].join(""),g=d.cmd.range.createBookmark(),v=d.createDialog({name:c,width:500,title:d.lang("tablecell"),body:h,beforeRemove:function(){u.unbind()},yesBtn:{name:d.lang("yes"),click:function(t){var n=a.val(),i=o.val(),c=r.val(),h=heightTypeBox.val(),m=l.val(),v=s.val(),_=p.val(),b=e(u[0]).val()||"",y=e(u[1]).val()||"",k=e(u[2]).val()||"";if(!/^\d*$/.test(n))return alert(d.lang("invalidWidth")),void a[0].focus();if(!/^\d*$/.test(i))return alert(d.lang("invalidHeight")),void o[0].focus();if(!/^\d*$/.test(_))return alert(f.invalidBoderWidth),void p[0].focus();for(var w=d.plugin.getAllSelectedCells(),C={width:""!==n?n+c:"",height:""!==i?i+h:"","background-color":k,"text-align":m,"border-width":_+"px","vertical-align":v,"border-color":b,color:y},S=0;S1?' rowspan="'+h.rowSpan+'"':"")+(h.colSpan>1?' colspan="'+h.colSpan+'"':"")+' style="'+(f?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+"",h=p.cells[l],l=i(n,p,h)}d.cmd.range.selectNodeContents(r).collapse(!0),d.addBookmark(),d.focus()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(t){var n=d.plugin.getSelectedTable()[0],i=d.plugin.getSelectedRow()[0],a=d.plugin.getSelectedCell()[0],l=n.rows[0],s=o($(n)),c=i.rowIndex;1===t&&(c=i.rowIndex+(a.rowSpan-1)+t);for(var u=n.insertRow(c),p="THEAD"===u.parentNode.tagName,h=0,f=l.cells.length;h1&&(f+=g.rowSpan-1);var v=u.insertCell(h);v.outerHTML="<"+(p?"th":"td")+(v.rowSpan>1?' rowspan="'+v.rowSpan+'"':"")+(v.colSpan>1?' colspan="'+v.colSpan+'"':"")+' style="'+(p?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+""}for(var _=c;_>=0;_--){var b=n.rows[_].cells;if(b.length>h){for(var y=a.cellIndex;y>=0;y--)b[y].rowSpan>1&&(b[y].rowSpan+=1);break}}r(null,$(n)),d.cmd.range.selectNodeContents(a).collapse(!0),d.addBookmark(),d.focus()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1); -},rowmerge:function(){var e=d.plugin.getSelectedTable()[0],t=d.plugin.getSelectedRow()[0],n=d.plugin.getSelectedCell()[0],i=t.rowIndex,a=i+n.rowSpan,o=e.rows[a];if(!(e.rows.length<=a)){var r=n.cellIndex;if(!(o.cells.length<=r)){var l=o.cells[r];n.colSpan===l.colSpan&&(n.rowSpan+=l.rowSpan,o.deleteCell(r),d.cmd.range.selectNodeContents(n).collapse(!0),d.addBookmark(),d.focus())}}},colmerge:function(){var e=d.plugin.getSelectedTable()[0],t=d.plugin.getSelectedRow()[0],n=d.plugin.getSelectedCell()[0],i=(t.rowIndex,n.cellIndex),a=i+1;if(!(t.cells.length<=a)){var o=t.cells[a];n.rowSpan===o.rowSpan&&(n.colSpan+=o.colSpan,t.deleteCell(a),r(null,$(e)),d.cmd.range.selectNodeContents(n).collapse(!0),d.addBookmark(),d.focus())}},mergeCells:function(){var e=d.tableSelectionRange;if(e){var t,n=d.plugin.getSelectedTable()[0],i=$(n),a=e.top,o=e.left,l=e.right,s=e.bottom;i.children("thead,tbody,tfoot").children("tr").each(function(){$(this).children("td,th").each(function(){var e=$(this),n=e.cellPos();n.left===o&&n.top===a?t=e:n.right>=o&&n.left<=l&&n.bottom>=a&&n.top<=s&&e.addClass("ke-cell-removed")})}),t&&(t.attr({rowspan:s-a+1,colspan:l-o+1}),i.find(".ke-cell-removed").remove(),r(null,i),d.cmd.range.selectNodeContents(t[0]).collapse(!0),d.addBookmark(),d.focus())}},rowsplit:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getSelectedRow()[0],a=d.plugin.getSelectedCell()[0],l=n.rowIndex,s=o($(t));if(1!==a.rowSpan){for(var c=i(t,n,a),u=1,p=a.rowSpan;u1?a.colSpan:f.colSpan;f.outerHTML="<"+(g?"th":"td")+(f.rowSpan>1?' rowspan="'+f.rowSpan+'"':"")+(v>1?' colspan="'+v+'"':"")+' style="'+(g?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+"",a.colSpan>1&&(f.colSpan=a.colSpan),c=i(t,h,f)}e(a).removeAttr("rowSpan"),r(null,$(t)),d.cmd.range.selectNodeContents(a).collapse(!0),d.addBookmark(),d.focus()}},colsplit:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getSelectedRow()[0],i=d.plugin.getSelectedCell()[0],a=i.cellIndex,l=o($(t));if(1!==i.colSpan){for(var s="THEAD"===n.parentNode.tagName,c=1,u=i.colSpan;c1?i.rowSpan:p.rowSpan,f=p.colSpan;p.outerHTML="<"+(s?"th":"td")+(h>1?' rowspan="'+h+'"':"")+(f>1?' colspan="'+f+'"':"")+' style="'+(s?"background-color: #f1f1f1;":"")+"border: 1px solid "+(l&&l.borderColor||m)+'">'+(e.IE?" ":"
    ")+""}e(i).removeAttr("colSpan"),r(null,$(t)),d.cmd.range.selectNodeContents(i).collapse(!0),d.addBookmark(),d.focus()}},coldelete:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getAllSelectedCells();if(n.length){for(var i=0;i1?(u.colSpan-=1,1===u.colSpan&&e(u).removeAttr("colSpan")):c.deleteCell(r),u.rowSpan>1&&(l+=u.rowSpan-1))}if(0===o.cells.length){d.cmd.range.setStartBefore(t).collapse(!0),e(t).remove();break}}}t.parentNode&&d.cmd.selection(!0),d.addBookmark(),d.focus()}},rowdelete:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getAllSelectedCells();if(n.length){for(var i=0;i=0;l--)t.deleteRow(o.rowIndex+l)}0===t.rows.length?(d.cmd.range.setStartBefore(t).collapse(!0),e(t).remove()):(r(null,$(t)),d.cmd.selection(!0)),d.addBookmark(),d.focus()}}},d.plugin.getSelectedTable=function(){return e($(d.cmd.range.startContainer).closest("table")[0])},d.plugin.getSelectedRow=function(){return e($(d.cmd.range.startContainer).closest("tr")[0])},d.plugin.getSelectedCell=function(){return e($(d.cmd.range.startContainer).closest("td,th")[0])},d.plugin.getSelectedCells=function(){var t=d.plugin.getSelectedTable();if(t&&t.length){var n=e(".ke-select-cell",t.get(0));if(n&&n.length>1)return n}},d.plugin.getSingleSelectedCell=function(){var e=d.plugin.getSelectedCells();if(!(e&&e.length>1))return d.plugin.getSelectedCell()},d.plugin.getAllSelectedCells=function(){var e=d.plugin.getSelectedCells();return e&&e.length?e:d.plugin.getSelectedCell()};var v={mergeCells:"ke-icon-tablecolmerge"};e.each("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,mergeCells,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,delete".split(","),function(t,n){var i;i="prop"===n||"delete"===n?d.plugin.getSelectedTable:"mergeCells"===n?d.plugin.getSelectedCells:"rowmerge"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.length&&$(e.get(0)).parent().next("tr").length)return e}:"colmerge"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.length&&$(e.get(0)).next("th,td").length)return e}:"rowsplit"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.get(0).rowSpan>1)return e}:"colsplit"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.get(0).colSpan>1)return e}:e.inArray(n,["colinsertleft","colinsertright","rowinsertabove","rowinsertbelow"])>-1?d.plugin.getSingleSelectedCell:d.plugin.getSelectedCell,d.addContextmenu({title:f[n]||d.lang("table"+n),click:function(){d.plugin.table[n](),d.hideMenu()},cond:i,width:170,iconClass:v[n]||"ke-icon-table"+n})})}d.clickToolbar(c,function(){if(!d.menu){var e=d.createMenu({name:c,beforeRemove:function(){a()}}),t=$('
    '),n=$('
    '+f.xRxC.format(0,0)+"
    ");t.append(n);var i=$('
    ');i.on("mouseenter.kTable",".ke-plugin-table-grid-cell",function(){var e=$(this),t=e.data("row"),a=e.data("col");n.text(f.xRxC.format(t,a));var o=i.find(".ke-plugin-table-grid-cell");o.each(function(){var e=$(this),n=e.data("row"),i=e.data("col");n<=t&&i<=a?e.css({border:"1px solid #2286d2",background:"#eff7ff"}):e.css({border:"1px solid #ddd",background:"#f1f1f1"})})}).on("click.kTable",".ke-plugin-table-grid-cell",function(e){var t=$(this),n=t.data("row"),i=t.data("col");l(n,i),d.hideMenu().focus(),d.addBookmark(),e.stopPropagation()});for(var o=1;o<11;o++)for(var r=1;r<11;r++)i.append('
    ');p.push(i),t.append(i),e.div.append(t[0])}}),d.afterTab(function(e){var t=d.plugin.getSelectedCell();if(t&&t.length){var n=function(e){if(e.length){var t=e.next();if(t.is("td,th")||(t=e.parent().next("tr").children("th,td").first()),t.is("td,th")||(t=e.closest("tbody,tfoot,thead").next().children("tr").first().children("th,td").first()),t.length)return d.cmd.range.selectNodeContents(t[0]).collapse(!0),d.cmd.select(),!0}return!1},i=$(t.get(0));if(i.length)return d.focus(),n(i)||(d.plugin.table.rowinsertbelow(),n(i)),!0}return e});var _=function(e,t,n){var i=n?Math.min(t.top,n.top):t.top,a=n?Math.min(t.left,n.left):t.left,o=n?Math.max(t.bottom,n.bottom):t.bottom,r=n?Math.max(t.right,n.right):t.right;if(i===o&&a===r)return!1;for(var l=!1,s=!1,c=e.children("thead,tbody,tfoot").children("tr").each(function(){$(this).children("td,th").each(function(){var e=$(this),t=e.cellPos();t.right>=a&&t.left<=r&&t.bottom>=i&&t.top<=o&&(i=Math.min(i,t.top),a=Math.min(a,t.left),o=Math.max(o,t.bottom),r=Math.max(r,t.right),e.addClass("ke-select-cell"),l=!0,s=!0)})});s;)s=!1,c.each(function(){$(this).children("td,th").each(function(){var e=$(this);if(!e.hasClass("ke-select-cell")){var t=e.cellPos();t.right>=a&&t.left<=r&&t.bottom>=i&&t.top<=o&&(i=Math.min(i,t.top),a=Math.min(a,t.left),o=Math.max(o,t.bottom),r=Math.max(r,t.right),e.addClass("ke-select-cell"),s=!0)}})});var u=e.find(".ke-select-cell");return 1===u.length&&(u.removeClass("ke-select-cell"),l=!1),l?d.tableSelectionRange={top:i,left:a,bottom:o,right:r}:d.tableSelectionRange=null,l},b=function(e,t){return _(e,{left:0,right:e.data("tableSize").width-1,top:t,bottom:t})},y=function(e,t){return _(e,{left:t,right:t,top:0,bottom:e.data("tableSize").height-1})};d.afterCreate(function(){var e=!1,t=null,n=null,i=null,a=null,o=function(){e=!1,t=null,a=null};$(d.edit.doc.body).on("mousedown.ke"+d.uuid,function(n){var a=$(n.target).closest("td,th"),o=a.closest("table"),r=!1;a.length&&o.length&&(t=o,e=!0,i=a.cellPos(!0),r=3===n.which,o.removeClass("ke-select-cells")),r||($(d.edit.doc).find(".ke-select-cell").removeClass("ke-select-cell"),d.tableSelectionRange=null)}).on("mousemove.ke"+d.uuid,function(o){var r=$(o.target).closest("td,th");if(!r.length)return e?o.preventDefault():null;var l=r.closest("table");if(!l.length)return e?o.preventDefault():null;if(l.removeClass("ke-select-row ke-select-col ke-select-cells"),a=r.cellPos(),e){if(l[0]!==t[0])return o.preventDefault();$(d.edit.doc).find("table").find(".ke-select-cell").removeClass("ke-select-cell"),_(l,i,a)&&(l.addClass("ke-select-cells"),o.preventDefault())}else{n=l;var s=l.offset(),c=o.pageX,u=o.pageY,p=c-s.left,h=u-s.top;p<8?(l.addClass("ke-select-row"),a.selectRow=a.top,delete a.selectCol,o.preventDefault(),o.stopPropagation()):h<8&&(l.addClass("ke-select-col"),a.selectCol=a.left,delete a.selectRow,o.preventDefault(),o.stopPropagation())}}).on("mouseup.ke"+d.uuid,function(e){var t=$(e.target),i=t.closest("td,th");i.length&&(a&&void 0!==a.selectRow?(b(n,a.selectRow),e.stopPropagation()):a&&void 0!==a.selectCol&&(y(n,a.selectCol),e.stopPropagation())),o()}).on("paste.ke"+d.uuid+" keydown.ke"+d.uuid,function(){$(d.edit.doc).find("table").removeClass("ke-select-row ke-select-col").find(".ke-select-cell").removeClass("ke-select-cell")}),$(document).on("mouseup.ke"+d.uuid,function(){o()}),$(d.edit.doc.head).append([""].join(""));var r=d.cmd.toggle,l=function(e,t,n){var i=this;return void 0!==n&&null!==n||(n=i.commonNode(t)),n?i.remove(t):i.wrap(e),i.select()},s=function(e,t,n){var i=d.cmd.range;if(i&&i.endContainer){var a=$(i.endContainer).closest("th,td");if(!a.length)return;var o=a.closest("table");if(!o.length)return;var r=o.children("thead,tbody,tfoot").children("tr").children(".ke-select-cell");if(r.length)return t&&t(a,o),r.each(e),n&&n(a,o),i.selectNodeContents(a[0]),d.cmd.select(),d.focus(),!0}};d.cmd.toggle=function(e,t){var n;if(!s(function(){d.cmd.range.selectNodeContents(this),d.cmd.select(),l.call(d.cmd,e,t,n)},function(e){d.cmd.range.selectNodeContents(e[0]),d.cmd.select(),n=!!d.cmd.commonNode(t)}))return r.call(d.cmd,e,t)};var c=",justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,",u=d.clickToolbar;d.clickToolbar=function(e,t){if(!(void 0===t&&c.indexOf(","+e+",")>-1&&s(function(){d.cmd.range.selectNode(this),d.cmd.select(),u.call(d,e,t)})))return u.call(d,e,t)}}),d.beforeRemove(function(){$(d.edit.doc.body).off(".ke"+d.uuid),$(document).off(".ke"+d.uuid)})}),KindEditor.lang({table:KindEditor.lang("table")}); \ No newline at end of file +"string"==typeof e&&(e=e.replace(" ","").split(",")),this.settings.http_success=e,this.callFlash("SetHTTPSuccess",[e])},SWFUpload.prototype.setAssumeSuccessTimeout=function(e){this.settings.assume_success_timeout=e,this.callFlash("SetAssumeSuccessTimeout",[e])},SWFUpload.prototype.setDebugEnabled=function(e){this.settings.debug_enabled=e,this.callFlash("SetDebugEnabled",[e])},SWFUpload.prototype.setButtonImageURL=function(e){void 0==e&&(e=""),this.settings.button_image_url=e,this.callFlash("SetButtonImageURL",[e])},SWFUpload.prototype.setButtonDimensions=function(e,t){this.settings.button_width=e,this.settings.button_height=t;var n=this.getMovieElement();void 0!=n&&(n.style.width=e+"px",n.style.height=t+"px"),this.callFlash("SetButtonDimensions",[e,t])},SWFUpload.prototype.setButtonText=function(e){this.settings.button_text=e,this.callFlash("SetButtonText",[e])},SWFUpload.prototype.setButtonTextPadding=function(e,t){this.settings.button_text_top_padding=t,this.settings.button_text_left_padding=e,this.callFlash("SetButtonTextPadding",[e,t])},SWFUpload.prototype.setButtonTextStyle=function(e){this.settings.button_text_style=e,this.callFlash("SetButtonTextStyle",[e])},SWFUpload.prototype.setButtonDisabled=function(e){this.settings.button_disabled=e,this.callFlash("SetButtonDisabled",[e])},SWFUpload.prototype.setButtonAction=function(e){this.settings.button_action=e,this.callFlash("SetButtonAction",[e])},SWFUpload.prototype.setButtonCursor=function(e){this.settings.button_cursor=e,this.callFlash("SetButtonCursor",[e])},SWFUpload.prototype.queueEvent=function(e,t){void 0==t?t=[]:t instanceof Array||(t=[t]);var n=this;if("function"==typeof this.settings[e])this.eventQueue.push(function(){this.settings[e].apply(this,t)}),setTimeout(function(){n.executeNextEvent()},0);else if(null!==this.settings[e])throw"Event handler "+e+" is unknown or is not a function"},SWFUpload.prototype.executeNextEvent=function(){var e=this.eventQueue?this.eventQueue.shift():null;"function"==typeof e&&e.apply(this)},SWFUpload.prototype.unescapeFilePostParams=function(e){var t,n=/[$]([0-9a-f]{4})/i,i={};if(void 0!=e){for(var a in e.post)if(e.post.hasOwnProperty(a)){t=a;for(var o;null!==(o=n.exec(t));)t=t.replace(o[0],String.fromCharCode(parseInt("0x"+o[1],16)));i[t]=e.post[a]}e.post=i}return e},SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(e){return!1}},SWFUpload.prototype.flashReady=function(){var e=this.getMovieElement();return e?(this.cleanUp(e),void this.queueEvent("swfupload_loaded_handler")):void this.debug("Flash called back ready but the flash movie can't be found.")},SWFUpload.prototype.cleanUp=function(e){try{if(this.movieElement&&"unknown"==typeof e.CallFunction){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var t in e)try{"function"==typeof e[t]&&(e[t]=null)}catch(n){}}}catch(i){}window.__flash__removeCallback=function(e,t){try{e&&(e[t]=null)}catch(n){}}},SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")},SWFUpload.prototype.fileQueued=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("file_queued_handler",e)},SWFUpload.prototype.fileQueueError=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("file_queue_error_handler",[e,t,n])},SWFUpload.prototype.fileDialogComplete=function(e,t,n){this.queueEvent("file_dialog_complete_handler",[e,t,n])},SWFUpload.prototype.uploadStart=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("return_upload_start_handler",e)},SWFUpload.prototype.returnUploadStart=function(e){var t;if("function"==typeof this.settings.upload_start_handler)e=this.unescapeFilePostParams(e),t=this.settings.upload_start_handler.call(this,e);else if(void 0!=this.settings.upload_start_handler)throw"upload_start_handler must be a function";void 0===t&&(t=!0),t=!!t,this.callFlash("ReturnUploadStart",[t])},SWFUpload.prototype.uploadProgress=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_progress_handler",[e,t,n])},SWFUpload.prototype.uploadError=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_error_handler",[e,t,n])},SWFUpload.prototype.uploadSuccess=function(e,t,n){e=this.unescapeFilePostParams(e),this.queueEvent("upload_success_handler",[e,t,n])},SWFUpload.prototype.uploadComplete=function(e){e=this.unescapeFilePostParams(e),this.queueEvent("upload_complete_handler",e)},SWFUpload.prototype.debug=function(e){this.queueEvent("debug_handler",e)},SWFUpload.prototype.debugMessage=function(e){if(this.settings.debug){var t,n=[];if("object"==typeof e&&"string"==typeof e.name&&"string"==typeof e.message){for(var i in e)e.hasOwnProperty(i)&&n.push(i+": "+e[i]);t=n.join("\n")||"",n=t.split("\n"),t="EXCEPTION: "+n.join("\nEXCEPTION: "),SWFUpload.Console.writeLine(t)}else SWFUpload.Console.writeLine(e)}},SWFUpload.Console={},SWFUpload.Console.writeLine=function(e){var t,n;try{t=document.getElementById("SWFUpload_Console"),t||(n=document.createElement("form"),document.getElementsByTagName("body")[0].appendChild(n),t=document.createElement("textarea"),t.id="SWFUpload_Console",t.style.fontFamily="monospace",t.setAttribute("wrap","off"),t.wrap="off",t.style.overflow="auto",t.style.width="700px",t.style.height="350px",t.style.margin="5px",n.appendChild(t)),t.value+=e+"\n",t.scrollTop=t.scrollHeight-t.clientHeight}catch(i){alert("Exception: "+i.name+" Message: "+i.message)}}}(),function(){"function"==typeof SWFUpload&&(SWFUpload.queue={},SWFUpload.prototype.initSettings=function(e){return function(){"function"==typeof e&&e.call(this),this.queueSettings={},this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0,this.queueSettings.user_upload_complete_handler=this.settings.upload_complete_handler,this.queueSettings.user_upload_start_handler=this.settings.upload_start_handler,this.settings.upload_complete_handler=SWFUpload.queue.uploadCompleteHandler,this.settings.upload_start_handler=SWFUpload.queue.uploadStartHandler,this.settings.queue_complete_handler=this.settings.queue_complete_handler||null}}(SWFUpload.prototype.initSettings),SWFUpload.prototype.startUpload=function(e){this.queueSettings.queue_cancelled_flag=!1,this.callFlash("StartUpload",[e])},SWFUpload.prototype.cancelQueue=function(){this.queueSettings.queue_cancelled_flag=!0,this.stopUpload();for(var e=this.getStats();e.files_queued>0;)this.cancelUpload(),e=this.getStats()},SWFUpload.queue.uploadStartHandler=function(e){var t;return"function"==typeof this.queueSettings.user_upload_start_handler&&(t=this.queueSettings.user_upload_start_handler.call(this,e)),t=t!==!1,this.queueSettings.queue_cancelled_flag=!t,t},SWFUpload.queue.uploadCompleteHandler=function(e){var t,n=this.queueSettings.user_upload_complete_handler;if(e.filestatus===SWFUpload.FILE_STATUS.COMPLETE&&this.queueSettings.queue_upload_count++,t="function"==typeof n?n.call(this,e)!==!1:e.filestatus!==SWFUpload.FILE_STATUS.QUEUED){var i=this.getStats();i.files_queued>0&&this.queueSettings.queue_cancelled_flag===!1?this.startUpload():this.queueSettings.queue_cancelled_flag===!1?(this.queueEvent("queue_complete_handler",[this.queueSettings.queue_upload_count]),this.queueSettings.queue_upload_count=0):(this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0)}})}(),KindEditor.plugin("pagebreak",function(e){var t=this,n="pagebreak",i=e.undef(t.pagebreakHtml,'
    ');t.clickToolbar(n,function(){var n=t.cmd,a=n.range;t.focus();var o="br"==t.newlineTag||e.WEBKIT?"":'';if(t.insertHtml(i+o),""!==o){var r=e("#__kindeditor_tail_tag__",t.edit.doc);a.selectNodeContents(r[0]),r.removeAttr("id"),n.select()}})}),KindEditor.plugin("plainpaste",function(e){var t=this,n="plainpaste";t.clickToolbar(n,function(){var i=t.lang(n+"."),a='
    '+i.comment+'
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=r.val();i=e.escape(i),i=i.replace(/ {2}/g,"  "),i="p"==t.newlineTag?i.replace(/^/,"

    ").replace(/$/,"

    ").replace(/\n/g,"

    "):i.replace(/\n/g,"
    $&"),t.insertHtml(i).hideDialog().focus()}}}),r=e("textarea",o.div);r[0].focus()})}),KindEditor.plugin("preview",function(e){var t=this,n="preview";t.clickToolbar(n,function(){var i=(t.lang(n+"."),'

    '),a=t.createDialog({name:n,width:750,title:t.lang(n),body:i}),o=e("iframe",a.div),r=e.iframeDoc(o);r.open(),r.write(t.fullHtml()),r.write("");var l=t.options.cssData,s=t.options.cssPath,d=t.options.bodyClass;e.isArray(s)||(s=[s]),e.each(s,function(e,t){t&&r.write('')}),l&&r.write(""),r.close();var c=e(r.body).css("background-color","#FFF");d&&c.addClass(d),o[0].contentWindow.focus()})}),KindEditor.plugin("quickformat",function(e){function t(e){for(var t=e.first();t&&t.first();)t=t.first();return t}var n=this,i="quickformat",a=e.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");n.clickToolbar(i,function(){n.focus();for(var i,o=n.edit.doc,r=n.cmd.range,l=e(o.body).first(),s=[],d=[],c=r.createBookmark(!0);l;){i=l.next();var u=t(l);u&&"img"==u.name||(a[l.name]?(l.html(l.html().replace(/^(\s| | )+/gi,"")),l.css("text-indent","2em")):d.push(l),(!i||a[i.name]||a[l.name]&&!a[i.name])&&(d.length>0&&s.push(d),d=[])),l=i}e.each(s,function(t,n){var i=e('

    ',o);n[0].before(i),e.each(n,function(e,t){i.append(t)})}),r.moveToBookmark(c),n.addBookmark()})}),KindEditor.plugin("template",function(e){function t(t){return a+t+"?ver="+encodeURIComponent(e.DEBUG?e.TIME:e.VERSION)}var n=this,i="template",a=(n.lang(i+"."),n.pluginsPath+i+"/html/");n.clickToolbar(i,function(){var a=n.lang(i+"."),o=['
    ','
    ','
    ',a.selectTemplate+"
    ",'
    ',' ","
    ",'
    ',"
    ",'',"
    "].join("");var r=n.createDialog({name:i,width:500,title:n.lang(i),body:html,yesBtn:{name:n.lang("yes"),click:function(t){var i=e.iframeDoc(d);n[s[0].checked?"html":"insertHtml"](i.body.innerHTML).hideDialog().focus()}}}),l=e("select",r.div),s=e('[name="replaceFlag"]',r.div),d=e("iframe",r.div);s[0].checked=!0,d.attr("src",t(l.val())),l.change(function(){d.attr("src",t(this.value))})})}),KindEditor.plugin("wordpaste",function(e){var t=this,n="wordpaste";t.clickToolbar(n,function(){var i=t.lang(n+"."),a='
    '+i.comment+'
    ',o=t.createDialog({name:n,width:450,title:t.lang(n),body:a,yesBtn:{name:t.lang("yes"),click:function(n){var i=s.body.innerHTML;i=e.clearMsWord(i,t.filterMode?t.htmlTags:e.options.htmlTags),t.insertHtml(i).hideDialog().focus()}}}),r=o.div,l=e("iframe",r),s=e.iframeDoc(l);e.IE||(s.designMode="on"),s.open(),s.write("WordPaste"),s.write(''),e.IE||s.write("
    "),s.write(""),s.close(),e.IE&&(s.body.contentEditable="true"),l[0].contentWindow.focus()})}),$.each(["afterBlur","afterFocus","afterChange","afterTab"],function(e,t){KindEditor.EditorClass.prototype[t]=function(e){return this.handler(t,e)}}),KindEditor.plugin("zui",function(e){var t=this,n=t.options;if(t.uuid=$.zui.uuid(),t.afterBlur(function(){n.syncAfterBlur&&t.sync(),t.container.removeClass("focus")}),t.afterFocus(function(){t.container.addClass("focus")}),t.afterChange(function(){t.edit.srcElement.change().hide()}),t.afterCreate(function(){$(t.edit.srcElement[0]).data("keditor",t);var e=n.spellcheck;void 0!==e&&t.edit.doc.documentElement.setAttribute("spellcheck",e);var i=n.transferEvents;i!==!1&&$(t.edit.doc).on("string"==typeof i?i:"click mousedown",function(e){$(t.edit.srcElement[0]).trigger(e.type)})}),n.transferTab!==!1){var i='input:not([type="hidden"]), textarea:not(.ke-edit-textarea), button[type="submit"], select';t.afterTab(function(){var e=$(t.edit.srcElement[0]),n=e.next(i);if(n.length||(n=e.next().next(i)),n.length||(n=e.parent().next().find(i)),n.length||(n=e.parent().parent().next().find(i)),n=n.first(),n.length){var a=n.data("keditor");return a?a.focus():n.focus(),!0}return!0})}}),KindEditor.EditorClass.prototype.setPlaceholder=function(e,t){var n=this,i=n.options,a=$(n.edit.div[0]),o=a.find(".kindeditor-ph");o.length||(a.css("position","relative"),o=$('
    '),i.placeholderStyle&&o.css(i.placeholderStyle),a.append(o)),n.plugin.hasContent()&&o.hide(),o[t?"html":"text"](e),n.$placeholder=o},KindEditor.EditorClass.prototype.getPlaceholder=function(e){return this.$placeholder?this.$placeholder[e?"html":"text"]():""},KindEditor.plugin("placeholder",function(e){var t=this;t.plugin.hasContent=function(){return""!==t.html().replace(/\s|\n|\r|\t/g,"").replace(//g,"").replace(/

    <\/p>/g,"")},t.afterBlur(function(){t.plugin.hasContent()||t.$placeholder&&t.$placeholder.show()}),t.afterFocus(function(){t.$placeholder&&t.$placeholder.hide()}),t.afterCreate(function(){var e=t.options;e.placeholderHtml?t.setPlaceholder(e.placeholderHtml,!0):e.placeholder&&t.setPlaceholder(e.placeholder)})}),KindEditor.plugin("pasteimage",function(e){var t=this,n={zh_cn:{notSupportMsg:"您的浏览器不支持粘贴图片!",placeholder:"可以在编辑器直接贴图。",failMsg:"贴图失败,请稍后重试。",uploadingHint:"正在上传图片,请稍后..."},zh_tw:{notSupportMsg:"您的瀏覽器不支持粘貼圖片!",placeholder:"可以在編輯器直接貼圖。",failMsg:"貼圖失敗,請稍後重試。",uploadingHint:"正在上傳圖片,請稍後..."},en:{notSupportMsg:"Image is not allowed to paste in your browser!",placeholder:"You can paste images in the editor.",failMsg:"Pasting image failed. Try again later.",uploadingHint:"Uploading..."}};t.afterCreate(function(){var i=t.edit,a=i.doc,o=t.uuid,r=t.options.pasteImage;if(r){"string"==typeof r&&(r={postUrl:r});var l=$.clientLang?$.clientLang():$.zui&&$.zui.clientLang?$.zui.clientLang():"en",s=$.extend({},$.zui&&$.zui.getLangData?$.zui.getLangData("kindeditor.advanceTable",l,n):$.extend({},n.en,t.lang("table."),n[l]),r.lang);if(e.WEBKIT||e.GECKO||$(a.body).on("keyup.ke"+o,function(e){86==e.keyCode&&e.ctrlKey&&alert(s.notSupportMsg)}),t.setPlaceholder){var d=r.placeholder;if(d===!0&&(d=s.placeholder),d){var c=t.getPlaceholder();c?c.indexOf(d)<0&&(d=c+"\n"+d):c=d,t.setPlaceholder(d)}}var u=function(){r.beforePaste&&r.beforePaste();var e='

    '+s.uploadingHint+"
    ";t.readonly(!0),$.fn.enableForm&&$(t.edit.div[0]).closest("form").enableForm(!1),t.cmd.inserthtml(e)},p=function(e){e&&(r.onError?r.onError(e):(e===!0&&(e=s.failMsg),$.zui&&$.zui.messager&&$.zui.messager.danger(e,{placement:"center"}))),r.afterPaste&&r.afterPaste(),t.readonly(!1),$.fn.enableForm&&$(t.edit.div[0]).closest("form").enableForm(!0)},h=r.postUrl;$(a.body).on("paste.ke"+o,function(n){if(e.WEBKIT){var o=n.originalEvent,r=o.clipboardData&&o.clipboardData.items,l=null;if(r)for(var s=/^image\/(p?jpeg|gif|png)$/i,d=0;d';$.post(h,{editor:a},function(e){if(t.undo(),t._redoStack.pop(),e){var a=$(e);i.cmd.insertimage(a.attr("src"),a.attr("title"),a.attr("width"),a.attr("height"))}else i.cmd.insertimage(n);p()}).error(function(){p(!0)})},f.readAsDataURL(c)}else setTimeout(function(){var n=e(a.body).html();n.search(/"),t.undo(),t._redoStack.pop(),i.html(e),p()}).error(function(){p(!0)}))},80)}),t.beforeRemove(function(){$(a.body).off(".ke"+o)})}})}),function(e){function t(t){var n=[],i=0,a=0;t.children("thead,tbody,tfoot").children("tr").each(function(t,o){e(o).children("td,th").each(function(o,r){var l,s,d=e(r),c=0|d.attr("colspan"),u=0|d.attr("rowspan");for(c=c?c:1,u=u?u:1;n[t]&&n[t][o];++o);for(l=o;ltr"),a=i.filter(function(){return!!this.style.backgroundColor}).length;t.stripedRows=a>=Math.floor(i.length/2)}return t}function r(t,n,i){if(!n){var a=d.plugin.getSelectedTable();n=$(a[0])}if(n&&n.length){if(t=o(n,t),n.data("tableSetting",t),void 0!==t.header){if(n.is(".ke-plugin-table-example"))n.find("thead").toggleClass("hidden",!t.header);else{var r=n.find("thead");if(t.header){if(!r.length){var l=["
    "],s=n.find("tbody>tr:first").children(),c=0;s.each(function(){var e=$(this),t=e.attr("colspan");c+=t?parseInt(t):1});for(var u=0;u'+(e.IE?" ":"
    ")+"");l.push("
    "),r=$(l.join("")),n.prepend(r)}}else r.remove()}i&&i("header",t.header)}if(void 0!==t.stripedRows){var p=n.find("tbody>tr");p.each(function(e){$(this).css("background-color",t.stripedRows&&e%2===0?"#f9f9f9":"")}),i&&i("stripedRows",t.stripedRows)}void 0!==t.autoWidth&&(n.css(t.autoWidth?{width:"auto",maxWidth:"100%"}:{width:"100%"}),i&&i("autoWidth",t.autoWidth)),void 0!==t.borderColor&&(n.find("td,th").css("border-color",t.borderColor),i&&i("borderColor",t.borderColor))}}function l(t,n,i,a){if(t*n){for(var o="ke-table-"+d.tableIdIndex++,r=$('
    '),l=$(""),s=0;s"),u=0;u'+(e.IE?" ":"
    ")+"");c.append(p)}l.append(c)}r.append(l);var h=$("
    ").append(r).html();e.IE||(h+="
    "),d.insertHtml(h);var r=$(d.edit.doc).find("#"+o);return r.attr("id",null),d.cmd.range.selectNodeContents(r.find("th,td").first()[0]).collapse(!0),d.cmd.select(),d.addBookmark(),r}}function s(i){for(var a=$(i[0]),l=[""],s=[""],u=0;u<6;++u){l.push('{tableHead}'),s.push("");for(var p=0;p<6;++p)s.push('{tableContent}');s.push("")}l.push(""),s.push("");var h=['
    ','
    ','
    ','
    ',"",'
    ','
    ',"
    ",'
    ',"",'
    ','
    ',"
    ",'
    ',"",'
    ','{borderColor}','',"
    ","
    ","
    ",'
    ','',l.join(""),s.join(""),"
    ","","",""].join("").format(f),g=$(h),v=g.find(".ke-plugin-table-example"),_=d.cmd.range.createBookmark(),b=g.find(".ke-plugin-table-input-color"),y=e(b[0]);g.on("change.kTable","input[name]",function(){var e=$(this),t={};t[e.attr("name")]=e.is('[type="checkbox"]')?e.is(":checked"):e.val(),r(t,v)});var k=d.createDialog({name:c+"Dialog",width:550,title:d.lang(c),body:g[0],beforeRemove:function(){g.off(".kTable")},yesBtn:{name:d.lang("yes"),click:function(e){r({borderColor:g.find('[name="borderColor"]').val(),header:g.find('[name="header"]').is(":checked"),stripedRows:g.find('[name="stripedRows"]').is(":checked"),hoverRows:g.find('[name="hoverRows"]').is(":checked"),autoWidth:g.find('[name="autoWidth"]:checked').val()},a),d.hideDialog().focus(),d.cmd.range.moveToBookmark(_),d.cmd.select(),d.addBookmark()}}});n(k.div,y,function(e){r({borderColor:e},v)}),r(o(a),v,function(e,n){switch(e){case"borderColor":t(y,n||m);break;case"header":g.find('[name="header"]').prop("checked",!!n);break;case"stripedRows":g.find('[name="stripedRows"]').prop("checked",!!n);break;case"hoverRows":g.find('[name="hoverRows"]').prop("checked",!!n);break;case"autoWidth":g.find('[name="autoWidth"][value="'+(n?"auto":"")+'"]').prop("checked",!0)}})}var d=this,c="table",u={zh_cn:{name:"表格",xRxC:"{0}行 × {1}列",headerRow:"标题行",headerCol:"标题列",tableStyle:"表格样式",addHeaderRow:"添加表格标题行",stripedRows:"隔行变色效果",hoverRows:"鼠标悬停效果",autoChangeTableWidth:"自动调整表格尺寸",tableWidthFixed:"按表格文字自适应",tableWidthFull:"按页面宽度自适应",tableBorder:"表格边框",tableHead:"标题",tableContent:"内容",mergeCells:"合并单元格",defaultColor:"默认颜色",color:"颜色",forecolor:"文字颜色",backcolor:"背景颜色",invalidBoderWidth:"边框大小必须为数字。"},zh_tw:{name:"表格",xRxC:"{0}行×{1}列",headerRow:"標題行",headerCol:"標題列",tableStyle:"表格樣式",addHeaderRow:"添加表格標題行",stripedRows:"隔行變色效果",hoverRows:"鼠標懸停效果",autoChangeTableWidth:"自動調整表格尺寸",tableWidthFixed:"按表格文字自適應",tableWidthFull:"按頁面寬度自適應",tableBorder:"表格邊框",tableHead:"標題",tableContent:"內容",mergeCells:"合併單元格",defaultColor:"默認顏色",color:"顏色",forecolor:"文字顏色",backcolor:"背景顏色",invalidBoderWidth:"邊框大小必須為數字。"},en:{name:"Table",xRxC:"{0} Rows × {1} Columns",headerRow:"Header Row",headerCol:"Header Column",tableStyle:"Table style",addHeaderRow:"Add header row",stripedRows:"Striped effection",hoverRows:"Mouse hover effection",autoChangeTableWidth:"Automatically adjust table size",tableWidthFixed:"Adaptive by form text",tableWidthFull:"Page width adaptive",tableBorder:"Table border",tableHead:"Title",tableContent:"Text",mergeCells:"Merge Cells",defaultColor:"Default color",color:"Color",forecolor:"Text Color",backcolor:"Back Color",invalidBoderWidth:"Border width value must be number"}},p=[],h=$.clientLang?$.clientLang():$.zui&&$.zui.clientLang?$.zui.clientLang():"en",f=$.zui&&$.zui.getLangData?$.extend({},d.lang("table."),$.zui.getLangData("kindeditor.advanceTable",h,u)):$.extend({},u.en,d.lang("table."),u[h]),m=d.options.tableBorderColor||"#ddd";d.tableIdIndex=0;var g=[];if(!d.plugin.table){d.plugin.table={prop:function(){var e=d.plugin.getSelectedTable();e&&e.length&&s(e)},cellprop:function(){var i,a,o,r,r,l,s,u,p,h=['
    ','
    ','",'
    ','
    ',''+f.width+"",'','','","
    ","
    ",'
    ','
    ',''+f.height+"",'','','","
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.textAlign+"",'","
    ","
    ",'
    ','
    ',''+f.verticalAlign+"",'","
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.borderColor+"",'',"
    ","
    ",'
    ','
    ',''+f.size+"",'','px',"
    ","
    ","
    ",'
    ','",'
    ','
    ',''+f.forecolor+"",'',"
    ","
    ",'
    ','
    ',''+f.backcolor+"",'',"
    ","
    ","
    ","
    "].join(""),g=d.cmd.range.createBookmark(),v=d.createDialog({name:c,width:500,title:d.lang("tablecell"),body:h,beforeRemove:function(){u.unbind()},yesBtn:{name:d.lang("yes"),click:function(t){var n=a.val(),i=o.val(),c=r.val(),h=heightTypeBox.val(),m=l.val(),v=s.val(),_=p.val(),b=e(u[0]).val()||"",y=e(u[1]).val()||"",k=e(u[2]).val()||"";if(!/^\d*$/.test(n))return alert(d.lang("invalidWidth")),void a[0].focus();if(!/^\d*$/.test(i))return alert(d.lang("invalidHeight")),void o[0].focus();if(!/^\d*$/.test(_))return alert(f.invalidBoderWidth),void p[0].focus();for(var w=d.plugin.getAllSelectedCells(),C={width:""!==n?n+c:"",height:""!==i?i+h:"","background-color":k,"text-align":m,"border-width":_+"px","vertical-align":v,"border-color":b,color:y},S=0;S1?' rowspan="'+h.rowSpan+'"':"")+(h.colSpan>1?' colspan="'+h.colSpan+'"':"")+' style="'+(f?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+"",h=p.cells[l],l=i(n,p,h)}d.cmd.range.selectNodeContents(r).collapse(!0),d.addBookmark(),d.focus()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(t){var n=d.plugin.getSelectedTable()[0],i=d.plugin.getSelectedRow()[0],a=d.plugin.getSelectedCell()[0],l=n.rows[0],s=o($(n)),c=i.rowIndex;1===t&&(c=i.rowIndex+(a.rowSpan-1)+t);for(var u=n.insertRow(c),p="THEAD"===u.parentNode.tagName,h=0,f=l.cells.length;h1&&(f+=g.rowSpan-1);var v=u.insertCell(h);v.outerHTML="<"+(p?"th":"td")+(v.rowSpan>1?' rowspan="'+v.rowSpan+'"':"")+(v.colSpan>1?' colspan="'+v.colSpan+'"':"")+' style="'+(p?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+""}for(var _=c;_>=0;_--){var b=n.rows[_].cells;if(b.length>h){for(var y=a.cellIndex;y>=0;y--)b[y].rowSpan>1&&(b[y].rowSpan+=1);break}}r(null,$(n)),d.cmd.range.selectNodeContents(a).collapse(!0), +d.addBookmark(),d.focus()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1)},rowmerge:function(){var e=d.plugin.getSelectedTable()[0],t=d.plugin.getSelectedRow()[0],n=d.plugin.getSelectedCell()[0],i=t.rowIndex,a=i+n.rowSpan,o=e.rows[a];if(!(e.rows.length<=a)){var r=n.cellIndex;if(!(o.cells.length<=r)){var l=o.cells[r];n.colSpan===l.colSpan&&(n.rowSpan+=l.rowSpan,o.deleteCell(r),d.cmd.range.selectNodeContents(n).collapse(!0),d.addBookmark(),d.focus())}}},colmerge:function(){var e=d.plugin.getSelectedTable()[0],t=d.plugin.getSelectedRow()[0],n=d.plugin.getSelectedCell()[0],i=(t.rowIndex,n.cellIndex),a=i+1;if(!(t.cells.length<=a)){var o=t.cells[a];n.rowSpan===o.rowSpan&&(n.colSpan+=o.colSpan,t.deleteCell(a),r(null,$(e)),d.cmd.range.selectNodeContents(n).collapse(!0),d.addBookmark(),d.focus())}},mergeCells:function(){var e=d.tableSelectionRange;if(e){var t,n=d.plugin.getSelectedTable()[0],i=$(n),a=e.top,o=e.left,l=e.right,s=e.bottom;i.children("thead,tbody,tfoot").children("tr").each(function(){$(this).children("td,th").each(function(){var e=$(this),n=e.cellPos();n.left===o&&n.top===a?t=e:n.right>=o&&n.left<=l&&n.bottom>=a&&n.top<=s&&e.addClass("ke-cell-removed")})}),t&&(t.attr({rowspan:s-a+1,colspan:l-o+1}),i.find(".ke-cell-removed").remove(),r(null,i),d.cmd.range.selectNodeContents(t[0]).collapse(!0),d.addBookmark(),d.focus())}},rowsplit:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getSelectedRow()[0],a=d.plugin.getSelectedCell()[0],l=n.rowIndex,s=o($(t));if(1!==a.rowSpan){for(var c=i(t,n,a),u=1,p=a.rowSpan;u1?a.colSpan:f.colSpan;f.outerHTML="<"+(g?"th":"td")+(f.rowSpan>1?' rowspan="'+f.rowSpan+'"':"")+(v>1?' colspan="'+v+'"':"")+' style="'+(g?"background-color: #f1f1f1;":"")+"border: 1px solid "+(s&&s.borderColor||m)+'">'+(e.IE?" ":"
    ")+"",a.colSpan>1&&(f.colSpan=a.colSpan),c=i(t,h,f)}e(a).removeAttr("rowSpan"),r(null,$(t)),d.cmd.range.selectNodeContents(a).collapse(!0),d.addBookmark(),d.focus()}},colsplit:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getSelectedRow()[0],i=d.plugin.getSelectedCell()[0],a=i.cellIndex,l=o($(t));if(1!==i.colSpan){for(var s="THEAD"===n.parentNode.tagName,c=1,u=i.colSpan;c1?i.rowSpan:p.rowSpan,f=p.colSpan;p.outerHTML="<"+(s?"th":"td")+(h>1?' rowspan="'+h+'"':"")+(f>1?' colspan="'+f+'"':"")+' style="'+(s?"background-color: #f1f1f1;":"")+"border: 1px solid "+(l&&l.borderColor||m)+'">'+(e.IE?" ":"
    ")+""}e(i).removeAttr("colSpan"),r(null,$(t)),d.cmd.range.selectNodeContents(i).collapse(!0),d.addBookmark(),d.focus()}},coldelete:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getAllSelectedCells();if(n.length){for(var i=0;i1?(u.colSpan-=1,1===u.colSpan&&e(u).removeAttr("colSpan")):c.deleteCell(r),u.rowSpan>1&&(l+=u.rowSpan-1))}if(0===o.cells.length){d.cmd.range.setStartBefore(t).collapse(!0),e(t).remove();break}}}t.parentNode&&d.cmd.selection(!0),d.addBookmark(),d.focus()}},rowdelete:function(){var t=d.plugin.getSelectedTable()[0],n=d.plugin.getAllSelectedCells();if(n.length){for(var i=0;i=0;l--)t.deleteRow(o.rowIndex+l)}0===t.rows.length?(d.cmd.range.setStartBefore(t).collapse(!0),e(t).remove()):(r(null,$(t)),d.cmd.selection(!0)),d.addBookmark(),d.focus()}}},d.plugin.getSelectedTable=function(){return e($(d.cmd.range.startContainer).closest("table")[0])},d.plugin.getSelectedRow=function(){return e($(d.cmd.range.startContainer).closest("tr")[0])},d.plugin.getSelectedCell=function(){return e($(d.cmd.range.startContainer).closest("td,th")[0])},d.plugin.getSelectedCells=function(){var t=d.plugin.getSelectedTable();if(t&&t.length){var n=e(".ke-select-cell",t.get(0));if(n&&n.length>1)return n}},d.plugin.getSingleSelectedCell=function(){var e=d.plugin.getSelectedCells();if(!(e&&e.length>1))return d.plugin.getSelectedCell()},d.plugin.getAllSelectedCells=function(){var e=d.plugin.getSelectedCells();return e&&e.length?e:d.plugin.getSelectedCell()};var v={mergeCells:"ke-icon-tablecolmerge"};e.each("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,mergeCells,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,delete".split(","),function(t,n){var i;i="prop"===n||"delete"===n?d.plugin.getSelectedTable:"mergeCells"===n?d.plugin.getSelectedCells:"rowmerge"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.length&&$(e.get(0)).parent().next("tr").length)return e}:"colmerge"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.length&&$(e.get(0)).next("th,td").length)return e}:"rowsplit"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.get(0).rowSpan>1)return e}:"colsplit"===n?function(){var e=d.plugin.getSingleSelectedCell();if(e&&e.get(0).colSpan>1)return e}:e.inArray(n,["colinsertleft","colinsertright","rowinsertabove","rowinsertbelow"])>-1?d.plugin.getSingleSelectedCell:d.plugin.getSelectedCell,d.addContextmenu({title:f[n]||d.lang("table"+n),click:function(){d.plugin.table[n](),d.hideMenu()},cond:i,width:170,iconClass:v[n]||"ke-icon-table"+n})})}d.clickToolbar(c,function(){if(!d.menu){var e=d.createMenu({name:c,beforeRemove:function(){a()}}),t=$('
    '),n=$('
    '+f.xRxC.format(0,0)+"
    ");t.append(n);var i=$('
    ');i.on("mouseenter.kTable",".ke-plugin-table-grid-cell",function(){var e=$(this),t=e.data("row"),a=e.data("col");n.text(f.xRxC.format(t,a));var o=i.find(".ke-plugin-table-grid-cell");o.each(function(){var e=$(this),n=e.data("row"),i=e.data("col");n<=t&&i<=a?e.css({border:"1px solid #2286d2",background:"#eff7ff"}):e.css({border:"1px solid #ddd",background:"#f1f1f1"})})}).on("click.kTable",".ke-plugin-table-grid-cell",function(e){var t=$(this),n=t.data("row"),i=t.data("col");l(n,i),d.hideMenu().focus(),d.addBookmark(),e.stopPropagation()});for(var o=1;o<11;o++)for(var r=1;r<11;r++)i.append('
    ');p.push(i),t.append(i),e.div.append(t[0])}}),d.afterTab(function(e){var t=d.plugin.getSelectedCell();if(t&&t.length){var n=function(e){if(e.length){var t=e.next();if(t.is("td,th")||(t=e.parent().next("tr").children("th,td").first()),t.is("td,th")||(t=e.closest("tbody,tfoot,thead").next().children("tr").first().children("th,td").first()),t.length)return d.cmd.range.selectNodeContents(t[0]).collapse(!0),d.cmd.select(),!0}return!1},i=$(t.get(0));if(i.length)return d.focus(),n(i)||(d.plugin.table.rowinsertbelow(),n(i)),!0}return e});var _=function(e,t,n){var i=n?Math.min(t.top,n.top):t.top,a=n?Math.min(t.left,n.left):t.left,o=n?Math.max(t.bottom,n.bottom):t.bottom,r=n?Math.max(t.right,n.right):t.right;if(i===o&&a===r)return!1;for(var l=!1,s=!1,c=e.children("thead,tbody,tfoot").children("tr").each(function(){$(this).children("td,th").each(function(){var e=$(this),t=e.cellPos();t.right>=a&&t.left<=r&&t.bottom>=i&&t.top<=o&&(i=Math.min(i,t.top),a=Math.min(a,t.left),o=Math.max(o,t.bottom),r=Math.max(r,t.right),e.addClass("ke-select-cell"),l=!0,s=!0)})});s;)s=!1,c.each(function(){$(this).children("td,th").each(function(){var e=$(this);if(!e.hasClass("ke-select-cell")){var t=e.cellPos();t.right>=a&&t.left<=r&&t.bottom>=i&&t.top<=o&&(i=Math.min(i,t.top),a=Math.min(a,t.left),o=Math.max(o,t.bottom),r=Math.max(r,t.right),e.addClass("ke-select-cell"),s=!0)}})});var u=e.find(".ke-select-cell");return 1===u.length&&(u.removeClass("ke-select-cell"),l=!1),l?d.tableSelectionRange={top:i,left:a,bottom:o,right:r}:d.tableSelectionRange=null,l},b=function(e,t){return _(e,{left:0,right:e.data("tableSize").width-1,top:t,bottom:t})},y=function(e,t){return _(e,{left:t,right:t,top:0,bottom:e.data("tableSize").height-1})};d.afterCreate(function(){var e=!1,t=null,n=null,i=null,a=null,o=function(){e=!1,t=null,a=null};$(d.edit.doc.body).on("mousedown.ke"+d.uuid,function(n){var a=$(n.target).closest("td,th"),o=a.closest("table"),r=!1;a.length&&o.length&&(t=o,e=!0,i=a.cellPos(!0),r=3===n.which,o.removeClass("ke-select-cells")),r||($(d.edit.doc).find(".ke-select-cell").removeClass("ke-select-cell"),d.tableSelectionRange=null)}).on("mousemove.ke"+d.uuid,function(o){var r=$(o.target).closest("td,th");if(!r.length)return e?o.preventDefault():null;var l=r.closest("table");if(!l.length)return e?o.preventDefault():null;if(l.removeClass("ke-select-row ke-select-col ke-select-cells"),a=r.cellPos(),e){if(l[0]!==t[0])return o.preventDefault();$(d.edit.doc).find("table").find(".ke-select-cell").removeClass("ke-select-cell"),_(l,i,a)&&(l.addClass("ke-select-cells"),o.preventDefault())}else{n=l;var s=l.offset(),c=o.pageX,u=o.pageY,p=c-s.left,h=u-s.top;p<8?(l.addClass("ke-select-row"),a.selectRow=a.top,delete a.selectCol,o.preventDefault(),o.stopPropagation()):h<8&&(l.addClass("ke-select-col"),a.selectCol=a.left,delete a.selectRow,o.preventDefault(),o.stopPropagation())}}).on("mouseup.ke"+d.uuid,function(e){var t=$(e.target),i=t.closest("td,th");i.length&&(a&&void 0!==a.selectRow?(b(n,a.selectRow),e.stopPropagation()):a&&void 0!==a.selectCol&&(y(n,a.selectCol),e.stopPropagation())),o()}).on("paste.ke"+d.uuid+" keydown.ke"+d.uuid,function(){$(d.edit.doc).find("table").removeClass("ke-select-row ke-select-col").find(".ke-select-cell").removeClass("ke-select-cell")}),$(document).on("mouseup.ke"+d.uuid,function(){o()}),$(d.edit.doc.head).append([""].join(""));var r=d.cmd.toggle,l=function(e,t,n){var i=this;return void 0!==n&&null!==n||(n=i.commonNode(t)),n?i.remove(t):i.wrap(e),i.select()},s=function(e,t,n){var i=d.cmd.range;if(i&&i.endContainer){var a=$(i.endContainer).closest("th,td");if(!a.length)return;var o=a.closest("table");if(!o.length)return;var r=o.children("thead,tbody,tfoot").children("tr").children(".ke-select-cell");if(r.length)return t&&t(a,o),r.each(e),n&&n(a,o),i.selectNodeContents(a[0]),d.cmd.select(),d.focus(),!0}};d.cmd.toggle=function(e,t){var n;if(!s(function(){d.cmd.range.selectNodeContents(this),d.cmd.select(),l.call(d.cmd,e,t,n)},function(e){d.cmd.range.selectNodeContents(e[0]),d.cmd.select(),n=!!d.cmd.commonNode(t)}))return r.call(d.cmd,e,t)};var c=",justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,",u=d.clickToolbar;d.clickToolbar=function(e,t){if(!(void 0===t&&c.indexOf(","+e+",")>-1&&s(function(){d.cmd.range.selectNode(this),d.cmd.select(),u.call(d,e,t)})))return u.call(d,e,t)}}),d.beforeRemove(function(){$(d.edit.doc.body).off(".ke"+d.uuid),$(document).off(".ke"+d.uuid)})}),KindEditor.lang({table:KindEditor.lang("table")}); \ No newline at end of file From 9efabc5d051567fd4f06c71411fded4bb640ec99 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 11 Dec 2020 16:03:05 +0800 Subject: [PATCH 71/82] * Adjust code. --- module/common/lang/menuOrder.php | 22 ++++++++++++---------- module/common/lang/zh-cn.php | 1 + module/common/model.php | 3 ++- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/module/common/lang/menuOrder.php b/module/common/lang/menuOrder.php index e355326581..719762df57 100644 --- a/module/common/lang/menuOrder.php +++ b/module/common/lang/menuOrder.php @@ -53,19 +53,21 @@ $lang->my->menuOrder[80] = 'contacts'; $lang->todo->menuOrder = $lang->my->menuOrder; /* product menu order. */ -$lang->product->menuOrder[0] = 'plan'; $lang->product->menuOrder[1] = 'requirement'; $lang->product->menuOrder[5] = 'story'; -$lang->product->menuOrder[15] = 'release'; -$lang->product->menuOrder[20] = 'roadmap'; +$lang->product->menuOrder[10] = 'plan'; +$lang->product->menuOrder[15] = 'track'; +$lang->product->menuOrder[20] = 'release'; $lang->product->menuOrder[25] = 'project'; -$lang->product->menuOrder[30] = 'dynamic'; -$lang->product->menuOrder[35] = 'doc'; -$lang->product->menuOrder[40] = 'branch'; -$lang->product->menuOrder[45] = 'module'; -$lang->product->menuOrder[50] = 'view'; -$lang->product->menuOrder[55] = 'create'; -$lang->product->menuOrder[60] = 'all'; +$lang->product->menuOrder[30] = 'roadmap'; +$lang->product->menuOrder[35] = 'module'; +$lang->product->menuOrder[40] = 'doc'; +$lang->product->menuOrder[45] = 'branch'; +$lang->product->menuOrder[50] = 'dynamic'; +$lang->product->menuOrder[55] = 'view'; +$lang->product->menuOrder[60] = 'create'; +$lang->product->menuOrder[65] = 'all'; + $lang->story->menuOrder = $lang->product->menuOrder; $lang->productplan->menuOrder = $lang->product->menuOrder; $lang->release->menuOrder = $lang->product->menuOrder; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index d0f0843d76..f4234fbe91 100755 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -173,6 +173,7 @@ $lang->product->viewMenu->plan = array('link' => "计划|productplan|brow $lang->product->viewMenu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release'); $lang->product->viewMenu->roadmap = '路线图|product|roadmap|productID=%s'; $lang->product->viewMenu->branch = '@branch@|branch|manage|productID=%s'; +$lang->product->viewMenu->dynamic = '动态|product|dynamic|productID=%s'; $lang->product->viewMenu->module = '模块|tree|browse|productID=%s&view=story'; $lang->product->viewMenu->view = array('link' => '概况|product|view|productID=%s', 'alias' => 'edit'); $lang->product->viewMenu->whitelist = array('link' => '白名单|product|whitelist|productID=%s', 'alias' => 'addwhitelist'); diff --git a/module/common/model.php b/module/common/model.php index 35c78eaacc..72d697ee5f 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -2299,7 +2299,8 @@ EOD; } if($group == 'product') { - $lang->menu = $lang->product->menu; + $lang->menu = $lang->product->menu; + $lang->menuOrder = $lang->product->menuOrder; } if($group == 'project') { From 4b3e0928220a9a77f1540c0a9f47e9b2db8167e3 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 11:41:45 +0800 Subject: [PATCH 72/82] * fix bug #3657. --- module/file/model.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/file/model.php b/module/file/model.php index 2f041f04b2..c9aeb69c96 100644 --- a/module/file/model.php +++ b/module/file/model.php @@ -919,6 +919,8 @@ class fileModel extends model if($type == 'content') die($content); if($type == 'file' and file_exists($content)) { + if(stripos($content, $this->app->getBasePath()) !== 0) die(); + set_time_limit(0); $chunkSize = 10 * 1024 * 1024; $handle = fopen($content, "r"); From f7d642e8431393781408a417118f853b7e555c9f Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 16:09:43 +0800 Subject: [PATCH 73/82] * adjust for build by tag. --- module/git/model.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/git/model.php b/module/git/model.php index 3ccd32ae29..f4681d8a76 100644 --- a/module/git/model.php +++ b/module/git/model.php @@ -91,6 +91,7 @@ class gitModel extends model $lastTag = ''; foreach($tags as $tag) { + if(empty($tag)) continue; if(!$isNew and $tag == $job->lastTag) { $isNew = true; @@ -99,7 +100,7 @@ class gitModel extends model if(!$isNew) continue; $lastTag = $tag; - $this->loadModel('compile')->createByJob($job->id, $lastTag, 'tag'); + if($lastTag) $this->loadModel('compile')->createByJob($job->id, $lastTag, 'tag'); } if($lastTag) $this->dao->update(TABLE_JOB)->set('lastTag')->eq($lastTag)->where('id')->eq($job->id)->exec(); } From feb8e765aee00b5f06704a1db96feda3ec070a60 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 11 Dec 2020 16:07:43 +0800 Subject: [PATCH 74/82] * Optimize the code. --- module/program/model.php | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/module/program/model.php b/module/program/model.php index 95499d9001..efe58f7548 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -1237,18 +1237,24 @@ class programModel extends model } } - /* When select create new product, product name cannot be empty. */ - if(isset($_POST['newProduct']) and empty($_POST['productName'])) + /* When select create new product, product name cannot be empty and duplicate. */ + if(isset($_POST['newProduct'])) { - dao::$errors[] = sprintf($this->lang->error->notempty, $this->app->loadLang('product')->product->name); - return false; - } - - $existProductName = $this->dao->select('name')->from(TABLE_PRODUCT)->where('name')->eq($_POST['productName'])->fetch('name'); - if(!empty($existProductName)) - { - dao::$errors[] = $this->lang->program->existProductName; - return false; + if(empty($_POST['productName'])) + { + $this->app->loadLang('product'); + dao::$errors[] = sprintf($this->lang->error->notempty, $this->lang->product->name); + return false; + } + else + { + $existProductName = $this->dao->select('name')->from(TABLE_PRODUCT)->where('name')->eq($_POST['productName'])->fetch('name'); + if(!empty($existProductName)) + { + dao::$errors[] = $this->lang->program->existProductName; + return false; + } + } } $requiredFields = $this->config->program->PRJCreate->requiredFields; From 3ae0d546762ce3a115ef68fec7d0b0a56034c34c Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Fri, 11 Dec 2020 16:26:47 +0800 Subject: [PATCH 75/82] * Fix bug. --- module/bug/control.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/bug/control.php b/module/bug/control.php index e5f15d52df..6d1438607b 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -815,9 +815,9 @@ class bug extends control } } - $this->lang->navGroup->bug = 'my'; - $this->lang->bug->menu = $this->lang->my->menu; - $this->lang->set('menugroup.bug', 'my'); + $this->lang->navGroup->bug = 'my'; + $this->lang->noMenuModule[] = 'bug'; + $this->lang->bug->menu = $this->lang->my->menu; $this->lang->bug->menuOrder = $this->lang->my->menuOrder; $this->loadModel('my')->setMenu(); $this->view->position[] = html::a($this->createLink('my', 'bug'), $this->lang->my->bug); From f0d0a807ee9fb19aecd814e130ffbdc1879acde6 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Fri, 11 Dec 2020 16:38:05 +0800 Subject: [PATCH 76/82] * Upgrade unified zt_build table format. --- module/upgrade/model.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/module/upgrade/model.php b/module/upgrade/model.php index c762f4c48e..21b3ee8b9e 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -636,6 +636,11 @@ class upgradeModel extends model $this->saveLogs('Execute 20_0_alpha1'); $this->execSQL($this->getUpgradeFile('20.0.alpha1')); $this->appendExec('20_0_alpha1'); + case '20_0_beta1': + $this->saveLogs('Execute 20_0_beta1'); + $this->execSQL($this->getUpgradeFile('20.0.beta1')); + $this->unifiedFormat(); + $this->appendExec('20_0_beta1'); } $this->deletePatch(); @@ -4340,4 +4345,19 @@ class upgradeModel extends model return true; } + + public function unifiedFormat() + { + $builds = $this->dao->select('*')->from(TABLE_BUILD)->fetchAll(); + foreach($builds as $build) + { + $data = array(); + if(!empty($build->stories) and $build->stories[0] != ',') $data['stories'] = ',' . $build->stories; + if(!empty($build->bugs) and $build->bugs[0] != ',') $data['bugs'] = ',' . $build->bugs; + + if($data) $this->dao->update(TABLE_BUILD)->data($data)->where('id')->eq($build->id)->exec(); + } + + return true; + } } From f734f15e7affacf1895eb9561ccbd032fb3fd6a4 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Fri, 11 Dec 2020 16:52:33 +0800 Subject: [PATCH 77/82] * Adjust code style. --- module/build/control.php | 2 +- module/build/model.php | 15 +++------------ module/build/view/edit.html.php | 4 ++-- module/task/control.php | 7 ++++--- module/task/model.php | 4 ++-- 5 files changed, 12 insertions(+), 20 deletions(-) diff --git a/module/build/control.php b/module/build/control.php index 23cec1c435..70e6ad3d4e 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -179,7 +179,7 @@ class build extends control $this->view->products = $products; $this->view->users = $this->loadModel('user')->getPairs('noletter', $build->builder); $this->view->build = $build; - $this->view->testtask = $this->dao->select('id')->from(TABLE_TESTTASK)->where('build')->eq($build->id)->andWhere('deleted')->eq(0)->fetch('id'); + $this->view->testtaskID = $this->dao->select('id')->from(TABLE_TESTTASK)->where('build')->eq($build->id)->andWhere('deleted')->eq(0)->fetch('id'); $this->display(); } diff --git a/module/build/model.php b/module/build/model.php index 311e92a7dc..4898e203a7 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -86,23 +86,14 @@ class buildModel extends model /* If there are saved query conditions, reset the session. */ if((int)$queryID) { - $buildQuery = $this->loadModel('search')->getQuery($queryID); - if($buildQuery) + $query = $this->loadModel('search')->getQuery($queryID); + if($query) { $this->session->set('projectBuildQuery', $query->sql); $this->session->set('projectBuildForm', $query->form); } - else - { - $this->session->set('projectBuildQuery', ' 1 = 1'); - } } - else - { - if($this->session->projectBuildQuery == false) $this->session->set('projectBuildQuery', ' 1 = 1'); - } - - $buildQuery = $this->session->projectBuildQuery; + if($this->session->projectBuildQuery == false) $this->session->set('projectBuildQuery', ' 1 = 1'); $buildQuery = $this->session->projectBuildQuery; diff --git a/module/build/view/edit.html.php b/module/build/view/edit.html.php index f4a16a210b..34ab3d3910 100644 --- a/module/build/view/edit.html.php +++ b/module/build/view/edit.html.php @@ -28,7 +28,7 @@
    config->global->flow != 'onlyTest'):?> - + diff --git a/module/task/control.php b/module/task/control.php index 58868a0b75..2f8690e852 100644 --- a/module/task/control.php +++ b/module/task/control.php @@ -160,7 +160,7 @@ class task extends control elseif($this->post->after == 'toTaskList') { setcookie('moduleBrowseParam', 0, 0, $this->config->webRoot, '', false, false); - $taskLink = $this->createLink('project', 'task', "projectID=$projectID&status=bymodule¶m=$moduleID&orderBy=id_desc"); + $taskLink = $this->createLink('project', 'task', "projectID=$projectID&status=unclosed¶m=0&orderBy=id_desc"); $response['locate'] = $taskLink; $this->send($response); } @@ -1024,9 +1024,10 @@ class task extends control $changes = $this->task->close($taskID); if(dao::isError()) die(js::error(dao::getError())); - if(!empty($changes)) + if($this->post->comment != '' or !empty($changes)) { - $actionID = $this->action->create('task', $taskID, 'Closed', $this->post->comment); + $action = (!empty($changes)) ? 'Closed' : 'Commented'; + $actionID = $this->action->create('task', $taskID, $action, $this->post->comment); $this->action->logHistory($actionID, $changes); } diff --git a/module/task/model.php b/module/task/model.php index 72c12cd887..f439d6b1b1 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1602,12 +1602,12 @@ class taskModel extends model * * @param int $taskID * @access public - * @return void + * @return array */ public function close($taskID) { $oldTask = $this->dao->select('*')->from(TABLE_TASK)->where('id')->eq($taskID)->fetch(); - if($oldTask->status == 'closed') return; + if($oldTask->status == 'closed') return array(); $now = helper::now(); $task = fixer::input('post') From aa7c7c43c4e26a015cf72bdb2a649bf252ece915 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 16:48:37 +0800 Subject: [PATCH 78/82] * fix bug. --- module/file/model.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/module/file/model.php b/module/file/model.php index c9aeb69c96..947b45ff98 100644 --- a/module/file/model.php +++ b/module/file/model.php @@ -901,6 +901,10 @@ class fileModel extends model /* Set the downloading cookie, thus the export form page can use it to judge whether to close the window or not. */ setcookie('downloading', 1, 0, $this->config->webRoot, '', false, false); + /* Only download upload file that is in zentao. */ + if($type == 'file' and stripos($content, $this->app->getBasePath()) !== 0) die(); + if($type == 'file' and stripos($content, '/data/upload/') === false) die(); + /* Append the extension name auto. */ $extension = '.' . $fileType; if(strpos($fileName, $extension) === false) $fileName .= $extension; From eadd494a9b16126147409da49c7ccfcc21bdd939 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 16:55:52 +0800 Subject: [PATCH 79/82] * fix bug. --- module/file/model.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/module/file/model.php b/module/file/model.php index 947b45ff98..229009f30e 100644 --- a/module/file/model.php +++ b/module/file/model.php @@ -902,8 +902,7 @@ class fileModel extends model setcookie('downloading', 1, 0, $this->config->webRoot, '', false, false); /* Only download upload file that is in zentao. */ - if($type == 'file' and stripos($content, $this->app->getBasePath()) !== 0) die(); - if($type == 'file' and stripos($content, '/data/upload/') === false) die(); + if($type == 'file' and stripos($content, $this->savePath) !== 0) die(); /* Append the extension name auto. */ $extension = '.' . $fileType; From 5dbd8270bb9343532cd5109c9c9ef98bd8d17c04 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 11 Dec 2020 17:22:40 +0800 Subject: [PATCH 80/82] * fix bug #3744. --- module/common/model.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/module/common/model.php b/module/common/model.php index 65af01d070..e61760749f 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -1310,17 +1310,17 @@ EOD; /* Set the query condition session. */ if($onlyCondition) { - $queryCondition = explode('WHERE', $sql); + $queryCondition = explode(' WHERE ', $sql); $queryCondition = isset($queryCondition[1]) ? $queryCondition[1] : ''; if($queryCondition) { - $queryCondition = explode('ORDER', $queryCondition); + $queryCondition = explode(' ORDER BY ', $queryCondition); $queryCondition = str_replace('t1.', '', $queryCondition[0]); } } else { - $queryCondition = explode('ORDER', $sql); + $queryCondition = explode(' ORDER BY ', $sql); $queryCondition = $queryCondition[0]; } $queryCondition = trim($queryCondition); @@ -1330,11 +1330,11 @@ EOD; $this->session->set($objectType . 'OnlyCondition', $onlyCondition); /* Set the query condition session. */ - $orderBy = explode('ORDER BY', $sql); + $orderBy = explode(' ORDER BY ', $sql); $orderBy = isset($orderBy[1]) ? $orderBy[1] : ''; if($orderBy) { - $orderBy = explode('LIMIT', $orderBy); + $orderBy = explode(' LIMIT ', $orderBy); $orderBy = $orderBy[0]; if($onlyCondition) $orderBy = str_replace('t1.', '', $orderBy); } From f34457b20e2baad278207f8464e0e2f978fe705c Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Fri, 11 Dec 2020 17:26:46 +0800 Subject: [PATCH 81/82] * Add comment. --- module/upgrade/model.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 21b3ee8b9e..fbe0caa571 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -4346,6 +4346,12 @@ class upgradeModel extends model return true; } + /** + * Unify the format of the stories and bugs fields in the zt_build table. + * + * @access public + * @return bool + */ public function unifiedFormat() { $builds = $this->dao->select('*')->from(TABLE_BUILD)->fetchAll(); From a18ac6792e6ac21b4fb9b63c510173e104b6c2aa Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 11 Dec 2020 17:32:29 +0800 Subject: [PATCH 82/82] * Modify call a database query in foreach. --- module/doc/model.php | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/module/doc/model.php b/module/doc/model.php index 6a70e92f01..294e44bdb7 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -1133,21 +1133,25 @@ class docModel extends model if($type == 'project') $objectList = $this->loadModel('project')->getExecutionsByProject($projectID, 'all', 0, true); if(empty($objectList)) return $libs; - foreach(array_keys($objectList) as $objectID) + $docLibs = $this->dao->select('*')->from(TABLE_DOCLIB) + ->where('deleted')->eq(0) + ->andWhere("$type")->in(array_keys($objectList)) + ->orderBy("`order` asc, id asc") + ->fetchAll('project'); + + if($type == 'project') { - $docLib = $this->dao->select('*')->from(TABLE_DOCLIB) - ->where('deleted')->eq(0) - ->andWhere("$type")->in($objectID) - ->orderBy("`order` asc, id asc") - ->fetch(); - if(!empty($docLib)) $docLibs[] = $docLib; + foreach(array_keys($objectList) as $objectID) + { + $docLibs[] = $docLibs[$objectID]; + unset($docLibs[$objectID]); + } } } else { - $docLibList = $this->dao->select('*')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->andWhere('type')->eq($type)->orderBy('`order`, id desc')->fetchAll(); - if(empty($docLibList)) return $libs; - foreach($docLibList as $docLib) $docLibs[] = $docLib; + $docLibs = $this->dao->select('*')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->andWhere('type')->eq($type)->orderBy('`order`, id desc')->fetchAll(); + if(empty($docLibs)) return $libs; } $i = 1;
    stories or $build->bugs or $testtask) $disabled = 'disabled'; + if($build->stories or $build->bugs or $testtaskID) $disabled = 'disabled'; ?>
    product, "onchange='loadBranches(this.value);' class='form-control chosen' $disabled required");?> @@ -45,7 +45,7 @@
    build->project;?> project, "class='form-control chosen' required $disabled");?> build->notice->changeProject;?>