* Finish task #46242.
This commit is contained in:
@@ -621,45 +621,48 @@ $lang->release->methodOrder[75] = 'notify';
|
||||
|
||||
/* Kanban */
|
||||
$lang->resource->kanban = new stdclass();
|
||||
$lang->resource->kanban->space = 'spaceCommon';
|
||||
$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->sortGroup = 'sortGroup';
|
||||
$lang->resource->kanban->deleteRegion = 'deleteRegion';
|
||||
$lang->resource->kanban->createLane = 'createLane';
|
||||
$lang->resource->kanban->setLane = 'setLane';
|
||||
$lang->resource->kanban->sortLane = 'sortLane';
|
||||
$lang->resource->kanban->deleteLane = 'deleteLane';
|
||||
$lang->resource->kanban->createColumn = 'createColumn';
|
||||
$lang->resource->kanban->splitColumn = 'splitColumn';
|
||||
$lang->resource->kanban->restoreColumn = 'restoreColumn';
|
||||
$lang->resource->kanban->setColumn = 'setColumn';
|
||||
$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->archiveCard = 'archiveCard';
|
||||
$lang->resource->kanban->assigntoCard = 'assigntoCard';
|
||||
$lang->resource->kanban->copyCard = 'copyCard';
|
||||
$lang->resource->kanban->deleteCard = 'deleteCard';
|
||||
$lang->resource->kanban->moveCard = 'moveCard';
|
||||
$lang->resource->kanban->setCardColor = 'setCardColor';
|
||||
$lang->resource->kanban->laneMove = 'laneMove';
|
||||
$lang->resource->kanban->cardsSort = 'cardsSort';
|
||||
$lang->resource->kanban->space = 'spaceCommon';
|
||||
$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->sortGroup = 'sortGroup';
|
||||
$lang->resource->kanban->deleteRegion = 'deleteRegion';
|
||||
$lang->resource->kanban->createLane = 'createLane';
|
||||
$lang->resource->kanban->setLane = 'setLane';
|
||||
$lang->resource->kanban->sortLane = 'sortLane';
|
||||
$lang->resource->kanban->deleteLane = 'deleteLane';
|
||||
$lang->resource->kanban->createColumn = 'createColumn';
|
||||
$lang->resource->kanban->splitColumn = 'splitColumn';
|
||||
$lang->resource->kanban->archiveColumn = 'archiveColumn';
|
||||
$lang->resource->kanban->restoreColumn = 'restoreColumn';
|
||||
$lang->resource->kanban->setColumn = 'setColumn';
|
||||
$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->archiveCard = 'archiveCard';
|
||||
$lang->resource->kanban->assigntoCard = 'assigntoCard';
|
||||
//$lang->resource->kanban->copyCard = 'copyCard';
|
||||
$lang->resource->kanban->deleteCard = 'deleteCard';
|
||||
$lang->resource->kanban->moveCard = 'moveCard';
|
||||
$lang->resource->kanban->setCardColor = 'setCardColor';
|
||||
$lang->resource->kanban->laneMove = 'laneMove';
|
||||
$lang->resource->kanban->cardsSort = 'cardsSort';
|
||||
$lang->resource->kanban->viewArchivedColumn = 'viewArchivedColumn';
|
||||
$lang->resource->kanban->viewArchivedCard = 'viewArchivedCard';
|
||||
|
||||
$lang->kanban->methodOrder[5] = 'space';
|
||||
$lang->kanban->methodOrder[10] = 'createSpace';
|
||||
@@ -693,13 +696,16 @@ $lang->kanban->methodOrder[140] = 'editCard';
|
||||
$lang->kanban->methodOrder[145] = 'viewCard';
|
||||
$lang->kanban->methodOrder[150] = 'sortCard';
|
||||
$lang->kanban->methodOrder[155] = 'archivedCard';
|
||||
$lang->kanban->methodOrder[160] = 'copyCard';
|
||||
//$lang->kanban->methodOrder[160] = 'copyCard';
|
||||
$lang->kanban->methodOrder[165] = 'deleteCard';
|
||||
$lang->kanban->methodOrder[170] = 'assigntoCard';
|
||||
$lang->kanban->methodOrder[175] = 'moveCard';
|
||||
$lang->kanban->methodOrder[180] = 'setCardColor';
|
||||
$lang->kanban->methodOrder[185] = 'laneMove';
|
||||
$lang->kanban->methodorder[190] = 'cardsSort';
|
||||
$lang->kanban->methodOrder[195] = 'viewArchivedColumn';
|
||||
$lang->kanban->methodorder[200] = 'viewArchivedCard';
|
||||
$lang->kanban->methodorder[205] = 'archiveColumn';
|
||||
|
||||
/* Execution. */
|
||||
$lang->resource->execution = new stdclass();
|
||||
|
||||
@@ -583,7 +583,7 @@ class kanban extends control
|
||||
*/
|
||||
public function viewArchivedColumn($regionID)
|
||||
{
|
||||
$columns = $this->kanban->getColumnsByRegion($regionID);
|
||||
$columns = $this->kanban->getColumnsByObject('region', $regionID, '', '');
|
||||
$columnsData = array();
|
||||
foreach($columns as $column)
|
||||
{
|
||||
@@ -768,6 +768,54 @@ class kanban extends control
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* View archived cards.
|
||||
*
|
||||
* @param int $regionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function viewArchivedCard($regionID)
|
||||
{
|
||||
$this->view->cards = $this->kanban->getCardsByObject('region', $regionID, 1);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter|nodeleted');
|
||||
$this->view->usersAvatar = $this->user->getAvatarPairs();
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore a card.
|
||||
*
|
||||
* @param int $cardID
|
||||
* @param string $confirm no|yes
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function restoreCard($cardID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
$card = $this->kanban->getCardByID($cardID);
|
||||
$column = $this->dao->select('*')->from(TABLE_KANBANCOLUMN)->where('id')->eq($card->column)->fetch();
|
||||
if($column->archived) die(js::alert(sprintf($this->lang->kanbancard->confirmRestoreTip, $column->name)));
|
||||
|
||||
die(js::confirm(sprintf($this->lang->kanbancard->confirmRestore, $column->name), $this->createLink('kanban', 'restoreCard', "cardID=$cardID&confirm=yes"), ''));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->kanban->restoreCard($cardID);
|
||||
|
||||
$changes = $this->kanban->restoreCard($cardID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
$actionID = $this->loadModel('action')->create('kanbancard', $cardID, 'restore');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a card.
|
||||
*
|
||||
|
||||
@@ -287,8 +287,10 @@ $lang->kanbancard->deadlineAB = 'DL';
|
||||
$lang->kanbancard->beginAB = 'Begin';
|
||||
$lang->kanbancard->to = 'to';
|
||||
|
||||
$lang->kanbancard->confirmArchive = 'Are you sure to archive this card? After archiving the card, it will be hidden from the column and you can view it in the Region - Archived.';
|
||||
$lang->kanbancard->confirmDelete = 'Are you sure to delete this card? After deleting the card, it will be deleted from the Kanban. You can only view it in the system recycle bin.';
|
||||
$lang->kanbancard->confirmArchive = 'Are you sure to archive this card? After archiving the card, it will be hidden from the column and you can view it in the Region - Archived.';
|
||||
$lang->kanbancard->confirmDelete = 'Are you sure to delete this card? After deleting the card, it will be deleted from the Kanban. You can only view it in the system recycle bin.';
|
||||
$lang->kanbancard->confirmRestore = 'Are you sure you want to restore this card? After the card is restored, the card will be restored to the "%s" Kanban column.';
|
||||
$lang->kanbancard->confirmRestoreTip = "The card's column has been archived, please restore '%s' column first.";
|
||||
|
||||
$lang->kanbancard->priList[1] = 1;
|
||||
$lang->kanbancard->priList[2] = 2;
|
||||
|
||||
@@ -79,12 +79,12 @@ $lang->kanban->createColumnOnRight = '在右侧添加看板列';
|
||||
$lang->kanban->accessDenied = '您无权访问该看板';
|
||||
$lang->kanban->confirmDelete = '您确认删除吗?';
|
||||
|
||||
$lang->kanban->aclList['extend'] = '继承空间访问权限(能访问当前空间,即可访问)';
|
||||
$lang->kanban->aclList['private'] = '私有(看板团队成员、白名单、空间负责人可访问)';
|
||||
|
||||
$lang->kanban->aclGroup['open'] = '公开';
|
||||
$lang->kanban->aclGroup['private'] = '私有';
|
||||
|
||||
$lang->kanban->aclList['extend'] = '继承空间访问权限(能访问当前空间,即可访问)';
|
||||
$lang->kanban->aclList['private'] = '私有(看板团队成员、白名单、空间负责人可访问)';
|
||||
|
||||
$lang->kanban->enableArchived['0'] = '不启用';
|
||||
$lang->kanban->enableArchived['1'] = '启用';
|
||||
|
||||
@@ -287,8 +287,10 @@ $lang->kanbancard->deadlineAB = '截止';
|
||||
$lang->kanbancard->beginAB = '开始';
|
||||
$lang->kanbancard->to = '至';
|
||||
|
||||
$lang->kanbancard->confirmArchive = '您确认归档该卡片吗?归档卡片后,该卡片将从列中隐藏,您可以在区域-已归档中查看。';
|
||||
$lang->kanbancard->confirmDelete = '您确认删除该卡片吗?删除卡片后,该卡片将从看板中删除,您只能通过系统回收站查看。';
|
||||
$lang->kanbancard->confirmArchive = '您确认归档该卡片吗?归档卡片后,该卡片将从列中隐藏,您可以在区域-已归档中查看。';
|
||||
$lang->kanbancard->confirmDelete = '您确认删除该卡片吗?删除卡片后,该卡片将从看板中删除,您只能通过系统回收站查看。';
|
||||
$lang->kanbancard->confirmRestore = '您确定要还原该卡片吗?还原卡片后,该卡片将还原到“%s”看板列中。';
|
||||
$lang->kanbancard->confirmRestoreTip = '该卡片所属的看板列已被归档,请先还原“%s”看板列。';
|
||||
|
||||
$lang->kanbancard->priList[1] = 1;
|
||||
$lang->kanbancard->priList[2] = 2;
|
||||
|
||||
+54
-23
@@ -266,7 +266,7 @@ class kanbanModel extends model
|
||||
return false;
|
||||
}
|
||||
|
||||
$childColumns = $this->getColumnsByParent($column->parent);
|
||||
$childColumns = $this->getColumnsByObject('parent', $column->parent);
|
||||
foreach($childColumns as $childColumn)
|
||||
{
|
||||
$limit += (int)$childColumn->limit;
|
||||
@@ -594,7 +594,7 @@ class kanbanModel extends model
|
||||
->orderBy('order')
|
||||
->fetchGroup('group');
|
||||
|
||||
$actions = array('createColumn', 'copyColumn', 'editColumn', 'splitColumn', 'setWIP', 'archiveColumn', 'restoreColumn', 'deleteColumn', 'createCard', 'splitColumn');
|
||||
$actions = array('createColumn', 'editColumn', 'splitColumn', 'setWIP', 'archiveColumn', 'restoreColumn', 'deleteColumn', 'createCard', 'splitColumn');
|
||||
|
||||
/* Group by parent. */
|
||||
$parentColumnGroup = array();
|
||||
@@ -2055,6 +2055,29 @@ class kanbanModel extends model
|
||||
if(!dao::isError()) return common::createChanges($oldCard, $card);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore a card.
|
||||
*
|
||||
* @param int $cardID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function restoreCard($cardID)
|
||||
{
|
||||
$oldCard = $this->getCardByID($cardID);
|
||||
|
||||
$this->dao->update(TABLE_KANBANCARD)
|
||||
->set('archived')->eq(0)
|
||||
->set('archivedBy')->eq('')
|
||||
->set('archivedDate')->eq('')
|
||||
->where('id')->eq($cardID)
|
||||
->exec();
|
||||
|
||||
$card = $this->getCardByID($cardID);
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldCard, $card);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get space by id.
|
||||
*
|
||||
@@ -2139,35 +2162,22 @@ class kanbanModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Get child columns by parent id.
|
||||
* Get columns by object id.
|
||||
*
|
||||
* @param int $parentID
|
||||
* @param string $objectType
|
||||
* @param int $objectID
|
||||
* @param string $archived
|
||||
* @param string $deleted
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getColumnsByParent($parentID, $archived = '0', $deleted = '0')
|
||||
public function getColumnsByObject($objectType = '', $objectID = 0, $archived = 0, $deleted = 0)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_KANBANCOLUMN)
|
||||
->where('parent')->eq($parentID)
|
||||
->andWhere('archived')->eq($archived)
|
||||
->andWhere('deleted')->eq($deleted)
|
||||
->orderBy('order')
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get columns by region id.
|
||||
*
|
||||
* @param int $regionID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getColumnsByRegion($regionID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_KANBANCOLUMN)
|
||||
->where('region')->eq($regionID)
|
||||
->where(true)
|
||||
->beginIF($objectType)->andWhere($objectType)->eq($objectID)->fi()
|
||||
->beginIF($archived != '')->andWhere('archived')->eq($archived)->fi()
|
||||
->beginIF($deleted != '')->andWhere('deleted')->eq($deleted)->fi()
|
||||
->orderBy('order')
|
||||
->fetchAll('id');
|
||||
}
|
||||
@@ -2246,6 +2256,27 @@ class kanbanModel extends model
|
||||
return $card;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cards by object id.
|
||||
*
|
||||
* @param string $objectType
|
||||
* @param int $objectID
|
||||
* @param string $archived
|
||||
* @param string $deleted
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getCardsByObject($objectType = '', $objectID = 0, $archived = 0, $deleted = 0)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_KANBANCARD)
|
||||
->where(true)
|
||||
->beginIF($objectType)->andWhere($objectType)->eq($objectID)->fi()
|
||||
->beginIF($archived != '')->andWhere('archived')->eq($archived)->fi()
|
||||
->beginIF($deleted != '')->andWhere('deleted')->eq($deleted)->fi()
|
||||
->orderBy('order')
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Kanban cards menus by execution id.
|
||||
*
|
||||
|
||||
@@ -62,10 +62,20 @@ $canCreateLane = commonModel::hasPriv('kanban', 'createLane');
|
||||
<?php endif;?>
|
||||
</span>
|
||||
<span>
|
||||
<button data-toggle="dropdown" class="btn btn-link action" type="button" title=<?php echo $this->lang->kanban->archived;?>>
|
||||
<span><?php echo $this->lang->kanban->archived;?></span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<?php $canViewArchivedCard = commonModel::hasPriv('kanban', 'viewArchivedCard');?>
|
||||
<?php $canViewArchivedColumn = commonModel::hasPriv('kanban', 'viewArchivedColumn');?>
|
||||
<?php if($canViewArchivedCard or $canViewArchivedColumn):?>
|
||||
<span>
|
||||
<button data-toggle="dropdown" class="btn btn-link action" type="button" title=<?php echo $this->lang->kanban->archived;?>>
|
||||
<span><?php echo $this->lang->kanban->archived;?></span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<?php if($canViewArchivedCard) echo '<li>' . html::a("javascript:loadMore(\"Card\", $region->id)", '<i class="icon icon-card-archive"></i>' . $this->lang->kanban->viewArchivedCard) . '</li>';?>
|
||||
<?php if($canViewArchivedColumn) echo '<li>' . html::a("javascript:loadMore(\"Column\", $region->id)", '<i class="icon icon-col-archive"></i>' . $this->lang->kanban->viewArchivedColumn) . '</li>';?>
|
||||
</ul>
|
||||
</span>
|
||||
<?php endif;?>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<?php echo '<li>' . html::a(inlink('viewArchivedCard', "", '', 1), '<i class="icon icon-card-archive"></i>' . $this->lang->kanban->viewArchivedCard, '', 'class="iframe" data-toggle="modal" data-width="600px"') . '</li>';?>
|
||||
<?php echo '<li>' . html::a(inlink('viewArchivedColumn', "", '', 1), '<i class="icon icon-col-archive"></i>' . $this->lang->kanban->viewArchivedColumn, '', 'class="iframe" data-toggle="modal" data-width="600px"') . '</li>';?>
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
/**
|
||||
* The viewarchivedcard file 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 Shujie Tian <tianshujie@easycorp.ltd>
|
||||
* @package kanban
|
||||
* @version $Id: viewarchivedcard.html.php 935 2021-12-22 15:44:24Z $
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<style>
|
||||
#archivedCards {top: 48px; right: -400px; width: 400px; position: fixed; z-index: 1050; background-color: rgb(255,255,255);}
|
||||
#archivedCards .panel .panel-body {overflow: auto; padding: 10px;}
|
||||
#archivedCards .kanban-item {border: 1px solid #ddd; border-radius: 4px; padding: 5px;}
|
||||
#archivedCards .kanban-item > .title {display: block; max-height: 38px; overflow: hidden; color: inherit; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;}
|
||||
#archivedCards .kanban-item > .title:hover {color: #2272eb}
|
||||
#archivedCards .kanban-item > .info {margin-top: 5px; position: relative;}
|
||||
#archivedCards .kanban-item > .info > .pri {height: 14px; border-width: 1px; font-size: 12px; line-height: 12px; min-width: 14px; padding: 0 1px;}
|
||||
#archivedCards .kanban-item > .info > .time {margin-left: 10px; font-size: 12px}
|
||||
#archivedCards .kanban-item > .info > .user {position: absolute; right: 0; top: 0}
|
||||
#archivedCards .card-actions {position: relative; padding: 15px 10px; padding-top: 0px;}
|
||||
#archivedCards .card-actions > .btn {display: block;}
|
||||
#archivedCards .card-actions > .btn + .btn {margin-top: 10px;}
|
||||
#archivedCards .info > .users > span:before {left: -4px;}
|
||||
#archivedCards .info > .users > span:after {right: -4px;}
|
||||
#archivedCards .info > .users .avatar {display: inline-block; position: relative; border-radius: 50%; top: -5px; margin: 5px; right: -7px; margin-left: -4px;}
|
||||
#archivedCards .cardName {word-wrap: break-word;}
|
||||
</style>
|
||||
<div class='panel'>
|
||||
<div class='panel-heading text-center'>
|
||||
<strong><?php echo $lang->kanban->archivedCard;?></strong>
|
||||
<button type="button" class="close" aria-hidden="true">×</button>
|
||||
</div>
|
||||
<div class='panel-body'>
|
||||
<?php foreach($cards as $card):?>
|
||||
<div class='card-item' data-card='<?php echo $card->id;?>'>
|
||||
<div class='col-xs-10'>
|
||||
<div class="kanban-item" data-id="<?php echo $card->id;?>">
|
||||
<?php echo html::a($this->createLink('kanban', 'viewCard', "cardID=$card->id", '', true), $card->name, '', "class='cardName iframe' data-toggle='modal' data-width='80%' title='$card->name'");?>
|
||||
<div class="info">
|
||||
<span class="pri label-pri label-pri-<?php echo $card->pri;?>"><?php echo $card->pri;?></span>
|
||||
<?php if($card->estimate and $card->estimate != 0) echo "<span class='text-gray'>{$card->estimate}h</span>";?>
|
||||
<?php if($card->end and $card->end != '0000-00-00'):?>
|
||||
<span class="time label label-light"><?php echo $card->end;?></span>
|
||||
<?php endif;?>
|
||||
<?php
|
||||
$assignedToList = explode(',', $card->assignedTo);
|
||||
$count = 0;
|
||||
$members = '';
|
||||
?>
|
||||
<?php
|
||||
foreach($assignedToList as $index => $account)
|
||||
{
|
||||
if(!isset($users[$account]))
|
||||
{
|
||||
unset($assignedToList[$index]);
|
||||
continue;
|
||||
}
|
||||
$members .= $users[$account] . ',';
|
||||
}
|
||||
$userCount = count($assignedToList);
|
||||
?>
|
||||
<?php if($userCount > 0):?>
|
||||
<div class='users pull-right' title="<?php echo $members;?>">
|
||||
<?php
|
||||
foreach($assignedToList as $account)
|
||||
{
|
||||
if($count > 4) continue;
|
||||
echo html::smallAvatar(array('avatar' => $usersAvatar[$account], 'account' => $account));
|
||||
$count ++;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='col-xs-2 card-actions'>
|
||||
<?php
|
||||
$canRestore = commonModel::hasPriv('kanban', 'restoreCard');
|
||||
$canDelete = commonModel::hasPriv('kanban', 'deleteCard');
|
||||
|
||||
if($canRestore) echo html::a(inlink('restoreCard', "cardID={$card->id}", '',true), $lang->kanban->restore, '', "class='btn btn-xs btn-primary' target='hiddenwin'");
|
||||
|
||||
if($canDelete) echo html::a($this->createLink('kanban', 'deleteCard', "cardID=$card->id", '', true), $lang->delete, '', "class='btn btn-xs delete-card' target='hiddenwin'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(function()
|
||||
{
|
||||
$('#archivedCards .panel .close').click(function()
|
||||
{
|
||||
$('#archivedCards').animate({right: -400}, 500);
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@@ -13,7 +13,9 @@
|
||||
<style>
|
||||
#archivedColumns {top: 50px; right: -400px; width: 400px; position: fixed; z-index: 1050; background-color: rgb(255,255,255);}
|
||||
#archivedColumns .panel .panel-body {overflow: auto; padding: 0px 20px;}
|
||||
#archivedColumns .parent-item,#archivedColumns .child-item {padding: 20px 0px; border-bottom: 1px solid #ddd; line-height: 26px; overflow: hidden;}
|
||||
.hr {border-bottom: 1px solid #ddd;}
|
||||
#archivedColumns .parent-item,#archivedColumns .child-item {padding: 20px 0px; line-height: 26px; overflow: hidden;}
|
||||
#archivedColumns .child-item {padding: 5px 0px;}
|
||||
#archivedColumns .title {width: 250px; float: left;}
|
||||
#archivedColumns .label-child {border-radius: 12px; background-color: #DDDDDD; color: #333; margin-right: 10px;}
|
||||
#archivedColumns .btn {float: right; line-height: 26px; height: 26px; padding: 0 20px;}
|
||||
@@ -31,15 +33,19 @@
|
||||
<?php else:?>
|
||||
<?php foreach($columns as $column):?>
|
||||
<div class="item-body">
|
||||
<div class="item parent-item" data-archived='<?php echo $column->archived;?>' data-id="<?php echo $column->id;?>">
|
||||
<div class="item parent-item hr" data-archived='<?php echo $column->archived;?>' data-id="<?php echo $column->id;?>">
|
||||
<div class="title text-ellipsis"><?php echo $column->name;?></div>
|
||||
<?php if(commonModel::hasPriv('kanban', 'restoreColumn') && $column->archived == '1') echo html::a(inlink('restoreColumn', "columnID={$column->id}", '',true), $lang->kanban->restore, '', "class='btn btn-primary' target='hiddenwin'");?>
|
||||
</div>
|
||||
<?php if(!empty($column->child) && $column->archived == '0'):?>
|
||||
<?php $count = 1;?>
|
||||
<?php foreach($column->child as $childColumn):?>
|
||||
<div class="item child-item" data-id="<?php echo $childColumn->id;?>" data-archived='<?php echo $childColumn->archived;?>'>
|
||||
<?php $class = $count == count($column->child) ? 'hr' : '';?>
|
||||
<div class="item child-item <?php echo $class;?>" data-id="<?php echo $childColumn->id;?>" data-archived='<?php echo $childColumn->archived;?>'>
|
||||
<div class="title text-ellipsis"><label class="label label-child"><?php echo $lang->kanban->child;?></label><?php echo $childColumn->name;?></div>
|
||||
<?php if(commonModel::hasPriv('kanban', 'restoreColumn') && $childColumn->archived == '1') echo html::a(inlink('restoreColumn', "columnID={$childColumn->id}", '',true), $lang->kanban->restore, 'hiddenwin', "class='btn btn-primary");?>
|
||||
</div>
|
||||
<?php $count ++;?>
|
||||
<?php endforeach;?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user