From decfddd1d24a72d312ff00faf8b2ffa241bb0a97 Mon Sep 17 00:00:00 2001 From: liuhong Date: Wed, 23 Nov 2022 06:34:32 +0000 Subject: [PATCH 01/52] * Fix bug #23961. --- module/my/css/preference.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/my/css/preference.css b/module/my/css/preference.css index d5e009ffa0..81ccd2f8ab 100644 --- a/module/my/css/preference.css +++ b/module/my/css/preference.css @@ -1 +1,3 @@ .tip {margin-top: 10px;} +.table-form>tbody>tr>th {white-space: nowrap; !important} +.table-form>tbody>tr>td {width: 75%; !important} From 4412e7e8887081ec26d2ff217ee97cab68f332f4 Mon Sep 17 00:00:00 2001 From: wangzemei Date: Mon, 28 Nov 2022 11:11:12 +0800 Subject: [PATCH 02/52] * Green theme: fix the background image width --- www/theme/green/style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/www/theme/green/style.css b/www/theme/green/style.css index 11354ffe9e..a597e7d099 100644 --- a/www/theme/green/style.css +++ b/www/theme/green/style.css @@ -1,6 +1,6 @@ /*! - * ZUI: Zentao Theme - Green - v1.10.0 - 2022-11-11 + * ZUI: Zentao Theme - Green - v1.10.0 - 2022-11-28 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */a{color:#313c52}a:focus,a:hover{color:#29aa93}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#218977;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1a6c5e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#218977;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1a6c5e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#29aa93;border-color:transparent}.btn-warning{color:#fff;background-color:#ffba34;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ffac0b;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e69800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#ffba34;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ffac0b;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e69800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#ffba34;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#22c98d;border-color:transparent}.btn-info{color:#29aa93;background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:#ccf8f1;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#acf4e9;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:#ccf8f1;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#acf4e9;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#f0fdfb;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.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:#29aa93}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#29aa93}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#1f816f}.label-primary.label-outline{color:#29aa93;background:0 0;border:1px solid #29aa93}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#1f816f}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ffba34}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ffa901}.label-warning.label-outline{color:#ffba34;background:0 0;border:1px solid #ffba34}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ffa901}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#60d9c3}.text-primary{color:#29aa93}.text-primary:hover{color:#1f816f}.text-warning{color:#ffba34}.text-warning:hover{color:#ffa901}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#29aa93}a.bg-primary:hover{background-color:#1f816f}.hl-primary{background-color:#f0fdfb}a.hl-primary:hover{background-color:#c3f7ef}.progress{background-color:#f0fdfb;border-radius:3px}.progress-bar{color:#fff;background-color:#29aa93;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#29aa93;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.form-control:focus{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#29aa93;border-color:#29aa93}.switch input:focus+label{color:#29aa93}.switch input:focus+label:before{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #29aa93;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #29aa93}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#29aa93;border-color:#29aa93}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#29aa93;-webkit-box-shadow:0 0 8px #29aa93;box-shadow:0 0 8px #29aa93}.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;border-color:#bbb}.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}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#29aa93}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#29aa93}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#23c8ec}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#f0fdfb}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#23c8ec;border-color:#11a9cb}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#14bde2}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#52d4f0}.navbar-inverse .navbar-toggle{border-color:#52d4f0}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#14bde2}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#13b5d9}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#52d4f0}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#11a9cb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#52d4f0}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #52d4f0;-webkit-box-shadow:inset 0 -1px 0 #11a9cb;box-shadow:inset 0 -1px 0 #11a9cb}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#12b1d4}.nav>li>a:focus,.nav>li>a:hover{color:#29aa93}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#29aa93}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#29aa93;border-bottom-color:#29aa93}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #29aa93;box-shadow:inset 2px 0 0 #29aa93}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#29aa93}.panel-primary>.panel-heading{color:#fff;background-color:#29aa93;border-color:#29aa93}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#29aa93}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#29aa93}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f0fdfb}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#29aa93!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#29aa93!important;border-bottom-left-radius:#29aa93!important}.chosen-container .chosen-results li.highlighted{background-color:#29aa93!important}.chosen-container-active .chosen-single{border-color:#29aa93!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#29aa93!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#29aa93!important;border-bottom-left-radius:#29aa93!important}.chosen-container.chosen-highlight-selected .result-selected{color:#29aa93;background:#f0fdfb}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#29aa93}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#29aa93}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#29aa93}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ffba34!important;border-color:#ffba34!important}.datetimepicker td.day.active{background-color:#29aa93!important;border-color:#1f816f!important}.datetimepicker td.day.active:hover{background-color:#1f816f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ffa901!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#29aa93!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important}.ke-menu-item-on{background-color:#29aa93!important}.ke-colorpicker-cell-on{background-color:#29aa93!important}.ke-input-text:focus{border-color:#29aa93!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#29aa93}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ffba34}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#f0fdfb}.alert-primary hr{border-top-color:#d1f9f3}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ffb11a;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#f6a200}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#29aa93;border-color:#29aa93}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#f0fdfb}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#29aa93}.tree-drag-holder{background-color:#f0fdfb}.tree-menu li.active>a{color:#fff;background-color:#29aa93;border-color:#29aa93}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#23c8ec}a.text-primary{color:#29aa93}.nav-primary>li.active>a{color:#27988a}.nav-primary>li.active>a:hover{color:#27988a}.bg-primary,.m-user-login{background:#23c8ec -webkit-gradient(linear,right top,left top,from(#29aa93),to(#23c8ec))!important;background:#23c8ec -webkit-linear-gradient(right,#29aa93 0,#23c8ec 100%)!important;background:#23c8ec -o-linear-gradient(right,#29aa93 0,#23c8ec 100%)!important;background:#23c8ec linear-gradient(-90deg,#29aa93 0,#23c8ec 100%)!important}.bg-primary-pure{color:#fff;background-color:#29aa93}.bg-primary-pale{color:#29aa93;background-color:#f0fdfb}.bg-secondary{background:#23c8ec}.alert-info{color:#29aa93;background:#f0fdfb}.btn-primary{color:#fff;background-color:#29aa93;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(41,170,147,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#249581;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:#29aa93;border-color:transparent}.btn-secondary{color:#fff;background-color:#23c8ec;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(35,200,236,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#14bde2;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:#23c8ec;border-color:transparent}.btn-info{color:#29aa93;background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:rgba(240,253,251,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#dafaf5;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(41,170,147,.3);background-color:#f0fdfb;border-color:transparent}.btn-icon-left>.icon{color:#23c8ec;background:#f0fdfb}.btn-active-line{color:#29aa93}.btn-active-line:after{border-bottom-color:#29aa93}.btn-active-line:hover{color:#29aa93}.btn-active-text .text{color:#27988a}.btn-active-text .text:after{border-bottom-color:#27988a}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(41,170,147,.8)}.label-primary{background:#29aa93!important}.label-pale{background:#c3f7ef!important}.label-outline.label-primary{background:#f0fdfb!important;border-color:rgba(41,170,147,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#29aa93;border-color:#29aa93}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#29aa93;-webkit-box-shadow:0 0 0 3px rgba(41,170,147,.2);box-shadow:0 0 0 3px rgba(41,170,147,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#29aa93}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#29aa93!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#29aa93!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#29aa93!important}.nav-tabs>li.active>a:before{background:#29aa93}.nav-tabs-primary>li.active>a{color:#29aa93!important}.panel-actions .btn.text-primary{color:#29aa93}.picker-focus .picker-selections{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.status-bars .bar{background:#29aa93}.status-bars-h .bar{background:#29aa93}.messagger-zt .messager-content>.icon{color:#29aa93}.tree li.active>a{color:#29aa93}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#29aa93}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#23c8ec}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#f0fdfb}.dropdown-submenu:hover>a:after{border-left-color:#29aa93}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#23c8ec}.timeline>li>a:after,.timeline>li>div:after{background-color:#29aa93}.timeline>li.active:before{background-color:rgba(41,170,147,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#29aa93!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#29aa93!important}#mainHeader{background:#33c6ab;border-top-color:#29aa93;border-bottom-color:#f0fdfb}#searchGo{background-color:#23c8ec}#searchGo:hover{background-color:#29aa93}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#29aa93}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#29aa93}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#29aa93}.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 #29aa93}.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 #29aa93}.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:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.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 #c4c4c4}.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 #c4c4c4!important}#sidebarHeader{border-left:3px solid #29aa93}#sidebarHeader .title{color:#29aa93}#sidebar>.sidebar-toggle>.icon{background:#81dff4}#main .querybox-toggle.querybox-opened{color:#29aa93}#contentNav .nav>li.active>a{color:#29aa93}#contentNav .nav>li.active>a:before{background:#29aa93}td.c-actions .btn{color:#23c8ec}td.c-actions .btn:hover{color:#29aa93;background-color:#dafaf5}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#29aa93;background:#f0fdfb}.main-table table .btn-icon-left:hover>.icon{background:#f0fdfb}.main-table tbody>tr:hover{background:#f0fdfb}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#29aa93}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f9fefd}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f9fefd}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#2f8a8f}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#0b2f28}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#29aa93}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#29aa93}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#29aa93}.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:#f0fdfb}.table-nest-toggle:hover{color:#29aa93}.table-footer .checkbox-primary.checked label:after{border-color:#29aa93!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#37cfb4!important;border-color:#37cfb4!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#29aa93}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#29aa93;border-color:#29aa93}.article-content a{color:#29aa93}.article-content a:focus,.article-content a:hover{color:#23c8ec}.list-group{overflow-y:auto}.list-group>a.selected{color:#f0fdfb;background-color:#29aa93}.list-group>a.active{color:#29aa93;background-color:#f0fdfb}.list-group>a.active:hover,.list-group>a:hover{background-color:#29aa93}#swapper #dropMenu .tree li>.selected{color:#29aa93!important;background:#f0fdfb!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#29aa93!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#29aa93!important;background:#f0fdfb!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#29aa93!important}.release-line>li>a:hover:before{background-color:#f0fdfb}.release-line>li>a:hover .title{color:#29aa93}.release-line>li.active>a:before{border-color:#29aa93}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#23c8ec}#poweredBy .icon-zentao{color:#23c8ec}#poweredBy a:hover{color:#29aa93}#poweredBy a:hover .icon-zentao{color:#29aa93}#poweredBy a.text-primary{color:#29aa93}#poweredBy a.text-primary:hover{color:#23c8ec}.block-statistic .nav-secondary>li.active>a:before{background:#29aa93!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#23c8ec!important}.dynamic.active .dynamic-date:before{background-color:#23c8ec!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#29aa93!important}.table td.has-child>.task-toggle:hover{color:#29aa93!important}#openTaskPage.open:hover,#task .task-nav{color:#29aa93!important;background:#f0fdfb!important}#tasksProgress>.progress-bar{background:#29aa93!important}#tasksProgress .progress-text{color:#29aa93!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#29aa93!important;background:#f0fdfb!important;border-left-color:#29aa93!important;-webkit-box-shadow:inset 4px 0 0 #29aa93!important;box-shadow:inset 4px 0 0 #29aa93!important}#copyProjectModal a:hover{border-color:#23c8ec!important}#zeroTaskStory.checked{background:#f0fdfb!important;border-color:#23c8ec!important}.cols-list .col:hover{background:#f0fdfb!important}.files-grid .actions,.files-grid .col:hover .file{background:#f0fdfb!important}.dashboard .panel,.panel-default{-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)}#menu .nav>li.active>a{background:#23c8ec!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#23c8ec!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#29aa93!important}#bars>li.active:after{background:#f0fdfb!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#27988a;background:#e7eded}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#29aa93}.main-table tbody>tr:hover{background:rgba(240,253,251,.8)}.main-table tbody>tr>td.c-name a{color:#2f8a8f}.main-table tbody>tr>td.c-name a:hover{color:#27988a}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#29aa93!important}.assigned-none{color:#27988a!important}.assigned-current{color:#faae1a!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#27988a!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#27988a!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#33c6ab}#assigntomeBlock .nav>li.active>a{color:#27988a}.consumedTotally{color:#29aa93;background:#f0fdfb}#toggleFoldIcon .icon-border{border:1px solid #d4eee9}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#29aa93}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}.label-pri-2,.label-selector>.label-pri[data-value="2"]{color:#faae1a;border-color:#faae1a}#mainHeader{color:#313c52;background:#fff;border-bottom:1px solid #eee}#heading .header-btn .btn,#navbar .nav>li>a,#userNav>li>a{color:#313c52}#navbar .nav>li.active>a{position:relative;font-weight:500;color:#27988a;background:0 0}#navbar .nav>li.active>a:before{position:absolute;right:10px;bottom:0;left:10px;display:block;height:2px;content:' ';background-color:#27988a}#navbar .nav>li>a.active:hover,#navbar .nav>li>a:hover{background-color:rgba(0,0,0,.1)}#navbar .nav>li.divider{background-color:#f1f1f1}#visionSwitcher .dropdown-toggle>div,#visionSwitcher>div{background-color:rgba(0,0,0,.1)}#menu{position:relative;background:#248f83!important}#menu::after{position:absolute;bottom:0;left:0;z-index:-1;width:96px;height:108px;content:'';background:url(data:image/png;base64,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) no-repeat}#userNav>li>a>.icon{color:#23c8ec}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:-webkit-gradient(linear,left top,right top,from(rgba(229,244,169,.4)),to(rgba(237,254,171,.036)))!important;background:-webkit-linear-gradient(left,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;background:-o-linear-gradient(left,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;background:linear-gradient(90deg,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;border-radius:4px;opacity:1}#featurebar .nav li.active a{color:#27988a!important}#featurebar .nav li.active a:after{border-bottom:2px solid #27988a!important}.btn.btn-action,.c-actions .btn,td.c-name a{color:#29aa93}#logForm .table .versions a,#mainMenu .page-title strong a,#readOnlyOfKanban i{color:#29aa93!important}.picker-drop-menu .picker-option-list .picker-option.picker-option-active,.picker-drop-menu .picker-option-list .picker-single .picker-option.picker-option-selected.picker-option-active{color:#fff;background:#29aa93}.table-actions .btn{background:#29aa93!important;border-color:#29aa93!important}.table-actions .btn:hover{color:#fff;background:#27988a;border-color:#27988a}.table-actions>.btn-group:first-child>.btn:first-child{border-right:1px solid rgba(255,255,255,.2)!important}a.programName:focus,a.programName:hover{background:#29aa93!important}#guideDialog .project-type-img:hover,#guideDialog .project-type.active img,.kanbans .panel:hover{border-color:#29aa93!important}.btn.btn-action:hover,.c-actions .btn:hover{color:#29aa93;background:#f0fdfb}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}.main-table table tr{border-color:#f2f6f8!important}#mainHeader #headerActions .btn-group>.btn{color:#313c52!important}.c-manager .avatar.avatar-top{border-color:#faae1a}#programTableList>tr:hover{background:#f0fdfbcc}#programTableList>tr:hover>.c-name>a{color:#27988a!important}#programTableList>tr[data-type=project]>.c-name>a{color:#2f8a8f!important}.m-product-all #mainMenu>div.btn-toolbar.pull-right>a.btn.btn-link.iframe{color:#00c4d0!important}#featuresNav.nav-simple>li.active>a,.nav-simple>li.active>a,.nav-simple>li.active>a:focus,.nav-simple>li.active>a:hover{color:#29aa93}#featuresCarousel .carousel-indicators .active{background-color:#29aa93!important;border-color:#29aa93!important}#dashboard .block-welcome .progress{background:#eee} \ No newline at end of file + */a{color:#313c52}a:focus,a:hover{color:#29aa93}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#218977;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1a6c5e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#218977;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1a6c5e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#29aa93;border-color:transparent}.btn-warning{color:#fff;background-color:#ffba34;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ffac0b;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e69800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#ffba34;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ffac0b;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e69800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#ffba34;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#22c98d;border-color:transparent}.btn-info{color:#29aa93;background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:#ccf8f1;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#acf4e9;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:#ccf8f1;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#acf4e9;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.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{background-color:#f0fdfb;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.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:#29aa93}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#29aa93}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#1f816f}.label-primary.label-outline{color:#29aa93;background:0 0;border:1px solid #29aa93}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#1f816f}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ffba34}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ffa901}.label-warning.label-outline{color:#ffba34;background:0 0;border:1px solid #ffba34}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ffa901}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#60d9c3}.text-primary{color:#29aa93}.text-primary:hover{color:#1f816f}.text-warning{color:#ffba34}.text-warning:hover{color:#ffa901}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#29aa93}a.bg-primary:hover{background-color:#1f816f}.hl-primary{background-color:#f0fdfb}a.hl-primary:hover{background-color:#c3f7ef}.progress{background-color:#f0fdfb;border-radius:3px}.progress-bar{color:#fff;background-color:#29aa93;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#29aa93;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.form-control:focus{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#29aa93;border-color:#29aa93}.switch input:focus+label{color:#29aa93}.switch input:focus+label:before{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #29aa93;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #29aa93}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#29aa93;border-color:#29aa93}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#29aa93;-webkit-box-shadow:0 0 8px #29aa93;box-shadow:0 0 8px #29aa93}.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;border-color:#bbb}.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}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#29aa93}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#29aa93}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#23c8ec}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#f0fdfb}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#23c8ec;border-color:#11a9cb}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#14bde2}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#52d4f0}.navbar-inverse .navbar-toggle{border-color:#52d4f0}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#14bde2}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#13b5d9}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#52d4f0}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#11a9cb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#52d4f0}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #52d4f0;-webkit-box-shadow:inset 0 -1px 0 #11a9cb;box-shadow:inset 0 -1px 0 #11a9cb}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#12b1d4}.nav>li>a:focus,.nav>li>a:hover{color:#29aa93}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#29aa93}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#29aa93;border-bottom-color:#29aa93}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #29aa93;box-shadow:inset 2px 0 0 #29aa93}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#29aa93}.panel-primary>.panel-heading{color:#fff;background-color:#29aa93;border-color:#29aa93}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#29aa93}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#29aa93}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f0fdfb}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#29aa93!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#29aa93!important;border-bottom-left-radius:#29aa93!important}.chosen-container .chosen-results li.highlighted{background-color:#29aa93!important}.chosen-container-active .chosen-single{border-color:#29aa93!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#29aa93!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#29aa93!important;border-bottom-left-radius:#29aa93!important}.chosen-container.chosen-highlight-selected .result-selected{color:#29aa93;background:#f0fdfb}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#29aa93}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#29aa93}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#29aa93}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ffba34!important;border-color:#ffba34!important}.datetimepicker td.day.active{background-color:#29aa93!important;border-color:#1f816f!important}.datetimepicker td.day.active:hover{background-color:#1f816f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ffa901!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#29aa93!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important}.ke-menu-item-on{background-color:#29aa93!important}.ke-colorpicker-cell-on{background-color:#29aa93!important}.ke-input-text:focus{border-color:#29aa93!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#29aa93}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ffba34}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#f0fdfb}.alert-primary hr{border-top-color:#d1f9f3}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ffb11a;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#f6a200}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#29aa93;border-color:#29aa93}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#f0fdfb}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#29aa93}.tree-drag-holder{background-color:#f0fdfb}.tree-menu li.active>a{color:#fff;background-color:#29aa93;border-color:#29aa93}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#23c8ec}a.text-primary{color:#29aa93}.nav-primary>li.active>a{color:#27988a}.nav-primary>li.active>a:hover{color:#27988a}.bg-primary,.m-user-login{background:#23c8ec -webkit-gradient(linear,right top,left top,from(#29aa93),to(#23c8ec))!important;background:#23c8ec -webkit-linear-gradient(right,#29aa93 0,#23c8ec 100%)!important;background:#23c8ec -o-linear-gradient(right,#29aa93 0,#23c8ec 100%)!important;background:#23c8ec linear-gradient(-90deg,#29aa93 0,#23c8ec 100%)!important}.bg-primary-pure{color:#fff;background-color:#29aa93}.bg-primary-pale{color:#29aa93;background-color:#f0fdfb}.bg-secondary{background:#23c8ec}.alert-info{color:#29aa93;background:#f0fdfb}.btn-primary{color:#fff;background-color:#29aa93;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(41,170,147,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#249581;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:#29aa93;border-color:transparent}.btn-secondary{color:#fff;background-color:#23c8ec;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(35,200,236,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#14bde2;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:#23c8ec;border-color:transparent}.btn-info{color:#29aa93;background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:rgba(240,253,251,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#dafaf5;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(41,170,147,.3);background-color:#f0fdfb;border-color:transparent}.btn-icon-left>.icon{color:#23c8ec;background:#f0fdfb}.btn-active-line{color:#29aa93}.btn-active-line:after{border-bottom-color:#29aa93}.btn-active-line:hover{color:#29aa93}.btn-active-text .text{color:#27988a}.btn-active-text .text:after{border-bottom-color:#27988a}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(41,170,147,.8)}.label-primary{background:#29aa93!important}.label-pale{background:#c3f7ef!important}.label-outline.label-primary{background:#f0fdfb!important;border-color:rgba(41,170,147,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#29aa93;border-color:#29aa93}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#29aa93;-webkit-box-shadow:0 0 0 3px rgba(41,170,147,.2);box-shadow:0 0 0 3px rgba(41,170,147,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#29aa93}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#29aa93!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#29aa93!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#29aa93!important}.nav-tabs>li.active>a:before{background:#29aa93}.nav-tabs-primary>li.active>a{color:#29aa93!important}.panel-actions .btn.text-primary{color:#29aa93}.picker-focus .picker-selections{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.status-bars .bar{background:#29aa93}.status-bars-h .bar{background:#29aa93}.messagger-zt .messager-content>.icon{color:#29aa93}.tree li.active>a{color:#29aa93}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#29aa93}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#23c8ec}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#f0fdfb}.dropdown-submenu:hover>a:after{border-left-color:#29aa93}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#23c8ec}.timeline>li>a:after,.timeline>li>div:after{background-color:#29aa93}.timeline>li.active:before{background-color:rgba(41,170,147,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#29aa93!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#29aa93!important}#mainHeader{background:#33c6ab;border-top-color:#29aa93;border-bottom-color:#f0fdfb}#searchGo{background-color:#23c8ec}#searchGo:hover{background-color:#29aa93}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#29aa93}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#29aa93}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#29aa93}.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 #29aa93}.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 #29aa93}.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:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.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 #c4c4c4}.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 #c4c4c4!important}#sidebarHeader{border-left:3px solid #29aa93}#sidebarHeader .title{color:#29aa93}#sidebar>.sidebar-toggle>.icon{background:#81dff4}#main .querybox-toggle.querybox-opened{color:#29aa93}#contentNav .nav>li.active>a{color:#29aa93}#contentNav .nav>li.active>a:before{background:#29aa93}td.c-actions .btn{color:#23c8ec}td.c-actions .btn:hover{color:#29aa93;background-color:#dafaf5}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#29aa93;background:#f0fdfb}.main-table table .btn-icon-left:hover>.icon{background:#f0fdfb}.main-table tbody>tr:hover{background:#f0fdfb}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#29aa93}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f9fefd}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f9fefd}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#2f8a8f}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#0b2f28}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#29aa93}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#29aa93}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#29aa93}.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:#f0fdfb}.table-nest-toggle:hover{color:#29aa93}.table-footer .checkbox-primary.checked label:after{border-color:#29aa93!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#37cfb4!important;border-color:#37cfb4!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#29aa93}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#29aa93;border-color:#29aa93}.article-content a{color:#29aa93}.article-content a:focus,.article-content a:hover{color:#23c8ec}.list-group{overflow-y:auto}.list-group>a.selected{color:#f0fdfb;background-color:#29aa93}.list-group>a.active{color:#29aa93;background-color:#f0fdfb}.list-group>a.active:hover,.list-group>a:hover{background-color:#29aa93}#swapper #dropMenu .tree li>.selected{color:#29aa93!important;background:#f0fdfb!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#29aa93!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#29aa93!important;background:#f0fdfb!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#29aa93!important}.release-line>li>a:hover:before{background-color:#f0fdfb}.release-line>li>a:hover .title{color:#29aa93}.release-line>li.active>a:before{border-color:#29aa93}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#23c8ec}#poweredBy .icon-zentao{color:#23c8ec}#poweredBy a:hover{color:#29aa93}#poweredBy a:hover .icon-zentao{color:#29aa93}#poweredBy a.text-primary{color:#29aa93}#poweredBy a.text-primary:hover{color:#23c8ec}.block-statistic .nav-secondary>li.active>a:before{background:#29aa93!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#23c8ec!important}.dynamic.active .dynamic-date:before{background-color:#23c8ec!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#29aa93!important}.table td.has-child>.task-toggle:hover{color:#29aa93!important}#openTaskPage.open:hover,#task .task-nav{color:#29aa93!important;background:#f0fdfb!important}#tasksProgress>.progress-bar{background:#29aa93!important}#tasksProgress .progress-text{color:#29aa93!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#29aa93!important;background:#f0fdfb!important;border-left-color:#29aa93!important;-webkit-box-shadow:inset 4px 0 0 #29aa93!important;box-shadow:inset 4px 0 0 #29aa93!important}#copyProjectModal a:hover{border-color:#23c8ec!important}#zeroTaskStory.checked{background:#f0fdfb!important;border-color:#23c8ec!important}.cols-list .col:hover{background:#f0fdfb!important}.files-grid .actions,.files-grid .col:hover .file{background:#f0fdfb!important}.dashboard .panel,.panel-default{-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)}#menu .nav>li.active>a{background:#23c8ec!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#23c8ec!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#29aa93!important}#bars>li.active:after{background:#f0fdfb!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#27988a;background:#e7eded}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#29aa93}.main-table tbody>tr:hover{background:rgba(240,253,251,.8)}.main-table tbody>tr>td.c-name a{color:#2f8a8f}.main-table tbody>tr>td.c-name a:hover{color:#27988a}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#29aa93!important}.assigned-none{color:#27988a!important}.assigned-current{color:#faae1a!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#27988a!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#27988a!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#33c6ab}#assigntomeBlock .nav>li.active>a{color:#27988a}.consumedTotally{color:#29aa93;background:#f0fdfb}#toggleFoldIcon .icon-border{border:1px solid #d4eee9}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#29aa93}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}.label-pri-2,.label-selector>.label-pri[data-value="2"]{color:#faae1a;border-color:#faae1a}#mainHeader{color:#313c52;background:#fff;border-bottom:1px solid #eee}#heading .header-btn .btn,#navbar .nav>li>a,#userNav>li>a{color:#313c52}#navbar .nav>li.active>a{position:relative;font-weight:500;color:#27988a;background:0 0}#navbar .nav>li.active>a:before{position:absolute;right:10px;bottom:0;left:10px;display:block;height:2px;content:' ';background-color:#27988a}#navbar .nav>li>a.active:hover,#navbar .nav>li>a:hover{background-color:rgba(0,0,0,.1)}#navbar .nav>li.divider{background-color:#f1f1f1}#visionSwitcher .dropdown-toggle>div,#visionSwitcher>div{background-color:rgba(0,0,0,.1)}#menu{position:relative;background:#248f83!important}#menu::after{position:absolute;bottom:0;left:0;z-index:-1;width:100%;height:108px;content:'';background:url(data:image/png;base64,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) no-repeat}#userNav>li>a>.icon{color:#23c8ec}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:-webkit-gradient(linear,left top,right top,from(rgba(229,244,169,.4)),to(rgba(237,254,171,.036)))!important;background:-webkit-linear-gradient(left,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;background:-o-linear-gradient(left,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;background:linear-gradient(90deg,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;border-radius:4px;opacity:1}#featurebar .nav li.active a{color:#27988a!important}#featurebar .nav li.active a:after{border-bottom:2px solid #27988a!important}.btn.btn-action,.c-actions .btn,td.c-name a{color:#29aa93}#logForm .table .versions a,#mainMenu .page-title strong a,#readOnlyOfKanban i{color:#29aa93!important}.picker-drop-menu .picker-option-list .picker-option.picker-option-active,.picker-drop-menu .picker-option-list .picker-single .picker-option.picker-option-selected.picker-option-active{color:#fff;background:#29aa93}.table-actions .btn{background:#29aa93!important;border-color:#29aa93!important}.table-actions .btn:hover{color:#fff;background:#27988a;border-color:#27988a}.table-actions>.btn-group:first-child>.btn:first-child{border-right:1px solid rgba(255,255,255,.2)!important}a.programName:focus,a.programName:hover{background:#29aa93!important}#guideDialog .project-type-img:hover,#guideDialog .project-type.active img,.kanbans .panel:hover{border-color:#29aa93!important}.btn.btn-action:hover,.c-actions .btn:hover{color:#29aa93;background:#f0fdfb}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}.main-table table tr{border-color:#f2f6f8!important}#mainHeader #headerActions .btn-group>.btn{color:#313c52!important}.c-manager .avatar.avatar-top{border-color:#faae1a}#programTableList>tr:hover{background:#f0fdfbcc}#programTableList>tr:hover>.c-name>a{color:#27988a!important}#programTableList>tr[data-type=project]>.c-name>a{color:#2f8a8f!important}.m-product-all #mainMenu>div.btn-toolbar.pull-right>a.btn.btn-link.iframe{color:#00c4d0!important}#featuresNav.nav-simple>li.active>a,.nav-simple>li.active>a,.nav-simple>li.active>a:focus,.nav-simple>li.active>a:hover{color:#29aa93}#featuresCarousel .carousel-indicators .active{background-color:#29aa93!important;border-color:#29aa93!important}#dashboard .block-welcome .progress{background:#eee} \ No newline at end of file From d839f6f593d610a0e52c0a342e0346da3d4bec80 Mon Sep 17 00:00:00 2001 From: hufangzhou Date: Mon, 28 Nov 2022 05:10:00 +0000 Subject: [PATCH 03/52] * Handle feedback #1479. --- module/weekly/model.php | 1 + 1 file changed, 1 insertion(+) diff --git a/module/weekly/model.php b/module/weekly/model.php index a351611a86..b0012e3e72 100755 --- a/module/weekly/model.php +++ b/module/weekly/model.php @@ -341,6 +341,7 @@ class weeklyModel extends model ->from(TABLE_TASK) ->where('execution')->in($executionIdList) ->andWhere('deleted')->eq(0) + ->andWhere('parent')->ge(0) ->groupBy('type') ->fetchPairs(); } From fc51e379f0986340e1a10b8695b9bd67a61df90f Mon Sep 17 00:00:00 2001 From: wangyuting <851424971@qq.com> Date: Mon, 28 Nov 2022 05:22:22 +0000 Subject: [PATCH 04/52] * Finish task #77611. --- module/build/model.php | 2 -- module/testtask/config.php | 4 ++-- module/testtask/control.php | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/module/build/model.php b/module/build/model.php index f9dae4d54a..1e9f333b90 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -621,8 +621,6 @@ class buildModel extends model { $action = strtolower($action); - if($module == 'testtask' && $action == 'create') return !!$object->execution; - return true; } diff --git a/module/testtask/config.php b/module/testtask/config.php index d6cbc1425d..43e669c8c3 100644 --- a/module/testtask/config.php +++ b/module/testtask/config.php @@ -2,8 +2,8 @@ $config->testtask = new stdclass(); $config->testtask->create = new stdclass(); $config->testtask->edit = new stdclass(); -$config->testtask->create->requiredFields = 'execution,build,begin,end,name'; -$config->testtask->edit->requiredFields = 'execution,build,begin,end,name'; +$config->testtask->create->requiredFields = 'build,begin,end,name'; +$config->testtask->edit->requiredFields = 'build,begin,end,name'; $config->testtask->importUnit = new stdclass(); $config->testtask->importUnit->requiredFields = 'execution,build,begin,end,name,resultFile'; diff --git a/module/testtask/control.php b/module/testtask/control.php index b25782e1c9..85298a54ed 100644 --- a/module/testtask/control.php +++ b/module/testtask/control.php @@ -517,7 +517,7 @@ class testtask extends control /* Get execution type and set assignedToList. */ $execution = $this->execution->getById($task->execution); - if($execution->acl == 'private') + if($execution and $execution->acl == 'private') { $assignedToList = $this->loadModel('user')->getTeamMemberPairs($execution->id, 'execution', 'nodeleted'); } From b5c140fa52ddfddb6e33ed3d6b5ce90e821a0587 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Mon, 28 Nov 2022 13:29:22 +0800 Subject: [PATCH 05/52] * Modify git branh check. --- lib/scm/gitrepo.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/scm/gitrepo.class.php b/lib/scm/gitrepo.class.php index 335768ffb5..3a020aacb0 100644 --- a/lib/scm/gitrepo.class.php +++ b/lib/scm/gitrepo.class.php @@ -28,7 +28,9 @@ class GitRepo if($branch) { $branches = $this->branch(); - if(isset($branches[$branch])) $branch = "origin/$branch"; + $cmd = escapeCmd("$this->client branch -r"); + execCmd($cmd . ' 2>&1', 'string', $result); + if(isset($branches[$branch]) and !empty($result)) $branch = "origin/$branch"; } $this->branch = $branch; $this->repo = $repo; From 591f4ab7b1c8fe2e9c01ce01f893b664c9fe4aec Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Mon, 28 Nov 2022 13:30:32 +0800 Subject: [PATCH 06/52] * Adjust code. --- lib/scm/gitrepo.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/scm/gitrepo.class.php b/lib/scm/gitrepo.class.php index 3a020aacb0..718dbd6983 100644 --- a/lib/scm/gitrepo.class.php +++ b/lib/scm/gitrepo.class.php @@ -28,7 +28,7 @@ class GitRepo if($branch) { $branches = $this->branch(); - $cmd = escapeCmd("$this->client branch -r"); + $cmd = escapeCmd("$this->client branch -r"); execCmd($cmd . ' 2>&1', 'string', $result); if(isset($branches[$branch]) and !empty($result)) $branch = "origin/$branch"; } From 64fb4c10cae850a90834e57f23126ebe092a8d60 Mon Sep 17 00:00:00 2001 From: liuyongkai Date: Mon, 28 Nov 2022 14:15:58 +0800 Subject: [PATCH 07/52] * Resolve feedback #1459. --- module/story/model.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/module/story/model.php b/module/story/model.php index 25a7284f34..748503e526 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -5151,10 +5151,12 @@ class storyModel extends model } $stories[$id] = new stdclass(); - $stories[$id]->title = $title; - $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); - $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); - $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); + $stories[$id]->title = $title; + $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); + $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); + $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); + $storyParent = $this->dao->select('parent')->from(TABLE_STORY)->where('id')->eq($id)->fetch(); + $stories[$id]->parent = $storyParent->parent; if($this->config->edition == 'max') { $stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN) From 9455b09e17f9e5aa73341e05d60f08bb153e5d1f Mon Sep 17 00:00:00 2001 From: liuyongkai Date: Mon, 28 Nov 2022 14:55:02 +0800 Subject: [PATCH 08/52] * Resolve feedback #1459. --- module/story/model.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/module/story/model.php b/module/story/model.php index 748503e526..93a96f3a85 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -5140,9 +5140,9 @@ class storyModel extends model foreach($requirements as $requirement) { - $stories = $this->getRelation($requirement->id, 'requirement'); + $stories = $this->getRelation($requirement->id, 'requirement', array('id', 'title', 'parent')); $stories = empty($stories) ? array() : $stories; - foreach($stories as $id => $title) + foreach($stories as $id => $story) { if($projectStories and !isset($projectStories[$id])) { @@ -5151,12 +5151,11 @@ class storyModel extends model } $stories[$id] = new stdclass(); - $stories[$id]->title = $title; + $stories[$id]->parent = $story->parent; + $stories[$id]->title = $story->title; $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); - $storyParent = $this->dao->select('parent')->from(TABLE_STORY)->where('id')->eq($id)->fetch(); - $stories[$id]->parent = $storyParent->parent; if($this->config->edition == 'max') { $stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN) From 7025eeb91e5268201d05858446807b5166f0ee6d Mon Sep 17 00:00:00 2001 From: daitingting Date: Mon, 28 Nov 2022 08:09:10 +0000 Subject: [PATCH 09/52] * Finish task #77605. --- lib/zfile/zfile.class.php | 10 ++++++---- module/backup/model.php | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/zfile/zfile.class.php b/lib/zfile/zfile.class.php index 4903d50df4..c2c0b3a4ac 100644 --- a/lib/zfile/zfile.class.php +++ b/lib/zfile/zfile.class.php @@ -18,10 +18,11 @@ class zfile * @param string $to * @param bool $logLevel * @param string $logFile + * @param array $excludeFiles * @access public * @return array copied files, count, size or message. */ - public function copyDir($from, $to, $logLevel = false, $logFile = '') + public function copyDir($from, $to, $logLevel = false, $logFile = '', $excludeFiles = array()) { static $copiedFiles = array(); static $errorFiles = array(); @@ -46,7 +47,7 @@ class zfile $entries = scandir($from); foreach($entries as $entry) { - if($entry == '.' or $entry == '..' or $entry == '.svn' or $entry == '.git') continue; + if($entry == '.' or $entry == '..' or $entry == '.svn' or $entry == '.git' or in_array($entry, $excludeFiles)) continue; $fullEntry = $from . $entry; if(is_file($fullEntry)) @@ -101,10 +102,11 @@ class zfile * Get count. * * @param string $dir + * @param array $excludeFiles * @access public * @return int */ - public function getCount($dir) + public function getCount($dir, $excludeFiles = array()) { if(!file_exists($dir)) return 0; if(is_file($dir)) return 1; @@ -113,7 +115,7 @@ class zfile $entries = scandir($dir); foreach($entries as $entry) { - if($entry == '.' or $entry == '..' or $entry == '.svn' or $entry == '.git') continue; + if($entry == '.' or $entry == '..' or $entry == '.svn' or $entry == '.git' or in_array($entry, $excludeFiles)) continue; $fullEntry = $dir . '/' . $entry; $count += $this->getCount($fullEntry); diff --git a/module/backup/model.php b/module/backup/model.php index f6d3432609..e2346b008f 100644 --- a/module/backup/model.php +++ b/module/backup/model.php @@ -34,6 +34,7 @@ class backupModel extends model public function backFile($backupFile) { $zfile = $this->app->loadClass('zfile'); + $return = new stdclass(); $return->result = true; $return->error = ''; @@ -42,10 +43,10 @@ class backupModel extends model $tmpLogFile = $this->getTmpLogFile($backupFile); $dataDir = $this->app->getAppRoot() . 'www/data/'; - $count = $zfile->getCount($dataDir); + $count = $zfile->getCount($dataDir, array('course')); file_put_contents($tmpLogFile, json_encode(array('allCount' => $count))); - $result = $zfile->copyDir($dataDir, $backupFile, $logLevel = false, $tmpLogFile); + $result = $zfile->copyDir($dataDir, $backupFile, $logLevel = false, $tmpLogFile, array('course')); $this->processSummary($backupFile, $result['count'], $result['size'], $result['errorFiles'], $count); unlink($tmpLogFile); From db08e26957fd3a2c451d2e2ba8d9eaf85ab83f07 Mon Sep 17 00:00:00 2001 From: chaideqing Date: Tue, 29 Nov 2022 08:48:10 +0800 Subject: [PATCH 10/52] * Fix feedback #1446. --- module/file/model.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/file/model.php b/module/file/model.php index 9783d7250b..7bca92a246 100755 --- a/module/file/model.php +++ b/module/file/model.php @@ -667,7 +667,6 @@ class fileModel extends model public function pasteImage($data, $uid = '', $safe = false) { if(empty($data)) return ''; - $data = str_replace('\"', '"', $data); $dataLength = strlen($data); if(ini_get('pcre.backtrack_limit') < $dataLength) ini_set('pcre.backtrack_limit', $dataLength); @@ -676,7 +675,8 @@ class fileModel extends model { foreach($out[3] as $key => $base64Image) { - $extension = strtolower($out[2][$key]); + $base64Image = str_replace('\"', '"', $base64Image); + $extension = strtolower($out[2][$key]); if(!in_array($extension, $this->config->file->imageExtensions)) helper::end(); $imageData = base64_decode($base64Image); From e460772fc4d84a1be07c67149ddc17a24cbbc098 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 29 Nov 2022 10:52:01 +0800 Subject: [PATCH 11/52] * code for task #77129. --- framework/base/router.class.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/framework/base/router.class.php b/framework/base/router.class.php index cceaba51cd..de909ac83a 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -734,10 +734,13 @@ class baseRouter $account = $sql->quote($account); $vision = $this->dbh->query("SELECT * FROM " . TABLE_CONFIG . " WHERE owner = $account AND `key` = 'vision' LIMIT 1")->fetch(); if($vision) $vision = $vision->value; - if(empty($vision)) + + $user = $this->dbh->query("SELECT * FROM " . TABLE_USER . " WHERE account = $account AND deleted = '0' LIMIT 1")->fetch(); + if(!empty($user->visions)) { - $user = $this->dbh->query("SELECT * FROM " . TABLE_USER . " WHERE account = $account AND deleted = '0' LIMIT 1")->fetch(); - if(!empty($user->visions)) list($vision) = explode(',', $user->visions); + $userVisions = explode(',', $user->visions); + if(!in_array($vision, $userVisions)) $vision = ''; + if(empty($vision)) list($vision) = $userVisions; } } From 9b63267e1067d7b344069e91a15399fb61d110d8 Mon Sep 17 00:00:00 2001 From: zenggang Date: Tue, 29 Nov 2022 03:01:45 +0000 Subject: [PATCH 12/52] * Fix bug#30309 --- module/product/control.php | 27 ++++++++++++++++++++++----- module/product/view/browse.html.php | 1 + 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/module/product/control.php b/module/product/control.php index 410d0206bb..e2e4757e2b 100755 --- a/module/product/control.php +++ b/module/product/control.php @@ -271,13 +271,30 @@ class product extends control /* Display status of branch. */ $branchOption = array(); $branchTagOption = array(); - if($product and $product->type != 'normal') + if(!$product and $isProjectStory) { - $branches = $this->loadModel('branch')->getList($productID, $projectID, 'all'); - foreach($branches as $branchInfo) + /* Get branch display under multiple products. */ + foreach($projectProducts as $projectProduct) { - $branchOption[$branchInfo->id] = $branchInfo->name; - $branchTagOption[$branchInfo->id] = $branchInfo->name . ($branchInfo->status == 'closed' ? ' (' . $this->lang->branch->statusList['closed'] . ')' : ''); + if($projectProduct and $projectProduct->type != 'normal') + { + $branches = $this->loadModel('branch')->getList($projectProduct->id, $projectID, 'all'); + foreach($branches as $branchInfo) $branchOptions[$projectProduct->id][$branchInfo->id] = $branchInfo->name; + } + } + + $this->view->branchOptions = $branchOptions; + } + else + { + if($product and $product->type != 'normal') + { + $branches = $this->loadModel('branch')->getList($productID, $projectID, 'all'); + foreach($branches as $branchInfo) + { + $branchOption[$branchInfo->id] = $branchInfo->name; + $branchTagOption[$branchInfo->id] = $branchInfo->name . ($branchInfo->status == 'closed' ? ' (' . $this->lang->branch->statusList['closed'] . ')' : ''); + } } } diff --git a/module/product/view/browse.html.php b/module/product/view/browse.html.php index 30b0729413..dffefb71c9 100755 --- a/module/product/view/browse.html.php +++ b/module/product/view/browse.html.php @@ -357,6 +357,7 @@ js::set('vision', $this->config->vision); children)) echo "data-children=" . count($story->children);?> data-cases='id, 0);?>'> from = $from;?> + product])) $branchOption = $branchOptions[$story->product];?> app->getViewType() == 'xhtml'):?> $value) From b908e942a8deeb7ec112e8debd192e6ea48d89ac Mon Sep 17 00:00:00 2001 From: zenggang Date: Tue, 29 Nov 2022 06:35:11 +0000 Subject: [PATCH 13/52] * Fix bug#29140 --- module/doc/lang/de.php | 1 + module/doc/lang/en.php | 1 + module/doc/lang/fr.php | 1 + module/doc/lang/zh-cn.php | 1 + module/doc/model.php | 10 ++++++++++ 5 files changed, 14 insertions(+) diff --git a/module/doc/lang/de.php b/module/doc/lang/de.php index 1bdbf6a030..00bc38149e 100644 --- a/module/doc/lang/de.php +++ b/module/doc/lang/de.php @@ -249,6 +249,7 @@ $lang->doc->errorEmptyLib = 'No data in document library.'; $lang->doc->confirmUpdateContent = 'You have a document that is not saved from last time. Do you want to continue editing it?'; $lang->doc->selectLibType = 'Please select a type of doc library.'; $lang->doc->noLibreOffice = 'You does not have access to office conversion settings!'; +$lang->doc->errorParentChapter = 'The parent chapter cannot be its own chapter or sub chapter!'; $lang->doc->noticeAcl['lib']['product']['default'] = 'Users who can access the selected product can access it.'; $lang->doc->noticeAcl['lib']['product']['custom'] = 'Users who can access the selected product or users in the whiltelist can access it.'; diff --git a/module/doc/lang/en.php b/module/doc/lang/en.php index 0fe692fd76..905f4b0b4d 100644 --- a/module/doc/lang/en.php +++ b/module/doc/lang/en.php @@ -249,6 +249,7 @@ $lang->doc->errorEmptyLib = 'No data in document library.'; $lang->doc->confirmUpdateContent = 'You have a document that is not saved from last time. Do you want to continue editing it?'; $lang->doc->selectLibType = 'Please select a type of doc library.'; $lang->doc->noLibreOffice = 'You does not have access to office conversion settings!'; +$lang->doc->errorParentChapter = 'The parent chapter cannot be its own chapter or sub chapter!'; $lang->doc->noticeAcl['lib']['product']['default'] = 'Users who can access the selected product can access it.'; $lang->doc->noticeAcl['lib']['product']['custom'] = 'Users who can access the selected product or users in the whiltelist can access it.'; diff --git a/module/doc/lang/fr.php b/module/doc/lang/fr.php index 7fb46c8e44..53de6d24f9 100644 --- a/module/doc/lang/fr.php +++ b/module/doc/lang/fr.php @@ -249,6 +249,7 @@ $lang->doc->errorEmptyLib = 'No data in document library.'; $lang->doc->confirmUpdateContent = 'You have a document that is not saved from last time. Do you want to continue editing it?'; $lang->doc->selectLibType = 'Please select a type of doc library.'; $lang->doc->noLibreOffice = 'You does not have access to office conversion settings!'; +$lang->doc->errorParentChapter = 'The parent chapter cannot be its own chapter or sub chapter!'; $lang->doc->noticeAcl['lib']['product']['default'] = 'Les utilisateurs qui ont accès au Product peuvent y accéder.'; $lang->doc->noticeAcl['lib']['product']['custom'] = 'Les utilisateurs qui ont accès au Product ou les utilisateurs de la Liste Blanche peuvent y accéder.'; diff --git a/module/doc/lang/zh-cn.php b/module/doc/lang/zh-cn.php index 28c4093d1a..df60f7cd10 100644 --- a/module/doc/lang/zh-cn.php +++ b/module/doc/lang/zh-cn.php @@ -249,6 +249,7 @@ $lang->doc->errorEmptyLib = '文档库暂无数据。'; $lang->doc->confirmUpdateContent = '检查到您有未保存的文档内容,是否继续编辑?'; $lang->doc->selectLibType = '请选择文档库类型'; $lang->doc->noLibreOffice = '您还没有office转换设置访问权限!'; +$lang->doc->errorParentChapter = '父章节不能是自身章节及子章节!'; $lang->doc->noticeAcl['lib']['product']['default'] = '有所选产品访问权限的用户可以访问。'; $lang->doc->noticeAcl['lib']['product']['custom'] = '有所选产品访问权限或白名单里的用户可以访问。'; diff --git a/module/doc/model.php b/module/doc/model.php index 61370b13f5..9c08b6d366 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -821,6 +821,16 @@ class docModel extends model ->remove('comment,files,labels,uid,contactListMenu') ->get(); + if($doc->type == 'chapter' and $doc->parent) + { + $parentDoc = $this->dao->select('*')->from(TABLE_DOC)->where('id')->eq((int)$doc->parent)->fetch(); + if(strpos($parentDoc->path, ",$docID,") !== false) + { + dao::$errors['parent'] = $this->lang->doc->errorParentChapter; + return false; + } + } + if(!empty($doc->acl) and $doc->acl == 'private') $doc->users = $oldDoc->addedBy; $oldDocContent = $this->dao->select('*')->from(TABLE_DOCCONTENT)->where('doc')->eq($docID)->andWhere('version')->eq($oldDoc->version)->fetch(); From 71c1466f5a471c4cb6520972fe8420c546724c9f Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 29 Nov 2022 14:42:05 +0800 Subject: [PATCH 14/52] * code for task #77617. --- module/build/model.php | 32 ++++++++++ module/projectrelease/control.php | 20 ++++--- module/projectrelease/js/create.js | 27 ++++++--- module/projectrelease/view/create.html.php | 1 + module/release/control.php | 23 +------ module/release/js/create.js | 2 - test/class/build.class.php | 14 +++++ test/model/build/getnotemptybuilds.php | 70 ++++++++++++++++++++++ 8 files changed, 149 insertions(+), 40 deletions(-) create mode 100644 test/model/build/getnotemptybuilds.php diff --git a/module/build/model.php b/module/build/model.php index 1e9f333b90..38152234fd 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -181,6 +181,38 @@ class buildModel extends model return $this->getExecutionBuilds($executionID, 'bysearch', $buildQuery); } + /** + * Get link stories or bugs builds. + * + * @param array $buildIdList + * @access public + * @return array + */ + public function getNotEmptyBuilds($buildIdList) + { + $notEmptyBuilds = array(); + $buildList = $this->getByList($buildIdList); + foreach($buildList as $build) + { + if(!$build->execution && !empty($build->builds)) + { + $childBuilds = $this->getByList($build->builds); + foreach($childBuilds as $childBuild) + { + $childBuild->stories = trim($childBuild->stories, ','); + $childBuild->bugs = trim($childBuild->bugs, ','); + + if($childBuild->stories) $build->stories .= ',' . $childBuild->stories; + if($childBuild->bugs) $build->bugs .= ',' . $childBuild->bugs; + } + } + + if(!empty($build->stories) or !empty($build->bugs)) $notEmptyBuilds[$build->id] = $build->id; + } + + return $notEmptyBuilds; + } + /** * Get story builds. * diff --git a/module/projectrelease/control.php b/module/projectrelease/control.php index 671d20c340..18a016922d 100644 --- a/module/projectrelease/control.php +++ b/module/projectrelease/control.php @@ -133,14 +133,14 @@ class projectrelease extends control $builds = $this->build->getBuildPairs($this->view->product->id, $this->view->branch, 'notrunk,withbranch|hasproject', $projectID, 'project'); $releasedBuilds = $this->projectrelease->getReleasedBuilds($projectID); foreach($releasedBuilds as $build) unset($builds[$build]); - unset($builds['trunk']); - $this->view->title = $this->view->project->name . $this->lang->colon . $this->lang->release->create; - $this->view->projectID = $projectID; - $this->view->builds = $builds; - $this->view->lastRelease = $this->projectrelease->getLast($projectID); - $this->view->users = $this->loadModel('user')->getPairs('noclosed'); - $this->view->confirmLink = $this->lang->release->confirmLink; + $this->view->title = $this->view->project->name . $this->lang->colon . $this->lang->release->create; + $this->view->projectID = $projectID; + $this->view->builds = $builds; + $this->view->lastRelease = $this->projectrelease->getLast($projectID); + $this->view->users = $this->loadModel('user')->getPairs('noclosed'); + $this->view->confirmLink = $this->lang->release->confirmLink; + $this->view->notEmptyBuilds = $this->build->getNotEmptyBuilds(array_keys($builds)); $this->display(); } @@ -811,8 +811,10 @@ class projectrelease extends control $builds = $this->loadModel('build')->getBuildPairs($productID, $branch, 'notrunk,withbranch,hasproject', $projectID, 'project', '', false); $releasedBuilds = $this->projectrelease->getReleasedBuilds($projectID); foreach($releasedBuilds as $build) unset($builds[$build]); - unset($builds['trunk']); - return print(html::select('build[]', $builds, '', "class='form-control chosen' multiple")); + /* Get the builds of the linked stories or bugs. */ + $notEmptyBuilds = $this->build->getNotEmptyBuilds(array_keys($builds)); + + return print(html::select('build[]', $builds, '', "class='form-control chosen' multiple data-notemptybuilds='" . join(',', $notEmptyBuilds) . "'")); } } diff --git a/module/projectrelease/js/create.js b/module/projectrelease/js/create.js index 8b848d6351..43c1298bac 100644 --- a/module/projectrelease/js/create.js +++ b/module/projectrelease/js/create.js @@ -1,18 +1,27 @@ $('#submit').click(function() { - var dateFormat = new RegExp(/^\d{4}\-\d{2}\-\d{2}$/); - var name = $('#name').val(); - var date = $('#date').val(); - var build = $('#build').val(); - if(name && build && dateFormat.test(date)) + var dateFormat = new RegExp(/^\d{4}\-\d{2}\-\d{2}$/); + var name = $('#name').val(); + var date = $('#date').val(); + var build = $('#build').val(); + var notEmptyBuild = false; + + $.each(build, function(index, value) + { + if(typeof(notEmptyBuilds[value]) != 'undefined') + { + notEmptyBuild = true; + return false; + } + }) + + if(name && build && notEmptyBuild && dateFormat.test(date)) { var result = confirm(confirmLink) ? true : false; $('#sync').val(result); } }); -$('[data-toggle="popover"]').popover(); - /** * Ajax load unlinked builds with project and product. * @@ -26,6 +35,10 @@ function loadBuilds() $('#buildBox').load(createLink('projectrelease', 'ajaxLoadBuilds', "projectID=" + projectID + "&productID=" + productID + "&branch=" + branch), function() { $('#build').attr('data-placeholder', multipleSelect).chosen(); + $.each($('#build').attr('data-notemptybuilds').split(','), function(index, value) + { + notEmptyBuilds[value] = value; + }); }); } diff --git a/module/projectrelease/view/create.html.php b/module/projectrelease/view/create.html.php index ab669607a3..fa3671ae44 100644 --- a/module/projectrelease/view/create.html.php +++ b/module/projectrelease/view/create.html.php @@ -13,6 +13,7 @@ +
diff --git a/module/release/control.php b/module/release/control.php index 3f8297186f..6446cbfdd1 100644 --- a/module/release/control.php +++ b/module/release/control.php @@ -86,27 +86,6 @@ class release extends control $releasedBuilds = $this->release->getReleasedBuilds($productID, $branch); foreach($releasedBuilds as $build) unset($builds[$build]); - /* Get the builds of the linked stories or bugs. */ - $notEmptyBuilds = array(); - $buildList = $this->build->getByList(array_keys($builds)); - foreach($buildList as $build) - { - if(!$build->execution && !empty($build->builds)) - { - $childBuilds = $this->build->getByList($build->builds); - foreach($childBuilds as $childBuild) - { - $childBuild->stories = trim($childBuild->stories, ','); - $childBuild->bugs = trim($childBuild->bugs, ','); - - if($childBuild->stories) $build->stories .= ',' . $childBuild->stories; - if($childBuild->bugs) $build->bugs .= ',' . $childBuild->bugs; - } - } - - if(!empty($build->stories) or !empty($build->bugs)) $notEmptyBuilds[$build->id] = $build->id; - } - $this->commonAction($productID, $branch); $this->view->title = $this->view->product->name . $this->lang->colon . $this->lang->release->create; $this->view->position[] = $this->lang->release->create; @@ -114,7 +93,7 @@ class release extends control $this->view->builds = $builds; $this->view->users = $this->loadModel('user')->getPairs('noclosed'); $this->view->lastRelease = $this->release->getLast($productID, $branch); - $this->view->notEmptyBuilds = $notEmptyBuilds; + $this->view->notEmptyBuilds = $this->build->getNotEmptyBuilds(array_keys($builds)); $this->display(); } diff --git a/module/release/js/create.js b/module/release/js/create.js index 1b64abc7c2..87a9d72468 100644 --- a/module/release/js/create.js +++ b/module/release/js/create.js @@ -21,5 +21,3 @@ $('#submit').click(function() $('#sync').val(result); } }); - -$('[data-toggle="popover"]').popover(); diff --git a/test/class/build.class.php b/test/class/build.class.php index a51cd8ba1f..e3ce509607 100644 --- a/test/class/build.class.php +++ b/test/class/build.class.php @@ -149,6 +149,20 @@ class buildTest return $objects; } + /** + * Test for getNotEmptyBuilds method + * + * @param array $buildIdList + * @access public + * @return string + */ + public function getNotEmptyBuildsTest($buildIdList) + { + $notEmptyBuilds = $this->objectModel->getNotEmptyBuilds($buildIdList); + sort($notEmptyBuilds); + return empty($notEmptyBuilds) ? 'null' : join(',', $notEmptyBuilds); + } + /** * Function getLast test by build * diff --git a/test/model/build/getnotemptybuilds.php b/test/model/build/getnotemptybuilds.php new file mode 100644 index 0000000000..f868343e7c --- /dev/null +++ b/test/model/build/getnotemptybuilds.php @@ -0,0 +1,70 @@ +#!/usr/bin/env php +getNotEmptyBuilds(); +cid=1 +pid=1 + +不传任何数据 >> null +迭代版本未关联需求和Bug >> null +迭代版本关联需求和Bug >> 101 +项目版本关联版本关联需求和Bug >> 102 +项目版本关联版本未关联需求和Bug >> null +版本列表中关联需求和Bug >> 101 +版本列表中混合项目版本和迭代版本 >> 101,102 + +*/ + +$build = new buildTest(); + +$buildData = new stdclass(); +$buildData->id = 100; +$buildData->product = 1; +$buildData->project = 1; +$buildData->execution = 2; +$buildData->name = 'test1'; +$buildData->date = date('Y-m-d'); +$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec(); +$buildId1 = $buildData->id; + +$buildData->id = 101; +$buildData->name = 'test2'; +$buildData->stories = '1,2,3'; +$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec(); +$buildId2 = $buildData->id; + +$buildData = new stdclass(); +$buildData->id = 102; +$buildData->product = 1; +$buildData->project = 1; +$buildData->execution = 0; +$buildData->builds = ",$buildId2,"; +$buildData->name = 'test3'; +$buildData->date = date('Y-m-d'); +$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec(); +$buildId3 = $buildData->id; + +$buildData = new stdclass(); +$buildData->id = 103; +$buildData->product = 1; +$buildData->project = 1; +$buildData->execution = 0; +$buildData->builds = ",$buildId1,"; +$buildData->name = 'test4'; +$buildData->date = date('Y-m-d'); +$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec(); +$buildId4 = $buildData->id; + + +r($build->getNotEmptyBuildsTest(array())) && p() && e('null'); //不传任何数据 +r($build->getNotEmptyBuildsTest(array($buildId1))) && p() && e('null'); //迭代版本未关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId2))) && p() && e('101'); //迭代版本关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId3))) && p() && e('102'); //项目版本关联版本关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId4))) && p() && e('null'); //项目版本关联版本未关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId1, $buildId2))) && p() && e('101'); //版本列表中关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId3, $buildId2))) && p() && e('101,102'); //版本列表中混合项目版本和迭代版本 From 8d41badb9ef074f5f8aa75b03cbb6c87a5ad0bf9 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 29 Nov 2022 15:50:49 +0800 Subject: [PATCH 15/52] * code for task #77242. --- module/build/view/view.html.php | 6 +++++- module/projectrelease/control.php | 13 +++++++++---- module/release/control.php | 11 ++++++++--- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/module/build/view/view.html.php b/module/build/view/view.html.php index aa18d5ecae..fe31522f6a 100644 --- a/module/build/view/view.html.php +++ b/module/build/view/view.html.php @@ -26,7 +26,11 @@ tbody tr td:first-child input {display: none;}