+ id;?> + name'>" . $kanban->name . '';?> +
++ +
diff --git a/db/update17.0.beta1.sql b/db/update17.0.beta1.sql new file mode 100644 index 0000000000..a916d02ba7 --- /dev/null +++ b/db/update17.0.beta1.sql @@ -0,0 +1,5 @@ +ALTER TABLE `zt_kanbanspace` ADD COLUMN `activatedBy` char(30) NOT NULL AFTER `closedDate`; +ALTER TABLE `zt_kanbanspace` ADD COLUMN `activatedDate` datetime NOT NULL AFTER `activatedBy`; + +ALTER TABLE `zt_kanban` ADD COLUMN `activatedBy` char(30) NOT NULL AFTER `closedDate`; +ALTER TABLE `zt_kanban` ADD COLUMN `activatedDate` datetime NOT NULL AFTER `activatedBy`; diff --git a/db/zentao.sql b/db/zentao.sql index 05fdae8af7..0ec6975287 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -760,6 +760,8 @@ CREATE TABLE `zt_kanbanspace` ( `lastEditedDate` datetime NOT NULL, `closedBy` char(30) NOT NULL, `closedDate` datetime NOT NULL, + `activatedBy` char(30) NOT NULL, + `activatedDate` datetime NOT NULL, `deleted` enum('0', '1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; @@ -786,6 +788,8 @@ CREATE TABLE `zt_kanban` ( `lastEditedDate` datetime NOT NULL, `closedBy` char(30) NOT NULL, `closedDate` datetime NOT NULL, + `activatedBy` char(30) NOT NULL, + `activatedDate` datetime NOT NULL, `deleted` enum('0', '1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 3df0680181..faec27e9e2 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -624,6 +624,7 @@ $lang->resource->kanban->sortSpace = 'sortSpace'; $lang->resource->kanban->create = 'create'; $lang->resource->kanban->edit = 'edit'; $lang->resource->kanban->view = 'view'; +$lang->resource->kanban->activate = 'activate'; $lang->resource->kanban->close = 'close'; $lang->resource->kanban->delete = 'delete'; $lang->resource->kanban->createRegion = 'createRegion'; @@ -712,6 +713,7 @@ $lang->kanban->methodorder[220] = 'setColumnWidth'; $lang->kanban->methodOrder[225] = 'batchCreateCard'; $lang->kanban->methodorder[230] = 'import'; $lang->kanban->methodorder[235] = 'enableArchived'; +$lang->kanban->methodorder[240] = 'activate'; /* Execution. */ $lang->resource->execution = new stdclass(); diff --git a/module/kanban/config.php b/module/kanban/config.php index 70f04a7a32..d39e4bcd6e 100644 --- a/module/kanban/config.php +++ b/module/kanban/config.php @@ -40,6 +40,7 @@ $config->kanban->editor->createspace = array('id' => 'desc', 'tools' => 'simple $config->kanban->editor->editspace = array('id' => 'desc', 'tools' => 'simpleTools'); $config->kanban->editor->closespace = array('id' => 'comment', 'tools' => 'simpleTools'); $config->kanban->editor->createcard = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->kanban->editor->activate = array('id' => 'comment', 'tools' => 'simpleTools'); $config->kanban->editor->close = array('id' => 'comment', 'tools' => 'simpleTools'); $config->kanban->editor->editcard = array('id' => 'desc', 'tools' => 'simpleTools'); $config->kanban->editor->viewcard = array('id' => 'comment', 'tools' => 'simpleTools'); diff --git a/module/kanban/control.php b/module/kanban/control.php index 6a73e1ebcd..78017c946b 100644 --- a/module/kanban/control.php +++ b/module/kanban/control.php @@ -239,6 +239,36 @@ class kanban extends control $this->display(); } + /* + * Activate a kanban. + * + * @param int $kanbanID + * @access public + * @return void + */ + public function activate($kanbanID) + { + $this->loadModel('action'); + + if(!empty($_POST)) + { + $changes = $this->kanban->activate($kanbanID); + + if(dao::isError()) return print(js::error(dao::getError())); + + $actionID = $this->action->create('kanban', $kanbanID, 'activated', $this->post->comment); + $this->action->logHistory($actionID, $changes); + + return print(js::reload('parent.parent')); + } + + $this->view->kanban = $this->kanban->getByID($kanbanID); + $this->view->actions = $this->action->getList('kanban', $kanbanID); + $this->view->users = $this->loadModel('user')->getPairs('noletter'); + + $this->display(); + } + /* * Close a kanban. * diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php index 0da9f49c01..8783e9b086 100644 --- a/module/kanban/lang/en.php +++ b/module/kanban/lang/en.php @@ -8,6 +8,7 @@ $lang->kanban->deleteSpace = 'Delete Space'; $lang->kanban->sortSpace = 'Sort Space'; $lang->kanban->edit = 'Edit Kanban'; $lang->kanban->view = 'View Kanban'; +$lang->kanban->activate = 'Activate Kanban'; $lang->kanban->close = 'Close Kanban'; $lang->kanban->delete = 'Delete Kanban'; $lang->kanban->createRegion = 'Create Region'; diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php index 154fd13465..d2382dd1ad 100644 --- a/module/kanban/lang/zh-cn.php +++ b/module/kanban/lang/zh-cn.php @@ -8,6 +8,7 @@ $lang->kanban->deleteSpace = '删除空间'; $lang->kanban->sortSpace = '空间排序'; $lang->kanban->edit = '设置看板'; $lang->kanban->view = '查看看板'; +$lang->kanban->activate = '激活看板'; $lang->kanban->close = '关闭看板'; $lang->kanban->delete = '删除看板'; $lang->kanban->createRegion = '新增区域'; diff --git a/module/kanban/model.php b/module/kanban/model.php index e3514ba0de..84b477bd50 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -2053,6 +2053,37 @@ class kanbanModel extends model } } + /** + * Activate a kanban. + * + * @param int $kanbanID + * @access public + * @return array + */ + function activate($kanbanID) + { + $kanbanID = (int)$kanbanID; + $oldKanban = $this->getByID($kanbanID); + $now = helper::now(); + $kanban = fixer::input('post') + ->setDefault('status', 'active') + ->setDefault('activatedBy', $this->app->user->account) + ->setDefault('activatedDate', $now) + ->setDefault('closedBy', '') + ->setDefault('closedDate', '0000-00-00 00:00:00') + ->setDefault('lastEditedBy', $this->app->user->account) + ->setDefault('lastEditedDate', $now) + ->remove('comment') + ->get(); + + $this->dao->update(TABLE_KANBAN)->data($kanban) + ->autoCheck() + ->where('id')->eq($kanbanID) + ->exec(); + + if(!dao::isError()) return common::createChanges($oldKanban, $kanban); + } + /** * Close a kanban. * @@ -2069,6 +2100,8 @@ class kanbanModel extends model ->setDefault('status', 'closed') ->setDefault('closedBy', $this->app->user->account) ->setDefault('closedDate', $now) + ->setDefault('activatedBy', '') + ->setDefault('activatedDate', '0000-00-00 00:00:00') ->setDefault('lastEditedBy', $this->app->user->account) ->setDefault('lastEditedDate', $now) ->remove('comment') @@ -2950,7 +2983,7 @@ class kanbanModel extends model $CRKanban = !(isset($this->config->CRKanban) and $this->config->CRKanban == '0' and $kanban->status == 'closed'); $printRegionBtn = ($CRKanban and (common::hasPriv('kanban', 'createRegion') or $printSetHeightBtn or common::hasPriv('kanban', 'performable') or common::hasPriv('kanban', 'enableArchived') or common::hasPriv('kanban', 'import') or common::hasPriv('kanban', 'setColumnWidth'))); - $printKanbanBtn = (common::hasPriv('kanban', 'edit') or common::hasPriv('kanban', 'close') or common::hasPriv('kanban', 'delete')); + $printKanbanBtn = (common::hasPriv('kanban', 'edit') or ($kanban->status == 'active' and common::hasPriv('kanban', 'close')) or common::hasPriv('kanban', 'delete') or ($kanban->status == 'closed' and common::hasPriv('kanban', 'activate'))); if($printRegionBtn or $printKanbanBtn) { @@ -2970,9 +3003,9 @@ class kanbanModel extends model if(common::hasPriv('kanban', 'performable') and $CRKanban) $actions .= '