diff --git a/module/bug/control.php b/module/bug/control.php
index 931a218447..00e55cdb57 100644
--- a/module/bug/control.php
+++ b/module/bug/control.php
@@ -1504,6 +1504,8 @@ class bug extends control
public function resolve($bugID, $extra = '')
{
$bug = $this->bug->getById($bugID);
+ if($bug->execution) $execution = $this->loadModel('execution')->getByID($bug->execution);
+
if(!empty($_POST))
{
$changes = $this->bug->resolve($bugID, $extra);
@@ -1535,7 +1537,6 @@ class bug extends control
parse_str($extra, $output);
if(isonlybody())
{
- $execution = $this->loadModel('execution')->getByID($bug->execution);
if(isset($execution->type) and $execution->type == 'kanban' and $this->app->tab == 'execution')
{
$regionID = isset($output['regionID']) ? $output['regionID'] : 0;
@@ -1576,6 +1577,7 @@ class bug extends control
$this->view->executions = $this->loadModel('product')->getExecutionPairsByProduct($productID, $bug->branch ? "0,{$bug->branch}" : 0, 'id_desc', $projectID);
$this->view->builds = $this->loadModel('build')->getBuildPairs($productID, $bug->branch, 'withbranch');
$this->view->actions = $this->action->getList('bug', $bugID);
+ $this->view->execution = isset($execution) ? $execution : '';
$this->display();
}
diff --git a/module/bug/model.php b/module/bug/model.php
index a731b4afc4..d07cfe6a95 100644
--- a/module/bug/model.php
+++ b/module/bug/model.php
@@ -1055,7 +1055,16 @@ class bugModel extends model
if($bug->resolution == 'duplicate' and !$this->post->duplicateBug) dao::$errors[] = sprintf($this->lang->error->notempty, $this->lang->bug->duplicateBug);
if(empty($bug->buildName)) dao::$errors['buildName'][] = sprintf($this->lang->error->notempty, $this->lang->bug->placeholder->newBuildName);
- if(empty($bug->buildExecution)) dao::$errors['buildExecution'][] = sprintf($this->lang->error->notempty, $this->lang->bug->execution);
+ if(empty($bug->buildExecution))
+ {
+ $executionLang = $this->lang->bug->execution;
+ if($oldBug->execution)
+ {
+ $execution = $this->loadModel('execution')->getByID($oldBug->execution);
+ if($execution->type == 'kanban') $executionLang = $this->lang->bug->kanban;
+ }
+ dao::$errors['buildExecution'][] = sprintf($this->lang->error->notempty, $executionLang);
+ }
if(dao::isError()) return false;
$buildData = new stdclass();
diff --git a/module/bug/view/resolve.html.php b/module/bug/view/resolve.html.php
index dcb8c8b4d3..1217f16097 100644
--- a/module/bug/view/resolve.html.php
+++ b/module/bug/view/resolve.html.php
@@ -44,7 +44,7 @@ js::set('productID' , $bug->product);
bug->resolvedBuild;?> |
- build->execution;?>
+ type == 'kanban') ? $lang->bug->kanban : $lang->build->execution;?>
|
diff --git a/module/execution/js/kanban.js b/module/execution/js/kanban.js
index faf3f6d55a..958232cac8 100644
--- a/module/execution/js/kanban.js
+++ b/module/execution/js/kanban.js
@@ -1102,7 +1102,7 @@ function createStoryMenu(options)
var items = [];
var showAction = story.$col.type == 'backlog' || story.$col.type == 'ready' || story.$col.type == 'developing' || story.$col.type == 'developed' || story.$col.type == 'testing' || story.$col.type == 'tested' || story.$col.type == 'verified' || story.$col.type == 'released';
- if(priv.canEditStory) items.push({label: storyLang.edit, icon: 'edit', url: createLink('story', 'edit', 'storyID=' + story.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
+ if(priv.canEditStory) items.push({label: storyLang.edit, icon: 'edit', url: createLink('story', 'edit', 'storyID=' + story.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '95%'}});
if(priv.canChangeStory && showAction) items.push({label: storyLang.change, icon: 'change', url: createLink('story', 'change', 'storyID=' + story.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canCreateTask && showAction) items.push({label: executionLang.wbs, icon: 'plus', url: createLink('task', 'create', 'executionID=' + execution.id + '&storyID=' + story.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canBatchCreateTask && showAction) items.push({label: executionLang.batchWBS, icon: 'pluses', url: createLink('task', 'batchCreate', 'executionID=' + execution.id + '&storyID=' + story.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
@@ -1121,7 +1121,7 @@ function createTaskMenu(options)
var $card = options.$trigger.closest('.kanban-item');
var task = $card.data('item');
var items = [];
- if(priv.canEditTask) items.push({label: taskLang.edit, icon: 'edit', url: createLink('task', 'edit', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
+ if(priv.canEditTask) items.push({label: taskLang.edit, icon: 'edit', url: createLink('task', 'edit', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '95%'}});
if(priv.canRestartTask && task.$col.type == 'pause') items.push({label: taskLang.restart, icon: 'play', url: createLink('task', 'restart', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canPauseTask && task.$col.type == 'developing') items.push({label: taskLang.pause, icon: 'pause', url: createLink('task', 'pause', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canRecordEstimateTask) items.push({label: executionLang.effort, icon: 'time', url: createLink('task', 'recordEstimate', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
@@ -1141,7 +1141,7 @@ function createBugMenu(options)
var $card = options.$trigger.closest('.kanban-item');
var bug = $card.data('item');
var items = [];
- if(priv.canEditBug) items.push({label: bugLang.edit, icon: 'edit', url: createLink('bug', 'edit', 'bugID=' + bug.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
+ if(priv.canEditBug) items.push({label: bugLang.edit, icon: 'edit', url: createLink('bug', 'edit', 'bugID=' + bug.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '95%'}});
if(priv.canResolveBug && (bug.$col.type == 'unconfirmed' || bug.$col.type == 'confirmed' || bug.$col.type == 'fixing')) items.push({label: bugLang.resolve, icon: 'checked', url: createLink('bug', 'resolve', 'bugID=' + bug.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canConfirmBug && (bug.$col.type == 'fixed' || bug.$col.type == 'testing' || bug.$col.type == 'tested')) items.push({label: bugLang.close, icon: 'off', url: createLink('bug', 'close', 'bugID=' + bug.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canConfirmBug && bug.$col.type == 'unconfirmed') items.push({label: bugLang.confirmBug, icon: 'ok', url: createLink('bug', 'confirmbug', 'bugID=' + bug.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
diff --git a/module/kanban/css/space.css b/module/kanban/css/space.css
index 8451f6d1f3..0af2b80557 100644
--- a/module/kanban/css/space.css
+++ b/module/kanban/css/space.css
@@ -36,3 +36,5 @@
.kanbans .kanbanAcl {position: absolute; right: 0px; bottom: 2px; color: #838a9d;}
a.disabled {pointer-events: none;}
+
+.noBorder{border: 0px;}
diff --git a/module/kanban/css/view.css b/module/kanban/css/view.css
index 1ab18d6b40..56180ca8a7 100644
--- a/module/kanban/css/view.css
+++ b/module/kanban/css/view.css
@@ -19,7 +19,7 @@
.region .region-header label {color: #999; background: transparent; border: 1px solid #ddd; margin-left: 10px; margin-right: 10px}
.region .region-header .action {float: right}
.region .region-header .icon-double-angle-up,.icon-double-angle-down {cursor: pointer;}
-.region .kanban-header-sub-cols {border-right: 2px solid #fff;margin-left:0;}
+.region .kanban-header-sub-cols {margin-left:0;}
.region .kanban-header-sub-cols .kanban-header-col > .title {max-width: 100% !important;min-width:240px;}
.region .sort .region-header {cursor: move;}
diff --git a/module/kanban/view/space.html.php b/module/kanban/view/space.html.php
index beb0b76392..0d21beed09 100644
--- a/module/kanban/view/space.html.php
+++ b/module/kanban/view/space.html.php
@@ -147,7 +147,7 @@
-