Merge branch 'sprint/183_zhengrunyu_48003'
This commit is contained in:
@@ -5,5 +5,8 @@ ALTER TABLE `zt_kanban` ADD `importObject` varchar(255) NOT NULL AFTER `displayC
|
||||
ALTER TABLE `zt_kanban` ADD `performable` enum ('0', '1') NOT NULL DEFAULT '0' AFTER `archived`;
|
||||
ALTER TABLE `zt_kanbancard` ADD `status` varchar(30) NOT NULL AFTER `name`;
|
||||
|
||||
ALTER TABLE `zt_kanbancard` ADD `fromID` int(8) NOT NULL AFTER `group`;
|
||||
ALTER TABLE `zt_kanbancard` ADD `fromType` varchar(50) NOT NULL AFTER `fromID`;
|
||||
|
||||
ALTER TABLE `zt_job` ADD `sonarqubeServer` mediumint(8) unsigned NOT NULL AFTER `triggerType`;
|
||||
ALTER TABLE `zt_job` ADD `projectKey` varchar(255) NOT NULL AFTER `sonarqubeServer`;
|
||||
|
||||
@@ -927,6 +927,7 @@ function changeCardColType(cardID, fromColID, toColID, fromLaneID, toLaneID, car
|
||||
method: 'post',
|
||||
dataType: 'json',
|
||||
url: link,
|
||||
async: false,
|
||||
success: function(data)
|
||||
{
|
||||
updateRegion(regionID, data[regionID]);
|
||||
@@ -993,6 +994,7 @@ function shiftCard(objectID, fromColID, toColID, fromLaneID, toLaneID, regionID)
|
||||
method: 'post',
|
||||
dataType: 'json',
|
||||
url: link,
|
||||
async: false,
|
||||
success: function(data)
|
||||
{
|
||||
updateRegion(regionID, data[regionID]);
|
||||
@@ -1229,13 +1231,6 @@ $(function()
|
||||
|
||||
return $ele.parent().children('.kanban-lane');
|
||||
}
|
||||
|
||||
/* Sort lanes */
|
||||
if($ele.hasClass('kanban-item'))
|
||||
{
|
||||
sortType = 'item';
|
||||
return $ele.parent().children('.kanban-item');
|
||||
}
|
||||
},
|
||||
start: function(e)
|
||||
{
|
||||
@@ -1284,10 +1279,7 @@ $(function()
|
||||
var region = e.element.parent().parent().data('id');
|
||||
url = createLink('kanban', 'sortLane', 'region=' + region + '&lanes=' + orders.join(','));
|
||||
}
|
||||
if(sortType == 'item')
|
||||
{
|
||||
url = createLink('task', 'sort', 'kanbanID=' + kanbanID + '&tasks=' + orders.join(','));
|
||||
}
|
||||
|
||||
if(!url) return true;
|
||||
|
||||
$.getJSON(url, function(response)
|
||||
|
||||
@@ -678,6 +678,7 @@ $lang->resource->kanban->viewArchivedCard = 'viewArchivedCard';
|
||||
$lang->resource->kanban->restoreCard = 'restoreCard';
|
||||
$lang->resource->kanban->setLaneHeight = 'setLaneHeight';
|
||||
$lang->resource->kanban->batchCreateCard = 'batchCreateCard';
|
||||
$lang->resource->kanban->import = 'import';
|
||||
|
||||
$lang->kanban->methodOrder[5] = 'space';
|
||||
$lang->kanban->methodOrder[10] = 'createSpace';
|
||||
@@ -724,7 +725,7 @@ $lang->kanban->methodorder[205] = 'archiveColumn';
|
||||
$lang->kanban->methodorder[210] = 'restoreCard';
|
||||
$lang->kanban->methodorder[215] = 'setLaneHeight';
|
||||
$lang->kanban->methodOrder[220] = 'batchCreateCard';
|
||||
$lang->kanban->methodorder[220] = 'import';
|
||||
$lang->kanban->methodorder[225] = 'import';
|
||||
|
||||
/* Execution. */
|
||||
$lang->resource->execution = new stdclass();
|
||||
|
||||
@@ -1123,6 +1123,28 @@ class kanban extends control
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set archived.
|
||||
*
|
||||
* @param int $kanbanID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function enableArchived($kanbanID)
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dao->update(TABLE_KANBAN)->set('archived')->eq($_POST['archived'])->exec();
|
||||
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
}
|
||||
|
||||
$this->view->kanban = $this->kanban->getByID($kanbanID);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: Update the cards sorting of the lane column.
|
||||
|
||||
@@ -258,6 +258,15 @@ function renderKanbanItem(item, $item)
|
||||
var privs = item.actions;
|
||||
var printMoreBtn = (privs.includes('editCard') || privs.includes('finishCard') || privs.includes('activateCard') ||privs.includes('archiveCard') || privs.includes('copyCard') || privs.includes('deleteCard') || privs.includes('moveCard') || privs.includes('setCardColor'));
|
||||
|
||||
if(kanban.performable == 1 && item.status == 'done' )
|
||||
{
|
||||
$item.closest('.kanban-card').css({'filter' : 'opacity(0.5)', 'text-decoration' : 'line-through'});
|
||||
}
|
||||
else
|
||||
{
|
||||
$item.closest('.kanban-card').css({'filter' : '', 'text-decoration' : ''});
|
||||
}
|
||||
|
||||
if(privs.includes('sortCard')) $item.parent().addClass('sort');
|
||||
if(!$title.length)
|
||||
{
|
||||
@@ -393,6 +402,7 @@ function moveCard(cardID, fromColID, toColID, fromLaneID, toLaneID, kanbanID, re
|
||||
method: 'post',
|
||||
dataType: 'json',
|
||||
url: url,
|
||||
async: false,
|
||||
success: function(data)
|
||||
{
|
||||
regions = data;
|
||||
@@ -844,7 +854,7 @@ function createColumnCreateMenu(options)
|
||||
var laneID = col.$kanbanData.lanes[0].id ? col.$kanbanData.lanes[0].id : 0;
|
||||
var columnID = col.id;
|
||||
|
||||
if(privs.includes('createCard')) items.push({label: kanbanLang.createCard, url: $.createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
|
||||
if(privs.includes('createCard')) items.push({label: kanbanLang.createCard, url: $.createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
|
||||
if(privs.includes('batchCreateCard')) items.push({label: kanbanLang.batchCreateCard, url: $.createLink('kanban', 'batchCreateCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID), attrs: {'data-width': '80%'}});
|
||||
return items;
|
||||
}
|
||||
@@ -1010,8 +1020,10 @@ $(function()
|
||||
});
|
||||
|
||||
/* Init sortable */
|
||||
var sortType = '';
|
||||
var $cards = null;
|
||||
var sortType = '';
|
||||
var oldLaneID = '';
|
||||
var oldColID = '';
|
||||
var $cards = null;
|
||||
$('#kanban').sortable(
|
||||
{
|
||||
selector: '.region, .kanban-board, .kanban-lane, .kanban-item.sort',
|
||||
@@ -1066,6 +1078,12 @@ $(function()
|
||||
$('.region').find('.kanban').hide();
|
||||
hideKanbanAction();
|
||||
}
|
||||
|
||||
if(sortType == 'card')
|
||||
{
|
||||
oldLaneID = e.element.closest('.kanban-lane').data('id');
|
||||
oldColID = e.element.closest('.kanban-col').data('id');
|
||||
}
|
||||
},
|
||||
finish: function(e)
|
||||
{
|
||||
@@ -1101,9 +1119,9 @@ $(function()
|
||||
}
|
||||
if(sortType == 'card')
|
||||
{
|
||||
var laneID = e.element.closest('.kanban-lane').data('id');
|
||||
var columnID = e.element.closest('.kanban-col').data('id');
|
||||
url = createLink('kanban', 'sortCard', 'kanbanID=' + kanbanID + '&laneID=' + laneID + '&columnID=' + columnID + '&cards=' + orders.join(','));
|
||||
var newLaneID = e.element.closest('.kanban-lane').data('id');
|
||||
var newColID = e.element.closest('.kanban-col').data('id');
|
||||
if(newLaneID == oldLaneID && newColID == oldColID) url = createLink('kanban', 'sortCard', 'kanbanID=' + kanbanID + '&laneID=' + newLaneID + '&columnID=' + newColID + '&cards=' + orders.join(','));
|
||||
}
|
||||
if(!url) return true;
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@ $lang->kanban->setCardColor = 'Set Card Color';
|
||||
$lang->kanban->deleteCard = 'Delete Card';
|
||||
$lang->kanban->assigntoCard = 'Assign';
|
||||
$lang->kanban->setting = 'Setting';
|
||||
$lang->kanban->enableArchived = 'Enable Archived';
|
||||
$lang->kanban->archive = 'Archive';
|
||||
$lang->kanban->performable = 'Set done function';
|
||||
$lang->kanban->doneFunction = 'Done function';
|
||||
$lang->kanban->splitColumn = 'Split Column';
|
||||
@@ -98,8 +100,8 @@ $lang->kanban->aclGroup['extend'] = 'Extend';
|
||||
$lang->kanban->aclList['extend'] = 'Extend (Accessible with space view permissions)';
|
||||
$lang->kanban->aclList['private'] = 'Private (For the kanban team, whitelist members and space owner only)';
|
||||
|
||||
$lang->kanban->enableArchived['0'] = 'No Enable';
|
||||
$lang->kanban->enableArchived['1'] = 'Enable';
|
||||
$lang->kanban->archiveList['0'] = 'No Enable';
|
||||
$lang->kanban->archiveList['1'] = 'Enable';
|
||||
|
||||
$lang->kanban->enableFinished['0'] = 'No Enable';
|
||||
$lang->kanban->enableFinished['1'] = 'Enable';
|
||||
|
||||
@@ -39,6 +39,8 @@ $lang->kanban->setCardColor = '设置卡片颜色';
|
||||
$lang->kanban->deleteCard = '删除卡片';
|
||||
$lang->kanban->assigntoCard = '指派';
|
||||
$lang->kanban->setting = '设置';
|
||||
$lang->kanban->enableArchived = '设置归档功能';
|
||||
$lang->kanban->archive = '归档功能';
|
||||
$lang->kanban->performable = '设置完成功能';
|
||||
$lang->kanban->doneFunction = '完成功能';
|
||||
$lang->kanban->splitColumn = '新增子看板列';
|
||||
@@ -98,8 +100,8 @@ $lang->kanban->aclGroup['extend'] = '继承空间';
|
||||
$lang->kanban->aclList['extend'] = '继承空间访问权限(能访问当前空间,即可访问)';
|
||||
$lang->kanban->aclList['private'] = '私有(看板团队成员、白名单、空间负责人可访问)';
|
||||
|
||||
$lang->kanban->enableArchived['0'] = '不启用';
|
||||
$lang->kanban->enableArchived['1'] = '启用';
|
||||
$lang->kanban->archiveList['0'] = '不启用';
|
||||
$lang->kanban->archiveList['1'] = '启用';
|
||||
|
||||
$lang->kanban->enableFinished['0'] = '不启用';
|
||||
$lang->kanban->enableFinished['1'] = '启用';
|
||||
|
||||
@@ -2611,7 +2611,7 @@ class kanbanModel extends model
|
||||
$actions .= "<div class='btn-group'>";
|
||||
$actions .= "<a href='javascript:fullScreen();' id='fullScreenBtn' class='btn btn-link'><i class='icon icon-fullscreen'></i> {$this->lang->kanban->fullScreen}</a>";
|
||||
|
||||
$printSettingBtn = (common::hasPriv('kanban', 'createRegion') or $printSetHeight or common::hasPriv('kanban', 'performable') or common::hasPriv('kanban', 'edit') or common::hasPriv('kanban', 'close') or common::hasPriv('kanban', 'delete'));
|
||||
$printSettingBtn = (common::hasPriv('kanban', 'createRegion') or $printSetHeight or common::hasPriv('kanban', 'performable') or common::hasPriv('kanban', 'edit') or common::hasPriv('kanban', 'close') or common::hasPriv('kanban', 'enableArchived') or common::hasPriv('kanban', 'delete'));
|
||||
|
||||
if($printSettingBtn)
|
||||
{
|
||||
@@ -2619,6 +2619,7 @@ class kanbanModel extends model
|
||||
$actions .= "<ul id='kanbanActionMenu' class='dropdown-menu text-left'>";
|
||||
if(common::hasPriv('kanban', 'createRegion')) $actions .= '<li>' . html::a(helper::createLink('kanban', 'createRegion', "kanbanID=$kanban->id", '', true), '<i class="icon icon-plus"></i>' . $this->lang->kanban->createRegion, '', "class='iframe btn btn-link'") . '</li>';
|
||||
if(common::hasPriv('kanban', 'import')) $actions .= '<li>' . html::a(helper::createLink('kanban', 'import', "kanbanID=$kanban->id", '', true), '<i class="icon icon-import"></i>' . $this->lang->kanban->import, '', "class='iframe btn btn-link'") . '</li>';
|
||||
if(common::hasPriv('kanban', 'enableArchived')) $actions .= '<li>' . html::a(helper::createLink('kanban', 'enableArchived', "kanbanID=$kanban->id", '', true), '<i class="icon icon-card-archive"></i>' . $this->lang->kanban->archived, '', "class='iframe btn btn-link'") . '</li>';
|
||||
if($printSetHeight)
|
||||
{
|
||||
$width = $this->app->getClientLang() == 'en' ? '70%' : '60%';
|
||||
@@ -2634,7 +2635,11 @@ class kanbanModel extends model
|
||||
if(common::hasPriv('kanban', 'delete')) $kanbanActions .= '<li>' . html::a(helper::createLink('kanban', 'delete', "kanbanID=$kanban->id"), '<i class="icon icon-trash"></i>' . $this->lang->kanban->delete, 'hiddenwin', "class='btn btn-link'") . '</li>';
|
||||
if($kanbanActions)
|
||||
{
|
||||
<<<<<<< module/kanban/model.php
|
||||
$actions .= ((common::hasPriv('kanban', 'createRegion') or $printSetHeight or common::hasPriv('kanban', 'setDoneFunction')) and (common::hasPriv('kanban', 'edit') or common::hasPriv('kanban', 'close') or common::hasPriv('kanban', 'enableArchived') or common::hasPriv('kanban', 'delete'))) ? "<div class='divider'></div>" . $kanbanActions : $kanbanActions;
|
||||
=======
|
||||
$actions .= ((common::hasPriv('kanban', 'createRegion') or $printSetHeight or common::hasPriv('kanban', 'performable')) and (common::hasPriv('kanban', 'edit') or common::hasPriv('kanban', 'close') or common::hasPriv('kanban', 'delete'))) ? "<div class='divider'></div>" . $kanbanActions : $kanbanActions;
|
||||
>>>>>>> module/kanban/model.php
|
||||
}
|
||||
$actions .= "</ul>";
|
||||
}
|
||||
@@ -2709,9 +2714,10 @@ class kanbanModel extends model
|
||||
$fromCellCards = $this->dao->select('cards')->from(TABLE_KANBANCELL)->where('lane')->eq($fromLaneID)->andWhere('`column`')->eq($fromColID)->fetch('cards');
|
||||
$toCellCards = $this->dao->select('cards')->from(TABLE_KANBANCELL)->where('lane')->eq($toLaneID)->andWhere('`column`')->eq($toColID)->fetch('cards');
|
||||
|
||||
$fromCardList = str_replace("$cardID,", '', $fromCellCards);
|
||||
$fromCardList = str_replace(",$cardID,", ',', $fromCellCards);
|
||||
$toCardList = rtrim($toCellCards, ',') . ",$cardID,";
|
||||
|
||||
if($fromCardList == ',') $fromCardList = '';
|
||||
$this->dao->update(TABLE_KANBANCELL)->set('cards')->eq($fromCardList)->where('`column`')->eq($fromColID)->andWhere('lane')->eq($fromLaneID)->exec();
|
||||
$this->dao->update(TABLE_KANBANCELL)->set('cards')->eq($toCardList)->where('`column`')->eq($toColID)->andWhere('lane')->eq($toLaneID)->exec();
|
||||
}
|
||||
|
||||
@@ -33,10 +33,6 @@
|
||||
<th><?php echo $lang->kanban->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->kanban->archived;?></th>
|
||||
<td><?php echo html::radio('archived', $lang->kanban->enableArchived, '0');?></td>
|
||||
</tr>
|
||||
<?php if($type != 'private'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->kanban->owner;?></th>
|
||||
|
||||
@@ -26,10 +26,6 @@
|
||||
<th><?php echo $lang->kanban->name;?></th>
|
||||
<td><?php echo html::input('name', $kanban->name, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->kanban->archived;?></th>
|
||||
<td><?php echo html::radio('archived', $lang->kanban->enableArchived, $kanban->archived);?></td>
|
||||
</tr>
|
||||
<?php if($type != 'private'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->kanban->owner;?></th>
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/**
|
||||
* The enableArchived file of kanban module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2022 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Runyu Zheng <zhengrunyu@easycorp.ltd>
|
||||
* @package kanban
|
||||
* @version $Id: enableArchived.html.php 935 2022-01-21 11:02:24Z $
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2><?php echo $lang->kanban->enableArchived;?></h2>
|
||||
</div>
|
||||
<form class='main-form form-ajax' method='post' enctype='multipart/form-data' id='dataform'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th><?php echo $lang->kanban->archive;?></th>
|
||||
<td><?php echo nl2br(html::radio('archived', $lang->kanban->archiveList, $kanban->archived));?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
Reference in New Issue
Block a user