diff --git a/config/config.php b/config/config.php
index e8fb0e592c..6429afecfa 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/module/productplan/model.php b/module/productplan/model.php
index 80b2f9d75c..c00b74c47b 100644
--- a/module/productplan/model.php
+++ b/module/productplan/model.php
@@ -364,9 +364,10 @@ class productplanModel extends model
{
if(!isset($planGroup[$plan->product][$plan->branch])) $planGroup[$plan->product][$plan->branch] = array('' => '');
+ if($plan->parent == '-1' and strpos($param, 'skipparent') !== false) continue;
+
if($field == 'name')
{
- if($plan->parent == '-1' and strpos($param, 'skipparent') !== false) continue;
if($plan->parent > 0 and isset($plans[$plan->parent])) $plan->title = $plans[$plan->parent]->title . ' /' . $plan->title;
$planGroup[$plan->product][$plan->branch][$plan->id] = $plan->title . " [{$plan->begin} ~ {$plan->end}]";
if($plan->begin == $this->config->productplan->future and $plan->end == $this->config->productplan->future) $planGroup[$plan->product][$plan->branch][$plan->id] = $plan->title . ' ' . $this->lang->productplan->future;
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');
}
});
}