From c47fd750dd385812a67fe26ad00f5fd0b5628537 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Tue, 16 Mar 2021 09:46:39 +0800 Subject: [PATCH 0001/1617] * Adjust the #userQueries width for different resolution. --- module/search/view/buildform.html.php | 1 + 1 file changed, 1 insertion(+) diff --git a/module/search/view/buildform.html.php b/module/search/view/buildform.html.php index add7cdc13b..7c8a1081cb 100644 --- a/module/search/view/buildform.html.php +++ b/module/search/view/buildform.html.php @@ -41,6 +41,7 @@ $formId = 'searchForm-' . uniqid(''); #queryBox .chosen-container-single .chosen-single > span {margin-right:5px;} #queryBox .form-actions .btn {margin-right: 5px;} +@media screen and (max-width: 1366px) { #userQueries {width: 130px!important;} } #userQueries {border-left: 1px solid #eee; vertical-align: top;} #userQueries > h4 {margin: 0 0 6px;} #userQueries ul {list-style: none; padding-left: 0; margin: 0; max-height:75px; overflow:auto;} From d0ee50ff2203e1cb3f489681ac4d4ef4d7e78947 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Tue, 16 Mar 2021 11:32:30 +0800 Subject: [PATCH 0002/1617] * Finish task#36759. --- module/block/lang/de.php | 2 +- module/block/lang/en.php | 2 +- module/block/lang/fr.php | 2 +- module/block/lang/vi.php | 2 +- module/block/lang/zh-cn.php | 2 +- module/block/lang/zh-tw.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module/block/lang/de.php b/module/block/lang/de.php index 5c39927ddb..79a04cb0be 100644 --- a/module/block/lang/de.php +++ b/module/block/lang/de.php @@ -290,7 +290,7 @@ $lang->block->default['full']['my']['6']['block'] = 'recentproject'; $lang->block->default['full']['my']['6']['source'] = 'project'; $lang->block->default['full']['my']['6']['grid'] = 8; -$lang->block->default['full']['my']['7']['title'] = 'AssignedToMe'; +$lang->block->default['full']['my']['7']['title'] = 'Todo'; $lang->block->default['full']['my']['7']['block'] = 'assigntome'; $lang->block->default['full']['my']['7']['source'] = ''; $lang->block->default['full']['my']['7']['grid'] = 8; diff --git a/module/block/lang/en.php b/module/block/lang/en.php index 6e00d17080..4c0a6c9fa3 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -290,7 +290,7 @@ $lang->block->default['full']['my']['6']['block'] = 'recentproject'; $lang->block->default['full']['my']['6']['source'] = 'project'; $lang->block->default['full']['my']['6']['grid'] = 8; -$lang->block->default['full']['my']['7']['title'] = 'Assigned To Me'; +$lang->block->default['full']['my']['7']['title'] = 'Todo'; $lang->block->default['full']['my']['7']['block'] = 'assigntome'; $lang->block->default['full']['my']['7']['source'] = ''; $lang->block->default['full']['my']['7']['grid'] = 8; diff --git a/module/block/lang/fr.php b/module/block/lang/fr.php index b642f4e270..3b5d193dfa 100644 --- a/module/block/lang/fr.php +++ b/module/block/lang/fr.php @@ -290,7 +290,7 @@ $lang->block->default['full']['my']['6']['block'] = 'recentproject'; $lang->block->default['full']['my']['6']['source'] = 'project'; $lang->block->default['full']['my']['6']['grid'] = 8; -$lang->block->default['full']['my']['7']['title'] = 'AssignedToMe'; +$lang->block->default['full']['my']['7']['title'] = 'Todo'; $lang->block->default['full']['my']['7']['block'] = 'assigntome'; $lang->block->default['full']['my']['7']['source'] = ''; $lang->block->default['full']['my']['7']['grid'] = 8; diff --git a/module/block/lang/vi.php b/module/block/lang/vi.php index 3d43c28aac..d927b8bca5 100644 --- a/module/block/lang/vi.php +++ b/module/block/lang/vi.php @@ -290,7 +290,7 @@ $lang->block->default['full']['my']['6']['block'] = 'recentproject'; $lang->block->default['full']['my']['6']['source'] = 'project'; $lang->block->default['full']['my']['6']['grid'] = 8; -$lang->block->default['full']['my']['7']['title'] = 'AssignedToMe'; +$lang->block->default['full']['my']['7']['title'] = 'Todo'; $lang->block->default['full']['my']['7']['block'] = 'assigntome'; $lang->block->default['full']['my']['7']['source'] = ''; $lang->block->default['full']['my']['7']['grid'] = 8; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index f9baf0f45e..acb8d8f00e 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -290,7 +290,7 @@ $lang->block->default['full']['my']['6']['block'] = 'recentproject'; $lang->block->default['full']['my']['6']['source'] = 'project'; $lang->block->default['full']['my']['6']['grid'] = 8; -$lang->block->default['full']['my']['7']['title'] = '指派给我'; +$lang->block->default['full']['my']['7']['title'] = '待处理'; $lang->block->default['full']['my']['7']['block'] = 'assigntome'; $lang->block->default['full']['my']['7']['source'] = ''; $lang->block->default['full']['my']['7']['grid'] = 8; diff --git a/module/block/lang/zh-tw.php b/module/block/lang/zh-tw.php index 470331f5cc..29f089f5b5 100644 --- a/module/block/lang/zh-tw.php +++ b/module/block/lang/zh-tw.php @@ -290,7 +290,7 @@ $lang->block->default['full']['my']['6']['block'] = 'recentproject'; $lang->block->default['full']['my']['6']['source'] = 'project'; $lang->block->default['full']['my']['6']['grid'] = 8; -$lang->block->default['full']['my']['7']['title'] = '指派給我'; +$lang->block->default['full']['my']['7']['title'] = '待處理'; $lang->block->default['full']['my']['7']['block'] = 'assigntome'; $lang->block->default['full']['my']['7']['source'] = ''; $lang->block->default['full']['my']['7']['grid'] = 8; From 40da174eceb2afdcf6f654b2e75808a64f20ad05 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Tue, 16 Mar 2021 11:41:24 +0800 Subject: [PATCH 0003/1617] * Finish task#36759. --- module/block/lang/de.php | 2 +- module/block/lang/en.php | 2 +- module/block/lang/fr.php | 2 +- module/block/lang/vi.php | 2 +- module/block/lang/zh-cn.php | 2 +- module/block/lang/zh-tw.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module/block/lang/de.php b/module/block/lang/de.php index 79a04cb0be..d26167d925 100644 --- a/module/block/lang/de.php +++ b/module/block/lang/de.php @@ -31,7 +31,7 @@ $lang->block->lblBlock = 'InfoBlock'; $lang->block->lblNum = 'Nummer'; $lang->block->lblHtml = 'HTML'; $lang->block->dynamic = 'Verlauf'; -$lang->block->assignToMe = 'Mir zugewiesen'; +$lang->block->assignToMe = 'Todo'; $lang->block->done = 'Done'; $lang->block->lblFlowchart = 'Workflow'; $lang->block->welcome = 'Willkommen'; diff --git a/module/block/lang/en.php b/module/block/lang/en.php index 4c0a6c9fa3..0343d32190 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -31,7 +31,7 @@ $lang->block->lblBlock = 'Block'; $lang->block->lblNum = 'Number'; $lang->block->lblHtml = 'HTML'; $lang->block->dynamic = 'Dynamics'; -$lang->block->assignToMe = 'Assigned To Me'; +$lang->block->assignToMe = 'Todo'; $lang->block->done = 'Done'; $lang->block->lblFlowchart = 'Flowchart'; $lang->block->welcome = 'Welcome'; diff --git a/module/block/lang/fr.php b/module/block/lang/fr.php index 3b5d193dfa..8f19e18272 100644 --- a/module/block/lang/fr.php +++ b/module/block/lang/fr.php @@ -31,7 +31,7 @@ $lang->block->lblBlock = 'Bloc'; $lang->block->lblNum = 'Numéro'; $lang->block->lblHtml = 'HTML'; $lang->block->dynamic = 'Historique'; -$lang->block->assignToMe = 'Assigné à moi'; +$lang->block->assignToMe = 'Todo'; $lang->block->done = 'Done'; $lang->block->lblFlowchart = 'Organigramme'; $lang->block->welcome = 'Bienvenue'; diff --git a/module/block/lang/vi.php b/module/block/lang/vi.php index d927b8bca5..b6bc665370 100644 --- a/module/block/lang/vi.php +++ b/module/block/lang/vi.php @@ -31,7 +31,7 @@ $lang->block->lblBlock = 'Block'; $lang->block->lblNum = 'Số'; $lang->block->lblHtml = 'HTML'; $lang->block->dynamic = 'Lịch sử'; -$lang->block->assignToMe = 'Giao cho bạn'; +$lang->block->assignToMe = 'Todo'; $lang->block->done = 'Done'; $lang->block->lblFlowchart = 'Biểu đồ'; $lang->block->welcome = 'Welcome'; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index acb8d8f00e..64189f3a79 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -31,7 +31,7 @@ $lang->block->lblBlock = '区块'; $lang->block->lblNum = '条数'; $lang->block->lblHtml = 'HTML内容'; $lang->block->dynamic = '最新动态'; -$lang->block->assignToMe = '指派给我'; +$lang->block->assignToMe = '待处理'; $lang->block->done = '已完成'; $lang->block->lblFlowchart = '流程图'; $lang->block->welcome = '欢迎总览'; diff --git a/module/block/lang/zh-tw.php b/module/block/lang/zh-tw.php index 29f089f5b5..3c36ccc44d 100644 --- a/module/block/lang/zh-tw.php +++ b/module/block/lang/zh-tw.php @@ -31,7 +31,7 @@ $lang->block->lblBlock = '區塊'; $lang->block->lblNum = '條數'; $lang->block->lblHtml = 'HTML內容'; $lang->block->dynamic = '最新動態'; -$lang->block->assignToMe = '指派給我'; +$lang->block->assignToMe = '待處理'; $lang->block->done = '已完成'; $lang->block->lblFlowchart = '流程圖'; $lang->block->welcome = '歡迎總覽'; From 05d469e703eb08d4f9e135a371935b22942705e7 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Tue, 16 Mar 2021 13:10:50 +0800 Subject: [PATCH 0004/1617] * Finish task#36761. --- module/block/lang/de.php | 2 +- module/block/lang/en.php | 2 +- module/block/lang/fr.php | 2 +- module/block/lang/vi.php | 2 +- module/block/lang/zh-cn.php | 2 +- module/block/lang/zh-tw.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module/block/lang/de.php b/module/block/lang/de.php index d26167d925..423bfea35f 100644 --- a/module/block/lang/de.php +++ b/module/block/lang/de.php @@ -320,7 +320,7 @@ $lang->block->type = 'Type'; $lang->block->orderBy = 'Order by'; $lang->block->availableBlocks = new stdclass(); -$lang->block->availableBlocks->todo = 'Meine Todos'; +$lang->block->availableBlocks->todo = 'Meine Zeitplan'; $lang->block->availableBlocks->task = 'Meine Aufgaben'; $lang->block->availableBlocks->bug = 'Meine Bugs'; $lang->block->availableBlocks->case = 'Meine Fälle'; diff --git a/module/block/lang/en.php b/module/block/lang/en.php index 0343d32190..3c0238d586 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -320,7 +320,7 @@ $lang->block->type = 'Type'; $lang->block->orderBy = 'Order by'; $lang->block->availableBlocks = new stdclass(); -$lang->block->availableBlocks->todo = 'My Todos'; +$lang->block->availableBlocks->todo = 'My schedule'; $lang->block->availableBlocks->task = 'My Tasks'; $lang->block->availableBlocks->bug = 'My Bugs'; $lang->block->availableBlocks->case = 'My Cases'; diff --git a/module/block/lang/fr.php b/module/block/lang/fr.php index 8f19e18272..3968af561f 100644 --- a/module/block/lang/fr.php +++ b/module/block/lang/fr.php @@ -320,7 +320,7 @@ $lang->block->type = 'Type'; $lang->block->orderBy = 'Trié par'; $lang->block->availableBlocks = new stdclass(); -$lang->block->availableBlocks->todo = 'Ma Todo List'; +$lang->block->availableBlocks->todo = 'Mon emploi du temps'; $lang->block->availableBlocks->task = 'Mes Tâches'; $lang->block->availableBlocks->bug = 'Mes Bugs'; $lang->block->availableBlocks->case = 'Mes CasTests'; diff --git a/module/block/lang/vi.php b/module/block/lang/vi.php index b6bc665370..66d2184161 100644 --- a/module/block/lang/vi.php +++ b/module/block/lang/vi.php @@ -320,7 +320,7 @@ $lang->block->type = 'Loại'; $lang->block->orderBy = 'Order by'; $lang->block->availableBlocks = new stdclass(); -$lang->block->availableBlocks->todo = 'Việc của bạn'; +$lang->block->availableBlocks->todo = 'Lịch của tôi'; $lang->block->availableBlocks->task = 'Nhiệm vụ'; $lang->block->availableBlocks->bug = 'Bugs của bạn'; $lang->block->availableBlocks->case = 'Tình huống của bạn'; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index 64189f3a79..a9ea92108d 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -320,7 +320,7 @@ $lang->block->type = '类型'; $lang->block->orderBy = '排序'; $lang->block->availableBlocks = new stdclass(); -$lang->block->availableBlocks->todo = '我的待办'; +$lang->block->availableBlocks->todo = '我的日程'; $lang->block->availableBlocks->task = '我的任务'; $lang->block->availableBlocks->bug = '我的Bug'; $lang->block->availableBlocks->case = '我的用例'; diff --git a/module/block/lang/zh-tw.php b/module/block/lang/zh-tw.php index 3c36ccc44d..d34104f983 100644 --- a/module/block/lang/zh-tw.php +++ b/module/block/lang/zh-tw.php @@ -320,7 +320,7 @@ $lang->block->type = '類型'; $lang->block->orderBy = '排序'; $lang->block->availableBlocks = new stdclass(); -$lang->block->availableBlocks->todo = '我的待辦'; +$lang->block->availableBlocks->todo = '我的日程'; $lang->block->availableBlocks->task = '我的任務'; $lang->block->availableBlocks->bug = '我的Bug'; $lang->block->availableBlocks->case = '我的用例'; From 2506afe376bda0829f01a2abfaf004e94bc07e09 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Tue, 16 Mar 2021 13:12:39 +0800 Subject: [PATCH 0005/1617] * Adjust the case edit and batch edit. --- module/testcase/model.php | 102 ++++++++++++++++++++++++++------------ 1 file changed, 69 insertions(+), 33 deletions(-) diff --git a/module/testcase/model.php b/module/testcase/model.php index 29431acd0c..d10012dadf 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -630,7 +630,7 @@ class testcaseModel extends model ->get(); $requiredFields = $this->config->testcase->edit->requiredFields; - if($case->lib != 0) + if($oldCase->lib != 0) { /* Remove the require field named story when the case is a lib case.*/ $requiredFieldsArr = explode(',', $requiredFields); @@ -645,38 +645,7 @@ class testcaseModel extends model $titleChanged = ($case->title != $oldCase->title); if($isLibCase and $titleChanged) $this->dao->update(TABLE_CASE)->set('`title`')->eq($case->title)->where('`fromCaseID`')->eq($caseID)->exec(); - /* The case is linked the project. */ - if($oldCase->project != 0) - { - $productChanged = ($oldCase->product != $case->product); - $storyChanged = ($oldCase->story != $case->story); - - if($productChanged) - { - $this->dao->update(TABLE_PROJECTCASE) - ->set('product')->eq($case->product) - ->set('version')->eq($case->version) - ->where('project')->eq($oldCase->project) - ->andWhere('`case`')->eq($oldCase->id) - ->exec(); - } - - /* If the related story is changed and the new related story isn't linked the project, unlink the case. */ - if($storyChanged) - { - $projectStory = $this->dao->select('*')->from(TABLE_PROJECTSTORY) - ->where('project')->eq($oldCase->project) - ->andWhere('story')->eq($case->story) - ->fetchAll(); - if(!$projectStory) - { - $this->dao->delete()->from(TABLE_PROJECTCASE) - ->where('project')->eq($oldCase->project) - ->andWhere('`case`')->eq($oldCase->id) - ->exec(); - } - } - } + $this->updateCase2Project($oldCase, $case, $caseID); if($stepChanged) { @@ -901,6 +870,8 @@ class testcaseModel extends model $titleChanged = ($case->title != $oldCase->title); if($isLibCase and $titleChanged) $this->dao->update(TABLE_CASE)->set('`title`')->eq($case->title)->where('`fromCaseID`')->eq($caseID)->exec(); + $this->updateCase2Project($oldCase, $case, $caseID); + $this->executeHooks($caseID); unset($oldCase->steps); @@ -1708,6 +1679,71 @@ class testcaseModel extends model } } + + /** + * Deal with the relationship between the case and project when edit the case. + * + * @param object $oldCase + * @param object $case + * @param int $caseID + * @access public + * @return void + */ + public function updateCase2Project($oldCase, $case, $caseID) + { + $productChanged = ($oldCase->product != $case->product); + $storyChanged = ($oldCase->story != $case->story); + + if($productChanged) + { + $this->dao->update(TABLE_PROJECTCASE) + ->set('product')->eq($case->product) + ->set('version')->eq($case->version) + ->where('project')->eq($oldCase->project) + ->andWhere('`case`')->eq($oldCase->id) + ->exec(); + } + + /* The related story is changed. */ + if($storyChanged) + { + $projectStory = $this->dao->select('*')->from(TABLE_PROJECTSTORY) + ->where('project')->eq($oldCase->project) + ->andWhere('story')->eq($case->story) + ->fetchAll(); + + if(!$projectStory) + { + /* If the new related story isn't linked the project, unlink the case. */ + $this->dao->delete()->from(TABLE_PROJECTCASE) + ->where('project')->eq($oldCase->project) + ->andWhere('`case`')->eq($oldCase->id) + ->exec(); + + /* If the new related story is not null, make the case link the project which link the new related story. */ + if(!empty($case->story)) + { + $projects = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('story')->eq($case->story)->fetchAll('project'); + if($projects) + { + $projects = array_keys($projects); + foreach($projects as $projectID) + { + $lastOrder = (int)$this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($projectID)->orderBy('order_desc')->limit(1)->fetch('order'); + $data = new stdclass(); + $data->project = $projectID; + $data->product = $case->product; + $data->case = $caseID; + $data->version = $oldCase->version; + $data->order = ++ $lastOrder; + $this->dao->insert(TABLE_PROJECTCASE)->data($data)->exec(); + } + } + } + } + } + } + /** * Get status for different method. * From 38d56468fd1cb74ef5b9601fa37c8114a0f01341 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Tue, 16 Mar 2021 13:56:40 +0800 Subject: [PATCH 0006/1617] * Fix an error. --- module/testcase/model.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/module/testcase/model.php b/module/testcase/model.php index d10012dadf..5c09b375f8 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -1699,8 +1699,7 @@ class testcaseModel extends model $this->dao->update(TABLE_PROJECTCASE) ->set('product')->eq($case->product) ->set('version')->eq($case->version) - ->where('project')->eq($oldCase->project) - ->andWhere('`case`')->eq($oldCase->id) + ->where('`case`')->eq($oldCase->id) ->exec(); } @@ -1736,7 +1735,7 @@ class testcaseModel extends model $data->case = $caseID; $data->version = $oldCase->version; $data->order = ++ $lastOrder; - $this->dao->insert(TABLE_PROJECTCASE)->data($data)->exec(); + $this->dao->replace(TABLE_PROJECTCASE)->data($data)->exec(); } } } From 0d5bd902f47742e3922406b07618f75ac3c9fe0e Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Tue, 16 Mar 2021 14:24:22 +0800 Subject: [PATCH 0007/1617] * Code for task #36465. --- module/action/lang/de.php | 4 ++-- module/action/lang/en.php | 4 ++-- module/action/lang/fr.php | 4 ++-- module/action/lang/vi.php | 4 ++-- module/action/lang/zh-cn.php | 4 ++-- module/common/lang/de.php | 2 -- module/common/lang/en.php | 2 -- module/common/lang/fr.php | 2 -- module/common/lang/vi.php | 2 -- module/common/lang/zh-cn.php | 2 -- module/custom/lang/en.php | 2 +- module/index/js/index.js | 2 +- module/product/lang/de.php | 2 +- module/product/lang/en.php | 2 +- module/product/lang/fr.php | 2 +- module/product/lang/vi.php | 2 +- module/product/lang/zh-cn.php | 2 +- module/todo/lang/zh-cn.php | 2 +- module/user/view/dynamic.html.php | 4 ++-- 19 files changed, 20 insertions(+), 30 deletions(-) diff --git a/module/action/lang/de.php b/module/action/lang/de.php index e5ba08019c..4e1c3aad2e 100644 --- a/module/action/lang/de.php +++ b/module/action/lang/de.php @@ -468,12 +468,12 @@ $lang->action->search->objectTypeList[''] = ''; $lang->action->search->objectTypeList['product'] = $lang->productCommon; $lang->action->search->objectTypeList['program'] = 'Program'; $lang->action->search->objectTypeList['project'] = 'Project'; -$lang->action->search->objectTypeList['execution'] = $lang->sprintCommon; +$lang->action->search->objectTypeList['execution'] = 'Execution'; $lang->action->search->objectTypeList['bug'] = 'Bug'; $lang->action->search->objectTypeList['case'] = 'Fälle'; $lang->action->search->objectTypeList['caseresult'] = 'Fallergebnisse'; $lang->action->search->objectTypeList['stepresult'] = 'Fallschritte'; -$lang->action->search->objectTypeList['story'] = 'Story'; +$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon"; $lang->action->search->objectTypeList['task'] = 'Aufgaben'; $lang->action->search->objectTypeList['testtask'] = 'Testaufgaben'; $lang->action->search->objectTypeList['user'] = 'Benutzer'; diff --git a/module/action/lang/en.php b/module/action/lang/en.php index eed297bd88..b01cc025d3 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -468,12 +468,12 @@ $lang->action->search->objectTypeList[''] = ''; $lang->action->search->objectTypeList['product'] = $lang->productCommon; $lang->action->search->objectTypeList['program'] = 'Program'; $lang->action->search->objectTypeList['project'] = 'Project'; -$lang->action->search->objectTypeList['execution'] = $lang->sprintCommon; +$lang->action->search->objectTypeList['execution'] = 'Execution'; $lang->action->search->objectTypeList['bug'] = 'Bug'; $lang->action->search->objectTypeList['case'] = 'Case'; $lang->action->search->objectTypeList['caseresult'] = 'Case Result'; $lang->action->search->objectTypeList['stepresult'] = 'Case Steps'; -$lang->action->search->objectTypeList['story'] = 'UR/SR'; +$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon"; $lang->action->search->objectTypeList['task'] = 'Task'; $lang->action->search->objectTypeList['testtask'] = 'Request'; $lang->action->search->objectTypeList['user'] = 'User'; diff --git a/module/action/lang/fr.php b/module/action/lang/fr.php index 199b0e4c6c..fc275fa0e0 100644 --- a/module/action/lang/fr.php +++ b/module/action/lang/fr.php @@ -467,12 +467,12 @@ $lang->action->search->objectTypeList[''] = ''; $lang->action->search->objectTypeList['product'] = $lang->productCommon; $lang->action->search->objectTypeList['program'] = 'Program'; $lang->action->search->objectTypeList['project'] = 'Project'; -$lang->action->search->objectTypeList['execution'] = $lang->sprintCommon; +$lang->action->search->objectTypeList['execution'] = 'Execution'; $lang->action->search->objectTypeList['bug'] = 'Bug'; $lang->action->search->objectTypeList['case'] = 'CasTest'; $lang->action->search->objectTypeList['caseresult'] = 'CasTest Result'; $lang->action->search->objectTypeList['stepresult'] = 'CasTest Steps'; -$lang->action->search->objectTypeList['story'] = 'UR/SR'; +$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon"; $lang->action->search->objectTypeList['task'] = 'Tâche'; $lang->action->search->objectTypeList['testtask'] = 'Recette'; $lang->action->search->objectTypeList['user'] = 'Utilisateur'; diff --git a/module/action/lang/vi.php b/module/action/lang/vi.php index 8f778e7d53..dd24dd9d94 100644 --- a/module/action/lang/vi.php +++ b/module/action/lang/vi.php @@ -468,12 +468,12 @@ $lang->action->search->objectTypeList[''] = ''; $lang->action->search->objectTypeList['product'] = $lang->productCommon; $lang->action->search->objectTypeList['program'] = 'Program'; $lang->action->search->objectTypeList['project'] = 'Project'; -$lang->action->search->objectTypeList['execution'] = $lang->sprintCommon; +$lang->action->search->objectTypeList['execution'] = 'Execution'; $lang->action->search->objectTypeList['bug'] = 'Bug'; $lang->action->search->objectTypeList['case'] = 'Tình huống'; $lang->action->search->objectTypeList['caseresult'] = 'Kết quả tình huống'; $lang->action->search->objectTypeList['stepresult'] = 'Các bước tình huống'; -$lang->action->search->objectTypeList['story'] = 'UR/SR'; +$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon"; $lang->action->search->objectTypeList['task'] = 'Nhiệm vụ'; $lang->action->search->objectTypeList['testtask'] = 'Yêu cầu'; $lang->action->search->objectTypeList['user'] = 'Người dùng'; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 87efe2916a..9966450460 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -468,12 +468,12 @@ $lang->action->search->objectTypeList[''] = ''; $lang->action->search->objectTypeList['product'] = $lang->productCommon; $lang->action->search->objectTypeList['program'] = '项目集'; $lang->action->search->objectTypeList['project'] = '项目'; -$lang->action->search->objectTypeList['execution'] = $lang->sprintCommon; +$lang->action->search->objectTypeList['execution'] = '执行'; $lang->action->search->objectTypeList['bug'] = 'Bug'; $lang->action->search->objectTypeList['case'] = '用例'; $lang->action->search->objectTypeList['caseresult'] = '用例结果'; $lang->action->search->objectTypeList['stepresult'] = '用例步骤'; -$lang->action->search->objectTypeList['story'] = '用需/软需'; +$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon"; $lang->action->search->objectTypeList['task'] = '任务'; $lang->action->search->objectTypeList['testtask'] = '测试单'; $lang->action->search->objectTypeList['user'] = '用户'; diff --git a/module/common/lang/de.php b/module/common/lang/de.php index 46d50c6725..38427c0c35 100644 --- a/module/common/lang/de.php +++ b/module/common/lang/de.php @@ -114,8 +114,6 @@ $lang->future = 'Warte'; $lang->year = 'Jahr'; $lang->workingHour = 'Stunde'; -$lang->sprintCommon = $lang->iterationCommon . '/Phase'; - $lang->idAB = 'ID'; $lang->priAB = 'P'; $lang->statusAB = 'Status'; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index ecf6c9644d..9afa4c56ce 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -114,8 +114,6 @@ $lang->future = 'Waiting'; $lang->year = 'Year'; $lang->workingHour = 'Hours'; -$lang->sprintCommon = $lang->iterationCommon . '/Phase'; - $lang->idAB = 'ID'; $lang->priAB = 'P'; $lang->statusAB = 'Status'; diff --git a/module/common/lang/fr.php b/module/common/lang/fr.php index 77ecb2d28e..863cfc70db 100644 --- a/module/common/lang/fr.php +++ b/module/common/lang/fr.php @@ -114,8 +114,6 @@ $lang->future = 'En Attente'; $lang->year = 'Année'; $lang->workingHour = 'Heures'; -$lang->sprintCommon = $lang->iterationCommon . '/Phase'; - $lang->idAB = 'ID'; $lang->priAB = 'P'; $lang->statusAB = 'Statut'; diff --git a/module/common/lang/vi.php b/module/common/lang/vi.php index 5495f24549..b607d3c952 100644 --- a/module/common/lang/vi.php +++ b/module/common/lang/vi.php @@ -114,8 +114,6 @@ $lang->future = 'Đang đợi'; $lang->year = 'Năm'; $lang->workingHour = 'giờ'; -$lang->sprintCommon = $lang->iterationCommon . '/Phase'; - $lang->idAB = 'ID'; $lang->priAB = 'P'; $lang->statusAB = 'Tình trạng'; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 0d3efbf150..ef6eb48957 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -114,8 +114,6 @@ $lang->future = '未来'; $lang->year = '年'; $lang->workingHour = '工时'; -$lang->sprintCommon = $lang->iterationCommon . '/阶段'; - $lang->idAB = 'ID'; $lang->priAB = 'P'; $lang->statusAB = '状态'; diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php index 60bdd11682..6a1c8fbce9 100644 --- a/module/custom/lang/en.php +++ b/module/custom/lang/en.php @@ -221,7 +221,7 @@ $lang->custom->CRExecution[0] = 'Change Forbidden'; $lang->custom->moduleName['product'] = $lang->productCommon; $lang->custom->moduleName['productplan'] = 'Plan'; -$lang->custom->moduleName['execution'] = $lang->sprintCommon; +$lang->custom->moduleName['execution'] = 'Execution'; $lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?"; $lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?"; diff --git a/module/index/js/index.js b/module/index/js/index.js index 59dfd11733..405a04d2d4 100644 --- a/module/index/js/index.js +++ b/module/index/js/index.js @@ -116,7 +116,7 @@ } if(moduleName === 'user') { - if(['todo', 'task', 'story', 'bug', 'testtask', 'testcase', 'execution', 'dynamic', 'profile'].includes(methodLowerCase)) return 'system'; + if(['todo', 'task', 'story', 'bug', 'testtask', 'testcase', 'execution', 'dynamic', 'profile', 'view'].includes(methodLowerCase)) return 'system'; } if(moduleName === 'my') { diff --git a/module/product/lang/de.php b/module/product/lang/de.php index e70e880ae3..8b25964710 100644 --- a/module/product/lang/de.php +++ b/module/product/lang/de.php @@ -51,7 +51,7 @@ $lang->product->build = 'Build'; $lang->product->moreProduct = "More Product"; $lang->product->projectInfo = "Projects that are linked to this {$lang->productCommon} are listed below."; -$lang->product->currentExecution = "Aktuelle {$lang->sprintCommon}"; +$lang->product->currentExecution = "Aktuelle Execution"; $lang->product->activeStories = 'Aktivierte [S]'; $lang->product->activeStoriesTitle = 'Active Stories'; $lang->product->changedStories = 'Geänderte [S]'; diff --git a/module/product/lang/en.php b/module/product/lang/en.php index 71f0c7f36b..f3b53d5f4b 100644 --- a/module/product/lang/en.php +++ b/module/product/lang/en.php @@ -51,7 +51,7 @@ $lang->product->build = 'Build List'; $lang->product->moreProduct = "More Product"; $lang->product->projectInfo = "Projects that are linked to this {$lang->productCommon} are listed below."; -$lang->product->currentExecution = "Current {$lang->sprintCommon}"; +$lang->product->currentExecution = "Current Execution"; $lang->product->activeStories = 'Active [S]'; $lang->product->activeStoriesTitle = 'Active Stories'; $lang->product->changedStories = 'Changed [S]'; diff --git a/module/product/lang/fr.php b/module/product/lang/fr.php index ca43561fdc..89cfb69271 100644 --- a/module/product/lang/fr.php +++ b/module/product/lang/fr.php @@ -51,7 +51,7 @@ $lang->product->build = 'Liste Builds'; $lang->product->moreProduct = "More Product"; $lang->product->projectInfo = "Les Projects qui sont associés à ce {$lang->productCommon} sont listés ci-dessous."; -$lang->product->currentExecution = "Current {$lang->sprintCommon}"; +$lang->product->currentExecution = "Current Execution"; $lang->product->activeStories = 'Actives [S]'; $lang->product->activeStoriesTitle = 'Stories Actives'; $lang->product->changedStories = 'Changées [S]'; diff --git a/module/product/lang/vi.php b/module/product/lang/vi.php index 610d5de2c2..1fd4c06168 100644 --- a/module/product/lang/vi.php +++ b/module/product/lang/vi.php @@ -51,7 +51,7 @@ $lang->product->build = 'Danh sách bản dựng'; $lang->product->moreProduct = "More Product"; $lang->product->projectInfo = "Projects đã liên kết tới {$lang->productCommon} này được liệt kê bên dưới."; -$lang->product->currentExecution = "Hiện {$lang->sprintCommon}"; +$lang->product->currentExecution = "Hiện Execution"; $lang->product->activeStories = 'Kích hoạt [S]'; $lang->product->activeStoriesTitle = 'Kích hoạt câu chuyện'; $lang->product->changedStories = 'Đã thay đổi [S]'; diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index 1fa12f928c..f0c7776d33 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -51,7 +51,7 @@ $lang->product->build = '版本列表'; $lang->product->moreProduct = "更多产品"; $lang->product->projectInfo = "所有与此产品关联的项目"; -$lang->product->currentExecution = "当前{$lang->sprintCommon}"; +$lang->product->currentExecution = "当前执行"; $lang->product->activeStories = "激活{$lang->SRCommon}"; $lang->product->activeStoriesTitle = "激活{$lang->SRCommon}"; $lang->product->changedStories = "已变更{$lang->SRCommon}"; diff --git a/module/todo/lang/zh-cn.php b/module/todo/lang/zh-cn.php index 8c4951edb2..d26736be2e 100644 --- a/module/todo/lang/zh-cn.php +++ b/module/todo/lang/zh-cn.php @@ -35,7 +35,7 @@ $lang->todo->cycle = "周期"; $lang->todo->cycleConfig = "周期设置"; $lang->todo->project = "所属项目"; $lang->todo->product = "所属产品"; -$lang->todo->execution = "所属" . $lang->sprintCommon; +$lang->todo->execution = "所属执行"; $lang->todo->reasonList['story'] = "转{$lang->SRCommon}"; $lang->todo->reasonList['task'] = "转任务"; diff --git a/module/user/view/dynamic.html.php b/module/user/view/dynamic.html.php index 3f69a88f44..2b15182dd3 100644 --- a/module/user/view/dynamic.html.php +++ b/module/user/view/dynamic.html.php @@ -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&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:;'; +$preLink = $hasPre ? inlink('dynamic', "userID={$user->id}&type=$type&recTotal={$pager->recTotal}&date=" . strtotime($firstDate) . '&direction=pre') : 'javascript:;'; +$nextLink = $hasNext ? inlink('dynamic', "userID={$user->id}&type=$type&recTotal={$pager->recTotal}&date=" . strtotime($lastDate) . '&direction=next') : 'javascript:;'; ?>
From 7fbc4a0e473f77af7dc5d769d3722b177f8f1789 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Tue, 16 Mar 2021 14:25:48 +0800 Subject: [PATCH 0008/1617] * Adjust page. --- module/report/lang/zh-cn.php | 4 ++-- module/report/view/bugassign.html.php | 2 +- module/report/view/bugcreate.html.php | 2 +- module/report/view/productsummary.html.php | 4 ++-- module/report/view/workload.html.php | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/module/report/lang/zh-cn.php b/module/report/lang/zh-cn.php index 601354c496..063fc127d0 100644 --- a/module/report/lang/zh-cn.php +++ b/module/report/lang/zh-cn.php @@ -46,8 +46,8 @@ $lang->report->workload = '员工负载表'; $lang->report->workloadAB = '工作负载'; $lang->report->bugOpenedDate = 'Bug创建时间'; $lang->report->beginAndEnd = '起止时间'; -$lang->report->begin = '起始时间'; -$lang->report->end = '结束时间'; +$lang->report->begin = '起始日期'; +$lang->report->end = '结束日期'; $lang->report->dept = '部门'; $lang->report->deviationChart = '执行偏差曲线'; diff --git a/module/report/view/bugassign.html.php b/module/report/view/bugassign.html.php index a65207bd39..f8961ddb20 100644 --- a/module/report/view/bugassign.html.php +++ b/module/report/view/bugassign.html.php @@ -3,7 +3,7 @@ -
+
diff --git a/module/report/view/bugcreate.html.php b/module/report/view/bugcreate.html.php index 01352a80dc..7f5bcac54c 100644 --- a/module/report/view/bugcreate.html.php +++ b/module/report/view/bugcreate.html.php @@ -4,7 +4,7 @@ -
+
diff --git a/module/report/view/productsummary.html.php b/module/report/view/productsummary.html.php index c6a18768e5..18c9b38268 100644 --- a/module/report/view/productsummary.html.php +++ b/module/report/view/productsummary.html.php @@ -6,7 +6,7 @@ -
+
@@ -97,7 +97,7 @@ - +
diff --git a/module/report/view/workload.html.php b/module/report/view/workload.html.php index 99ea165653..8577372501 100644 --- a/module/report/view/workload.html.php +++ b/module/report/view/workload.html.php @@ -5,7 +5,7 @@ -
+
From 07532a914cb2df8e5d702adbdcf9a7d9e959a981 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Tue, 16 Mar 2021 14:36:45 +0800 Subject: [PATCH 0009/1617] * Finish task #36764. --- module/bug/control.php | 10 ++++++++++ module/bug/js/common.js | 33 ++++++++++++++++++++++++++++----- module/bug/js/create.js | 2 +- module/bug/lang/de.php | 1 + module/bug/lang/en.php | 1 + module/bug/lang/fr.php | 1 + module/bug/lang/vi.php | 1 + module/bug/lang/zh-cn.php | 1 + module/bug/view/create.html.php | 11 ++++++++++- module/product/control.php | 17 +++++++++++++++++ 10 files changed, 71 insertions(+), 7 deletions(-) diff --git a/module/bug/control.php b/module/bug/control.php index 39eed6253e..4aa2a53718 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -476,12 +476,20 @@ class bug extends control $moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $branch); if(empty($moduleOptionMenu)) die(js::locate(helper::createLink('tree', 'browse', "productID=$productID&view=story"))); + /* Get products and projects. */ $products = $this->products; if($projectID) { $products = array(); $productList = $this->product->getOrderedProducts('all', 40, $projectID); foreach($productList as $product) $products[$product->id] = $product->name; + + $project = $this->loadModel('project')->getByID($projectID); + $projects = array($projectID => $project->name); + } + else + { + $projects = $this->product->getProjectPairsByProduct($productID, $branch); } /* Set custom. */ @@ -498,9 +506,11 @@ class bug extends control $this->view->productName = $this->products[$productID]; $this->view->moduleOptionMenu = $moduleOptionMenu; $this->view->stories = $stories; + $this->view->projects = $projects; $this->view->executions = $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID); $this->view->builds = $builds; $this->view->moduleID = (int)$moduleID; + $this->view->projectID = $projectID; $this->view->executionID = $executionID; $this->view->taskID = $taskID; $this->view->storyID = $storyID; diff --git a/module/bug/js/common.js b/module/bug/js/common.js index 6a303863be..78fcc13036 100644 --- a/module/bug/js/common.js +++ b/module/bug/js/common.js @@ -55,7 +55,7 @@ function loadAll(productID) $('#task').chosen(); loadProductBranches(productID) loadProductModules(productID); - loadProductExecutions(productID); + loadProductProjects(productID); loadProductBuilds(productID); loadProductplans(productID); loadProductStories(productID); @@ -75,7 +75,7 @@ function loadBranch() $('#task').chosen(); productID = $('#product').val(); loadProductModules(productID); - loadProductExecutions(productID); + loadProductProjects(productID); loadProductBuilds(productID); loadProductplans(productID); loadProductStories(productID); @@ -232,19 +232,42 @@ function loadProductStories(productID) } /** - * Load executions of product. + * Load projects of product. * * @param int $productID * @access public * @return void */ -function loadProductExecutions(productID) +function loadProductProjects(productID) { + branch = $('#branch').val(); + if(typeof(branch) == 'undefined') branch = 0; + + link = createLink('product', 'ajaxGetProjects', 'productID=' + productID + '&branch=' + branch + '&projectID=' + oldProjectID); + $('#projectBox').load(link, function() + { + $(this).find('select').chosen(); + var projectID = $('#project').find("option:selected").val(); + loadProductExecutions(productID, projectID); + }); +} + +/** + * Load executions of product. + * + * @param int $productID + * @param int $projectID + * @access public + * @return void + */ +function loadProductExecutions(productID, projectID = 0) +{ + if(!projectID) projectID = $('#project').find("option:selected").val(); required = $('#execution_chosen').hasClass('required'); branch = $('#branch').val(); if(typeof(branch) == 'undefined') branch = 0; - link = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&executionID=' + oldExecutionID + '&branch=' + branch); + link = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&projectID=' + projectID + '&branch=' + branch); $('#executionIdBox').load(link, function() { $(this).find('select').chosen(); diff --git a/module/bug/js/create.js b/module/bug/js/create.js index 61cb44b8d7..aa402fd61a 100644 --- a/module/bug/js/create.js +++ b/module/bug/js/create.js @@ -92,7 +92,7 @@ $(function() var assignedto = $('#assignedTo').val(); changeProductConfirmed = true; oldStoryID = $('#story').val() || 0; - oldExecutionID = 0; + oldExecutionID = 0; oldOpenedBuild = ''; oldTaskID = $('#oldTaskID').val() || 0; diff --git a/module/bug/lang/de.php b/module/bug/lang/de.php index 0744daaa44..b1db8e9c3b 100644 --- a/module/bug/lang/de.php +++ b/module/bug/lang/de.php @@ -17,6 +17,7 @@ $lang->bug->branch = 'Branch/Platform'; $lang->bug->productplan = 'Plan'; $lang->bug->module = 'Modul'; $lang->bug->moduleAB = 'Modul'; +$lang->bug->project = 'Project'; $lang->bug->execution = $lang->executionCommon; $lang->bug->story = 'Story'; $lang->bug->storyVersion = 'Story Version'; diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index b08abe34f3..402bcd49ed 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -17,6 +17,7 @@ $lang->bug->branch = 'Branch/Platform'; $lang->bug->productplan = 'Plan'; $lang->bug->module = 'Module'; $lang->bug->moduleAB = 'Module'; +$lang->bug->project = 'Project'; $lang->bug->execution = $lang->executionCommon; $lang->bug->story = 'Story'; $lang->bug->storyVersion = 'Story Version'; diff --git a/module/bug/lang/fr.php b/module/bug/lang/fr.php index 7df0054af5..25cb905ae5 100644 --- a/module/bug/lang/fr.php +++ b/module/bug/lang/fr.php @@ -17,6 +17,7 @@ $lang->bug->branch = 'Branche/Plateforme'; $lang->bug->productplan = 'Plan'; $lang->bug->module = 'Module'; $lang->bug->moduleAB = 'Module'; +$lang->bug->project = 'Project'; $lang->bug->execution = $lang->executionCommon; $lang->bug->story = 'Story'; $lang->bug->storyVersion = 'Version Story'; diff --git a/module/bug/lang/vi.php b/module/bug/lang/vi.php index 389b4f6cab..42862a33b5 100644 --- a/module/bug/lang/vi.php +++ b/module/bug/lang/vi.php @@ -17,6 +17,7 @@ $lang->bug->branch = 'Branch/Platform'; $lang->bug->productplan = 'Kế hoạch'; $lang->bug->module = 'Module'; $lang->bug->moduleAB = 'Module'; +$lang->bug->project = 'Project'; $lang->bug->execution = $lang->executionCommon; $lang->bug->story = 'Câu chuyện'; $lang->bug->storyVersion = 'Phiên bản câu chuyện'; diff --git a/module/bug/lang/zh-cn.php b/module/bug/lang/zh-cn.php index 5372b4d835..bc104b0318 100644 --- a/module/bug/lang/zh-cn.php +++ b/module/bug/lang/zh-cn.php @@ -17,6 +17,7 @@ $lang->bug->branch = '分支/平台'; $lang->bug->productplan = '所属' . '计划'; $lang->bug->module = '所属模块'; $lang->bug->moduleAB = '模块'; +$lang->bug->project = '所属项目'; $lang->bug->execution = '所属' . $lang->executionCommon; $lang->bug->story = "相关{$lang->SRCommon}"; $lang->bug->storyVersion = "{$lang->SRCommon}版本"; diff --git a/module/bug/view/create.html.php b/module/bug/view/create.html.php index b85d580372..ad8b139165 100644 --- a/module/bug/view/create.html.php +++ b/module/bug/view/create.html.php @@ -23,6 +23,7 @@ js::set('flow', $config->global->flow); js::set('stepsRequired', $stepsRequired); js::set('stepsNotEmpty', $lang->bug->stepsNotEmpty); js::set('isStepsTemplate', $isStepsTemplate); +js::set('oldProjectID', $projectID); ?>
@@ -91,7 +92,15 @@ js::set('isStepsTemplate', $isStepsTemplate); - + +
+
+ +
+
+ +
+
diff --git a/module/product/control.php b/module/product/control.php index c9f293d88f..d123044b39 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -837,6 +837,23 @@ class product extends control $this->display(); } + /** + * AJAX: get projects of a product in html select. + * + * @param int $productID + * @param int $branch + * @param int $projectID + * @access public + * @return void + */ + public function ajaxGetProjects($productID, $branch = 0, $projectID = 0) + { + $projects = $this->product->getProjectPairsByProduct($productID, $branch ? "0,$branch" : $branch); + if($this->app->getViewType() == 'json') die(json_encode($peojects)); + + die(html::select('project', $projects, $projectID, "class='form-control' onchange='loadProductExecutions({$productID})'")); + } + /** * AJAX: get executions of a product in html select. * From 6e6276bd60f3000a3f6cc986bb9ccf2eecdbcdf3 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Tue, 16 Mar 2021 14:52:20 +0800 Subject: [PATCH 0010/1617] * Finish task #36744. --- module/bug/view/view.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php index a1c00d5491..f8846581b5 100644 --- a/module/bug/view/view.html.php +++ b/module/bug/view/view.html.php @@ -76,7 +76,7 @@ deleted):?>
Date: Tue, 16 Mar 2021 14:52:49 +0800 Subject: [PATCH 0011/1617] * Fix a bug. --- module/testcase/model.php | 44 ++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/module/testcase/model.php b/module/testcase/model.php index 5c09b375f8..c84f50db47 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -1706,37 +1706,29 @@ class testcaseModel extends model /* The related story is changed. */ if($storyChanged) { - $projectStory = $this->dao->select('*')->from(TABLE_PROJECTSTORY) + /* If the new related story isn't linked the project, unlink the case. */ + $this->dao->delete()->from(TABLE_PROJECTCASE) ->where('project')->eq($oldCase->project) - ->andWhere('story')->eq($case->story) - ->fetchAll(); + ->andWhere('`case`')->eq($oldCase->id) + ->exec(); - if(!$projectStory) + /* If the new related story is not null, make the case link the project which link the new related story. */ + if(!empty($case->story)) { - /* If the new related story isn't linked the project, unlink the case. */ - $this->dao->delete()->from(TABLE_PROJECTCASE) - ->where('project')->eq($oldCase->project) - ->andWhere('`case`')->eq($oldCase->id) - ->exec(); - - /* If the new related story is not null, make the case link the project which link the new related story. */ - if(!empty($case->story)) + $projects = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('story')->eq($case->story)->fetchAll('project'); + if($projects) { - $projects = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('story')->eq($case->story)->fetchAll('project'); - if($projects) + $projects = array_keys($projects); + foreach($projects as $projectID) { - $projects = array_keys($projects); - foreach($projects as $projectID) - { - $lastOrder = (int)$this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($projectID)->orderBy('order_desc')->limit(1)->fetch('order'); - $data = new stdclass(); - $data->project = $projectID; - $data->product = $case->product; - $data->case = $caseID; - $data->version = $oldCase->version; - $data->order = ++ $lastOrder; - $this->dao->replace(TABLE_PROJECTCASE)->data($data)->exec(); - } + $lastOrder = (int)$this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($projectID)->orderBy('order_desc')->limit(1)->fetch('order'); + $data = new stdclass(); + $data->project = $projectID; + $data->product = $case->product; + $data->case = $caseID; + $data->version = $oldCase->version; + $data->order = ++ $lastOrder; + $this->dao->replace(TABLE_PROJECTCASE)->data($data)->exec(); } } } From 1162b8fd055ecdf780c8ae0d6dce016a5a3f5cc3 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Tue, 16 Mar 2021 15:30:18 +0800 Subject: [PATCH 0012/1617] * Finish task #36754. --- module/execution/model.php | 13 +++---------- module/my/view/task.html.php | 9 ++++++++- module/task/control.php | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/module/execution/model.php b/module/execution/model.php index 3fb4ce87bf..bfcd233efd 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -2213,14 +2213,10 @@ class executionModel extends model { if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getTeamMembers(); - $execution = $this->getByID($executionID); - $type = $this->config->systemMode == 'new' ? $execution->type : 'execution'; - if(empty($execution)) return array(); - 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)$executionID) - ->andWhere('t1.type')->eq($type) + ->andWhere('t1.type')->eq('execution') ->andWhere('t2.deleted')->eq('0') ->fetchAll('account'); } @@ -2239,14 +2235,11 @@ class executionModel extends model if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getTeamMembersPairs(); $this->app->loadConfig('user'); - $execution = $this->getByID($executionID); - if(empty($execution)) return array(); - $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)$executionID) - ->andWhere('t1.type')->eq($execution->type) + ->andWhere('t1.type')->eq('execution') ->beginIF($params == 'nodeleted' or empty($this->config->user->showDeleted)) ->andWhere('t2.deleted')->eq(0) ->fi() @@ -2344,7 +2337,7 @@ class executionModel extends model $data = (array)fixer::input('post')->get(); extract($data); - $executionType = $execution->type; + $executionType = strpos('sprint|stage', $execution->type) !== false ? 'execution' : $execution->type; $accounts = array_unique($accounts); $limited = array_values($limited); $oldJoin = $this->dao->select('`account`, `join`')->from(TABLE_TEAM)->where('root')->eq((int)$executionID)->andWhere('type')->eq($executionType)->fetchPairs(); diff --git a/module/my/view/task.html.php b/module/my/view/task.html.php index 74fbc708dd..f35238ad15 100644 --- a/module/my/view/task.html.php +++ b/module/my/view/task.html.php @@ -199,11 +199,18 @@ - ' style='overflow:visible'>module, "class='form-control chosen'")?> + ' style='overflow:visible'>module, "class='form-control chosen'")?> ' style='overflow:visible'>assignedTo, "class='form-control chosen' {$disableAssignedTo}");?> type, "class='form-control'");?> >status, "class='form-control'");?> From a603b171e6cfd30c3b64d087784b6063f01380cd Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 29 Mar 2021 10:04:26 +0800 Subject: [PATCH 0434/1617] * Fix bug. --- module/product/control.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/module/product/control.php b/module/product/control.php index 968d4d16a5..5e4b085b2e 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -813,8 +813,10 @@ class product extends control { die(printf($this->lang->build->noProduct, $this->createLink('execution', 'manageproducts', "executionID=$executionID&from=buildCreate", '', 'true'), 'project')); } - - die(html::select('product', $products, empty($product) ? '' : $product->id, "onchange='loadBranches(this.value);' class='form-control chosen' required data-toggle='modal' data-type='iframe'")); + else + { + die(html::select('product', $products, empty($product) ? '' : $product->id, "onchange='loadBranches(this.value);' class='form-control chosen' required data-toggle='modal' data-type='iframe'")); + } } /** From 05796ff5f9314c28d3d6ce554dd1c80381574a3d Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 29 Mar 2021 10:12:02 +0800 Subject: [PATCH 0435/1617] * Fix bug #11627. --- module/build/view/create.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/build/view/create.html.php b/module/build/view/create.html.php index 6e550454db..983bb82691 100644 --- a/module/build/view/create.html.php +++ b/module/build/view/create.html.php @@ -42,7 +42,7 @@ -
+
build->noProduct, $this->createLink('execution', 'manageproducts', "executionID=$executionID&from=buildCreate", '', 'true'), $openApp);?>
From 52aab1864337adf5eba3b202cae3e89cd13affcd Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Mon, 29 Mar 2021 10:57:12 +0800 Subject: [PATCH 0436/1617] * Fix bug #11504. --- module/build/control.php | 5 +++++ module/testtask/control.php | 5 ++++- module/testtask/js/create.js | 26 +++++++++++++++++++++++++- module/testtask/view/create.html.php | 2 +- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/module/build/control.php b/module/build/control.php index bd64606a2e..e1ed16505b 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -56,6 +56,11 @@ class build extends control $this->execution->setMenu($executionID); $this->session->set('project', $execution->project); } + elseif($this->app->openApp == 'qa') + { + $execution = $this->execution->getByID($executionID); + $executions = $this->execution->getPairs($execution->project); + } $productGroups = $this->execution->getProducts($executionID); $productID = $productID ? $productID : key($productGroups); diff --git a/module/testtask/control.php b/module/testtask/control.php index 268ba933e6..8eb5a60ec9 100644 --- a/module/testtask/control.php +++ b/module/testtask/control.php @@ -211,6 +211,10 @@ class testtask extends control { $this->loadModel('execution')->setMenu($executionID); } + elseif($this->app->openApp == 'qa') + { + $this->loadModel('qa')->setMenu($this->products, $productID); + } /* Create testtask from testtask of test.*/ $productID = $productID ? $productID : key($this->products); @@ -219,7 +223,6 @@ class testtask extends control /* Set menu. */ $productID = $this->product->saveState($productID, $this->products); - $this->loadModel('qa')->setMenu($this->products, $productID); $this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->testtask->create; $this->view->position[] = html::a($this->createLink('testtask', 'browse', "productID=$productID"), $this->products[$productID]); diff --git a/module/testtask/js/create.js b/module/testtask/js/create.js index f3b17a474d..ac64d00a46 100755 --- a/module/testtask/js/create.js +++ b/module/testtask/js/create.js @@ -6,7 +6,31 @@ */ function loadProductRelated() { - loadExecutionBuilds(parseInt($('#execution').val())); + loadExecutions($('#product').val()); + data = ''; + $('#build').replaceWith(data); + $('#build_chosen').remove(); + $("#build").chosen(); + $('#build').trigger("chosen:updated"); +} + +/** + * Load executions. + * + * @param int productID + * @access public + * @return void + */ +function loadExecutions(productID) +{ + link = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&projectID=' + projectID); + $.get(link, function(data) + { + if(!data) data = ''; + $('#execution').replaceWith(data); + $('#execution_chosen').remove(); + $("#execution").chosen(); + }); } /* If the mouse hover over the manage contacts button, give tip. */ diff --git a/module/testtask/view/create.html.php b/module/testtask/view/create.html.php index 31e8a28d1c..fd35e0498b 100644 --- a/module/testtask/view/create.html.php +++ b/module/testtask/view/create.html.php @@ -14,7 +14,7 @@ -session->project);?> +
From c32e8928c52e9728af107d93fa6abb56e24105d2 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 29 Mar 2021 11:00:03 +0800 Subject: [PATCH 0437/1617] * Fix bug #11626. --- module/execution/model.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/module/execution/model.php b/module/execution/model.php index 48e4b95cbc..66dcc35e0d 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -2273,7 +2273,7 @@ class executionModel extends model public function manageMembers($executionID) { $execution = $this->getByID($executionID); - $data = (array)fixer::input('post')->get(); + $data = (array)fixer::input('post')->get(); extract($data); $executionType = strpos('sprint|stage', $execution->type) !== false ? 'execution' : $execution->type; @@ -2372,7 +2372,9 @@ class executionModel extends model public function unlinkMember($sprintID, $account) { $sprint = $this->getByID($sprintID); - $this->dao->delete()->from(TABLE_TEAM)->where('root')->eq((int)$sprintID)->andWhere('type')->eq($sprint->type)->andWhere('account')->eq($account)->exec(); + $type = ($sprint->type == 'stage' || $sprint->type == 'sprint') ? 'execution' : $sprint->type; + + $this->dao->delete()->from(TABLE_TEAM)->where('root')->eq((int)$sprintID)->andWhere('type')->eq($type)->andWhere('account')->eq($account)->exec(); $this->updateUserView($sprintID, 'sprint', array($account)); /* Remove team members from the sprint or stage, and determine whether to remove team members from the execution. */ @@ -2386,9 +2388,9 @@ class executionModel extends model ->fetch(); if(empty($teamMember)) { - $this->dao->delete()->from(TABLE_TEAM)->where('root')->eq($sprint->execution)->andWhere('type')->eq('execution')->andWhere('account')->eq($account)->exec(); - $this->loadModel('user')->updateUserView($sprint->execution, 'execution', array($account)); - $linkedProducts = $this->loadModel('product')->getProductPairsByProject($sprint->execution); + $this->dao->delete()->from(TABLE_TEAM)->where('root')->eq($sprint->project)->andWhere('type')->eq('project')->andWhere('account')->eq($account)->exec(); + $this->loadModel('user')->updateUserView($sprint->project, 'project', array($account)); + $linkedProducts = $this->loadModel('product')->getProductPairsByProject($sprint->project); if(!empty($linkedProducts)) $this->user->updateUserView(array_keys($linkedProducts), 'product', array($account)); } } From 9f66557ae56a6d806b028ad92ee4902e4069babf Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Mon, 29 Mar 2021 11:04:55 +0800 Subject: [PATCH 0438/1617] * Fix bug #11518. --- module/testcase/control.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/module/testcase/control.php b/module/testcase/control.php index 245ae8c4d6..f04662a485 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -329,6 +329,10 @@ class testcase extends control { $this->loadModel('project')->setMenu($this->session->project); } + elseif($this->app->openApp == 'execution') + { + $this->loadModel('execution')->setMenu($this->session->execution); + } elseif($this->app->openApp == 'my') { $this->loadModel('my')->setMenu(); From 262824cb7e1d4e3033932a7cab31b36a0ffb94c5 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 29 Mar 2021 11:08:14 +0800 Subject: [PATCH 0439/1617] * Fix bug #11574. --- module/product/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/product/model.php b/module/product/model.php index 7ec4be92c5..2d28c73a8f 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -312,7 +312,7 @@ class productModel extends model ->beginIF(!empty($projectID))->andWhere('t1.project')->eq($projectID)->fi() ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->products)->fi() ->beginIF(strpos($status, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi() - ->orderBy($orderBy . 't2.order desc') + ->orderBy($orderBy . 't2.order asc') ->fetchAll('id'); } From 9c9991204af151277de61b90114a314d95bfcc77 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Mon, 29 Mar 2021 11:14:50 +0800 Subject: [PATCH 0440/1617] * Adjust the code. --- module/my/view/testcase.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/my/view/testcase.html.php b/module/my/view/testcase.html.php index e935255cb8..5de913da90 100644 --- a/module/my/view/testcase.html.php +++ b/module/my/view/testcase.html.php @@ -87,7 +87,7 @@ task";?> createLink('testcase', 'view', $params), $case->title, null, "style='color: $case->color'");?> - taskName;?> + taskName;?> testcase->typeList, $case->type);?> openedBy);?> From e4b370cbc908e17fdc277e4d1c8b75bafc37960f Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Mon, 29 Mar 2021 11:27:25 +0800 Subject: [PATCH 0441/1617] * Adjust code. --- module/common/lang/menu.php | 2 +- module/execution/control.php | 5 +-- module/execution/view/testtask.html.php | 1 - module/product/control.php | 2 +- module/testreport/control.php | 46 ++++++++++++------------- module/testreport/js/common.js | 2 +- module/testreport/lang/zh-cn.php | 2 +- module/testreport/model.php | 11 +++--- module/testreport/view/browse.html.php | 7 ++-- module/testreport/view/edit.html.php | 7 ++-- module/testtask/control.php | 4 ++- module/testtask/model.php | 2 +- 12 files changed, 44 insertions(+), 47 deletions(-) diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php index f2b09ad06b..6d7020521e 100644 --- a/module/common/lang/menu.php +++ b/module/common/lang/menu.php @@ -303,7 +303,7 @@ $lang->execution->menu->qa['subMenu']->qa = array('link' => "$lang->dash $lang->execution->menu->qa['subMenu']->bug = array('link' => "{$lang->bug->common}|execution|bug|executionID=%s", 'subModule' => 'bug'); $lang->execution->menu->qa['subMenu']->testcase = array('link' => "{$lang->testcase->shortCommon}|execution|testcase|executionID=%s", 'alias' => 'create'); $lang->execution->menu->qa['subMenu']->testtask = array('link' => "{$lang->testtask->common}|execution|testtask|executionID=%s", 'subModule' => 'testtask'); -$lang->execution->menu->qa['subMenu']->testreport = array('link' => "{$lang->testreport->common}|execution|testreport|browse|exeutionID=%s", 'subModule' => 'testreport'); +$lang->execution->menu->qa['subMenu']->testreport = array('link' => "{$lang->testreport->common}|execution|testreport|exeutionID=%s", 'subModule' => 'testreport'); $lang->execution->menu->qa['menuOrder'][5] = 'qa'; $lang->execution->menu->qa['menuOrder'][10] = 'bug'; diff --git a/module/execution/control.php b/module/execution/control.php index d011d3b05a..ab17cbe608 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -958,9 +958,9 @@ class execution extends control * @access public * @return void */ - public function testreport($executionID = 0, $objectID = 0, $objectType = 'product', $extra = '', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function testreport($executionID = 0, $objectType = 'execution', $extra = '', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) { - + echo $this->fetch('testreport', 'browse', "objectID=$executionID&objectType=$objectType&extra=$extra&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"); } /** @@ -1041,6 +1041,7 @@ class execution extends control /* Save session. */ $this->session->set('testtaskList', $this->app->getURI(true), 'execution'); + $this->session->set('buildList', $this->app->getURI(true), 'execution'); $execution = $this->commonAction($executionID); $executionID = $execution->id; diff --git a/module/execution/view/testtask.html.php b/module/execution/view/testtask.html.php index f94b99b5a2..5eb0798135 100644 --- a/module/execution/view/testtask.html.php +++ b/module/execution/view/testtask.html.php @@ -29,7 +29,6 @@
- project", " " . $lang->testtask->create, '', "class='btn btn-primary'");?>
diff --git a/module/product/control.php b/module/product/control.php index 5e4b085b2e..580b5de490 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -1002,7 +1002,7 @@ class product extends control elseif($moduleName == 'execution') { $this->loadModel('execution')->setMenu($objectID); - if($testreport == '') $this->app->rawModule = $activeMenu; + $this->app->rawModule = $activeMenu; if($activeMenu == 'testreport') $this->lang->execution->menu->qa['subMenu']->testtask['subMenu']->testtask['subModule'] = 'product'; } diff --git a/module/testreport/control.php b/module/testreport/control.php index 852ae2b712..3a5e9a205b 100644 --- a/module/testreport/control.php +++ b/module/testreport/control.php @@ -94,7 +94,7 @@ class testreport extends control $reports = $this->testreport->getList($objectID, $objectType, $extra, $orderBy, $pager); - if($objectType == 'execution' and isset($_POST['taskIdList'])) + if(strpos('project|execution', $objectType) !== false and isset($_POST['taskIdList'])) { $taskIdList = $_POST['taskIdList']; foreach($reports as $reportID => $report) @@ -109,9 +109,9 @@ class testreport extends control { $param = ''; if($objectType == 'product' and $extra) $param = "objectID=$extra&objectType=testtask"; - if($objectType == 'project') + if(($objectType == 'project' or $objectType == 'execution') and ($extra or !empty($_POST['taskIdList']))) { - $param = "objectID=$objectID&objectType=project"; + $param = "objectID=$objectID&objectType=$objectType"; if(isset($_POST['taskIdList'])) $param .= '&extra=' . join(',', $_POST['taskIdList']); } if($param) $this->locate($this->createLink('testreport', 'create', $param)); @@ -235,9 +235,9 @@ class testreport extends control $this->view->position[] = $this->lang->testreport->create; $this->view->reportTitle = date('Y-m-d') . " TESTTASK#{$task->id} {$task->name} {$this->lang->testreport->common}"; } - elseif($objectType == 'project') + elseif($objectType == 'execution') { - $executionID = $this->commonAction($objectID, 'execution'); + $executionID = $this->commonAction($objectID, $objectType); if($executionID != $objectID) die(js::error($this->lang->error->accessDenied) . js::locate('back')); $execution = $this->execution->getById($executionID); @@ -275,9 +275,9 @@ class testreport extends control $this->view->title = $execution->name . $this->lang->testreport->create; $this->view->position[] = html::a(inlink('browse', "objectID=$executionID&objectType=execution"), $execution->name); $this->view->position[] = $this->lang->testreport->create; - $this->view->reportTitle = date('Y-m-d') . " PROJECT#{$execution->id} {$execution->name} {$this->lang->testreport->common}"; - + $this->view->reportTitle = date('Y-m-d') . " EXECUTION#{$execution->id} {$execution->name} {$this->lang->testreport->common}"; } + $cases = $this->testreport->getTaskCases($tasks, $begin, $end); $bugInfo = $this->testreport->getBugInfo($tasks, $productIdList, $begin, $end, $builds); $this->view->begin = $begin; @@ -316,12 +316,13 @@ class testreport extends control /** * Edit report * - * @param int $reportID - * @param string $from + * @param int $reportID + * @param string $begin + * @param string $end * @access public * @return void */ - public function edit($reportID, $from = 'product', $begin = '', $end ='') + public function edit($reportID, $begin = '', $end ='') { if($_POST) { @@ -333,14 +334,15 @@ class testreport extends control $actionID = $this->loadModel('action')->create('testreport', $reportID, 'Edited', $fileAction); if(!empty($changes)) $this->action->logHistory($actionID, $changes); - die(js::locate(inlink('view', "reportID=$reportID&from=$from"), 'parent')); + die(js::locate(inlink('view', "reportID=$reportID"), 'parent')); } $report = $this->testreport->getById($reportID); $execution = $this->execution->getById($report->execution); $begin = !empty($begin) ? date("Y-m-d", strtotime($begin)) : $report->begin; $end = !empty($end) ? date("Y-m-d", strtotime($end)) : $report->end; - if($from == 'product' and is_numeric($report->product)) + + if($this->app->openApp == 'qa' and !empty($report->product)) { $product = $this->product->getById($report->product); $productID = $this->commonAction($report->product, 'product'); @@ -350,12 +352,12 @@ class testreport extends control $this->view->position[] = html::a($browseLink, $product->name); $this->view->position[] = $this->lang->testreport->edit; } - else + elseif($this->app->openApp == 'execution') { $executionID = $this->commonAction($report->execution, 'execution'); if($executionID != $report->objectID) die(js::error($this->lang->error->accessDenied) . js::locate('back')); - $browseLink = inlink('browse', "objectID=$executionID&objectType=project"); + $browseLink = inlink('browse', "objectID=$executionID&objectType=execution"); $this->view->position[] = html::a($browseLink, $execution->name); $this->view->position[] = $this->lang->testreport->edit; } @@ -384,7 +386,7 @@ class testreport extends control $this->setChartDatas($report->objectID); } - else + elseif($report->objectType == 'execution') { $tasks = $this->testtask->getByList($report->tasks); $productIdList[$report->product] = $report->product; @@ -402,7 +404,6 @@ class testreport extends control $this->view->title = $report->title . $this->lang->testreport->edit; $this->view->report = $report; - $this->view->from = $from; $this->view->begin = $begin; $this->view->end = $end; $this->view->stories = $stories; @@ -412,8 +413,8 @@ class testreport extends control $this->view->tasks = join(',', array_keys($tasks)); $this->view->storySummary = $this->product->summary($stories); - $this->view->builds = $builds; - $this->view->users = $this->user->getPairs('noletter|noclosed|nodeleted'); + $this->view->builds = $builds; + $this->view->users = $this->user->getPairs('noletter|noclosed|nodeleted'); $this->view->cases = $cases; $this->view->caseSummary = $this->testreport->getResultSummary($tasks, $cases, $begin, $end); @@ -434,7 +435,6 @@ class testreport extends control * View report. * * @param int $reportID - * @param string $from * @param string $tab * @param int $recTotal * @param int $recPerPage @@ -442,14 +442,14 @@ class testreport extends control * @access public * @return void */ - public function view($reportID, $from = 'product', $tab = 'basic', $recTotal = 0, $recPerPage = 100, $pageID = 1) + public function view($reportID, $tab = 'basic', $recTotal = 0, $recPerPage = 100, $pageID = 1) { $report = $this->testreport->getById($reportID); if(!$report) die(js::error($this->lang->notFound) . js::locate('back')); $this->session->project = $report->project; $execution = $this->execution->getById($report->execution); - if($from == 'product' and is_numeric($report->product)) + if($this->app->openApp == 'qa' and !empty($report->product)) { $product = $this->product->getById($report->product); $productID = $this->commonAction($report->product, 'product'); @@ -458,12 +458,12 @@ class testreport extends control $browseLink = inlink('browse', "objectID=$productID&objectType=product"); $this->view->position[] = html::a($browseLink, $product->name); } - else + elseif($this->app->openApp == 'execution') { $executionID = $this->commonAction($report->execution, 'execution'); if($executionID != $report->execution) die(js::error($this->lang->error->accessDenied) . js::locate('back')); - $browseLink = inlink('browse', "objectID=$executionID&objectType=project"); + $browseLink = inlink('browse', "objectID=$executionID&objectType=execution"); $this->view->position[] = html::a($browseLink, $execution->name); } diff --git a/module/testreport/js/common.js b/module/testreport/js/common.js index 652fbf4d5f..de161ecc93 100644 --- a/module/testreport/js/common.js +++ b/module/testreport/js/common.js @@ -52,6 +52,6 @@ function refreshPage() } else if(method == 'edit') { - location.href = createLink('testreport', 'edit', "reportID=" + reportID + "&from=" + from + "&begin=" + begin + "&end=" + end); + location.href = createLink('testreport', 'edit', "reportID=" + reportID + "&begin=" + begin + "&end=" + end); } } diff --git a/module/testreport/lang/zh-cn.php b/module/testreport/lang/zh-cn.php index 7723cb1673..468fbae256 100644 --- a/module/testreport/lang/zh-cn.php +++ b/module/testreport/lang/zh-cn.php @@ -65,7 +65,7 @@ $lang->testreport->buildSummary = '共测试了%s个版本。 $lang->testreport->confirmDelete = '是否删除该报告?'; $lang->testreport->moreNotice = '更多功能可以参考禅道扩展机制进行扩展,也可以联系我们进行定制。'; $lang->testreport->exportNotice = "由禅道项目管理软件导出"; -$lang->testreport->noReport = "报表还没有生成。"; +$lang->testreport->noReport = "暂无报告,请到测试单下生成测试报告。"; $lang->testreport->foundBugTip = "影响版本在测试轮次内,并且创建时间在测试时间范围内产生的Bug数。"; $lang->testreport->legacyBugTip = "Bug状态是激活,或Bug的解决时间在测试结束时间之后。"; $lang->testreport->fromCaseBugTip = "测试时间范围内,用例执行失败后创建的Bug。"; diff --git a/module/testreport/model.php b/module/testreport/model.php index 120a1b313f..b300369be7 100644 --- a/module/testreport/model.php +++ b/module/testreport/model.php @@ -52,9 +52,10 @@ class testreportModel extends model */ public function create() { + $execution = $this->loadModel('execution')->getByID($this->post->execution); $data = fixer::input('post') ->stripTags($this->config->testreport->editor->create['id'], $this->config->allowedTags) - ->setIF($this->config->systemMode == 'new' and $this->lang->navGroup->testreport != 'qa', 'project', $this->session->project) + ->setIF($this->config->systemMode == 'new', 'project', $execution->project) ->add('createdBy', $this->app->user->account) ->add('createdDate', helper::now()) ->join('stories', ',') @@ -146,10 +147,10 @@ class testreportModel extends model { $objectID = (int)$objectID; return $this->dao->select('*')->from(TABLE_TESTREPORT)->where('deleted')->eq(0) - ->beginIF($this->lang->navGroup->testreport != 'qa')->andWhere('project')->eq($this->session->project)->fi() - ->beginIF($objectType == 'project')->andWhere('objectID')->eq($objectID)->andWhere('objectType')->eq('project')->fi() - ->beginIF($objectType == 'product' and $extra)->andWhere('objectID')->eq((int)$extra)->andWhere('objectType')->eq('testtask')->fi() - ->beginIF($objectType == 'product' and empty($extra))->andWhere('product')->eq($objectID)->fi() + ->beginIF(!empty($extra))->andWhere('objectID')->eq($extra)->fi() + ->beginIF($objectType == 'product')->andWhere('product')->eq($objectID)->fi() + ->beginIF($objectType == 'project')->andWhere('project')->eq($objectID)->fi() + ->beginIF($objectType == 'execution')->andWhere('execution')->eq($objectID)->fi() ->orderBy($orderBy) ->page($pager) ->fetchAll('id'); diff --git a/module/testreport/view/browse.html.php b/module/testreport/view/browse.html.php index 236475333a..fbb5988b24 100644 --- a/module/testreport/view/browse.html.php +++ b/module/testreport/view/browse.html.php @@ -24,6 +24,7 @@
+
@@ -43,12 +44,11 @@ actions;?> - id"), sprintf('%03d', $report->id));?> - id&from=$objectType"), $report->title)?> + id"), $report->title)?> createdBy);?> createdDate, 2);?> execution ? '#' . $report->execution . $executions[$report->execution] : '';?> @@ -70,9 +70,6 @@ - - testreport->noReport;?> - diff --git a/module/testreport/view/edit.html.php b/module/testreport/view/edit.html.php index a8636b8264..d235b2721f 100644 --- a/module/testreport/view/edit.html.php +++ b/module/testreport/view/edit.html.php @@ -114,9 +114,6 @@
- +id);?> + diff --git a/module/testtask/control.php b/module/testtask/control.php index 8eb5a60ec9..bce40516ea 100644 --- a/module/testtask/control.php +++ b/module/testtask/control.php @@ -37,6 +37,8 @@ class testtask extends control { parent::__construct($moduleName, $methodName); + $this->loadModel('product'); + /* Get product data. */ $projectID = 0; if($this->app->openApp == 'project') @@ -45,7 +47,7 @@ class testtask extends control $products = $this->loadModel('project')->getProducts($projectID, false); } if($this->app->openApp == 'execution') $products = $this->loadModel('execution')->getProducts($this->session->execution, false); - if($this->app->openApp == 'qa' or $this->app->openApp == 'my') $products = $this->loadModel('product')->getPairs(); + if($this->app->openApp == 'qa' or $this->app->openApp == 'my') $products = $this->product->getPairs(); $this->view->products = $this->products = $products; if(empty($this->products)) die($this->locate($this->createLink('product', 'showErrorNone', "moduleName={$this->app->openApp}&activeMenu=testtask&projectID=$projectID"))); } diff --git a/module/testtask/model.php b/module/testtask/model.php index a9f00079e6..d39103c1ec 100644 --- a/module/testtask/model.php +++ b/module/testtask/model.php @@ -72,7 +72,7 @@ class testtaskModel extends model ->leftJoin(TABLE_PROJECTPRODUCT)->alias('t5')->on('t1.execution = t5.project and t1.product = t5.product') ->where('t1.deleted')->eq(0) - ->beginIF($this->config->systemMode == 'new' and $this->lang->navGroup->testtask != 'qa')->andWhere('t1.project')->eq($this->session->project)->fi() + ->beginIF($this->config->systemMode == 'new' and $this->app->openApp != 'qa')->andWhere('t1.project')->eq($this->session->project)->fi() ->andWhere('t1.auto')->ne('unit') ->beginIF(!$this->app->user->admin)->andWhere('t3.id')->in("0,{$this->app->user->view->sprints}")->fi() ->beginIF($scopeAndStatus[0] == 'local')->andWhere('t1.product')->eq((int)$productID)->fi() From 4c554408b7cb832fc2ea1f6cce0c204bd7cc6969 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Mon, 29 Mar 2021 11:28:50 +0800 Subject: [PATCH 0442/1617] * Fix bug #11592. --- module/common/lang/menu.php | 2 +- module/my/view/project.html.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php index f2b09ad06b..9a4bb461e6 100644 --- a/module/common/lang/menu.php +++ b/module/common/lang/menu.php @@ -168,7 +168,7 @@ $lang->product->dividerMenu = $config->URAndSR ? ',requirement,set,' : ',track,s /* Project menu. */ $lang->project->homeMenu = new stdclass(); -$lang->project->homeMenu->browse = array('link' => ($config->systemMode == 'new' ? $lang->project->list : $lang->executionCommon) . '|project|browse|', 'alias' => 'batchedit'); +$lang->project->homeMenu->browse = array('link' => ($config->systemMode == 'new' ? $lang->project->list : $lang->executionCommon) . '|project|browse|', 'alias' => 'batchedit,create'); $lang->project->dividerMenu = ',execution,programplan,doc,dynamic,'; diff --git a/module/my/view/project.html.php b/module/my/view/project.html.php index f179192800..25081ed231 100644 --- a/module/my/view/project.html.php +++ b/module/my/view/project.html.php @@ -29,7 +29,7 @@ config->maxVersion) and common::hasPriv('project', 'createGuide')):?> createLink('project', 'createGuide'), " " . $lang->my->createProgram, '', "class='btn btn-info' data-toggle=modal");?> config->systemMode == 'new' and common::hasPriv('project', 'create')):?> - createLink('project', 'create'), '' . $lang->project->create, '', 'class="btn btn-info" data-toggle="modal" data-target="#guideDialog"');?> + createLink('project', 'create'), '' . $lang->project->create, '', 'class="btn btn-info" data-target="#guideDialog"');?> config->systemMode == 'classic' and common::hasPriv('execution', 'create')):?> createLink('execution', 'create'), '' . $lang->execution->create, '', 'class="btn btn-info"');?> From f5a667ce243ffa7572338b69a681c2d2a4f7187d Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Mon, 29 Mar 2021 11:29:45 +0800 Subject: [PATCH 0443/1617] * Fix bug #11049. --- module/upgrade/control.php | 4 ++-- module/user/model.php | 3 ++- module/user/view/featurebar.html.php | 9 ++++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/module/upgrade/control.php b/module/upgrade/control.php index b2fa00c40f..039ef202cd 100644 --- a/module/upgrade/control.php +++ b/module/upgrade/control.php @@ -164,8 +164,8 @@ class upgrade extends control $mode = fixer::input('post')->get('mode'); $this->loadModel('setting')->setItem('system.common.global.mode', $mode); - if($mode == 'old') $this->locate(inlink('afterExec', "fromVersion=$fromVersion")); - if($mode == 'new') $this->locate(inlink('mergeTips')); + if($mode == 'classic') $this->locate(inlink('afterExec', "fromVersion=$fromVersion")); + if($mode == 'new') $this->locate(inlink('mergeTips')); } $this->view->title = $this->lang->upgrade->to15Guide; diff --git a/module/user/model.php b/module/user/model.php index f815e0033e..66cbdd59fe 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -1025,10 +1025,11 @@ class userModel extends model */ public function getExecutions($account, $type = 'execution', $status = 'all', $orderBy = 'id_desc', $pager = null) { - if($type == 'execution') $type = 'sprint,stage'; + $projectType = $type == 'execution' ? 'sprint,stage' : $type; $myProjectsList = $this->dao->select('t1. *,t2. *')->from(TABLE_TEAM)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.root = t2.id') ->where('t1.type')->in($type) + ->andWhere('t2.type')->in($projectType) ->beginIF(strpos('doing|wait|suspended|closed', $status) !== false)->andWhere('status')->eq($status)->fi() ->beginIF($status == 'done')->andWhere('status')->in('done,closed')->fi() ->beginIF($status == 'undone')->andWhere('status')->notin('done,closed')->fi() diff --git a/module/user/view/featurebar.html.php b/module/user/view/featurebar.html.php index 96011fa96a..8a22b15661 100755 --- a/module/user/view/featurebar.html.php +++ b/module/user/view/featurebar.html.php @@ -39,9 +39,12 @@ $active = $methodName == 'testcase' ? ' btn-active-text' : ''; common::printLink('user', 'testcase', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); - $label = "{$lang->user->execution}"; - $active = $methodName == 'execution' ? ' btn-active-text' : ''; - common::printLink('user', 'execution', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); + if($this->config->systemMode == 'new') + { + $label = "{$lang->user->execution}"; + $active = $methodName == 'execution' ? ' btn-active-text' : ''; + common::printLink('user', 'execution', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); + } if(isset($this->config->maxVersion)) { From 8beac103a4fa8796e180b587b4c3a4215e90f94a Mon Sep 17 00:00:00 2001 From: zhujinyong Date: Mon, 29 Mar 2021 11:31:04 +0800 Subject: [PATCH 0444/1617] * Fix bug#11637. --- module/bug/control.php | 15 ++++++++++++--- module/testtask/js/common.js | 6 +++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/module/bug/control.php b/module/bug/control.php index 878bbcf32d..cbb6acd20e 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -288,8 +288,6 @@ class bug extends control { if(empty($this->products)) $this->locate($this->createLink('product', 'create')); - $this->qa->setMenu($this->products, $productID); - /* Unset discarded types. */ foreach($this->config->bug->discardedTypes as $type) unset($this->lang->bug->typeList[$type]); @@ -297,7 +295,18 @@ class bug extends control $extras = str_replace(array(',', ' '), array('&', ''), $extras); parse_str($extras, $output); - if(isset($output['executionID'])) $this->loadModel('execution')->setMenu($output['executionID']); + if($this->app->openApp == 'execution') + { + $this->loadModel('execution')->setMenu($output['executionID']); + } + else if($this->app->openApp == 'project') + { + $this->loadModel('project')->setMenu($output['projectID']); + } + else + { + $this->qa->setMenu($this->products, $productID); + } foreach($output as $paramKey => $paramValue) { diff --git a/module/testtask/js/common.js b/module/testtask/js/common.js index 17ed4d0430..b787ef3e37 100644 --- a/module/testtask/js/common.js +++ b/module/testtask/js/common.js @@ -54,7 +54,11 @@ function createBug(obj) var onlybody = config.onlybody; config.onlybody = 'no'; - window.open(createLink('bug', 'create', params + ',stepIdList=' + stepIdList), '_parent'); + + var link = createLink('bug', 'create', params + ',stepIdList=' + stepIdList); + if(onlybody = 'yes') link += '#app=qa'; + window.parent.$.apps.open(link); + config.onlybody = onlybody; } From cb79ac102629a58d8546a2935539de822e713303 Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Mon, 29 Mar 2021 11:40:07 +0800 Subject: [PATCH 0445/1617] * Adjust code. --- module/execution/view/testtask.html.php | 2 +- module/testreport/control.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/execution/view/testtask.html.php b/module/execution/view/testtask.html.php index 5eb0798135..f31541cd0a 100644 --- a/module/execution/view/testtask.html.php +++ b/module/execution/view/testtask.html.php @@ -101,7 +101,7 @@ { common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'list', 'sitemap'); common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link'); - common::printIcon('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id", $task, 'list','flag'); + common::printIcon('testreport', 'browse', "objectID=$task->execution&objectType=execution&extra=$task->id", $task, 'list','flag'); common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list'); if(common::hasPriv('testtask', 'delete', $task)) { diff --git a/module/testreport/control.php b/module/testreport/control.php index 3a5e9a205b..a0590821b9 100644 --- a/module/testreport/control.php +++ b/module/testreport/control.php @@ -355,7 +355,7 @@ class testreport extends control elseif($this->app->openApp == 'execution') { $executionID = $this->commonAction($report->execution, 'execution'); - if($executionID != $report->objectID) die(js::error($this->lang->error->accessDenied) . js::locate('back')); + if($executionID != $report->execution) die(js::error($this->lang->error->accessDenied) . js::locate('back')); $browseLink = inlink('browse', "objectID=$executionID&objectType=execution"); $this->view->position[] = html::a($browseLink, $execution->name); From fd7e0cf4e311f31ab94aace46bcdc79eb0766e3e Mon Sep 17 00:00:00 2001 From: Catouse Date: Mon, 29 Mar 2021 15:08:20 +0800 Subject: [PATCH 0446/1617] * change style of id columns. --- www/theme/zui/css/min.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/theme/zui/css/min.css b/www/theme/zui/css/min.css index 2b6fbb5020..c939966fad 100644 --- a/www/theme/zui/css/min.css +++ b/www/theme/zui/css/min.css @@ -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{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.7.2);src:url(../fonts/ZentaoIcon.eot?#iefix&v=1.7.2) format('embedded-opentype'),url(../fonts/ZentaoIcon.woff?v=1.7.2) format('woff'),url(../fonts/ZentaoIcon.ttf?v=1.7.2) format('truetype'),url(../fonts/ZentaoIcon.svg#regular?v=1.7.2) 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-run:before{content:"\e9a9"}.icon-program:before{content:"\e9aa"}.icon-alter:before{content:"\e9ab"}.icon-test:before{content:"\e956"}.icon-infinite:before{content:"\e9a3"}.icon-devops:before{content:"\e9a3"}.icon-waterfall:before{content:"\e9a4"}.icon-shield-check:before{content:"\e9a5"}.icon-ok:before{content:"\e9a6"}.icon-more-alt:before{content:"\e9a7"}.icon-sprint:before{content:"\e9a2"}.icon-manual:before{content:"\e98d"}.icon-split:before{content:"\e98e"}.icon-lightbulb-alt:before{content:"\e98f"}.icon-product:before{content:"\e98f"}.icon-code1:before{content:"\e990"}.icon-feedback:before{content:"\e991"}.icon-account:before{content:"\e992"}.icon-controls:before{content:"\e993"}.icon-flow:before{content:"\e994"}.icon-about:before{content:"\e995"}.icon-cog-outline:before{content:"\e996"}.icon-backend:before{content:"\e996"}.icon-recent:before{content:"\e997"}.icon-statistic:before{content:"\e999"}.icon-exit:before{content:"\e99a"}.icon-doc:before{content:"\e99b"}.icon-rocket:before{content:"\e99c"}.icon-project:before{content:"\e99c"}.icon-usecase:before{content:"\e99d"}.icon-aiux:before{content:"\e99e"}.icon-ops:before{content:"\e99f"}.icon-theme:before{content:"\e9a0"}.icon-oa:before{content:"\e9a1"}.icon-globe:before{content:"\f0ac"}.icon-lang:before{content:"\f0ac"}.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-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-list:before{content:"\e9a8"}.icon-format-list-bulleted:before{content:"\e9a8"}.icon-chat:before{content:"\e940"}.icon-message:before{content:"\e940"}.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-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-team: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-chat-line:before{content:"\e998"}.icon-bar-chart:before{content:"\e903"}.icon-import:before{content:"\e904"}.icon-download: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-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}.icon-message.has-dot{position:relative}.icon-message.has-dot::after{position:absolute;top:-3px;right:-5px;display:block;width:6px;height:6px;content:' ';background-color:#ff5d5d;border-radius:50%}.icon-project{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.icon-product{-webkit-transform:scale(1.15);-ms-transform:scale(1.15);-o-transform:scale(1.15);transform:scale(1.15)}.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}.angle-btn:first-child{border-radius:2px 0 0 2px}.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-radius:2px}.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 canvas{display:block}.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)}.progress-pie-24 .progress-info{right:-10px;left:-10px;width:auto;padding-top:0;font-size:12px;line-height:24px;color:#2196f3;-webkit-transform:scale(.7,1);-ms-transform:scale(.7,1);-o-transform:scale(.7,1);transform:scale(.7,1)}.progress-pie-24[data-value="100"] .progress-info{-webkit-transform:scale(.6,1);-ms-transform:scale(.6,1);-o-transform:scale(.6,1);transform:scale(.6,1)}.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:14px;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 .avatar{display:inline-block;vertical-align:middle}#userNav>li>a{padding:2px 6px;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:10px}.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;content:"\e6f2"}.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:"\e6f1"}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:16px!important;line-height:22px!important;content:"\e6f2"!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:"\e6f1"!important}.disable-empty-nest-row .is-nest-child .table-nest-icon:before,.disable-empty-nest-row .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{width:initial;max-width:initial}#dropMenu>.search-box{width:100%;padding:10px 10px 0;margin:0}#dropMenu>.search-box .icon-search{color:#333}#dropMenu .input-control-icon-left{top:10px;left:10px}#dropMenu .input-control-icon-right{top:11px;right:11px}#dropMenu .input-control-icon-right .icon{position:relative;top:2px}#dropMenu .list-group{max-height:initial;padding:0;margin:0}#dropMenu .table-row{table-layout:auto}#dropMenu .table-col{position:relative;width:100%;min-width:200px;max-width:450px}#dropMenu .table-col .list-group{max-height:300px;padding:0 10px 5px}#dropMenu .col-left{padding-bottom:30px}#dropMenu .col-right{display:none}#dropMenu .col-footer{position:absolute;right:0;bottom:0;left:0;padding:5px 10px;border-top:1px solid #eee}#dropMenu .col-footer>a{opacity:.8}#dropMenu .col-footer>a:hover{opacity:1}#dropMenu.show-right-col .table-col{width:50%}#dropMenu.show-right-col .col-right{display:table-cell;border-left:1px solid #eee}#dropMenu.show-right-col .col-right>.list-group{max-height:335px;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 .list-group{overflow-x:hidden}#dropMenu.has-search-text>.search-box{width:100%!important}#dropMenu.has-search-text>.list-group>.table-row{display:block}#dropMenu.has-search-text>.list-group>.table-row>.table-col{display:block;width:100%}#dropMenu.has-search-text .col-left{padding-bottom:0}#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 .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right .list-group>a{opacity:.7}#dropMenu.has-search-text .col-footer{display:none}#swapper{position:relative}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#0c64eb!important}#swapper #dropMenu .tree{margin:0}.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}#heading{top:0}.header-btn{position:relative;padding:8px 0}.header-btn .btn{position:relative;height:34px;padding:1px 6px;margin:0;overflow:visible;font-size:13px;font-weight:400;line-height:28px;color:#fff;background-color:transparent;border-color:transparent!important;border-right:none;-webkit-transition:none;-o-transition:none;transition:none}.header-btn .btn>.caret{margin-left:0;border-width:4px}.header-btn .btn>.text{display:inline-block;max-width:150px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.header-btn .btn:hover,.header-btn.active .btn{color:#fff;background:rgba(0,0,0,.15)}.header-btn .btn:hover>.caret,.header-btn.active .btn>.caret{opacity:1}.header-btn+.header-btn{margin-left:10px}.header-btn+.header-btn:before{position:absolute;top:16px;left:-13px;display:block;font-family:ZentaoIcon;font-size:18px;font-size:16px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:"\e315";opacity:.6;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header-btn .dropdown-menu{margin-top:-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{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.7.2);src:url(../fonts/ZentaoIcon.eot?#iefix&v=1.7.2) format('embedded-opentype'),url(../fonts/ZentaoIcon.woff?v=1.7.2) format('woff'),url(../fonts/ZentaoIcon.ttf?v=1.7.2) format('truetype'),url(../fonts/ZentaoIcon.svg#regular?v=1.7.2) 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-run:before{content:"\e9a9"}.icon-program:before{content:"\e9aa"}.icon-alter:before{content:"\e9ab"}.icon-test:before{content:"\e956"}.icon-infinite:before{content:"\e9a3"}.icon-devops:before{content:"\e9a3"}.icon-waterfall:before{content:"\e9a4"}.icon-shield-check:before{content:"\e9a5"}.icon-ok:before{content:"\e9a6"}.icon-more-alt:before{content:"\e9a7"}.icon-sprint:before{content:"\e9a2"}.icon-manual:before{content:"\e98d"}.icon-split:before{content:"\e98e"}.icon-lightbulb-alt:before{content:"\e98f"}.icon-product:before{content:"\e98f"}.icon-code1:before{content:"\e990"}.icon-feedback:before{content:"\e991"}.icon-account:before{content:"\e992"}.icon-controls:before{content:"\e993"}.icon-flow:before{content:"\e994"}.icon-about:before{content:"\e995"}.icon-cog-outline:before{content:"\e996"}.icon-backend:before{content:"\e996"}.icon-recent:before{content:"\e997"}.icon-statistic:before{content:"\e999"}.icon-exit:before{content:"\e99a"}.icon-doc:before{content:"\e99b"}.icon-rocket:before{content:"\e99c"}.icon-project:before{content:"\e99c"}.icon-usecase:before{content:"\e99d"}.icon-aiux:before{content:"\e99e"}.icon-ops:before{content:"\e99f"}.icon-theme:before{content:"\e9a0"}.icon-oa:before{content:"\e9a1"}.icon-globe:before{content:"\f0ac"}.icon-lang:before{content:"\f0ac"}.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-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-list:before{content:"\e9a8"}.icon-format-list-bulleted:before{content:"\e9a8"}.icon-chat:before{content:"\e940"}.icon-message:before{content:"\e940"}.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-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-team: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-chat-line:before{content:"\e998"}.icon-bar-chart:before{content:"\e903"}.icon-import:before{content:"\e904"}.icon-download: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-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}.icon-message.has-dot{position:relative}.icon-message.has-dot::after{position:absolute;top:-3px;right:-5px;display:block;width:6px;height:6px;content:' ';background-color:#ff5d5d;border-radius:50%}.icon-project{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.icon-product{-webkit-transform:scale(1.15);-ms-transform:scale(1.15);-o-transform:scale(1.15);transform:scale(1.15)}.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}.angle-btn:first-child{border-radius:2px 0 0 2px}.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-radius:2px}.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 canvas{display:block}.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)}.progress-pie-24 .progress-info{right:-10px;left:-10px;width:auto;padding-top:0;font-size:12px;line-height:24px;color:#2196f3;-webkit-transform:scale(.7,1);-ms-transform:scale(.7,1);-o-transform:scale(.7,1);transform:scale(.7,1)}.progress-pie-24[data-value="100"] .progress-info{-webkit-transform:scale(.6,1);-ms-transform:scale(.6,1);-o-transform:scale(.6,1);transform:scale(.6,1)}.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:14px;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 .avatar{display:inline-block;vertical-align:middle}#userNav>li>a{padding:2px 6px;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:10px}.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-right:4px;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;content:"\e6f2"}.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:"\e6f1"}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:16px!important;line-height:22px!important;content:"\e6f2"!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:"\e6f1"!important}.disable-empty-nest-row .is-nest-child .table-nest-icon:before,.disable-empty-nest-row .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{width:initial;max-width:initial}#dropMenu>.search-box{width:100%;padding:10px 10px 0;margin:0}#dropMenu>.search-box .icon-search{color:#333}#dropMenu .input-control-icon-left{top:10px;left:10px}#dropMenu .input-control-icon-right{top:11px;right:11px}#dropMenu .input-control-icon-right .icon{position:relative;top:2px}#dropMenu .list-group{max-height:initial;padding:0;margin:0}#dropMenu .table-row{table-layout:auto}#dropMenu .table-col{position:relative;width:100%;min-width:200px;max-width:450px}#dropMenu .table-col .list-group{max-height:300px;padding:0 10px 5px}#dropMenu .col-left{padding-bottom:30px}#dropMenu .col-right{display:none}#dropMenu .col-footer{position:absolute;right:0;bottom:0;left:0;padding:5px 10px;border-top:1px solid #eee}#dropMenu .col-footer>a{opacity:.8}#dropMenu .col-footer>a:hover{opacity:1}#dropMenu.show-right-col .table-col{width:50%}#dropMenu.show-right-col .col-right{display:table-cell;border-left:1px solid #eee}#dropMenu.show-right-col .col-right>.list-group{max-height:335px;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 .list-group{overflow-x:hidden}#dropMenu.has-search-text>.search-box{width:100%!important}#dropMenu.has-search-text>.list-group>.table-row{display:block}#dropMenu.has-search-text>.list-group>.table-row>.table-col{display:block;width:100%}#dropMenu.has-search-text .col-left{padding-bottom:0}#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 .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right .list-group>a{opacity:.7}#dropMenu.has-search-text .col-footer{display:none}#swapper{position:relative}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#0c64eb!important}#swapper #dropMenu .tree{margin:0}.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}#heading{top:0}.header-btn{position:relative;padding:8px 0}.header-btn .btn{position:relative;height:34px;padding:1px 6px;margin:0;overflow:visible;font-size:13px;font-weight:400;line-height:28px;color:#fff;background-color:transparent;border-color:transparent!important;border-right:none;-webkit-transition:none;-o-transition:none;transition:none}.header-btn .btn>.caret{margin-left:0;border-width:4px}.header-btn .btn>.text{display:inline-block;max-width:150px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.header-btn .btn:hover,.header-btn.active .btn{color:#fff;background:rgba(0,0,0,.15)}.header-btn .btn:hover>.caret,.header-btn.active .btn>.caret{opacity:1}.header-btn+.header-btn{margin-left:10px}.header-btn+.header-btn:before{position:absolute;top:16px;left:-13px;display:block;font-family:ZentaoIcon;font-size:18px;font-size:16px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:"\e315";opacity:.6;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header-btn .dropdown-menu{margin-top:-10px} \ No newline at end of file From dba7a2acdd087630edffd94bca750c0c2246406f Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Mon, 29 Mar 2021 16:21:14 +0800 Subject: [PATCH 0447/1617] * Finish task #37107. --- module/report/model.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/module/report/model.php b/module/report/model.php index ee531d0526..a5b5f4860f 100644 --- a/module/report/model.php +++ b/module/report/model.php @@ -138,12 +138,15 @@ class reportModel extends model */ public function getProducts($conditions, $storyType = 'story') { - $products = $this->dao->select('id, code, name, PO')->from(TABLE_PRODUCT) - ->where('deleted')->eq(0) - ->beginIF(strpos($conditions, 'closedProduct') === false)->andWhere('status')->ne('closed')->fi() - ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->products)->fi() + $products = $this->dao->select('t1.id as id, t1.code, t1.name, t1.PO')->from(TABLE_PRODUCT)->alias('t1') + ->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id') + ->where('t1.deleted')->eq(0) + ->beginIF(strpos($conditions, 'closedProduct') === false)->andWhere('t1.status')->ne('closed')->fi() + ->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->products)->fi() + ->orderBy('t2.order_asc, t1.line_desc, t1.order_asc') ->fetchAll('id'); - $plans = $this->dao->select('*')->from(TABLE_PRODUCTPLAN)->where('deleted')->eq(0)->andWhere('product')->in(array_keys($products)) + + $plans = $this->dao->select('*')->from(TABLE_PRODUCTPLAN)->where('deleted')->eq(0)->andWhere('product')->in(array_keys($products)) ->beginIF(strpos($conditions, 'overduePlan') === false)->andWhere('end')->gt(date('Y-m-d'))->fi() ->orderBy('product,parent_desc,begin') ->fetchAll('id'); From 19f5b6b97488187475b1f2cec4e82217aa321883 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Mon, 29 Mar 2021 16:22:57 +0800 Subject: [PATCH 0448/1617] * Fix an error. --- module/my/view/project.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/my/view/project.html.php b/module/my/view/project.html.php index 25081ed231..1ceec409b1 100644 --- a/module/my/view/project.html.php +++ b/module/my/view/project.html.php @@ -29,7 +29,7 @@ config->maxVersion) and common::hasPriv('project', 'createGuide')):?> createLink('project', 'createGuide'), " " . $lang->my->createProgram, '', "class='btn btn-info' data-toggle=modal");?> config->systemMode == 'new' and common::hasPriv('project', 'create')):?> - createLink('project', 'create'), '' . $lang->project->create, '', 'class="btn btn-info" data-target="#guideDialog"');?> + createLink('project', 'create', 'mode=scrum'), '' . $lang->project->create, '', 'class="btn btn-info"');?> config->systemMode == 'classic' and common::hasPriv('execution', 'create')):?> createLink('execution', 'create'), '' . $lang->execution->create, '', 'class="btn btn-info"');?> From 75459b0472a1159b51f9f76d7b56216ac7183eb0 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Mon, 29 Mar 2021 16:38:38 +0800 Subject: [PATCH 0449/1617] * Finish task #37125,#37097. --- module/index/css/index.css | 5 +++-- module/index/js/index.js | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/module/index/css/index.css b/module/index/css/index.css index b9766ee0c6..3a4e82a8d8 100644 --- a/module/index/css/index.css +++ b/module/index/css/index.css @@ -53,8 +53,9 @@ body.menu-hide {padding-left: 0;} #bars {position: absolute; left: 0; top: 0; bottom: 0; padding: 0 5px;} #bars > li {padding: 8px 2px;} #bars > li > a {height: 24px; color: #000; padding: 2px 8px; line-height: 20px; border-radius: 2px;} -#bars > li > a:hover, #bars > li > a:active, #bars > li > a:focus {background: #16a8f8;} -#bars > li.active > a, #bars > li.active > a:active, #bars > li.active > a:focus {font-weight: 600; border-bottom: 2px solid #16a8f8;} +#bars > li.active > a {background: #fff!important;} +#bars > li > a:hover, #bars > li > a:active, #bars > li > a:focus {background: #16a8f8!important; color: #fff;} +#bars > li.active > a > span, #bars > li.active > a:active > span, #bars > li.active > a:focus > span {padding-bottom: 2px; font-weight: 600; border-bottom: 2px solid #16a8f8;} #bars > li.active:after {content: ' '; display: block; position: absolute; height: 3px; left: 5px; right: 5px; bottom: 0; border-radius: 2px;} #bars > li.divider{margin-right: 5px; margin-top: 10px; height: 20px; border-right: 1px solid #d9d9d9;} diff --git a/module/index/js/index.js b/module/index/js/index.js index 09cc085a75..e7a35349cd 100644 --- a/module/index/js/index.js +++ b/module/index/js/index.js @@ -229,7 +229,7 @@ var $link= $('') .attr('data-app', appCode) .attr('class', 'show-in-app') - .html(app.text); + .html('' + app.text + ''); var barCount = $('#bars li').length; if(barCount) $bar = $('
  • ').appendTo($bars); From 669b0794abae4195aea576310798216a599fede2 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Mon, 29 Mar 2021 16:41:50 +0800 Subject: [PATCH 0450/1617] * Fix bug#11577. --- module/block/view/projectdynamicblock.html.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/module/block/view/projectdynamicblock.html.php b/module/block/view/projectdynamicblock.html.php index e89f1118ce..f60048f555 100644 --- a/module/block/view/projectdynamicblock.html.php +++ b/module/block/view/projectdynamicblock.html.php @@ -1,6 +1,10 @@
    block->emptyTip;?>
    +
      Date: Mon, 29 Mar 2021 16:44:15 +0800 Subject: [PATCH 0451/1617] * Finish task #37033. --- module/block/control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/block/control.php b/module/block/control.php index fab109b185..6f294f2670 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -1330,7 +1330,7 @@ class block extends control { if(!empty($this->params->type) and preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) die(); $count = isset($this->params->count) ? (int)$this->params->count : 15; - $type = isset($this->params->type) ? $this->params->type : 'all'; + $type = isset($this->params->type) ? $this->params->type : 'wait'; $this->app->loadClass('pager', $static = true); $pager = pager::init(0, $count, 1); From fbb3ffaa055ccaed6303e5a28f20657f898dbae1 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Mon, 29 Mar 2021 17:04:25 +0800 Subject: [PATCH 0452/1617] * Adjust the code. --- module/project/control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/project/control.php b/module/project/control.php index b2bc44bf7d..ee3e2d3ed7 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -281,7 +281,7 @@ class project extends control $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('programplan', 'create', "projectID=$projectID", '', '', $projectID))); } - $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('project', 'create', '', '', '', $projectID))); + $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('project', 'browse', "programID=0&browseType=all", '', '', $projectID))); } } From 16af36b6ae300670160e70c2cb53d70793f8a175 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Mon, 29 Mar 2021 17:16:17 +0800 Subject: [PATCH 0453/1617] * Fix menu. --- module/common/lang/menu.php | 48 ------------------------------------- module/common/model.php | 11 +++++++++ 2 files changed, 11 insertions(+), 48 deletions(-) diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php index 1d1d3ccc58..a89f5770f0 100644 --- a/module/common/lang/menu.php +++ b/module/common/lang/menu.php @@ -213,54 +213,6 @@ $lang->scrum->menu->settings['subMenu']->whitelist = array('link' => "{$lang-> $lang->scrum->menu->settings['subMenu']->stakeholder = array('link' => "{$lang->stakeholder->common}|stakeholder|browse|project=%s", 'subModule' => 'stakeholder'); $lang->scrum->menu->settings['subMenu']->group = array('link' => "{$lang->priv}|project|group|project=%s", 'alias' => 'group,manageview,managepriv'); -/* Waterfall menu. */ -$lang->waterfall->menu = new stdclass(); -$lang->waterfall->menu->index = array('link' => "$lang->dashboard|project|index|project=%s"); -$lang->waterfall->menu->programplan = array('link' => "{$lang->productplan->shortCommon}|programplan|browse|project=%s", 'subModule' => 'programplan'); -$lang->waterfall->menu->doc = array('link' => "{$lang->doc->common}|doc|objectLibs|type=project&objectID=%s"); -$lang->waterfall->menu->story = array('link' => "$lang->SRCommon|projectstory|story|project=%s", 'subModule' => 'projectstory'); -$lang->waterfall->menu->design = array('link' => "$lang->design|design|browse|project=%s"); -$lang->waterfall->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo'); -$lang->waterfall->menu->track = array('link' => "$lang->track|projectstory|track", 'alias' => 'track'); -$lang->waterfall->menu->qa = array('link' => "{$lang->qa->common}|project|qa|projectID=%s", 'subModule' => 'testcase,testtask,bug', 'alias' => 'bug,testtask,testcase'); -$lang->waterfall->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease'); -$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s"); -$lang->waterfall->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s"); -$lang->waterfall->menu->other = array('link' => "$lang->other|workestimation|index|project=%s", 'class' => 'dropdown dropdown-hover'); -$lang->waterfall->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist'); - -/* Waterfall menu order. */ -$lang->waterfall->menuOrder[5] = 'index'; -$lang->waterfall->menuOrder[15] = 'programplan'; -$lang->waterfall->menuOrder[20] = 'projectstory'; -$lang->waterfall->menuOrder[25] = 'design'; -$lang->waterfall->menuOrder[30] = 'ci'; -$lang->waterfall->menuOrder[35] = 'track'; -$lang->waterfall->menuOrder[38] = 'review'; -$lang->waterfall->menuOrder[39] = 'cm'; -$lang->waterfall->menuOrder[40] = 'qa'; -$lang->waterfall->menuOrder[45] = 'doc'; -$lang->waterfall->menuOrder[50] = 'build'; -$lang->waterfall->menuOrder[55] = 'projectrelease'; -$lang->waterfall->menuOrder[60] = 'weekly'; -$lang->waterfall->menuOrder[65] = 'other'; -$lang->waterfall->menuOrder[68] = 'dynamic'; -$lang->waterfall->menuOrder[70] = 'projectsetting'; - -$lang->waterfall->menu->qa['subMenu'] = new stdclass(); -$lang->waterfall->menu->qa['subMenu']->index = array('link' => "$lang->dashboard|project|qa|projectID=%s"); -$lang->waterfall->menu->qa['subMenu']->bug = array('link' => "{$lang->bug->common}|project|bug|projectID=%s", 'subModule' => 'bug'); -$lang->waterfall->menu->qa['subMenu']->testcase = array('link' => "{$lang->testcase->shortCommon}|project|testcase|projectID=%s", 'subModule' => 'testsuite,testcase,caselib'); -$lang->waterfall->menu->qa['subMenu']->testtask = array('link' => "{$lang->testtask->common}|project|testtask|projectID=%s", 'subModule' => 'testtask', 'class' => 'dropdown dropdown-hover'); - -$lang->waterfall->menu->other['dropMenu'] = new stdclass(); -$lang->waterfall->menu->other['dropMenu']->estimation = array('link' => "$lang->estimation|workestimation|index|projectID=%s", 'subModule' => 'workestimation,durationestimation,budget'); -$lang->waterfall->menu->other['dropMenu']->issue = array('link' => "$lang->issue|issue|browse|projectID=%s", 'subModule' => 'issue'); -$lang->waterfall->menu->other['dropMenu']->risk = array('link' => "$lang->risk|risk|browse|projectID=%s", 'subModule' => 'risk'); - -$lang->waterfall->menu->devops = $lang->scrum->menu->devops; -$lang->waterfall->menu->settings = $lang->scrum->menu->settings; - /* Execution menu. */ $lang->execution->homeMenu = new stdclass(); $lang->execution->homeMenu->index = "$lang->dashboard|execution|index|"; diff --git a/module/common/model.php b/module/common/model.php index ccce48f175..8a252611ee 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -689,7 +689,18 @@ class commonModel extends model $subLink = helper::createLink($subModule, $subMethod, $subParams); $subActive = ''; + $activeMainMenu = false; if($currentModule == strtolower($subModule) && $currentMethod == strtolower($subMethod)) + { + $activeMainMenu = true; + } + else + { + $subModule = isset($dropMenuItem->subModule) ? explode(',', $dropMenuItem->subModule) : array(); + if($subModule and in_array($currentModule, $subModule) and strpos(",$exclude,", ",$currentModule-$currentMethod,") === false) $activeMainMenu = true; + } + + if($activeMainMenu) { $activeMenu = $dropMenuName; $active = 'active'; From 2116dd48f6667b93d0b9ab9415bb4761b3d88cd0 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Mon, 29 Mar 2021 17:16:52 +0800 Subject: [PATCH 0454/1617] * Finish task #37009. --- module/block/lang/de.php | 8 ++++---- module/block/lang/en.php | 8 ++++---- module/block/lang/fr.php | 8 ++++---- module/block/lang/vi.php | 8 ++++---- module/block/lang/zh-cn.php | 8 ++++---- module/block/lang/zh-tw.php | 8 ++++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/module/block/lang/de.php b/module/block/lang/de.php index 594e0106f4..6064567974 100644 --- a/module/block/lang/de.php +++ b/module/block/lang/de.php @@ -336,7 +336,7 @@ $lang->block->availableBlocks->issue = 'My Issues'; $lang->block->moduleList['project'] = 'Project'; $lang->block->moduleList['product'] = $lang->productCommon; -$lang->block->moduleList['execution'] = $lang->executionCommon; +$lang->block->moduleList['execution'] = $lang->execution->common; $lang->block->moduleList['qa'] = 'QA'; $lang->block->moduleList['todo'] = 'Todos'; @@ -376,9 +376,9 @@ $lang->block->modules['product']->availableBlocks->release = 'Release'; $lang->block->modules['execution'] = new stdclass(); $lang->block->modules['execution']->availableBlocks = new stdclass(); -$lang->block->modules['execution']->availableBlocks->statistic = $lang->executionCommon . ' Statistik'; -$lang->block->modules['execution']->availableBlocks->overview = $lang->executionCommon . ' Übersicht'; -$lang->block->modules['execution']->availableBlocks->list = $lang->executionCommon . ' Liste'; +$lang->block->modules['execution']->availableBlocks->statistic = $lang->execution->common . ' Statistik'; +$lang->block->modules['execution']->availableBlocks->overview = $lang->execution->common . ' Übersicht'; +$lang->block->modules['execution']->availableBlocks->list = $lang->execution->common . ' Liste'; $lang->block->modules['execution']->availableBlocks->task = 'Aufgaben'; $lang->block->modules['execution']->availableBlocks->build = 'Build'; diff --git a/module/block/lang/en.php b/module/block/lang/en.php index cc303d4cd6..653ae8a624 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -336,7 +336,7 @@ $lang->block->availableBlocks->issue = 'My Issues'; $lang->block->moduleList['project'] = 'Project'; $lang->block->moduleList['product'] = $lang->productCommon; -$lang->block->moduleList['execution'] = $lang->executionCommon; +$lang->block->moduleList['execution'] = $lang->execution->common; $lang->block->moduleList['qa'] = 'Test'; $lang->block->moduleList['todo'] = 'Todo'; @@ -376,9 +376,9 @@ $lang->block->modules['product']->availableBlocks->release = 'Release'; $lang->block->modules['execution'] = new stdclass(); $lang->block->modules['execution']->availableBlocks = new stdclass(); -$lang->block->modules['execution']->availableBlocks->statistic = $lang->executionCommon . ' Statistics'; -$lang->block->modules['execution']->availableBlocks->overview = $lang->executionCommon . ' Overview'; -$lang->block->modules['execution']->availableBlocks->list = $lang->executionCommon . ' List'; +$lang->block->modules['execution']->availableBlocks->statistic = $lang->execution->common . ' Statistics'; +$lang->block->modules['execution']->availableBlocks->overview = $lang->execution->common . ' Overview'; +$lang->block->modules['execution']->availableBlocks->list = $lang->execution->common . ' List'; $lang->block->modules['execution']->availableBlocks->task = 'Task'; $lang->block->modules['execution']->availableBlocks->build = 'Build'; diff --git a/module/block/lang/fr.php b/module/block/lang/fr.php index f976cbc3b0..f252df15f7 100644 --- a/module/block/lang/fr.php +++ b/module/block/lang/fr.php @@ -336,7 +336,7 @@ $lang->block->availableBlocks->issue = 'My Issues'; $lang->block->moduleList['project'] = 'Project'; $lang->block->moduleList['product'] = $lang->productCommon; -$lang->block->moduleList['execution'] = $lang->executionCommon; +$lang->block->moduleList['execution'] = $lang->execution->common; $lang->block->moduleList['qa'] = 'Test'; $lang->block->moduleList['todo'] = 'Todo'; @@ -376,9 +376,9 @@ $lang->block->modules['product']->availableBlocks->release = 'Release'; $lang->block->modules['execution'] = new stdclass(); $lang->block->modules['execution']->availableBlocks = new stdclass(); -$lang->block->modules['execution']->availableBlocks->statistic = $lang->executionCommon . ' Statistiques'; -$lang->block->modules['execution']->availableBlocks->overview = $lang->executionCommon . " Vue d'ensemble"; -$lang->block->modules['execution']->availableBlocks->list = $lang->executionCommon . ' Liste'; +$lang->block->modules['execution']->availableBlocks->statistic = $lang->execution->common . ' Statistiques'; +$lang->block->modules['execution']->availableBlocks->overview = $lang->execution->common . " Vue d'ensemble"; +$lang->block->modules['execution']->availableBlocks->list = $lang->execution->common . ' Liste'; $lang->block->modules['execution']->availableBlocks->task = 'Tâches'; $lang->block->modules['execution']->availableBlocks->build = 'Build'; diff --git a/module/block/lang/vi.php b/module/block/lang/vi.php index e5c800c9a8..416d9e883f 100644 --- a/module/block/lang/vi.php +++ b/module/block/lang/vi.php @@ -336,7 +336,7 @@ $lang->block->availableBlocks->issue = 'My Issues'; $lang->block->moduleList['project'] = 'Project'; $lang->block->moduleList['product'] = $lang->productCommon; -$lang->block->moduleList['execution'] = $lang->executionCommon; +$lang->block->moduleList['execution'] = $lang->execution->common; $lang->block->moduleList['qa'] = 'QA'; $lang->block->moduleList['todo'] = 'Việc làm'; @@ -376,9 +376,9 @@ $lang->block->modules['product']->availableBlocks->release = 'Phát hành'; $lang->block->modules['execution'] = new stdclass(); $lang->block->modules['execution']->availableBlocks = new stdclass(); -$lang->block->modules['execution']->availableBlocks->statistic = $lang->executionCommon . ' thống'; -$lang->block->modules['execution']->availableBlocks->overview = $lang->executionCommon . ' xem'; -$lang->block->modules['execution']->availableBlocks->list = $lang->executionCommon . ' danh sách'; +$lang->block->modules['execution']->availableBlocks->statistic = $lang->execution->common . ' thống'; +$lang->block->modules['execution']->availableBlocks->overview = $lang->execution->common . ' xem'; +$lang->block->modules['execution']->availableBlocks->list = $lang->execution->common . ' danh sách'; $lang->block->modules['execution']->availableBlocks->task = 'Nhiệm vụ'; $lang->block->modules['execution']->availableBlocks->build = 'Bản dựng'; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index f5f495cb7f..d49ce86abe 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -336,7 +336,7 @@ $lang->block->availableBlocks->issue = '我的问题'; $lang->block->moduleList['project'] = '项目'; $lang->block->moduleList['product'] = $lang->productCommon; -$lang->block->moduleList['execution'] = $lang->executionCommon; +$lang->block->moduleList['execution'] = $lang->execution->common; $lang->block->moduleList['qa'] = '测试'; $lang->block->moduleList['todo'] = '待办'; @@ -376,9 +376,9 @@ $lang->block->modules['product']->availableBlocks->release = '发布列表'; $lang->block->modules['execution'] = new stdclass(); $lang->block->modules['execution']->availableBlocks = new stdclass(); -$lang->block->modules['execution']->availableBlocks->statistic = $lang->executionCommon . '统计'; -$lang->block->modules['execution']->availableBlocks->overview = $lang->executionCommon . '总览'; -$lang->block->modules['execution']->availableBlocks->list = $lang->executionCommon . '列表'; +$lang->block->modules['execution']->availableBlocks->statistic = $lang->execution->common . '统计'; +$lang->block->modules['execution']->availableBlocks->overview = $lang->execution->common . '总览'; +$lang->block->modules['execution']->availableBlocks->list = $lang->execution->common . '列表'; $lang->block->modules['execution']->availableBlocks->task = '任务列表'; $lang->block->modules['execution']->availableBlocks->build = '版本列表'; diff --git a/module/block/lang/zh-tw.php b/module/block/lang/zh-tw.php index d34104f983..abb6faed3c 100644 --- a/module/block/lang/zh-tw.php +++ b/module/block/lang/zh-tw.php @@ -336,7 +336,7 @@ $lang->block->availableBlocks->issue = '我的問題'; $lang->block->moduleList['project'] = '項目'; $lang->block->moduleList['product'] = $lang->productCommon; -$lang->block->moduleList['execution'] = $lang->executionCommon; +$lang->block->moduleList['execution'] = $lang->execution->common; $lang->block->moduleList['qa'] = '測試'; $lang->block->moduleList['todo'] = '待辦'; @@ -376,9 +376,9 @@ $lang->block->modules['product']->availableBlocks->release = '發佈列表'; $lang->block->modules['execution'] = new stdclass(); $lang->block->modules['execution']->availableBlocks = new stdclass(); -$lang->block->modules['execution']->availableBlocks->statistic = $lang->executionCommon . '統計'; -$lang->block->modules['execution']->availableBlocks->overview = $lang->executionCommon . '總覽'; -$lang->block->modules['execution']->availableBlocks->list = $lang->executionCommon . '列表'; +$lang->block->modules['execution']->availableBlocks->statistic = $lang->execution->common . '統計'; +$lang->block->modules['execution']->availableBlocks->overview = $lang->execution->common . '總覽'; +$lang->block->modules['execution']->availableBlocks->list = $lang->execution->common . '列表'; $lang->block->modules['execution']->availableBlocks->task = '任務列表'; $lang->block->modules['execution']->availableBlocks->build = '版本列表'; From 905868cc2da686d026b71fd36ec04d1ccc2ea5d6 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Mon, 29 Mar 2021 17:21:39 +0800 Subject: [PATCH 0455/1617] * Fix menu. --- module/common/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/common/model.php b/module/common/model.php index 8a252611ee..772319dc19 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -696,7 +696,7 @@ class commonModel extends model } else { - $subModule = isset($dropMenuItem->subModule) ? explode(',', $dropMenuItem->subModule) : array(); + $subModule = isset($dropMenuItem['subModule']) ? explode(',', $dropMenuItem['subModule']) : array(); if($subModule and in_array($currentModule, $subModule) and strpos(",$exclude,", ",$currentModule-$currentMethod,") === false) $activeMainMenu = true; } From cf6f149d6a53371ca6b155ff8e307fa95d7741c6 Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Mon, 29 Mar 2021 18:25:15 +0800 Subject: [PATCH 0456/1617] * Adjust testreport module. --- module/execution/control.php | 1 + module/execution/view/testtask.html.php | 17 ++++++++--------- module/testreport/control.php | 6 +++--- module/testreport/js/create.js | 1 - module/testreport/model.php | 8 ++++---- module/testreport/view/browse.html.php | 5 +++-- module/testreport/view/view.html.php | 4 ++-- module/testtask/control.php | 6 +++++- module/testtask/model.php | 1 - 9 files changed, 26 insertions(+), 23 deletions(-) diff --git a/module/execution/control.php b/module/execution/control.php index ab17cbe608..e559b948b7 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -1038,6 +1038,7 @@ class execution extends control public function testtask($executionID = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) { $this->loadModel('testtask'); + $this->app->loadLang('testreport'); /* Save session. */ $this->session->set('testtaskList', $this->app->getURI(true), 'execution'); diff --git a/module/execution/view/testtask.html.php b/module/execution/view/testtask.html.php index f31541cd0a..6c79854f26 100644 --- a/module/execution/view/testtask.html.php +++ b/module/execution/view/testtask.html.php @@ -39,7 +39,7 @@

      testtask->noTesttask;?> - createLink('testtask', 'create', "product=0&execution=$executionID"), " " . $lang->testtask->create, '', "class='btn btn-info'");?> + createLink('testtask', 'create', "product=0&execution=$executionID"), " " . $lang->testtask->create, '', "class='btn btn-info' data-app='execution'");?>

    @@ -99,15 +99,14 @@ id", $task, 'list', 'sitemap'); - common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link'); - common::printIcon('testreport', 'browse', "objectID=$task->execution&objectType=execution&extra=$task->id", $task, 'list','flag'); - common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list'); - if(common::hasPriv('testtask', 'delete', $task)) + common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'list', 'sitemap'); + common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link'); + if(common::hasPriv('execution', 'testreport')) { - $deleteURL = $this->createLink('testtask', 'delete', "taskID=$task->id&confirm=yes"); - echo html::a("javascript:ajaxDelete(\"$deleteURL\", \"taskList\", confirmDelete)", '', '', "class='btn' title='{$lang->testtask->delete}'"); + echo html::a($this->createLink('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id"), '', '', 'class="btn " title="' . $lang->testreport->browse . '" data-app="qa"'); } + common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list'); + common::printIcon('testtask', 'delete', "taskID=$task->id", $task, 'list', 'trash', 'hiddenwin'); } ?> @@ -131,7 +130,7 @@
    createLink('testreport', 'browse', "objectID=$executionID&objctType=execution"); + $actionLink = $this->createLink('execution', 'testreport', "objectID=$executionID&objctType=execution"); $misc = common::hasPriv('testreport', 'browse') ? "onclick=\"setFormAction('$actionLink', '', '#testtaskForm')\"" : "disabled='disabled'"; echo html::commonButton($lang->testreport->common, $misc); ?> diff --git a/module/testreport/control.php b/module/testreport/control.php index a0590821b9..85b0f5e7fb 100644 --- a/module/testreport/control.php +++ b/module/testreport/control.php @@ -240,9 +240,9 @@ class testreport extends control $executionID = $this->commonAction($objectID, $objectType); if($executionID != $objectID) die(js::error($this->lang->error->accessDenied) . js::locate('back')); - $execution = $this->execution->getById($executionID); - $tasks = $this->testtask->getExecutionTasks($executionID); - $owners = array(); + $execution = $this->execution->getById($executionID); + $tasks = $this->testtask->getExecutionTasks($executionID); + $owners = array(); $buildIdList = array(); $productIdList = array(); foreach($tasks as $i => $task) diff --git a/module/testreport/js/create.js b/module/testreport/js/create.js index eff1a62f38..6485cca0dc 100644 --- a/module/testreport/js/create.js +++ b/module/testreport/js/create.js @@ -1,6 +1,5 @@ $(function() { - if(objectType == 'project' $('#subNavbar ul li[data-id=qa]').addClass('active'); $('#mainContent .main-header h2 #selectTask').change(function() { var taskID = $(this).val(); diff --git a/module/testreport/model.php b/module/testreport/model.php index b300369be7..2f024b961d 100644 --- a/module/testreport/model.php +++ b/module/testreport/model.php @@ -147,10 +147,10 @@ class testreportModel extends model { $objectID = (int)$objectID; return $this->dao->select('*')->from(TABLE_TESTREPORT)->where('deleted')->eq(0) - ->beginIF(!empty($extra))->andWhere('objectID')->eq($extra)->fi() - ->beginIF($objectType == 'product')->andWhere('product')->eq($objectID)->fi() - ->beginIF($objectType == 'project')->andWhere('project')->eq($objectID)->fi() - ->beginIF($objectType == 'execution')->andWhere('execution')->eq($objectID)->fi() + ->beginIF($objectType == 'execution')->andWhere('objectID')->eq($objectID)->andWhere('objectType')->eq('execution')->fi() + ->beginIF($objectType == 'project')->andWhere('objectID')->eq($objectID)->andWhere('objectType')->eq('project')->fi() + ->beginIF($objectType == 'product' and $extra)->andWhere('objectID')->eq((int)$extra)->andWhere('objectType')->eq('testtask')->fi() + ->beginIF($objectType == 'product' and empty($extra))->andWhere('product')->eq($objectID)->fi() ->orderBy($orderBy) ->page($pager) ->fetchAll('id'); diff --git a/module/testreport/view/browse.html.php b/module/testreport/view/browse.html.php index fbb5988b24..84fd3b591b 100644 --- a/module/testreport/view/browse.html.php +++ b/module/testreport/view/browse.html.php @@ -47,8 +47,9 @@ - id"), sprintf('%03d', $report->id));?> - id"), $report->title)?> + id");?> + id), '', "data-app='{$this->app->openApp}'");?> + title, '', "data-app='{$this->app->openApp}'")?> createdBy);?> createdDate, 2);?> execution ? '#' . $report->execution . $executions[$report->execution] : '';?> diff --git a/module/testreport/view/view.html.php b/module/testreport/view/view.html.php index 141cc950bd..56c10bfea0 100644 --- a/module/testreport/view/view.html.php +++ b/module/testreport/view/view.html.php @@ -15,8 +15,8 @@
    - project", " " . $lang->testtask->create, '', "class='btn btn-primary'");?> + project", " " . $lang->testtask->create, '', "class='btn btn-primary'");?>
    diff --git a/module/project/control.php b/module/project/control.php index ee3e2d3ed7..36d1c16483 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -769,6 +769,24 @@ class project extends control echo $this->fetch('testcase', 'browse', "productID=$productID&branch=$branch&browseType=$browseType¶m=$param&orderBy=$orderBy&recTotal=$orderBy&recPerPage=$recPerPage&pageID=$pageID&projectID=$projectID"); } + /** + * List of test reports for the project. + * + * @param int $projectID + * @param string $objectType project|execution|product + * @param string $extra + * @param string $orderBy + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID + * @access public + * @return void + */ + public function testreport($projectID = 0, $objectType = 'project', $extra = '', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) + { + echo $this->fetch('testreport', 'browse', "objectID=$projectID&objectType=$objectType&extra=$extra&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"); + } + /** * Project test task list. * @@ -783,9 +801,11 @@ class project extends control public function testtask($projectID = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) { $this->loadModel('testtask'); + $this->app->loadLang('testreport'); /* Save session. */ $this->session->set('testtaskList', $this->app->getURI(true), 'qa'); + $this->session->set('buildList', $this->app->getURI(true), 'execution'); $this->project->setMenu($projectID); diff --git a/module/project/view/testtask.html.php b/module/project/view/testtask.html.php index cf017b5960..382fab123b 100644 --- a/module/project/view/testtask.html.php +++ b/module/project/view/testtask.html.php @@ -29,7 +29,6 @@
    - " . $lang->testtask->create, '', "class='btn btn-primary'");?>
    @@ -91,15 +90,14 @@ id", $task, 'list', 'sitemap'); - common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link'); - common::printIcon('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id", $task, 'list','flag'); - common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list'); - if(common::hasPriv('testtask', 'delete', $task)) + common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'list', 'sitemap'); + common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link'); + if(common::hasPriv('execution', 'testreport')) { - $deleteURL = $this->createLink('testtask', 'delete', "taskID=$task->id&confirm=yes"); - echo html::a("javascript:ajaxDelete(\"$deleteURL\", \"taskList\", confirmDelete)", '', '', "class='btn' title='{$lang->testtask->delete}'"); + echo html::a($this->createLink('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id"), '', '', 'class="btn " title="' . $lang->testreport->browse . '" data-app="qa"'); } + common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list'); + common::printIcon('testtask', 'delete', "taskID=$task->id", $task, 'list', 'trash', 'hiddenwin'); } ?> diff --git a/module/testreport/control.php b/module/testreport/control.php index 85b0f5e7fb..b5a55141f1 100644 --- a/module/testreport/control.php +++ b/module/testreport/control.php @@ -165,13 +165,6 @@ class testreport extends control die(js::locate(inlink('view', "reportID=$reportID"), 'parent')); } - /* - if($this->app->openApp == 'execution') - { - $this->loadModel('execution')->setMenu($); - } - */ - if($objectType == 'testtask') { if(empty($objectID) and $extra) $productID = $extra; @@ -352,12 +345,20 @@ class testreport extends control $this->view->position[] = html::a($browseLink, $product->name); $this->view->position[] = $this->lang->testreport->edit; } - elseif($this->app->openApp == 'execution') + elseif($this->app->openApp == 'execution' or $this->app->openApp == 'project') { - $executionID = $this->commonAction($report->execution, 'execution'); - if($executionID != $report->execution) die(js::error($this->lang->error->accessDenied) . js::locate('back')); + if($this->app->openApp == 'execution') + { + $objectID = $this->commonAction($report->execution, 'execution'); + if($objectID != $report->execution) die(js::error($this->lang->error->accessDenied) . js::locate('back')); + } + else + { + $objectID = $this->commonAction($report->project, 'project'); + if($objectID != $report->project) die(js::error($this->lang->error->accessDenied) . js::locate('back')); + } - $browseLink = inlink('browse', "objectID=$executionID&objectType=execution"); + $browseLink = inlink('browse', "objectID=$objectID&objectType=execution"); $this->view->position[] = html::a($browseLink, $execution->name); $this->view->position[] = $this->lang->testreport->edit; } @@ -458,12 +459,20 @@ class testreport extends control $browseLink = inlink('browse', "objectID=$productID&objectType=product"); $this->view->position[] = html::a($browseLink, $product->name); } - elseif($this->app->openApp == 'execution') + elseif($this->app->openApp == 'execution' or $this->app->openApp == 'project') { - $executionID = $this->commonAction($report->execution, 'execution'); - if($executionID != $report->execution) die(js::error($this->lang->error->accessDenied) . js::locate('back')); + if($this->app->openApp == 'execution') + { + $objectID = $this->commonAction($report->execution, 'execution'); + if($objectID != $report->execution) die(js::error($this->lang->error->accessDenied) . js::locate('back')); + } + else + { + $objectID = $this->commonAction($report->project, 'project'); + if($objectID != $report->project) die(js::error($this->lang->error->accessDenied) . js::locate('back')); + } - $browseLink = inlink('browse', "objectID=$executionID&objectType=execution"); + $browseLink = inlink('browse', "objectID=$objectID&objectType=execution"); $this->view->position[] = html::a($browseLink, $execution->name); } diff --git a/module/testreport/lang/zh-cn.php b/module/testreport/lang/zh-cn.php index 468fbae256..bf675f5f87 100644 --- a/module/testreport/lang/zh-cn.php +++ b/module/testreport/lang/zh-cn.php @@ -65,7 +65,7 @@ $lang->testreport->buildSummary = '共测试了%s个版本。 $lang->testreport->confirmDelete = '是否删除该报告?'; $lang->testreport->moreNotice = '更多功能可以参考禅道扩展机制进行扩展,也可以联系我们进行定制。'; $lang->testreport->exportNotice = "由禅道项目管理软件导出"; -$lang->testreport->noReport = "暂无报告,请到测试单下生成测试报告。"; +$lang->testreport->noReport = "暂无报告,请选择测试单生成测试报告。"; $lang->testreport->foundBugTip = "影响版本在测试轮次内,并且创建时间在测试时间范围内产生的Bug数。"; $lang->testreport->legacyBugTip = "Bug状态是激活,或Bug的解决时间在测试结束时间之后。"; $lang->testreport->fromCaseBugTip = "测试时间范围内,用例执行失败后创建的Bug。"; diff --git a/module/testreport/model.php b/module/testreport/model.php index 2f024b961d..1bd97273b3 100644 --- a/module/testreport/model.php +++ b/module/testreport/model.php @@ -146,9 +146,10 @@ class testreportModel extends model public function getList($objectID, $objectType, $extra = '', $orderBy = 'id_desc', $pager = null) { $objectID = (int)$objectID; - return $this->dao->select('*')->from(TABLE_TESTREPORT)->where('deleted')->eq(0) + return $this->dao->select('*')->from(TABLE_TESTREPORT) + ->where('deleted')->eq(0) ->beginIF($objectType == 'execution')->andWhere('objectID')->eq($objectID)->andWhere('objectType')->eq('execution')->fi() - ->beginIF($objectType == 'project')->andWhere('objectID')->eq($objectID)->andWhere('objectType')->eq('project')->fi() + ->beginIF($objectType == 'project')->andWhere('project')->eq($objectID)->andWhere('objectType')->eq('execution')->fi() ->beginIF($objectType == 'product' and $extra)->andWhere('objectID')->eq((int)$extra)->andWhere('objectType')->eq('testtask')->fi() ->beginIF($objectType == 'product' and empty($extra))->andWhere('product')->eq($objectID)->fi() ->orderBy($orderBy) diff --git a/module/testtask/model.php b/module/testtask/model.php index 85bdc8d3a7..48bc6ce960 100644 --- a/module/testtask/model.php +++ b/module/testtask/model.php @@ -20,11 +20,17 @@ class testtaskModel extends model * @access public * @return void */ - function create($projectID) + function create($projectID = 0) { + if($this->post->execution) + { + $execution = $this->loadModel('execution')->getByID($this->post->execution); + $projectID = $execution->project; + } + $task = fixer::input('post') ->setDefault('build', '') - ->setIF($this->config->systemMode == 'new' and $this->app->openApp != 'qa', 'project', $projectID) + ->setIF($this->config->systemMode == 'new', 'project', $projectID) ->stripTags($this->config->testtask->editor->create['id'], $this->config->allowedTags) ->join('mailto', ',') ->remove('uid,contactListMenu') From a766a04ca7b31608bee1a0c8dca12db3a7c80ec9 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Tue, 30 Mar 2021 10:29:51 +0800 Subject: [PATCH 0473/1617] * Fix an error. --- module/my/view/task.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/my/view/task.html.php b/module/my/view/task.html.php index df59b16284..a11fed49d9 100644 --- a/module/my/view/task.html.php +++ b/module/my/view/task.html.php @@ -124,7 +124,7 @@ common::printIcon('task', 'recordEstimate', "taskID=$task->id", $task, 'list', 'time', '', 'iframe', true, '', '', $task->project); common::printIcon('task', 'edit', "taskID=$task->id", $task, 'list', '', '', '', '', 'data-group="execution"', '', $task->project); - common::printIcon('task', 'batchCreate', "project=$task->project&storyID=$task->story&moduleID=$task->module&taskID=$task->id&ifame=0", $task, 'list', 'split', '', '', '', 'data-group="project"', $this->lang->task->children, $task->project); + common::printIcon('task', 'batchCreate', "executionID=$task->execution&storyID=$task->story&moduleID=$task->module&taskID=$task->id&ifame=0", $task, 'list', 'split', '', '', '', 'data-group="project"', $this->lang->task->children, $task->project); } } ?> From 9ee57ff33d10f1c90afaee4fdc4a7ae71706397b Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Tue, 30 Mar 2021 10:29:52 +0800 Subject: [PATCH 0474/1617] * Fix bug#11057. --- module/product/config.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/module/product/config.php b/module/product/config.php index d40990b01a..b9573db2b5 100644 --- a/module/product/config.php +++ b/module/product/config.php @@ -24,7 +24,6 @@ $config->product->search['fields']['pri'] = $lang->story->pri; $config->product->search['fields']['product'] = $lang->story->product; $config->product->search['fields']['branch'] = ''; $config->product->search['fields']['module'] = $lang->story->module; -$config->product->search['fields']['plan'] = $lang->story->plan; $config->product->search['fields']['estimate'] = $lang->story->estimate; $config->product->search['fields']['source'] = $lang->story->source; @@ -57,7 +56,6 @@ $config->product->search['params']['pri'] = array('operator' => '=', $config->product->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->product->search['params']['branch'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->product->search['params']['module'] = array('operator' => 'belong', 'control' => 'select', 'values' => ''); -$config->product->search['params']['plan'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->product->search['params']['estimate'] = array('operator' => '=', 'control' => 'input', 'values' => ''); $config->product->search['params']['source'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->story->sourceList); From b5794a7a81d01e1965cf95b57e70b7136f9b0914 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Tue, 30 Mar 2021 10:41:54 +0800 Subject: [PATCH 0475/1617] * Fix bug #11159. --- module/release/view/view.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/release/view/view.html.php b/module/release/view/view.html.php index 07d9673527..190cfd230f 100644 --- a/module/release/view/view.html.php +++ b/module/release/view/view.html.php @@ -77,7 +77,7 @@ id}&type=story&link=$link¶m=$param&orderBy=%s";?> - +
    From d8f20c23f59fe19b40f0dd3911230a79300b6335 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Tue, 30 Mar 2021 10:51:38 +0800 Subject: [PATCH 0476/1617] * Fix bug #11095. --- module/testsuite/css/browse.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/testsuite/css/browse.css b/module/testsuite/css/browse.css index 1af0cf5c5f..1a36b974aa 100644 --- a/module/testsuite/css/browse.css +++ b/module/testsuite/css/browse.css @@ -1 +1 @@ -.c-desc {overflow: scroll;} +.c-desc {overflow-x: scroll;} From 6ac7575072cab86d08569803f8acabbfacae79db Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Tue, 30 Mar 2021 11:05:23 +0800 Subject: [PATCH 0477/1617] * Finish task #37014. --- module/block/js/admin.js | 2 +- module/block/lang/zh-cn.php | 4 ++++ module/block/view/admin.html.php | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/module/block/js/admin.js b/module/block/js/admin.js index 851ad0d95e..2fa83b166a 100644 --- a/module/block/js/admin.js +++ b/module/block/js/admin.js @@ -52,7 +52,7 @@ $(function() if(preIndex >= 0) blockTitle = blockTitle.substring(0, preIndex); var lang = config.clientLang; - if(blockTitle.indexOf(of) < 0) lang.indexOf('zh') >= 0 ? $titleInput.val(preValue + of + blockTitle) : $titleInput.val(blockTitle + of + preValue); + if(!title && blockTitle.indexOf(of) < 0) lang.indexOf('zh') >= 0 ? $titleInput.val(preValue + of + blockTitle) : $titleInput.val(blockTitle + of + preValue); } }; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index d49ce86abe..1a0411768a 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -148,6 +148,10 @@ $lang->block->default['scrum']['project']['2']['title'] = $lang->executionCommon $lang->block->default['scrum']['project']['2']['block'] = 'scrumlist'; $lang->block->default['scrum']['project']['2']['grid'] = 8; +$lang->block->default['scrum']['project']['2']['params']['type'] = 'undone'; +$lang->block->default['scrum']['project']['2']['params']['count'] = '20'; +$lang->block->default['scrum']['project']['2']['params']['orderBy'] = 'id_desc'; + $lang->block->default['scrum']['project']['3']['title'] = '待测版本'; $lang->block->default['scrum']['project']['3']['block'] = 'scrumtest'; $lang->block->default['scrum']['project']['3']['grid'] = 8; diff --git a/module/block/view/admin.html.php b/module/block/view/admin.html.php index c29ae1392f..5c46b3f9ff 100644 --- a/module/block/view/admin.html.php +++ b/module/block/view/admin.html.php @@ -42,5 +42,6 @@ include '../../common/view/chosen.html.php'; block->of);?> +title) ? $block->title : '');?> From c59d0bf227c2c2802a4804a1ce0999c74dd12262 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Tue, 30 Mar 2021 11:08:57 +0800 Subject: [PATCH 0478/1617] =?UTF-8?q?*=20Fix=20bug=20#10987=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/story/control.php | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/module/story/control.php b/module/story/control.php index 19920621dc..3caa1c464c 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -55,10 +55,12 @@ class story extends control } else if($this->app->openApp == 'project') { + $objectID = empty($objectID) ? $this->session->project : $objectID; $this->project->setMenu($objectID); } else if($this->app->openApp == 'execution') { + $objectID = empty($objectID) ? $this->session->execution : $objectID; $this->execution->setMenu($objectID); } @@ -523,7 +525,18 @@ class story extends control /* Set menu. */ $this->lang->product->switcherMenu = $this->product->getSwitcher($product->id); - $this->product->setMenu($product->id, $story->branch); + if($this->app->openApp == 'project') + { + $this->loadModel('project')->setMenu($this->session->project); + } + elseif($this->app->openApp == 'product') + { + $this->product->setMenu($product->id, $story->branch); + } + elseif($this->app->openApp == 'execution') + { + $this->loadModel('execution')->setMenu($this->session->execution); + } $this->story->replaceURLang($story->type); @@ -957,15 +970,19 @@ class story extends control $this->story->replaceURLang($story->type); /* Set menu. */ - if($from == 'project') + if($this->app->openApp == 'project') { $this->app->rawModule = 'projectstory'; - $this->lang->navGroup->story = 'project'; + $this->loadModel('project')->setMenu($this->session->project); } - else + elseif($this->app->openApp == 'product') { $this->product->setMenu($product->id, $story->branch); } + elseif($this->app->openApp == 'execution') + { + $this->loadModel('execution')->setMenu($this->session->execution); + } /* Set the review result options. */ if($story->status == 'draft' and $story->version == 1) unset($this->lang->story->reviewResultList['revert']); From 416f9d23d5df83d11511488f16d9031ab344350d Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Tue, 30 Mar 2021 11:11:55 +0800 Subject: [PATCH 0479/1617] * Fix bug#11181. --- module/project/js/common.js | 16 ++++++++++------ module/project/view/create.html.php | 2 +- module/project/view/edit.html.php | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/module/project/js/common.js b/module/project/js/common.js index d06bc51632..ec48ca0294 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -105,10 +105,14 @@ function computeEndDate(delta) { $('#end').val(longTime); $('#end').attr('disabled', 'disabled'); + $('#days').attr('disabled', 'disabled'); + $('#daysDiv').addClass('hidden'); return false; } else { + $('#days').removeAttr('disabled'); + $('#daysDiv').removeClass('hidden'); $('#end').removeAttr('disabled'); } @@ -246,19 +250,19 @@ function adjustPlanBoxMargin() $(function() { $('#privList > tbody > tr > th input[type=checkbox]').change(function() - { + { var id = $(this).attr('id'); var checked = $(this).prop('checked'); if(id == 'allChecker') - { + { $('input[type=checkbox]').prop('checked', checked); - } + } else - { + { $(this).parents('tr').find('input[type=checkbox]').prop('checked', checked); - } - }); + } + }); }) /** diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index b4b005f207..8916e61159 100644 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -80,7 +80,7 @@ project->endList , '', "onclick='computeEndDate(this.value)'");?> - + execution->days;?>
    diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 92e42275fc..04bf2191c7 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -83,7 +83,7 @@ project->endList , $deltaValue, "onclick='computeEndDate(this.value)'");?> model == 'scrum'):?> - + end == LONG_TIME) echo "class='hidden'";?>> project->days;?>
    From bb4cb5b0e42bebc93088c9b5bcf20c9961eb2439 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Tue, 30 Mar 2021 10:29:16 +0800 Subject: [PATCH 0480/1617] * Fix details. --- config/config.php | 2 +- db/update15.0.sql | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/config/config.php b/config/config.php index 6b8f39d7b3..aaeef0b3ff 100644 --- a/config/config.php +++ b/config/config.php @@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}} if(!function_exists('getWebRoot')){function getWebRoot(){}} /* 基本设置。Basic settings. */ -$config->version = '20.0.beta4'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. +$config->version = '15.0.rc1'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. $config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP. $config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time. $config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php. diff --git a/db/update15.0.sql b/db/update15.0.sql index 22d13be1e9..e889dd45af 100644 --- a/db/update15.0.sql +++ b/db/update15.0.sql @@ -30,7 +30,6 @@ ALTER TABLE `zt_burn` CHANGE `project` `execution` mediumint(8) unsigned NOT NUL ALTER TABLE `zt_doc` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL; ALTER TABLE `zt_relation` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL; ALTER TABLE `zt_relation` CHANGE `program` `project` mediumint(8) unsigned NOT NULL; -ALTER TABLE `zt_case` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL; ALTER TABLE `zt_doclib` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL; ALTER TABLE `zt_task` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL; ALTER TABLE `zt_testreport` CHANGE `project` `execution` mediumint(8) unsigned NOT NULL; From b1291bc2478736ea6225caa3a20012635b218af9 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Tue, 30 Mar 2021 11:19:38 +0800 Subject: [PATCH 0481/1617] * Fix bug #11053. --- module/common/lang/menu.php | 2 +- module/execution/control.php | 30 ++++++++++++++----- .../execution/view/ajaxgetdropmenu.html.php | 2 +- module/product/model.php | 2 +- module/product/view/project.html.php | 17 ++++++++++- 5 files changed, 41 insertions(+), 12 deletions(-) diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php index ed73eab0e0..d2801c95f9 100644 --- a/module/common/lang/menu.php +++ b/module/common/lang/menu.php @@ -37,7 +37,7 @@ $lang->dividerMenu = ',devops,system,'; $lang->mainNav->menuOrder[5] = 'my'; if($config->systemMode == 'new') $lang->mainNav->menuOrder[10] = 'program'; $lang->mainNav->menuOrder[15] = 'product'; -$lang->mainNav->menuOrder[20] = 'project'; +if($config->systemMode == 'new') $lang->mainNav->menuOrder[20] = 'project'; $lang->mainNav->menuOrder[21] = 'execution'; $lang->mainNav->menuOrder[23] = 'qa'; $lang->mainNav->menuOrder[25] = 'devops'; diff --git a/module/execution/control.php b/module/execution/control.php index 7f3f720f4e..497205d68b 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -2574,7 +2574,7 @@ class execution extends control $executionGroups = $this->dao->select('*')->from(TABLE_EXECUTION) ->where('id')->in($this->app->user->view->sprints) ->andWhere('deleted')->eq(0) - ->andWhere('project')->in(array_keys($projects)) + ->beginIF($this->config->systemMode == 'new')->andWhere('project')->in(array_keys($projects))->fi() ->orderBy('id_desc') ->fetchGroup('project', 'id'); @@ -2583,15 +2583,29 @@ class execution extends control ->andWhere('type')->eq('execution') ->fetchGroup('root', 'account'); - foreach($projects as $project) + if($this->config->systemMode == 'new') { - $executions = zget($executionGroups, $project->id, array()); - - foreach($executions as $execution) + foreach($projects as $project) { - if(isset($orderedExecutions[$execution->parent])) unset($orderedExecutions[$execution->parent]); - $execution->teams = zget($teams, $execution->id, array()); - $orderedExecutions[$execution->id] = $execution; + $executions = zget($executionGroups, $project->id, array()); + + foreach($executions as $execution) + { + if(isset($orderedExecutions[$execution->parent])) unset($orderedExecutions[$execution->parent]); + $execution->teams = zget($teams, $execution->id, array()); + $orderedExecutions[$execution->id] = $execution; + } + } + } + else + { + foreach($executionGroups as $projectID => $executions) + { + foreach($executions as $execution) + { + $execution->teams = zget($teams, $execution->id, array()); + $orderedExecutions[$execution->id] = $execution; + } } } diff --git a/module/execution/view/ajaxgetdropmenu.html.php b/module/execution/view/ajaxgetdropmenu.html.php index 99180c3099..4765518eff 100644 --- a/module/execution/view/ajaxgetdropmenu.html.php +++ b/module/execution/view/ajaxgetdropmenu.html.php @@ -21,7 +21,7 @@ $executionsPinYin = common::convert2Pinyin($executionNames); foreach($executions as $execution) { $selected = $execution->id == $executionID ? 'selected' : ''; - $executionName = zget($projects, $execution->project) . '/' . $execution->name; + $executionName = $config->systemMode == 'new' ? zget($projects, $execution->project) . '/' . $execution->name : $execution->name; if($execution->status != 'done' and $execution->status != 'closed' and ($execution->PM == $this->app->user->account or isset($execution->teams[$this->app->user->account]))) { $myProjectsHtml .= html::a(sprintf($link, $execution->id), " " . $executionName, '', "class='text-important $selected' title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'"); diff --git a/module/product/model.php b/module/product/model.php index 2d28c73a8f..1ed4eacac0 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -832,7 +832,7 @@ class productModel extends model $projectList = $this->dao->select('t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') ->where('t1.product')->eq($productID) - ->andWhere('t2.type')->eq('project') + ->beginIF($this->config->systemMode == 'new')->andWhere('t2.type')->eq('project')->fi() ->beginIF($browseType != 'all')->andWhere('t2.status')->eq($browseType)->fi() ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi() ->beginIF($this->cookie->involved or $involved) diff --git a/module/product/view/project.html.php b/module/product/view/project.html.php index 985d8aa646..105ab15d34 100644 --- a/module/product/view/project.html.php +++ b/module/product/view/project.html.php @@ -33,7 +33,9 @@ idAB;?> project->name;?> + systemMode == 'new'):?> project->common;?> + project->PM;?> project->begin;?> project->end;?> @@ -49,8 +51,21 @@ id);?> - createLink('project', explode('-', $config->projectLink)[1], 'project=' . $project->id, '', false, $project->id), $project->name, '_parent');?> + + systemMode == 'new') + { + echo html::a($this->createLink('project', explode('-', $config->projectLink)[1], 'project=' . $project->id, '', false, $project->id), $project->name, '_parent'); + } + else + { + echo html::a($this->createLink('execution', 'task', 'project=' . $project->id, '', false, $project->id), $project->name, '_parent'); + } + ?> + + systemMode == 'new'):?> programName;?> + PM]) ? $PMList[$project->PM]->id : ''?> PM)) echo html::a($this->createLink('user', 'profile', "userID=$userID", '', true), zget($users, $project->PM), '', "data-toggle='modal' data-type='iframe' data-width='800'");?> From 28c8d5f17533a820626d4d971c005e892144f2fc Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Tue, 30 Mar 2021 11:29:37 +0800 Subject: [PATCH 0482/1617] * Fix bug. --- module/group/lang/resource.php | 8 +++++--- module/user/view/deny.html.php | 10 +--------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index d0702925c1..9076a37bd3 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -210,6 +210,7 @@ if($config->systemMode == 'new') $lang->resource->project->testcase = 'testcase'; $lang->resource->project->testtask = 'testtask'; $lang->resource->project->execution = 'execution'; + $lang->resource->project->testreport = 'testreport'; $lang->project->methodOrder[0] = 'index'; $lang->project->methodOrder[5] = 'browse'; @@ -244,6 +245,7 @@ if($config->systemMode == 'new') $lang->project->methodOrder[150] = 'testcase'; $lang->project->methodOrder[155] = 'testtask'; $lang->project->methodOrder[160] = 'execution'; + $lang->project->methodOrder[165] = 'testreport'; /* Personnel . */ $lang->resource->personnel = new stdclass(); @@ -535,10 +537,10 @@ $lang->resource->execution->importBug = 'importBug'; $lang->resource->execution->story = 'story'; $lang->resource->execution->build = 'build'; $lang->resource->execution->qa = 'qa'; -$lang->resource->execution->testtask = 'testtaskAction'; +$lang->resource->execution->testtask = 'testtask'; $lang->resource->execution->testcase = 'testcase'; $lang->resource->execution->bug = 'bug'; -//$lang->resource->execution->testreport = 'testreport'; +$lang->resource->execution->testreport = 'testreport'; $lang->resource->execution->burn = 'burn'; $lang->resource->execution->computeBurn = 'computeBurnAction'; $lang->resource->execution->fixFirst = 'fixFirst'; @@ -567,7 +569,7 @@ $lang->resource->execution->storyKanban = 'storyKanban'; $lang->resource->execution->storySort = 'storySort'; $lang->resource->execution->whitelist = 'whitelist'; $lang->resource->execution->addWhitelist = 'addWhitelist'; -$lang->resource->execution->unbindWhitelist = 'unbindWhitelist'; +$lang->resource->execution->unbindWhitelist = 'unbindWhitelist'; //if($config->systemMode == 'classic') $lang->resource->project->list = 'list'; //$lang->execution->methodOrder[0] = 'index'; diff --git a/module/user/view/deny.html.php b/module/user/view/deny.html.php index a8b49a492b..a64182a3fe 100644 --- a/module/user/view/deny.html.php +++ b/module/user/view/deny.html.php @@ -62,15 +62,7 @@ include '../../common/view/header.lite.html.php'; /* Click my site to modify the left navigation. */ function changeLeftNavigation() { - if(window.parent && window.parent.$.apps && isOnlybody) - { - window.parent.$.apps.close(); - window.parent.$.apps.open('my'); - } - else - { - window.location.href = indexLink; - } + window.parent.$.apps.open('my'); } From 687ddf2606e86712f4583d2278773798961b811d Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Tue, 30 Mar 2021 11:30:01 +0800 Subject: [PATCH 0483/1617] * Fix bug #11067. --- module/productplan/js/browse.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/productplan/js/browse.js b/module/productplan/js/browse.js index 90b625f4c2..1af1375ebd 100644 --- a/module/productplan/js/browse.js +++ b/module/productplan/js/browse.js @@ -24,7 +24,7 @@ $(function() { var projectID = $('#project').val(); var planID = $('#planID').val(); - parent.location.href = createLink('execution', 'create', 'productID=' + productID + '&executionID=©ExecutionID=&planID=' + planID + '&confirm=&projectID=' + projectID); + parent.location.href = createLink('execution', 'create', 'projectID=' + projectID + '&executionID=©ExecutionID=&planID=' + planID + '&confirm=&productID=' + productID); }); }); $(document).on('click', 'td.content .more', function(e) From dffc1823c63389e798288df335cdf0489d3bb4ed Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Tue, 30 Mar 2021 11:30:35 +0800 Subject: [PATCH 0484/1617] * Add lang item. --- module/project/lang/zh-cn.php | 1 + 1 file changed, 1 insertion(+) diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index 34e50c292c..f0d1f4eb83 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -49,6 +49,7 @@ $lang->project->searchByName = '输入项目名称进行检索'; $lang->project->deleted = '已删除'; $lang->project->linkedProducts = '已关联'; $lang->project->unlinkedProducts = '未关联'; +$lang->project->testreport = '测试报告'; /* Fields. */ $lang->project->common = '项目'; From 8f386f8ed241faf9ec65f6b555b5a01f800cbdbc Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Tue, 30 Mar 2021 11:30:51 +0800 Subject: [PATCH 0485/1617] * Finish task #37014. --- module/block/js/admin.js | 3 ++- module/block/lang/de.php | 2 +- module/block/lang/en.php | 2 +- module/block/lang/fr.php | 2 +- module/block/lang/vi.php | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/module/block/js/admin.js b/module/block/js/admin.js index 2fa83b166a..c524fb8e53 100644 --- a/module/block/js/admin.js +++ b/module/block/js/admin.js @@ -12,7 +12,8 @@ $(function() var lang = config.clientLang; if(lang.indexOf('zh') >= 0) { - blockTitle = blockTitle.replace(preValue, value); + if(blockTitle.indexOf(preValue) >= 0) blockTitle = blockTitle.replace(preValue, value); + if(blockTitle.indexOf(preValue) < 0) blockTitle = value + of + blockTitle;; $titleInput.val(blockTitle); } else diff --git a/module/block/lang/de.php b/module/block/lang/de.php index 6064567974..5421cbe28b 100644 --- a/module/block/lang/de.php +++ b/module/block/lang/de.php @@ -494,7 +494,7 @@ $lang->block->typeList->execution['all'] = 'All'; $lang->block->typeList->execution['involved'] = 'Involved'; $lang->block->typeList->scrum['undone'] = 'Unfinished'; -$lang->block->typeList->scrum['doing'] = 'Ongoing中'; +$lang->block->typeList->scrum['doing'] = 'Ongoing'; $lang->block->typeList->scrum['all'] = 'All'; $lang->block->typeList->scrum['involved'] = 'Involved'; diff --git a/module/block/lang/en.php b/module/block/lang/en.php index 653ae8a624..bcfdfe41fe 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -494,7 +494,7 @@ $lang->block->typeList->execution['all'] = 'All'; $lang->block->typeList->execution['involved'] = 'Involved'; $lang->block->typeList->scrum['undone'] = 'Unfinished'; -$lang->block->typeList->scrum['doing'] = 'Ongoing中'; +$lang->block->typeList->scrum['doing'] = 'Ongoing'; $lang->block->typeList->scrum['all'] = 'All'; $lang->block->typeList->scrum['involved'] = 'Involved'; diff --git a/module/block/lang/fr.php b/module/block/lang/fr.php index f252df15f7..e3c3db87fa 100644 --- a/module/block/lang/fr.php +++ b/module/block/lang/fr.php @@ -494,7 +494,7 @@ $lang->block->typeList->execution['all'] = 'All'; $lang->block->typeList->execution['involved'] = 'Involved'; $lang->block->typeList->scrum['undone'] = 'Unfinished'; -$lang->block->typeList->scrum['doing'] = 'Ongoing中'; +$lang->block->typeList->scrum['doing'] = 'Ongoing'; $lang->block->typeList->scrum['all'] = 'All'; $lang->block->typeList->scrum['involved'] = 'Involved'; diff --git a/module/block/lang/vi.php b/module/block/lang/vi.php index 416d9e883f..f061078dd5 100644 --- a/module/block/lang/vi.php +++ b/module/block/lang/vi.php @@ -494,7 +494,7 @@ $lang->block->typeList->execution['all'] = 'Tất cả'; $lang->block->typeList->execution['involved'] = 'Liên đới'; $lang->block->typeList->scrum['undone'] = 'Unfinished'; -$lang->block->typeList->scrum['doing'] = 'Ongoing中'; +$lang->block->typeList->scrum['doing'] = 'Ongoing'; $lang->block->typeList->scrum['all'] = 'All'; $lang->block->typeList->scrum['involved'] = 'Involved'; From f72633d0044d11c88e712169d670af22fcf93f0c Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Tue, 30 Mar 2021 11:35:21 +0800 Subject: [PATCH 0486/1617] * Adjust case name. --- module/common/lang/zh-cn.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 24a50dce40..aa0fc9cc2c 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -140,7 +140,7 @@ $lang->system->common = '组织'; $lang->admin->common = '后台'; $lang->task->common = '任务'; $lang->bug->common = 'Bug'; -$lang->testcase->common = '测试用例'; +$lang->testcase->common = '用例'; $lang->testtask->common = '测试单'; $lang->score->common = '我的积分'; $lang->build->common = '版本'; From e2e2c1a23d359a28a7b8d08637baab5e926a988e Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Tue, 30 Mar 2021 11:37:39 +0800 Subject: [PATCH 0487/1617] * Fix bug #11086. --- module/execution/view/linkstory.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/execution/view/linkstory.html.php b/module/execution/view/linkstory.html.php index ee8c0c38de..9af9d97bd0 100644 --- a/module/execution/view/linkstory.html.php +++ b/module/execution/view/linkstory.html.php @@ -18,7 +18,7 @@