* Add kanban space edit function.
This commit is contained in:
@@ -541,7 +541,8 @@ $lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
$lang->action->label->design = 'Design|design|view|designID=%s';
|
||||
$lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s';
|
||||
$lang->action->label->api = 'Interface|api|index|libID=%s&moduleID=%s&apiID=%s';
|
||||
$lang->action->label->kanbancolumn = 'Kanban column|execution|kanban|execution=%s';
|
||||
$lang->action->label->kanbanspace = 'Kanban Space|kanban|space|browseType=all';
|
||||
$lang->action->label->kanbancolumn = 'Kanban Column|execution|kanban|execution=%s';
|
||||
$lang->action->label->kanbanlane = 'Kanban Lane|execution|kanban|execution=%s&type=all';
|
||||
$lang->action->label->mr = 'Merge Request|mr|view|id=%s';
|
||||
|
||||
|
||||
@@ -618,19 +618,69 @@ $lang->release->methodOrder[75] = 'notify';
|
||||
|
||||
/* Kanban */
|
||||
$lang->resource->kanban = new stdclass();
|
||||
$lang->resource->kanban->space = 'space';
|
||||
$lang->resource->kanban->setLane = 'setLane';
|
||||
$lang->resource->kanban->setColumn = 'setColumn';
|
||||
$lang->resource->kanban->setWIP = 'setWIP';
|
||||
$lang->resource->kanban->laneMove = 'laneMove';
|
||||
$lang->resource->kanban->cardsSort = 'cardsSort';
|
||||
$lang->resource->kanban->space = 'space';
|
||||
$lang->resource->kanban->createSpace = 'createSpace';
|
||||
$lang->resource->kanban->editSpace = 'editSpace';
|
||||
$lang->resource->kanban->closeSpace = 'closeSpace';
|
||||
$lang->resource->kanban->deleteSpace = 'deleteSpace';
|
||||
$lang->resource->kanban->sortSpace = 'sortSpace';
|
||||
$lang->resource->kanban->create = 'create';
|
||||
$lang->resource->kanban->edit = 'edit';
|
||||
$lang->resource->kanban->view = 'view';
|
||||
$lang->resource->kanban->close = 'close';
|
||||
$lang->resource->kanban->delete = 'delete';
|
||||
$lang->resource->kanban->createRegion = 'createRegion';
|
||||
$lang->resource->kanban->editRegion = 'editRegion';
|
||||
$lang->resource->kanban->sortRegion = 'sortRegion';
|
||||
$lang->resource->kanban->deleteRegion = 'deleteRegion';
|
||||
$lang->resource->kanban->createLane = 'createLane';
|
||||
$lang->resource->kanban->editLane = 'editLane';
|
||||
$lang->resource->kanban->sortLane = 'sortLane';
|
||||
$lang->resource->kanban->createColumn = 'createColumn';
|
||||
$lang->resource->kanban->editColumn = 'editColumn';
|
||||
$lang->resource->kanban->setWIP = 'setWIP';
|
||||
$lang->resource->kanban->sortColumn = 'sortColumn';
|
||||
$lang->resource->kanban->deleteColumn = 'deleteColumn';
|
||||
$lang->resource->kanban->createCard = 'createCard';
|
||||
$lang->resource->kanban->editCard = 'editCard';
|
||||
$lang->resource->kanban->viewCard = 'viewCard';
|
||||
$lang->resource->kanban->sortCard = 'sortCard';
|
||||
$lang->resource->kanban->setLane = 'setLane';
|
||||
$lang->resource->kanban->setColumn = 'setColumn';
|
||||
$lang->resource->kanban->laneMove = 'laneMove';
|
||||
$lang->resource->kanban->cardsSort = 'cardsSort';
|
||||
|
||||
$lang->kanban->methodOrder[5] = 'space';
|
||||
$lang->kanban->methodOrder[10] = 'setLane';
|
||||
$lang->kanban->methodOrder[15] = 'setColumn';
|
||||
$lang->kanban->methodOrder[20] = 'setWIP';
|
||||
$lang->kanban->methodOrder[25] = 'laneMove';
|
||||
$lang->kanban->methodOrder[30] = 'cardsSort';
|
||||
$lang->kanban->methodOrder[5] = 'space';
|
||||
$lang->kanban->methodOrder[10] = 'createSpace';
|
||||
$lang->kanban->methodOrder[15] = 'editSpace';
|
||||
$lang->kanban->methodOrder[20] = 'closeSpace';
|
||||
$lang->kanban->methodOrder[25] = 'deleteSpace';
|
||||
$lang->kanban->methodOrder[30] = 'sortSpace';
|
||||
$lang->kanban->methodOrder[35] = 'create';
|
||||
$lang->kanban->methodOrder[40] = 'edit';
|
||||
$lang->kanban->methodOrder[45] = 'view';
|
||||
$lang->kanban->methodOrder[50] = 'close';
|
||||
$lang->kanban->methodOrder[55] = 'delete';
|
||||
$lang->kanban->methodOrder[60] = 'createRegion';
|
||||
$lang->kanban->methodOrder[65] = 'editRegion';
|
||||
$lang->kanban->methodOrder[70] = 'sortRegion';
|
||||
$lang->kanban->methodOrder[75] = 'deleteRegion';
|
||||
$lang->kanban->methodOrder[80] = 'createLane';
|
||||
$lang->kanban->methodOrder[85] = 'editLane';
|
||||
$lang->kanban->methodOrder[90] = 'sortLane';
|
||||
$lang->kanban->methodOrder[95] = 'createColumn';
|
||||
$lang->kanban->methodOrder[100] = 'editColumn';
|
||||
$lang->kanban->methodOrder[105] = 'setWIP';
|
||||
$lang->kanban->methodOrder[110] = 'sortColumn';
|
||||
$lang->kanban->methodOrder[115] = 'deleteColumn';
|
||||
$lang->kanban->methodOrder[120] = 'createCard';
|
||||
$lang->kanban->methodOrder[125] = 'editCard';
|
||||
$lang->kanban->methodOrder[130] = 'viewCard';
|
||||
$lang->kanban->methodOrder[135] = 'sortCard';
|
||||
$lang->kanban->methodOrder[140] = 'setLane';
|
||||
$lang->kanban->methodOrder[145] = 'setColumn';
|
||||
$lang->kanban->methodOrder[150] = 'laneMove';
|
||||
$lang->kanban->methodOrder[155] = 'cardsSort';
|
||||
|
||||
/* Execution. */
|
||||
$lang->resource->execution = new stdclass();
|
||||
|
||||
@@ -6,14 +6,17 @@ $config->kanban->setwip = new stdclass();
|
||||
$config->kanban->setlane = new stdclass();
|
||||
$config->kanban->setlaneColumn = new stdclass();
|
||||
$config->kanban->createspace = new stdclass();
|
||||
$config->kanban->editspace = new stdclass();
|
||||
|
||||
$config->kanban->setwip->requiredFields = 'limit';
|
||||
$config->kanban->setlane->requiredFields = 'name,type';
|
||||
$config->kanban->setlaneColumn->requiredFields = 'name';
|
||||
$config->kanban->createspace->requiredFields = 'name,owner';
|
||||
$config->kanban->editspace->requiredFields = 'name,owner';
|
||||
|
||||
$config->kanban->editor = new stdclass();
|
||||
$config->kanban->editor->createspace = array('id' => 'desc', 'tools' => 'simpleTools');
|
||||
$config->kanban->editor->editspace = array('id' => 'desc', 'tools' => 'simpleTools');
|
||||
|
||||
$config->kanban->default = new stdclass();
|
||||
$config->kanban->default->story = new stdclass();
|
||||
|
||||
@@ -57,6 +57,33 @@ class kanban extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a space.
|
||||
*
|
||||
* @param int $spaceID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function editSpace($spaceID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$changes = $this->kanban->updateSpace($spaceID);
|
||||
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
$actionID = $this->loadModel('action')->create('kanbanSpace', $spaceID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
|
||||
die(js::closeModal('parent.parent', 'this', "function(){parent.parent.location.reload();}"));
|
||||
}
|
||||
|
||||
$this->view->space = $this->kanban->getSpaceById($spaceID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set WIP.
|
||||
*
|
||||
|
||||
@@ -1,9 +1,34 @@
|
||||
<?php
|
||||
$lang->kanban->space = 'Kanban Space';
|
||||
$lang->kanban->create = 'Create Kanban';
|
||||
$lang->kanban->createSpace = 'Create Space';
|
||||
/* Actions. */
|
||||
$lang->kanban->space = 'Kanban Space';
|
||||
$lang->kanban->create = 'Create Kanban';
|
||||
$lang->kanban->createSpace = 'Create Space';
|
||||
$lang->kanban->editSpace = 'Edit Space';
|
||||
$lang->kanban->closeSpace = 'Close Space';
|
||||
$lang->kanban->deleteSpace = 'Delete Space';
|
||||
$lang->kanban->sortSpace = 'Sort Space';
|
||||
$lang->kanban->edit = 'Edit Kanban';
|
||||
$lang->kanban->view = 'View Kanban';
|
||||
$lang->kanban->close = 'Close Kanban';
|
||||
$lang->kanban->delete = 'Delete Kanban';
|
||||
$lang->kanban->createRegion = 'Create Region';
|
||||
$lang->kanban->editRegion = 'Edit Region';
|
||||
$lang->kanban->sortRegion = 'Sort Region';
|
||||
$lang->kanban->deleteRegion = 'Delete Region';
|
||||
$lang->kanban->createLane = 'Create Lane';
|
||||
$lang->kanban->editLane = 'Edit Lane';
|
||||
$lang->kanban->sortLane = 'Sort Lane';
|
||||
$lang->kanban->createColumn = 'Create Column';
|
||||
$lang->kanban->editColumn = 'Edit Column';
|
||||
$lang->kanban->sortColumn = 'Sort Column';
|
||||
$lang->kanban->deleteColumn = 'Delete Column';
|
||||
$lang->kanban->createCard = 'Create Card';
|
||||
$lang->kanban->editCard = 'Edit Card';
|
||||
$lang->kanban->viewCard = 'View Card';
|
||||
$lang->kanban->sortCard = 'Sort Card';
|
||||
|
||||
/* Field. */
|
||||
|
||||
/* Fields. */
|
||||
$lang->kanban->spaceName = 'Space Name';
|
||||
$lang->kanban->spaceDesc = 'Space Description';
|
||||
$lang->kanban->owner = 'Owner';
|
||||
@@ -14,7 +39,6 @@ $lang->kanbanspace = new stdclass();
|
||||
$lang->kanbanspace->name = 'Name';
|
||||
$lang->kanbanspace->owner = 'Owner';
|
||||
|
||||
$lang->kanban->spaceAclList[] = array();
|
||||
$lang->kanban->spaceAclList['open'] = 'Open (Accessible with kanban view permissions)';
|
||||
$lang->kanban->spaceAclList['private'] = 'Private (For the kanban owner and team members only)';
|
||||
|
||||
|
||||
@@ -1,9 +1,33 @@
|
||||
<?php
|
||||
$lang->kanban->space = '看板空间';
|
||||
$lang->kanban->create = '创建看板';
|
||||
$lang->kanban->createSpace = '创建空间';
|
||||
/* Actions. */
|
||||
$lang->kanban->space = '看板空间';
|
||||
$lang->kanban->create = '创建看板';
|
||||
$lang->kanban->createSpace = '创建空间';
|
||||
$lang->kanban->editSpace = '设置空间';
|
||||
$lang->kanban->closeSpace = '关闭空间';
|
||||
$lang->kanban->deleteSpace = '删除空间';
|
||||
$lang->kanban->sortSpace = '空间排序';
|
||||
$lang->kanban->edit = '编辑看板';
|
||||
$lang->kanban->view = '查看看板';
|
||||
$lang->kanban->close = '关闭看板';
|
||||
$lang->kanban->delete = '删除看板';
|
||||
$lang->kanban->createRegion = '创建区域';
|
||||
$lang->kanban->editRegion = '编辑区域';
|
||||
$lang->kanban->sortRegion = '区域排序';
|
||||
$lang->kanban->deleteRegion = '删除区域';
|
||||
$lang->kanban->createLane = '创建泳道';
|
||||
$lang->kanban->editLane = '删除泳道';
|
||||
$lang->kanban->sortLane = '泳道排序';
|
||||
$lang->kanban->createColumn = '创建看板列';
|
||||
$lang->kanban->editColumn = '编辑看板列';
|
||||
$lang->kanban->sortColumn = '看板列排序';
|
||||
$lang->kanban->deleteColumn = '删除看板列';
|
||||
$lang->kanban->createCard = '创建卡片';
|
||||
$lang->kanban->editCard = '编辑卡片';
|
||||
$lang->kanban->viewCard = '查看卡片';
|
||||
$lang->kanban->sortCard = '卡片排序';
|
||||
|
||||
/* Field. */
|
||||
/* Fields. */
|
||||
$lang->kanban->spaceName = '空间名称';
|
||||
$lang->kanban->spaceDesc = '空间描述';
|
||||
$lang->kanban->owner = '负责人';
|
||||
|
||||
+46
-4
@@ -170,6 +170,36 @@ class kanbanModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a space.
|
||||
*
|
||||
* @param int $spaceID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function updateSpace($spaceID)
|
||||
{
|
||||
$spaceID = (int)$spaceID;
|
||||
$oldSpace = $this->dao->findById($spaceID)->from(TABLE_KANBANSPACE)->fetch();
|
||||
$space = fixer::input('post')
|
||||
->setDefault('lastEditedBy', $this->app->user->account)
|
||||
->setDefault('lastEditedDate', helper::now())
|
||||
->add('team', $this->post->mailto)
|
||||
->join('whitelist', ',')
|
||||
->join('team', ',')
|
||||
->remove('uid,mailto,contactListMenu')
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_KANBANSPACE)->data($space)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->kanban->editspace->requiredFields, 'notempty')
|
||||
->where('id')->eq($spaceID)
|
||||
->exec();
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldSpace, $space);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add execution Kanban lanes and columns.
|
||||
*
|
||||
@@ -370,9 +400,9 @@ class kanbanModel extends model
|
||||
|
||||
/**
|
||||
* Update kanban lane.
|
||||
*
|
||||
* @param int $executionID
|
||||
* @param string $laneType
|
||||
*
|
||||
* @param int $executionID
|
||||
* @param string $laneType
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -380,7 +410,7 @@ class kanbanModel extends model
|
||||
{
|
||||
$lanes = $this->dao->select('*')->from(TABLE_KANBANLANE)
|
||||
->where('execution')->eq($executionID)
|
||||
->andWhere('type')->eq($laneType)
|
||||
->andWhere('type')->eq($laneType)
|
||||
->fetchAll('id');
|
||||
|
||||
foreach($lanes as $lane) $this->updateCards($lane);
|
||||
@@ -772,6 +802,18 @@ class kanbanModel extends model
|
||||
if($noExtra) $this->dao->update(TABLE_KANBANLANE)->set('order')->eq($laneOrder)->where('id')->eq($noExtra)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get space by id.
|
||||
*
|
||||
* @param int $spaceID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getSpaceById($spaceID)
|
||||
{
|
||||
return $this->dao->findById($spaceID)->from(TABLE_KANBANSPACE)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get column by id.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of space module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2021 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Mengyi Liu <liumemgyi@easycorp.ltd>
|
||||
* @package kanban
|
||||
* @version $Id: control.php 4460 2021-12-08 11:03:02 $
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
class space extends control
|
||||
{
|
||||
/**
|
||||
* create space.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$spaceID = $this->kanban->createSpace();
|
||||
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
|
||||
if($spaceID) $actionID = $this->loadModel('action')->create('space', $spaceID, 'opened');
|
||||
}
|
||||
|
||||
$users = $this->user->getPairs('noclosed|nodeleted');
|
||||
|
||||
$this->view->title = $this->lang->kanban->spaceCreate;
|
||||
$this->view->position[] = $this->lang->kanban->spaceCreate;
|
||||
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
$lang->space->create = '创建空间';
|
||||
|
||||
$lang->space->name ='空间名称';
|
||||
$lang->space->owner ='负责人';
|
||||
$lang->space->team ='团队成员';
|
||||
$lang->space->desc ='空间描述';
|
||||
$lang->space->acl ='访问控制';
|
||||
|
||||
$lang->space->aclList['private'] = '私有(只有看板空间负责人、团队成员可访问)';
|
||||
$lang->space->aclList['open'] = '公开(有看板空间视图权限即可访问)';
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* The create file of spce module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2021 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Mengyi Liu <liumengyi@easycorp.ltd>
|
||||
* @package space
|
||||
* @version $Id: create.html.php 935 2021-12-08 10:49:24Z $
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span><?php echo $lang->space->create;?></span>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='load-indicator main-form' method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->space->name;?></th>
|
||||
<td><?php echo html::input('name','',"class='form-control input-train-title' requird")?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->space->owner;?></th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
Reference in New Issue
Block a user