* Code for task#47995.
This commit is contained in:
@@ -674,6 +674,7 @@ $lang->resource->kanban->viewArchivedColumn = 'viewArchivedColumn';
|
||||
$lang->resource->kanban->viewArchivedCard = 'viewArchivedCard';
|
||||
$lang->resource->kanban->restoreCard = 'restoreCard';
|
||||
$lang->resource->kanban->setLaneHeight = 'setLaneHeight';
|
||||
$lang->resource->kanban->importCard = 'importCard';
|
||||
|
||||
$lang->kanban->methodOrder[5] = 'space';
|
||||
$lang->kanban->methodOrder[10] = 'createSpace';
|
||||
@@ -718,6 +719,7 @@ $lang->kanban->methodorder[195] = 'viewArchivedCard';
|
||||
$lang->kanban->methodorder[200] = 'archiveColumn';
|
||||
$lang->kanban->methodorder[205] = 'restoreCard';
|
||||
$lang->kanban->methodorder[210] = 'setLaneHeight';
|
||||
$lang->kanban->methodorder[215] = 'importCard';
|
||||
|
||||
/* Execution. */
|
||||
$lang->resource->execution = new stdclass();
|
||||
|
||||
@@ -777,6 +777,66 @@ class kanban extends control
|
||||
die(json_encode($kanbanGroup));
|
||||
}
|
||||
|
||||
/**
|
||||
* Import cards.
|
||||
*
|
||||
* @param int $kanbanID
|
||||
* @param int $regionID
|
||||
* @param int $groupID
|
||||
* @param int $columnID
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function importCard($kanbanID = 0, $regionID = 0, $groupID = 0, $columnID = 0, $selectedKanbanID = 0, $recTotal = 0, $recPerPage = 30, $pageID = 1)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$this->kanban->importCard($kanbanID, $regionID, $groupID, $columnID);
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
|
||||
return print(js::locate($this->createLink('kanban', 'view', "kanbanID=$kanbanID"), 'parent.parent'));
|
||||
}
|
||||
|
||||
$cards2Imported = array();
|
||||
if($selectedKanbanID)
|
||||
{
|
||||
$cards2Imported = $this->kanban->getCardsByObject('kanban', $selectedKanbanID);
|
||||
}
|
||||
else
|
||||
{
|
||||
$allKanbanCards = $this->kanban->getCardsByObject();
|
||||
foreach($allKanbanCards as $card)
|
||||
{
|
||||
if($card->kanban != $kanbanID) $cards2Imported[$card->id] = $card;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$recTotal = count($cards2Imported);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
$cards2Imported = array_chunk($cards2Imported, $pager->recPerPage);
|
||||
|
||||
$kanbanPairs = $this->kanban->getKanbanPairs();
|
||||
unset($kanbanPairs[$kanbanID]);
|
||||
|
||||
$this->view->cards2Imported = empty($cards2Imported) ? $cards2Imported : $cards2Imported[$pageID - 1];
|
||||
$this->view->kanbanPairs = array(0 => $this->lang->kanban->all) + $kanbanPairs;
|
||||
$this->view->lanePairs = $this->kanban->getLanePairsByGroup($groupID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter|nodeleted');
|
||||
$this->view->pager = $pager;
|
||||
$this->view->selectedKanbanID = $selectedKanbanID;
|
||||
$this->view->kanbanID = $kanbanID;
|
||||
$this->view->regionID = $regionID;
|
||||
$this->view->groupID = $groupID;
|
||||
$this->view->columnID = $columnID;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a card's color.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* Reload card list.
|
||||
*
|
||||
* @param int $kanbanID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function reloadCardList(targetID)
|
||||
{
|
||||
location.href = createLink('kanban','importcard','kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID + '&targetKanbanID=' + targetID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set target lane ID.
|
||||
*
|
||||
* @param int $targetLaneID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function setTargetLane(targetLaneID)
|
||||
{
|
||||
$('#targetLane').val(targetLaneID);
|
||||
}
|
||||
@@ -145,7 +145,7 @@ function renderHeaderCol($column, column, $header, kanbanData)
|
||||
|
||||
if(columnPrivs.includes('createCard') && column.parent != -1)
|
||||
{
|
||||
var cardUrl = createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID);
|
||||
var cardUrl = createLink('kanban', 'importCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID);
|
||||
addItemBtn = ['<a data-contextmenu="columnCreate" data-toggle="modal" data-action="addItem" data-column="' + column.id + '" data-lane="' + laneID + '" href="' + cardUrl + '" class="text-primary iframe">', '<i class="icon icon-expand-alt"></i>', '</a>'].join('');
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,8 @@ $lang->kanban->restoreCard = '还原卡片';
|
||||
$lang->kanban->restore = '还原';
|
||||
$lang->kanban->child = '子';
|
||||
$lang->kanban->showClosed = '显示已关闭';
|
||||
$lang->kanban->importCard = '转入卡片';
|
||||
$lang->kanban->all = '所有看板';
|
||||
|
||||
/* Fields. */
|
||||
$lang->kanban->space = '所属空间';
|
||||
@@ -87,6 +89,9 @@ $lang->kanban->accessDenied = '您无权访问该看板';
|
||||
$lang->kanban->confirmDelete = '您确认删除吗?';
|
||||
$lang->kanban->cardCountTip = '请输入卡片数量';
|
||||
|
||||
$lang->kanban->selectedKanban = '请选择看板';
|
||||
$lang->kanban->selectedLane = '请选择泳道';
|
||||
|
||||
$lang->kanban->aclGroup['open'] = '公开';
|
||||
$lang->kanban->aclGroup['private'] = '私有';
|
||||
$lang->kanban->aclGroup['extend'] = '继承空间';
|
||||
|
||||
@@ -468,6 +468,39 @@ class kanbanModel extends model
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Import card.
|
||||
*
|
||||
* @param int $kanbanID
|
||||
* @param int $regionID
|
||||
* @param int $groupID
|
||||
* @param int $columnID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function importCard($kanbanID, $regionID, $groupID, $columnID)
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
$importIDList = $data->cards;
|
||||
$targetLaneID = $data->targetLane;
|
||||
|
||||
$updateData = new stdClass();
|
||||
$updateData->kanban = $kanbanID;
|
||||
$updateData->region = $regionID;
|
||||
$updateData->group = $groupID;
|
||||
$this->dao->update(TABLE_KANBANCARD)->data($updateData)->where('id')->in($importIDList)->exec();
|
||||
|
||||
if(!dao::isError())
|
||||
{
|
||||
$cards = implode(',', $importIDList);
|
||||
$this->addKanbanCell($kanbanID, $targetLaneID, $columnID, 'common', $cards);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get kanban by id.
|
||||
*
|
||||
@@ -1388,6 +1421,23 @@ class kanbanModel extends model
|
||||
->fetchPairs('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Kanban pairs.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getKanbanPairs()
|
||||
{
|
||||
$kanbanIdList = $this->getCanViewObjects('kanban');
|
||||
|
||||
return $this->dao->select('id,name')->from(TABLE_KANBAN)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($kanbanIdList)->fi()
|
||||
->orderBy('id_desc')
|
||||
->fetchPairs('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get can view objects.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/**
|
||||
* The import card view of kanban 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 Qiyu Xie<xieqiyu@cnezsoft.com>
|
||||
* @package kanban
|
||||
* @version $Id: importcard.html.php 5090 2022-01-19 14:19:24Z xieqiyu@cnezsoft.com $
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('kanbanID', $kanbanID);?>
|
||||
<?php js::set('regionID', $regionID);?>
|
||||
<?php js::set('groupID', $groupID);?>
|
||||
<?php js::set('columnID', $columnID);?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2><?php echo $lang->kanban->importCard;?></h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class='table-row' style="padding: 10px">
|
||||
<div class='table-col w-150px text-center'><h4><?php echo $lang->kanban->selectedKanban;?></h4></div>
|
||||
<div class='table-col'><?php echo html::select('kanban', $kanbanPairs, $selectedKanbanID, "onchange='reloadCardList(this.value)' class='form-control chosen'");?></div>
|
||||
</div>
|
||||
<div class='table-row' style="padding: 10px">
|
||||
<div class='table-col w-150px text-center'><h4><?php echo $lang->kanban->selectedLane;?></h4></div>
|
||||
<div class='table-col'><?php echo html::select('lane', $lanePairs, '', "onchange='setTargetLane(this.value)' class='form-control chosen'");?></div>
|
||||
</div>
|
||||
<form class='main-table' method='post' data-ride='table' target='hiddenwin' id='importCardForm'>
|
||||
<table class='table table-fixed' id='cardList'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="c-id">
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php echo $lang->idAB;?>
|
||||
</th>
|
||||
<th class='c-name'><?php echo $lang->kanban->name;?></th>
|
||||
<th class='c-pri'><?php echo $lang->priAB;?></th>
|
||||
<th class='c-name'><?php echo $lang->kanbancard->name;?></th>
|
||||
<th class='c-user'><?php echo $lang->kanbancard->assignedTo;?></th>
|
||||
<th class='c-date'><?php echo $lang->kanbancard->end;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($cards2Imported as $card):?>
|
||||
<tr>
|
||||
<td class='c-id'>
|
||||
<div class="checkbox-primary">
|
||||
<input type='checkbox' name='cards[]' value='<?php echo $card->id;?>'/>
|
||||
<label></label>
|
||||
</div>
|
||||
<?php printf('%03d', $card->id);?>
|
||||
</td>
|
||||
<td title='<?php echo zget($kanbanPairs, $card->kanban);?>'><?php echo zget($kanbanPairs, $card->kanban);?></td>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $card->pri?>' title='<?php echo zget($lang->kanbancard->priList, $card->pri, $card->pri);?>'><?php echo zget($lang->kanbancard->priList, $card->pri, $card->pri);?></span></td>
|
||||
<td title='<?php echo $card->name;?>'><?php common::printLink('kanban', 'viewCard', "cardID=$card->id", $card->name, '', "class='preview'", true, true);?></td>
|
||||
<td title='<?php echo zget($users, $card->assignedTo);?>'><?php echo zget($users, $card->assignedTo);?></td>
|
||||
<td title='<?php echo $card->end;?>'><?php echo $card->end;?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<tr><?php echo html::hidden('targetLane', key($lanePairs));?></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php if($cards2Imported):?>
|
||||
<div class='table-footer'>
|
||||
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
|
||||
<div class="table-actions btn-toolbar show-always"><?php echo html::submitButton('', '', 'btn btn-default');?></div>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</form>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
Reference in New Issue
Block a user