From 8b5f5d2c25027d84d423474baaa28ffafc6f7786 Mon Sep 17 00:00:00 2001 From: Catouse Date: Thu, 17 Nov 2016 14:06:59 +0800 Subject: [PATCH 01/10] * finish task #2688. --- www/theme/default/style.css | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/www/theme/default/style.css b/www/theme/default/style.css index dba4d77d38..d7155fea45 100644 --- a/www/theme/default/style.css +++ b/www/theme/default/style.css @@ -722,7 +722,16 @@ body {font-size: 13px; color:#141414;padding-bottom: 40px;} #passwordStrength{display:none;} .fixedTfootAction {position: fixed; bottom: 40px; box-shadow: 0 -3px 4px rgba(0,0,0,0.05)} -.table > .fixedTfootAction > tr > td {background: #F8FAFE; border-top-color: #bbb; border-bottom: none} +.table > .fixedTfootAction > tr > td {background: #114f8e; border: none; color: #fff} +.fixedTfootAction .btn {border: 1px solid #fff; border-color: rgba(255,255,255,.5); background-color: #2e6dad!important; text-shadow: none; color: #e5e5e5!important;} +.fixedTfootAction .btn:hover {background-color: #114f8e!important;} +.fixedTfootAction .pager, +.fixedTfootAction .pager > a, +.fixedTfootAction .pager > .dropdown > a, +.fixedTfootAction .table-actions > .text {color: #e5e5e5} +.fixedTfootAction .pager strong, +.fixedTfootAction .table-actions > .text strong {color: #fff;} +.fixedTfootAction .pager .dropdown > a:hover, .fixedTfootAction .pager > a:hover {background-color: #2e6dad} .fixedTheadOfList {position: fixed; top: 0px; z-index:1000;} .datatable.head-fixed > .datatable-head .table > thead > tr > th, .fixedTheadOfList > thead > tr > th {background-color: #114f8e; border-bottom-color: #bbb; color: #aaa} From 9fba07add15e5bfd5cf93975af032702ed0baadf Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Thu, 17 Nov 2016 14:10:52 +0800 Subject: [PATCH 02/10] * finish task #2702. --- module/search/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/search/model.php b/module/search/model.php index 8a9218a776..dcc6d55ff3 100644 --- a/module/search/model.php +++ b/module/search/model.php @@ -61,7 +61,7 @@ class searchModel extends model $valueName = "value$i"; /* Skip empty values. */ - if($this->post->$valueName == false) continue; + if($this->post->$valueName == false and $this->post->$valueName !== '0') continue; if($this->post->$valueName == 'null') $this->post->$valueName = ''; // Null is special, stands to empty. if($this->post->$valueName == 'ZERO') $this->post->$valueName = 0; // ZERO is special, stands to 0. From e9b329df4c4db5f7cd1b6787937b5cd659d53885 Mon Sep 17 00:00:00 2001 From: Catouse Date: Thu, 17 Nov 2016 14:36:28 +0800 Subject: [PATCH 03/10] * finish task #2723. --- module/common/model.php | 6 +++--- www/js/my.full.js | 27 +++++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/module/common/model.php b/module/common/model.php index 632ca7de18..7e115d43cf 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -303,10 +303,10 @@ class commonModel extends model echo "" . $lang->help . " "; echo ""; - echo html::a(helper::createLink('misc', 'about'), $lang->aboutZenTao, '', "class='about iframe' data-width='900' data-headerless='true' data-class='modal-about'"); + echo html::a(helper::createLink('misc', 'about'), $lang->aboutZenTao, '', "class='about iframe' data-width='900' data-headerless='true' data-backdrop='true' data-keyboard='true' data-class='modal-about'"); } /** diff --git a/www/js/my.full.js b/www/js/my.full.js index 9d4b9806e7..9cdcb668be 100644 --- a/www/js/my.full.js +++ b/www/js/my.full.js @@ -989,18 +989,18 @@ function setModal() var type = (setting ? setting.type : false) || ($e.hasClass('iframe') ? 'iframe' : ($e.data('type') || 'ajax')); if(type == 'iframe') { - var options = + var options = $.extend( { url: url, - width: $e.data('width') || 800, - height: $e.data('height') || 'auto', - icon: $e.data('icon') || '?', - title: $e.data('title') || $e.attr('title') || $e.text(), - name: $e.data('name') || 'modalIframe', + width: 800, + height: 'auto', + icon: '?', + title: $e.attr('title') || $e.text(), + name: 'modalIframe', cssClass: $e.data('class'), - headerless: $e.data('headerless') || false, - center: $e.data('center') || true - }; + headerless: false, + center: true + }, $e.data()); if(options.icon == '?') { @@ -1036,7 +1036,7 @@ function setModal() ajustModalPosition(); } - ajaxModal.modal('show'); + ajaxModal.modal($.extend({backdrop: 'static', keyboard: false, show: true}, options)); }); } @@ -1061,7 +1061,10 @@ function setModal() cssClass: '', headerless: false, waittime: 0, - center: true + center: true, + backdrop: 'static', + keyboard: false, + show: true } if(typeof(settings) == 'string') @@ -1118,7 +1121,7 @@ function setModal() } showModal(options, modal, modalBody, dialog); } - modal.modal('show'); + modal.modal(options); } function showModal(options, modal, modalBody, dialog) From befa5a2a8047c2edbe536751e1211de64937d38a Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Thu, 17 Nov 2016 14:42:06 +0800 Subject: [PATCH 04/10] * finish task #2704. --- module/bug/view/report.html.php | 1 + module/common/lang/en.php | 3 +++ module/common/lang/zh-cn.php | 3 +++ module/story/view/report.html.php | 1 + module/task/view/report.html.php | 1 + 5 files changed, 9 insertions(+) diff --git a/module/bug/view/report.html.php b/module/bug/view/report.html.php index c53ff8bd6c..1d7973e355 100644 --- a/module/bug/view/report.html.php +++ b/module/bug/view/report.html.php @@ -76,6 +76,7 @@ +
report->notice->help?>
diff --git a/module/common/lang/en.php b/module/common/lang/en.php index cb51afcc69..f7612815d5 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -275,6 +275,9 @@ $lang->report->menu->prj = array('link' => $lang->projectCommon . '|report|p $lang->report->menu->test = array('link' => 'Testing|report|bugcreate', 'alias' => 'bugassign'); $lang->report->menu->staff = array('link' => 'Company|report|workload'); +$lang->report->notice = new stdclass(); +$lang->report->notice->help = 'Note: Report is generated from search results. Please search in the list page before you generate a report.'; + /* 组织结构视图菜单设置。*/ $lang->company = new stdclass(); $lang->company->menu = new stdclass(); diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 9ceed8cdec..7bfbf3d6aa 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -275,6 +275,9 @@ $lang->report->menu->prj = array('link' => $lang->projectCommon . '|report|p $lang->report->menu->test = array('link' => '测试|report|bugcreate', 'alias' => 'bugassign'); $lang->report->menu->staff = array('link' => '组织|report|workload'); +$lang->report->notice = new stdclass(); +$lang->report->notice->help = '注:统计报表的数据,来源于列表页面的检索结果,生成统计报表前请先在列表页面进行检索。'; + /* 组织结构视图菜单设置。*/ $lang->company = new stdclass(); $lang->company->menu = new stdclass(); diff --git a/module/story/view/report.html.php b/module/story/view/report.html.php index 2d103a310b..0c2d98603d 100644 --- a/module/story/view/report.html.php +++ b/module/story/view/report.html.php @@ -75,6 +75,7 @@ +
report->notice->help?>
diff --git a/module/task/view/report.html.php b/module/task/view/report.html.php index 3378f37436..3983630132 100644 --- a/module/task/view/report.html.php +++ b/module/task/view/report.html.php @@ -77,6 +77,7 @@ +
report->notice->help?>
From 58693b20c362c8b5ab002198b5fc5edd58c72302 Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Thu, 17 Nov 2016 15:04:16 +0800 Subject: [PATCH 05/10] * finish task #2706. --- module/product/view/project.html.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/module/product/view/project.html.php b/module/product/view/project.html.php index a62146d26d..e284706b0f 100644 --- a/module/product/view/project.html.php +++ b/module/product/view/project.html.php @@ -14,16 +14,16 @@
product->project;?>
- +
- - - - - - - + + + + + + + From 0bcb1b5cc83270748b3942ab29e14f002e883de9 Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Thu, 17 Nov 2016 17:25:16 +0800 Subject: [PATCH 06/10] * finish task #2713. --- module/product/view/browse.html.php | 1 - module/product/view/browsedata.html.php | 1 + module/project/view/taskdata.html.php | 29 ++++++++++++++----------- module/task/lang/en.php | 1 + module/task/lang/zh-cn.php | 1 + module/task/model.php | 14 ++++++++++++ 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/module/product/view/browse.html.php b/module/product/view/browse.html.php index c9e30f2906..b8f26ebbe6 100644 --- a/module/product/view/browse.html.php +++ b/module/product/view/browse.html.php @@ -12,7 +12,6 @@ ?> -
project->name;?>project->code;?>project->end;?>project->status;?>project->totalEstimate;?>project->totalConsumed;?>project->totalLeft;?>project->name;?>project->code;?>project->end;?>project->status;?>project->totalEstimate;?>project->totalConsumed;?>project->totalLeft;?> project->progess;?> project->burn;?>
diff --git a/module/project/view/taskdata.html.php b/module/project/view/taskdata.html.php index de801ffbec..9a66f054d2 100644 --- a/module/project/view/taskdata.html.php +++ b/module/project/view/taskdata.html.php @@ -10,30 +10,32 @@ * @link http://www.zentao.net */ ?> +
- - - - - + + + + + cookie->windowWidth > $this->config->wideSize):?> - + - - + + cookie->windowWidth > $this->config->wideSize):?> - + - - - - type == 'sprint') print '';?> + + + + + type == 'sprint') print "';?> @@ -77,6 +79,7 @@ + type == 'sprint') { diff --git a/module/task/lang/en.php b/module/task/lang/en.php index b8bc32b52a..eb9230cbee 100644 --- a/module/task/lang/en.php +++ b/module/task/lang/en.php @@ -33,6 +33,7 @@ $lang->task->reportChart = "Report Chart"; $lang->task->fromBug = 'From Bug'; $lang->task->case = 'Related Case'; $lang->task->confirmStoryChange = "Confirm Story Change"; +$lang->task->progess = 'Progess'; $lang->task->common = 'Task'; $lang->task->id = 'ID'; diff --git a/module/task/lang/zh-cn.php b/module/task/lang/zh-cn.php index 687ad4eb47..81b051ca07 100644 --- a/module/task/lang/zh-cn.php +++ b/module/task/lang/zh-cn.php @@ -33,6 +33,7 @@ $lang->task->reportChart = "报表统计"; $lang->task->fromBug = '来源Bug'; $lang->task->case = '相关用例'; $lang->task->confirmStoryChange = "确认需求变动"; +$lang->task->progess = '进度'; $lang->task->common = '任务'; $lang->task->id = '编号'; diff --git a/module/task/model.php b/module/task/model.php index 5fb1e19827..22f646195a 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1190,6 +1190,20 @@ class taskModel extends model $task->productType = $product->type; } + /* Compute task progess. */ + if($task->consumed == 0 and $task->left == 0) + { + $task->progess = 0; + } + elseif($task->consumed != 0 and $task->left == 0) + { + $task->progess = 100; + } + else + { + $task->progess = round($task->consumed / ($task->consumed + $task->left), 3) * 100; + } + return $task; } From 0e5ee436a757060138872155a0494cd484e3d106 Mon Sep 17 00:00:00 2001 From: Catouse Date: Thu, 17 Nov 2016 17:31:50 +0800 Subject: [PATCH 07/10] * update zui: fix tree UI. --- www/js/zui/min.js | 8 ++++---- www/theme/zui/css/min.css | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/www/js/zui/min.js b/www/js/zui/min.js index 36ba0708c2..a616d80cee 100644 --- a/www/js/zui/min.js +++ b/www/js/zui/min.js @@ -1,5 +1,5 @@ /*! - * ZUI: zui for zentao - v1.5.0 - 2016-11-03 + * ZUI: zui for zentao - v1.5.0 - 2016-11-17 * http://zui.sexy * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2016 cnezsoft.com; Licensed MIT @@ -12,11 +12,11 @@ * MIT & GPL http://benalman.com/about/license/ */ function(t,e,i){"$:nomunge";function a(){o=e[r](function(){n.each(function(){var e=t(this),i=e.width(),a=e.height(),o=t.data(this,d);(i!==o.w||a!==o.h)&&e.trigger(l,[o.w=i,o.h=a])}),a()},s[c])}var o,n=t([]),s=t.resize=t.extend(t.resize,{}),r="setTimeout",l="resize",d=l+"-special-event",c="delay",p="throttleWindow";s[c]=250,s[p]=!0,t.event.special[l]={setup:function(){if(!s[p]&&this[r])return!1;var e=t(this);n=n.add(e),t.data(this,d,{w:e.width(),h:e.height()}),1===n.length&&a()},teardown:function(){if(!s[p]&&this[r])return!1;var e=t(this);n=n.not(e),e.removeData(d),n.length||clearTimeout(o)},add:function(e){function a(e,a,n){var s=t(this),r=t.data(this,d)||{};r.w=a!==i?a:s.width(),r.h=n!==i?n:s.height(),o.apply(this,arguments)}if(!s[p]&&this[r])return!1;var o;return t.isFunction(e)?(o=e,a):(o=e.handler,void(e.handler=a))}}}(jQuery,this),function(){"use strict";Date.ONEDAY_TICKS=864e5,Date.prototype.format||(Date.prototype.format=function(t){var e={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),"S+":this.getMilliseconds()};/(y+)/i.test(t)&&(t=t.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)));for(var i in e)new RegExp("("+i+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[i]:("00"+e[i]).substr((""+e[i]).length)));return t}),Date.prototype.addMilliseconds||(Date.prototype.addMilliseconds=function(t){return this.setTime(this.getTime()+t),this}),Date.prototype.addDays||(Date.prototype.addDays=function(t){return this.addMilliseconds(t*Date.ONEDAY_TICKS),this}),Date.prototype.clone||(Date.prototype.clone=function(){var t=new Date;return t.setTime(this.getTime()),t}),Date.isLeapYear||(Date.isLeapYear=function(t){return t%4===0&&t%100!==0||t%400===0}),Date.getDaysInMonth||(Date.getDaysInMonth=function(t,e){return[31,Date.isLeapYear(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]}),Date.prototype.isLeapYear||(Date.prototype.isLeapYear=function(){return Date.isLeapYear(this.getFullYear())}),Date.prototype.clearTime||(Date.prototype.clearTime=function(){return this.setHours(0),this.setMinutes(0),this.setSeconds(0),this.setMilliseconds(0),this}),Date.prototype.getDaysInMonth||(Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth())}),Date.prototype.addMonths||(Date.prototype.addMonths=function(t){var e=this.getDate();return this.setDate(1),this.setMonth(this.getMonth()+t),this.setDate(Math.min(e,this.getDaysInMonth())),this}),Date.prototype.getLastWeekday||(Date.prototype.getLastWeekday=function(t){t=t||1;for(var e=this.clone();e.getDay()!=t;)e.addDays(-1);return e.clearTime(),e}),Date.prototype.isSameDay||(Date.prototype.isSameDay=function(t){return t.toDateString()===this.toDateString()}),Date.prototype.isSameWeek||(Date.prototype.isSameWeek=function(t){var e=this.getLastWeekday(),i=e.clone().addDays(7);return t>=e&&i>t}),Date.prototype.isSameYear||(Date.prototype.isSameYear=function(t){return this.getFullYear()===t.getFullYear()})}(),function(t,e){"use strict";var i,a,o="localStorage",n="page_"+t.location.pathname+t.location.search,s=function(){this.slience=!0;try{o in t&&t[o]&&t[o].setItem&&(this.enable=!0,i=t[o])}catch(s){}this.enable||(a={},i={getLength:function(){var t=0;return e.each(a,function(){t++}),t},key:function(t){var i,o=0;return e.each(a,function(e){return o===t?(i=e,!1):void o++}),i},removeItem:function(t){delete a[t]},getItem:function(t){return a[t]},setItem:function(t,e){a[t]=e},clear:function(){a={}}}),this.storage=i,this.page=this.get(n,{})};s.prototype.pageSave=function(){if(e.isEmptyObject(this.page))this.remove(n);else{var t,i=[];for(t in this.page){var a=this.page[t];null===a&&i.push(t)}for(t=i.length-1;t>=0;t--)delete this.page[i[t]];this.set(n,this.page)}},s.prototype.pageRemove=function(t){"undefined"!=typeof this.page[t]&&(this.page[t]=null,this.pageSave())},s.prototype.pageClear=function(){this.page={},this.pageSave()},s.prototype.pageGet=function(t,e){var i=this.page[t];return void 0===e||null!==i&&void 0!==i?i:e},s.prototype.pageSet=function(t,i){e.isPlainObject(t)?e.extend(!0,this.page,t):this.page[this.serialize(t)]=i,this.pageSave()},s.prototype.check=function(){if(!this.enable&&!this.slience)throw new Error("Browser not support localStorage or enable status been set true.");return this.enable},s.prototype.length=function(){return this.check()?i.getLength?i.getLength():i.length:0},s.prototype.removeItem=function(t){return i.removeItem(t),this},s.prototype.remove=function(t){return this.removeItem(t)},s.prototype.getItem=function(t){return i.getItem(t)},s.prototype.get=function(t,e){var i=this.deserialize(this.getItem(t));return"undefined"!=typeof i&&null!==i||"undefined"==typeof e?i:e},s.prototype.key=function(t){return i.key(t)},s.prototype.setItem=function(t,e){return i.setItem(t,e),this},s.prototype.set=function(t,e){return void 0===e?this.remove(t):(this.setItem(t,this.serialize(e)),this)},s.prototype.clear=function(){return i.clear(),this},s.prototype.forEach=function(t){for(var e=this.length(),a=e-1;a>=0;a--){var o=i.key(a);t(o,this.get(o))}return this},s.prototype.getAll=function(){var t={};return this.forEach(function(e,i){t[e]=i}),t},s.prototype.serialize=function(t){return"string"==typeof t?t:JSON.stringify(t)},s.prototype.deserialize=function(t){if("string"==typeof t)try{return JSON.parse(t)}catch(e){return t||void 0}},e.zui({store:new s})}(window,jQuery),function(t,e,i,a){"use strict";function o(t){if(t=t.toLowerCase(),t&&c.test(t)){var e;if(4===t.length){var i="#";for(e=1;4>e;e+=1)i+=t.slice(e,e+1).concat(t.slice(e,e+1));t=i}var a=[];for(e=1;7>e;e+=2)a.push(y("0x"+t.slice(e,e+2)));return{r:a[0],g:a[1],b:a[2],a:1}}throw new Error("Wrong hex string! (hex: "+t+")")}function n(e){return typeof e===u&&("transparent"===e.toLowerCase()||v[e.toLowerCase()]||c.test(t.trim(e.toLowerCase())))}function s(t){function e(t){return t=0>t?t+1:t>1?t-1:t,1>6*t?r+(s-r)*t*6:1>2*t?s:2>3*t?r+(s-r)*(2/3-t)*6:r}var i=t.h,a=t.s,o=t.l,n=t.a;i=d(i)%h/h,a=l(d(a)),o=l(d(o)),n=l(d(n));var s=.5>=o?o*(a+1):o+a-o*a,r=2*o-s,c={r:e(i+1/3)*p,g:e(i)*p,b:e(i-1/3)*p,a:n};return c}function r(t,i,a){return m(a)&&(a=0),m(i)&&(i=p),e.min(e.max(t,a),i)}function l(t,e){return r(t,e)}function d(t){return"number"==typeof t?t:parseFloat(t)}var c=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/,p=255,h=360,f=100,u="string",g="object",v={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},m=function(t){return t===a},b=function(t){return!m(t)},y=function(t){return parseInt(t)},w=function(t){return y(l(d(t),p))},C=function(t,e,i,a){var n=this;if(n.r=n.g=n.b=0,n.a=1,b(a)&&(n.a=l(d(a),1)),b(t)&&b(e)&&b(i))n.r=w(t),n.g=w(e),n.b=w(i);else if(b(t)){var r=typeof t;if(r==u)t=t.toLowerCase(),"transparent"===t?n.a=0:v[t]?this.rgb(o(v[t])):n.rgb(o(t));else if("number"==r&&m(e))n.r=n.g=n.b=w(t);else if(r==g&&b(t.r))n.r=w(t.r),b(t.g)&&(n.g=w(t.g)),b(t.b)&&(n.b=w(t.b)),b(t.a)&&(n.a=l(d(t.a),1));else if(r==g&&b(t.h)){var c={h:l(d(t.h),h),s:1,l:1,a:1};b(t.s)&&(c.s=l(d(t.s),1)),b(t.l)&&(c.l=l(d(t.l),1)),b(t.a)&&(c.a=l(d(t.a),1)),n.rgb(s(c))}}};C.prototype.rgb=function(t){var e=this;if(b(t)){if(typeof t==g)b(t.r)&&(e.r=w(t.r)),b(t.g)&&(e.g=w(t.g)),b(t.b)&&(e.b=w(t.b)),b(t.a)&&(e.a=l(d(t.a),1));else{var i=y(d(t));e.r=i,e.g=i,e.b=i}return e}return{r:e.r,g:e.g,b:e.b,a:e.a}},C.prototype.hue=function(t){var e=this,i=e.toHsl();return m(t)?i.h:(i.h=l(d(t),h),e.rgb(s(i)),e)},C.prototype.darken=function(t){var e=this,i=e.toHsl();return i.l-=t/f,i.l=l(i.l,1),e.rgb(s(i)),e},C.prototype.clone=function(){var t=this;return new C(t.r,t.g,t.b,t.a)},C.prototype.lighten=function(t){return this.darken(-t)},C.prototype.fade=function(t){return this.a=l(t/f,1),this},C.prototype.spin=function(t){var e=this.toHsl(),i=(e.h+t)%h;return e.h=0>i?h+i:i,this.rgb(s(e))},C.prototype.toHsl=function(){var t,i,a=this,o=a.r/p,n=a.g/p,s=a.b/p,r=a.a,l=e.max(o,n,s),d=e.min(o,n,s),c=(l+d)/2,f=l-d;if(l===d)t=i=0;else{switch(i=c>.5?f/(2-l-d):f/(l+d),l){case o:t=(n-s)/f+(s>n?6:0);break;case n:t=(s-o)/f+2;break;case s:t=(o-n)/f+4}t/=6}return{h:t*h,s:i,l:c,a:r}},C.prototype.luma=function(){var t=this.r/p,i=this.g/p,a=this.b/p;return t=.03928>=t?t/12.92:e.pow((t+.055)/1.055,2.4),i=.03928>=i?i/12.92:e.pow((i+.055)/1.055,2.4),a=.03928>=a?a/12.92:e.pow((a+.055)/1.055,2.4),.2126*t+.7152*i+.0722*a},C.prototype.saturate=function(t){var e=this.toHsl();return e.s+=t/f,e.s=l(e.s),this.rgb(s(e))},C.prototype.desaturate=function(t){return this.saturate(-t)},C.prototype.contrast=function(t,e,i){if(e=m(e)?new C(p,p,p,1):new C(e),t=m(t)?new C(0,0,0,1):new C(t),t.luma()>e.luma()){var a=e;e=t,t=a}return this.a<.5?t:(i=m(i)?.43:d(i),this.luma()0?t.a<1?"rgba("+t.r+","+t.g+","+t.b+","+t.a+")":t.hexStr():"transparent"},C.isColor=n,C.names=v,t.zui({Color:C})}(jQuery,Math,window,void 0),/*! - * ZUI: Generated from less code - v1.5.0 - 2016-11-03 + * ZUI: Generated from less code - v1.5.0 - 2016-11-17 * http://zui.sexy * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2016 cnezsoft.com; Licensed MIT */ function(t){"use strict";var e=0,i=["primary","red","yellow","green","blue","purple","brown","dark"],a={primary:"#3280fc",secondary:"#145ccd",pale:"#ebf2f9",fore:"#353535",back:"#fff",grayDarker:"#222222",grayDark:"#333333",gray:"#808080",grayLight:"#dddddd",grayLighter:"#e5e5e5",grayPale:"#f1f1f1",white:"#fff",black:"#000",red:"#ea644a",yellow:"#f1a325",green:"#38b03f",blue:"#03b8cf",purple:"#8666b8",brown:"#bd7b46",greenPale:"#ddf4df",yellowPale:"#fff0d5",redPale:"#ffe5e0",bluePale:"#ddf3f5",brownPale:"#f7ebe1",purplePale:"#f5eeff",light:"#fff",dark:"#353535",success:"#38b03f",warning:"#f1a325",danger:"#ea644a",info:"#03b8cf",important:"#bd7b46",special:"#8666b8",successPale:"#ddf4df",warningPale:"#fff0d5",dangerPale:"#ffe5e0",infoPale:"#ddf3f5",importantPale:"#f7ebe1",specialPale:"#f5eeff"};a.get=function(o){("undefined"==typeof o||"random"===o)&&(o=i[e++%i.length]);var n=a[o]?a[o]:o;return t.zui.Color?new t.zui.Color(n):n},t.zui({colorset:a}),t.zui.Color&&t.extend(t.zui.Color,a)}(jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}t.fn.emulateTransitionEnd=function(e){var i=!1,a=this;t(this).one("bsTransitionEnd",function(){i=!0});var o=function(){i||t(a).trigger(t.support.transition.end)};return setTimeout(o,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){return t(e.target).is(this)?e.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(t){"use strict";var e=function(i,a){this.$element=t(i),this.options=t.extend({},e.DEFAULTS,a),this.isLoading=!1};e.DEFAULTS={loadingText:"loading..."},e.prototype.setState=function(e){var i="disabled",a=this.$element,o=a.is("input")?"val":"html",n=a.data();e+="Text",n.resetText||a.data("resetText",a[o]()),a[o](n[e]||this.options[e]),setTimeout(t.proxy(function(){"loadingText"==e?(this.isLoading=!0,a.addClass(i).attr(i,i)):this.isLoading&&(this.isLoading=!1,a.removeClass(i).removeAttr(i))},this),0)},e.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")&&(i.prop("checked")&&this.$element.hasClass("active")?t=!1:e.find(".active").removeClass("active")),t&&i.prop("checked",!this.$element.hasClass("active")).trigger("change")}t&&this.$element.toggleClass("active")};var i=t.fn.button;t.fn.button=function(i){return this.each(function(){var a=t(this),o=a.data("zui.button"),n="object"==typeof i&&i;o||a.data("zui.button",o=new e(this,n)),"toggle"==i?o.toggle():i&&o.setState(i)})},t.fn.button.Constructor=e,t.fn.button.noConflict=function(){return t.fn.button=i,this},t(document).on("click.zui.button.data-api","[data-toggle^=button]",function(e){var i=t(e.target);i.hasClass("btn")||(i=i.closest(".btn")),i.button("toggle"),e.preventDefault()})}(jQuery),function(t){"use strict";var e={zh_cn:'您的浏览器版本过低,无法体验所有功能,建议升级或者更换浏览器。 了解更多...',zh_tw:'您的瀏覽器版本過低,無法體驗所有功能,建議升級或者更换瀏覽器。了解更多...',en:'Your browser is too old, it has been unable to experience the colorful internet. We strongly recommend that you upgrade a better one. Learn more...'},i=function(){var t=this.isIE()||this.isIE10()||!1;if(t)for(var e=10;e>5;e--)if(this.isIE(e)){t=e;break}this.ie=t,this.cssHelper()};i.prototype.cssHelper=function(){var e=this.ie,i=t("html");i.toggleClass("ie",e).removeClass("ie-6 ie-7 ie-8 ie-9 ie-10"),e&&i.addClass("ie-"+e).toggleClass("gt-ie-7 gte-ie-8 support-ie",e>=8).toggleClass("lte-ie-7 lt-ie-8 outdated-ie",8>e).toggleClass("gt-ie-8 gte-ie-9",e>=9).toggleClass("lte-ie-8 lt-ie-9",9>e).toggleClass("gt-ie-9 gte-ie-10",e>=10).toggleClass("lte-ie-9 lt-ie-10",10>e)},i.prototype.tip=function(i){var a=t("#browseHappyTip");a.length||(a=t('
'),a.prependTo("body")),a.find(".content").html(i||this.browseHappyTip||e[t.zui.clientLang()||"zh_cn"])},i.prototype.isIE=function(t){if(10===t)return this.isIE10();var e=document.createElement("b");return e.innerHTML="",1===e.getElementsByTagName("i").length},i.prototype.isIE10=function(){return!1},t.zui({browser:new i}),t(function(){t("body").hasClass("disabled-browser-tip")||t.zui.browser.ie&&t.zui.browser.ie<8&&t.zui.browser.tip()})}(jQuery),+function(t){"use strict";var e="zui.collapse",i=function(e,a){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,a),this.transitioning=null,this.options.parent&&(this.$parent=t(this.options.parent)),this.options.toggle&&this.toggle()};i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var i=t.Event("show."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var a=this.$parent&&this.$parent.find(".in");if(a&&a.length){var o=a.data(e);if(o&&o.transitioning)return;a.collapse("hide"),o||a.data(e,null)}var n=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[n](0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("in")[n]("auto"),this.transitioning=0,this.$element.trigger("shown."+e)};if(!t.support.transition)return s.call(this);var r=t.camelCase(["scroll",n].join("-"));this.$element.one(t.support.transition.end,t.proxy(s,this)).emulateTransitionEnd(350)[n](this.$element[0][r])}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var i=t.Event("hide."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var a=this.dimension();this.$element[a](this.$element[a]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var o=function(){this.transitioning=0,this.$element.trigger("hidden."+e).removeClass("collapsing").addClass("collapse")};return t.support.transition?void this.$element[a](0).one(t.support.transition.end,t.proxy(o,this)).emulateTransitionEnd(350):o.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var a=t.fn.collapse;t.fn.collapse=function(a){return this.each(function(){var o=t(this),n=o.data(e),s=t.extend({},i.DEFAULTS,o.data(),"object"==typeof a&&a);n||o.data(e,n=new i(this,s)),"string"==typeof a&&n[a]()})},t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=a,this},t(document).on("click."+e+".data-api","[data-toggle=collapse]",function(i){var a,o=t(this),n=o.attr("data-target")||i.preventDefault()||(a=o.attr("href"))&&a.replace(/.*(?=#[^\s]+$)/,""),s=t(n),r=s.data(e),l=r?"toggle":o.data(),d=o.attr("data-parent"),c=d&&t(d);r&&r.transitioning||(c&&c.find('[data-toggle=collapse][data-parent="'+d+'"]').not(o).addClass("collapsed"),o[s.hasClass("in")?"addClass":"removeClass"]("collapsed")),s.collapse(l)})}(window.jQuery),+function(t){"use strict";function e(){t(o).remove(),t(n).each(function(e){var o=i(t(this));o.hasClass("open")&&(o.trigger(e=t.Event("hide."+a)),e.isDefaultPrevented()||o.removeClass("open").trigger("hidden."+a))})}function i(e){var i=e.attr("data-target");i||(i=e.attr("href"),i=i&&/#/.test(i)&&i.replace(/.*(?=#[^\s]*$)/,""));var a;try{a=i&&t(i)}catch(o){}return a&&a.length?a:e.parent()}var a="zui.dropdown",o=".dropdown-backdrop",n="[data-toggle=dropdown]",s=function(e){t(e).on("click."+a,this.toggle)};s.prototype.toggle=function(o){var n=t(this);if(!n.is(".disabled, :disabled")){var s=i(n),r=s.hasClass("open");if(e(),!r){if("ontouchstart"in document.documentElement&&!s.closest(".navbar-nav").length&&t('
idAB);?> priAB);?> task->name);?>statusAB);?> task->deadlineAB);?> idAB);?> priAB);?> task->name);?>statusAB);?> task->deadlineAB);?> task->openedDateAB);?> task->openedDateAB);?> task->assignedToAB);?> task->finishedByAB);?> task->assignedToAB);?> task->finishedByAB);?> task->finishedDateAB);?> task->finishedDateAB);?> task->estimateAB);?> task->consumedAB);?> task->leftAB);?>' and common::printOrderLink('story', $orderBy, $vars, $lang->task->story) and print ' task->estimateAB);?> task->consumedAB);?> task->leftAB);?>task->progess;?>" and common::printOrderLink('story', $orderBy, $vars, $lang->task->story) and print 'actions;?>
estimate;?> consumed;?> left;?>progess;?>%
').append(u))}i.flexStart=-1,i.flexEnd=-1,a=i.cols,i.colsLength=a.length;for(var s=0;s=0,i.fixedRight=i.flexEnd>=0&&i.flexEnd0,i.flexStart<0&&i.flexEnd<0&&(i.fixedLeft=!0,i.flexStart=i.colsLength,i.flexEnd=i.colsLength),this.data=i,this.callEvent("afterLoad",{data:i}),this.render()},a.prototype.render=function(){var i,a,o,n,s=this,r=s.$datatable||(s.isTable?t('
'):s.$datatable),l=s.options,d=s.data,c=s.data.cols,p=s.data.rows,h=l.checkable,f='
',u='
';r.children(".datatable-head, .datatable-rows, .scroll-wrapper").remove(),r.toggleClass("sortable",l.sortable);var g,v,m,b=t('
');for(i=t(""),o=t(""),n=t(""),a=0;a=d.flexStart&&a<=d.flexEnd?n:o,0===a&&h&&g.append(''),m.ignore||(v=t(""),v.toggleClass("sort-down","down"===m.sort).toggleClass("sort-up","up"===m.sort).toggleClass("sort-disabled",m.sort===!1),v.addClass(m.cssClass).addClass(m.colClass).html(m.text).attr({"data-index":a,"data-type":m.type,style:m.css}),g.append(v));var y;d.fixedLeft&&(y=t(u),y.addClass("fixed-left").find("table").addClass(l.tableClass).find("thead").append(i),b.append(y)),d.flexArea&&(y=t(u),y.addClass("flexarea").find(".datatable-wrapper").append('
').find("table").addClass(l.tableClass).find("thead").append(n),b.append(y)),d.fixedRight&&(y=t(u),y.addClass("fixed-right").find("table").addClass(l.tableClass).find("thead").append(o),b.append(y)),r.append(b);var w,C,x,$,k,T,E,S,z=t('
'),D=p.length;i=t(""),o=t(""),n=t("");for(var L=0;D>L;++L){for(T=p[L],"undefined"==typeof T.id&&(T.id=L),T.index=L,w=t(""),w.addClass(T.cssClass).toggleClass(l.checkedClass,!!T.checked).attr({"data-index":L,"data-id":T.id}),C=w.clone(),x=w.clone(),S=T.data.length,a=0;S>a;++a)E=T.data[a],a>0&&E.empty||(g=a=d.flexStart&&a<=d.flexEnd?C:x,0===a&&h&&(k=t(''),l.checkboxName&&k.append(''),g.append(k)),c[a].ignore||(t.isPlainObject(E)?(E.row=L,E.index=a):E={text:E,row:L,index:a},T.data[a]=E,$=t(""),$.html(E.text).addClass(E.cssClass).addClass(c[a].colClass).attr("colspan",E.colSpan).attr({"data-row":L,"data-index":a,"data-flex":!1,"data-type":c[a].type,style:E.css,title:E.title||""}),g.append($)));i.append(w),n.append(C),o.append(x)}var O;d.fixedLeft&&(O=t(f),O.addClass("fixed-left").find("table").addClass(l.tableClass).append(i),z.append(O)),d.flexArea&&(O=t(f),O.addClass("flexarea").find(".datatable-wrapper").append('
').find("table").addClass(l.tableClass).append(n),z.append(O)),d.fixedRight&&(O=t(f),O.addClass("fixed-right").find("table").addClass(l.tableClass).append(o),z.append(O)),r.append(z),d.flexArea&&r.append('
');var P=r.children(".datatable-footer").detach();d.footer?(r.append(t('