diff --git a/config/config.php b/config/config.php index 7f6ffe4f8a..5f9738e591 100644 --- a/config/config.php +++ b/config/config.php @@ -99,7 +99,7 @@ $config->CSPs[] = "form-action 'self';connect-src 'self'"; /* Config for kanban col setting */ $config->colWidth = 264; -$config->minColWidth = 180; +$config->minColWidth = 200; $config->maxColWidth = 384; /* 系统框架配置。Framework settings. */ diff --git a/db/update17.7.sql b/db/update17.7.sql new file mode 100644 index 0000000000..db7616351e --- /dev/null +++ b/db/update17.7.sql @@ -0,0 +1,13 @@ +update zt_kanban k +set + k.colWidth = if(k.colWidth < 200, 200, k.colWidth), + k.minColWidth = if(k.minColWidth < 200, 200, k.minColWidth), + k.maxColWidth = if(k.maxColWidth <= 200 and k.minColWidth <= 200, 201, k.maxColWidth) +where k.colWidth < 200 or k.minColWidth < 200 or k.maxColWidth < 200; + +update zt_project p +set + p.colWidth = if(p.colWidth < 200, 200, p.colWidth), + p.minColWidth = if(p.minColWidth < 200, 200, p.minColWidth), + p.maxColWidth = if(p.maxColWidth <= 200 and p.minColWidth <= 200, 201, p.maxColWidth) +where p.colWidth < 200 or p.minColWidth < 200 or p.maxColWidth < 200; diff --git a/db/zentao.sql b/db/zentao.sql index 8bf8264689..04440768fa 100755 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -836,7 +836,7 @@ CREATE TABLE IF NOT EXISTS `zt_kanban` ( `showWIP` enum('0','1') NOT NULL DEFAULT '1', `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', `colWidth` smallint(4) NOT NULL DEFAULT '264', - `minColWidth` smallint(4) NOT NULL DEFAULT '180', + `minColWidth` smallint(4) NOT NULL DEFAULT '200', `maxColWidth` smallint(4) NOT NULL DEFAULT '384', `object` varchar(255) NOT NULL, `alignment` varchar(10) NOT NULL default 'center', @@ -1197,7 +1197,7 @@ CREATE TABLE IF NOT EXISTS `zt_project` ( `displayCards` smallint(6) NOT NULL default '0', `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', `colWidth` smallint(4) NOT NULL DEFAULT '264', - `minColWidth` smallint(4) NOT NULL DEFAULT '180', + `minColWidth` smallint(4) NOT NULL DEFAULT '200', `maxColWidth` smallint(4) NOT NULL DEFAULT '384', `deleted` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`), diff --git a/module/execution/css/setkanban.css b/module/execution/css/setkanban.css index 4602590fc3..5cd52009b7 100644 --- a/module/execution/css/setkanban.css +++ b/module/execution/css/setkanban.css @@ -6,3 +6,5 @@ #mainContent .radio-inline+.radio-inline {margin-left: 0px; padding-top: 8px;} #mainContent label > .tip {color: #999;} #mainContent #cardBox th {vertical-align: middle;} +#colWidth + .fixedTip, #maxColWidth + .autoTip {margin-left: 35px; color: #2667E3; padding-top: 1px;} +[lang^=en] #colWidth + .fixedTip, [lang^=en] #maxColWidth + .autoTip, [lang^=de] #colWidth + .fixedTip, [lang^=de] #maxColWidth + .autoTip, [lang^=fr] #colWidth + .fixedTip, [lang^=fr] #maxColWidth + .autoTip {margin-left: 50px;} diff --git a/module/execution/model.php b/module/execution/model.php index f1385fe7fd..e4f7f21905 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -1148,8 +1148,8 @@ class executionModel extends model $this->dao->update(TABLE_EXECUTION)->data($execution) ->autoCheck() ->batchCheck($this->config->kanban->edit->requiredFields, 'notempty') - ->checkIF(!$execution->fluidBoard, 'colWidth', 'gt', 0) - ->batchCheckIF($execution->fluidBoard, 'minColWidth,maxColWidth', 'gt', 0) + ->checkIF(!$execution->fluidBoard, 'colWidth', 'ge', 200) + ->batchCheckIF($execution->fluidBoard, 'minColWidth,maxColWidth', 'ge', 200) ->checkIF($execution->minColWidth and $execution->maxColWidth and $execution->fluidBoard, 'maxColWidth', 'gt', $execution->minColWidth) ->where('id')->eq((int)$executionID) ->exec(); diff --git a/module/execution/view/kanban.html.php b/module/execution/view/kanban.html.php index f8acbc9740..3c6bd3f354 100644 --- a/module/execution/view/kanban.html.php +++ b/module/execution/view/kanban.html.php @@ -157,7 +157,7 @@ js::set('priv', " . $lang->searchAB, '', "class='btn btn-link querybox-toggle'"); echo html::a('javascript:fullScreen()', " " . $lang->kanban->fullScreen, '', "class='btn btn-link'"); if(common::hasPriv('execution', 'setKanban')) echo html::a(helper::createLink('execution', 'setKanban', "executionID=$execution->id", '', true), ' ' . $lang->settings, '', "class='iframe btn btn-link text-left' data-width='$width'"); diff --git a/module/execution/view/setkanban.html.php b/module/execution/view/setkanban.html.php index 6b2762bf19..c82842748c 100644 --- a/module/execution/view/setkanban.html.php +++ b/module/execution/view/setkanban.html.php @@ -26,12 +26,14 @@
$lang->kanbancolumn->fluidBoardList['0']), "class='inline-block'", $execution->fluidBoard);?> colWidth) ? $execution->colWidth : $this->config->colWidth, "class='form-control inline-block setting-input' placeholder='{$this->config->colWidth}' autocomplete='off'");?>px +
kanbancolumn->fixedTip;?>
$lang->kanbancolumn->fluidBoardList['1']), "class='inline-block'", $execution->fluidBoard);?> minColWidth) ? $execution->minColWidth: $this->config->minColWidth, "class='form-control inline-block setting-input' placeholder='{$this->config->minColWidth}' autocomplete='off'");?>px ~ maxColWidth) ? $execution->maxColWidth: $this->config->maxColWidth, "class='form-control inline-block setting-input' placeholder='{$this->config->maxColWidth}' autocomplete='off'");?>px +
kanbancolumn->autoTip;?>
diff --git a/module/execution/view/taskkanban.html.php b/module/execution/view/taskkanban.html.php index ba22053143..ffeabdb2b7 100644 --- a/module/execution/view/taskkanban.html.php +++ b/module/execution/view/taskkanban.html.php @@ -71,7 +71,7 @@ "; echo html::a('javascript:;', "", '', "data-toggle='dropdown' class='btn btn-link'"); echo ""; } - if(common::hasPriv('kanban', 'setting')) $actions .= html::a(helper::createLink('kanban', 'setting', "kanbanID=$kanban->id", '', true), ' ' . $this->lang->kanban->setting, '', "class='iframe btn btn-link' data-width='60%'"); + if(common::hasPriv('kanban', 'setting')) + { + $width = common::checkNotCN() ? '65%' : '60%'; + $actions .= html::a(helper::createLink('kanban', 'setting', "kanbanID=$kanban->id", '', true), ' ' . $this->lang->kanban->setting, '', "class='iframe btn btn-link' data-width='$width'"); + } $actions .= ""; diff --git a/module/kanban/view/setting.html.php b/module/kanban/view/setting.html.php index acaed6557f..2aeb50ed36 100644 --- a/module/kanban/view/setting.html.php +++ b/module/kanban/view/setting.html.php @@ -31,12 +31,14 @@
$lang->kanbancolumn->fluidBoardList['0']), $kanban->fluidBoard);?> colWidth) ? $kanban->colWidth : $this->config->colWidth, "class='form-control inline-block setting-input' placeholder='{$this->config->colWidth}' autocomplete='off'");?>px +
kanbancolumn->fixedTip;?>
$lang->kanbancolumn->fluidBoardList['1']), $kanban->fluidBoard);?> minColWidth) ? $kanban->minColWidth : $this->config->minColWidth, "class='form-control inline-block setting-input' placeholder='{$this->config->minColWidth}' autocomplete='off'");?>px ~ maxColWidth) ? $kanban->maxColWidth : $this->config->maxColWidth, "class='form-control inline-block setting-input' placeholder='{$this->config->maxColWidth}' autocomplete='off'");?>px +
kanbancolumn->autoTip;?>
diff --git a/www/js/my.full.js b/www/js/my.full.js index 43cbcf35f6..09b8b218f9 100644 --- a/www/js/my.full.js +++ b/www/js/my.full.js @@ -1348,6 +1348,8 @@ function handleKanbanWidthAttr () $('#colWidth, #minColWidth, #maxColWidth').attr('maxlength', '3'); var fluidBoard = $("#mainContent input[name='fluidBoard'][checked='checked']").val() || 0; var addAttrEle = fluidBoard == 0 ? '#colWidth' : '#minColWidth, #maxColWidth'; + var $fixedTip = $('#colWidth + .fixedTip'); + var $autoTip = $('#maxColWidth + .autoTip'); $(addAttrEle).closest('.width-radio-row').addClass('required'); $('#colWidth').attr('disabled',fluidBoard == 1); $('#minColWidth, #maxColWidth').attr('disabled',fluidBoard == 0); @@ -1356,6 +1358,18 @@ function handleKanbanWidthAttr () $('#minColWidthLabel, #maxColWidthLabel').remove(); $('#minColWidth, #maxColWidth').removeClass('has-error'); }); + + if(fluidBoard == 1) + { + $fixedTip.addClass('hidden'); + $autoTip.removeClass('hidden'); + } + else + { + $fixedTip.removeClass('hidden'); + $autoTip.addClass('hidden'); + } + $(document).on('change', "#mainContent input[name='fluidBoard']", function(e) { $('#colWidth').attr('disabled', e.target.value == 1); @@ -1366,6 +1380,8 @@ function handleKanbanWidthAttr () $('#minColWidth, #maxColWidth').closest('.width-radio-row').removeClass('required'); $('#minColWidthLabel, #maxColWidthLabel').remove(); $('#minColWidth, #maxColWidth').removeClass('has-error'); + $fixedTip.removeClass('hidden'); + $autoTip.addClass('hidden'); } else if(e.target.value == 1 && $('#colWidthLabel')) { @@ -1373,6 +1389,8 @@ function handleKanbanWidthAttr () $('#colWidth').closest('.width-radio-row').removeClass('required'); $('#colWidthLabel').remove(); $('#colWidth').removeClass('has-error'); + $fixedTip.addClass('hidden'); + $autoTip.removeClass('hidden'); } }); }