@@ -76,11 +76,11 @@ body {background-color: #fff}
|
||||
.region .kanban-item > .kanban-card > .actions > a {display: block; float: left; width: 20px; height: 20px; line-height: 20px; text-align: center; border-radius: 4px; opacity: .7;}
|
||||
.region .kanban-item > .kanban-card > .actions > a:hover {background-color: rgba(0,0,0,.075); opacity: 1;}
|
||||
.region .kanban-item:hover > .actions {opacity: 1;}
|
||||
.region .kanban-item.has-color .title,
|
||||
.region .kanban-item.has-color .actions .icon-more-v,
|
||||
.region .kanban-item.has-color .info > .label-pri,
|
||||
.region .kanban-item.has-color .info > .label-light {color: #FFFFFF;}
|
||||
.region .kanban-item.has-color .info > .label-pri {border-color: #FFFFFF;}
|
||||
.region .kanban-item .has-color .title,
|
||||
.region .kanban-item .has-color .actions .icon-more-v,
|
||||
.region .kanban-item .has-color .info > .label-pri,
|
||||
.region .kanban-item .has-color .info > .label-light {color: #FFFFFF;}
|
||||
.region .kanban-item .has-color .info > .label-pri {border-color: #FFFFFF;}
|
||||
.region .kanban-item .item-more {position: absolute; right: 6px; top: 0px;}
|
||||
|
||||
.kanban-card {height: 60px !important}
|
||||
|
||||
+20
-21
@@ -320,16 +320,8 @@ function renderKanbanItem(item, $item)
|
||||
$user.html(renderUsersAvatar(assignedTo, item.id)).attr('title', title);
|
||||
|
||||
$item.css('background-color', item.color);
|
||||
$item.toggleClass('has-color', item.color != '#FFFFFF');
|
||||
if(item.color == '#FFFFFF')
|
||||
{
|
||||
$item.find('.info > .label-light').css('background-color', '#F2F2F2');
|
||||
}
|
||||
else
|
||||
{
|
||||
var colors = {'#E01B1B': '#DD5858', '#F7B500': '#ECC046', '#288427': '#609F60'}
|
||||
$item.find('.info > .label-light').css('background-color', colors[item.color]);
|
||||
}
|
||||
$item.toggleClass('has-color', item.color != '#fff');
|
||||
$item.find('.info > .label-light').css('background-color', item.color);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -385,7 +377,7 @@ function moveCard(cardID, toColID, kanbanID, regionID)
|
||||
success: function(data)
|
||||
{
|
||||
regions = data;
|
||||
updateRegion(regionID, data[regionID].groups[0]);
|
||||
updateRegion(regionID, data[regionID]);
|
||||
},
|
||||
error: function(xhr, status, error)
|
||||
{
|
||||
@@ -417,7 +409,7 @@ function setCardColor(cardID, color, kanbanID, regionID)
|
||||
success: function(data)
|
||||
{
|
||||
regions = data;
|
||||
updateRegion(regionID, data[regionID].groups[0]);
|
||||
updateRegion(regionID, data[regionID]);
|
||||
},
|
||||
error: function(xhr, status, error)
|
||||
{
|
||||
@@ -427,7 +419,7 @@ function setCardColor(cardID, color, kanbanID, regionID)
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a region
|
||||
* Update a region.
|
||||
*
|
||||
* @param int regionID
|
||||
* @param array regionData
|
||||
@@ -438,12 +430,12 @@ function updateRegion(regionID, regionData = [])
|
||||
{
|
||||
if(!regionID) return false;
|
||||
|
||||
var $kanban = $('#kanban'+ regionID).kanban();
|
||||
var $region = $('#kanban'+ regionID).kanban();
|
||||
|
||||
if(!$kanban.length) return false;
|
||||
if(!regionData) regionData = regions[regionID].groups[0];
|
||||
if(!$region.length) return false;
|
||||
if(!regionData) regionData = regions[regionID];
|
||||
|
||||
$kanban.data('zui.kanban').render(regionData);
|
||||
$region.data('zui.kanban').render(regionData.groups);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -691,7 +683,7 @@ function createLaneMenu(options)
|
||||
if(!privs.length) return [];
|
||||
|
||||
var items = [];
|
||||
if(privs.includes('setLane')) items.push({label: kanbanLang.editLane, icon: 'edit', url: createLink('kanban', 'setLane', 'laneID=' + lane.id + '&executionID=0&from=kanban'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '635px'}});
|
||||
if(privs.includes('setLane')) items.push({label: kanbanLang.setLane, icon: 'edit', url: createLink('kanban', 'setLane', 'laneID=' + lane.id + '&executionID=0&from=kanban'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '635px'}});
|
||||
if(privs.includes('deleteLane')) items.push({label: kanbanLang.deleteLane, icon: 'trash', url: createLink('kanban', 'deleteLane', 'lane=' + lane.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbanlaneLang.confirmDelete, 'data-confirmDetail': kanbanlaneLang.confirmDeleteDetail, 'target': 'hiddenwin'}});
|
||||
|
||||
var bounds = options.$trigger[0].getBoundingClientRect();
|
||||
@@ -714,13 +706,20 @@ function createCardMenu(options)
|
||||
|
||||
var items = [];
|
||||
if(privs.includes('editCard')) items.push({label: kanbanLang.editCard, icon: 'edit', url: createLink('kanban', 'editCard', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
|
||||
if(privs.includes('archiveCard')) items.push({label: kanbanLang.archiveCard, icon: 'card-archive', url: createLink('kanban', 'archiveCard', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}});
|
||||
if(privs.includes('archiveCard') && kanban.archived == '0') items.push({label: kanbanLang.archiveCard, icon: 'card-archive', url: createLink('kanban', 'archiveCard', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}});
|
||||
if(privs.includes('copyCard')) items.push({label: kanbanLang.copyCard, icon: 'copy', url: createLink('kanban', 'copyCard', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}});
|
||||
if(privs.includes('deleteCard')) items.push({label: kanbanLang.deleteCard, icon: 'trash', url: createLink('kanban', 'deleteCard', 'cardID=' + card.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbancolumnLang.confirmDelete, 'data-confirmDetail': kanbancolumnLang.confirmDeleteDetail, 'target': 'hiddenwin'}});
|
||||
if(privs.includes('moveCard'))
|
||||
{
|
||||
var moveCardItems = [];
|
||||
var moveColumns = regions[options.$trigger.closest('.region').data('id')].groups[0].columns;
|
||||
var moveColumns = [];
|
||||
regions[options.$trigger.closest('.region').data('id')].groups.forEach(function(group){
|
||||
if(group.id == options.$trigger.closest('.kanban-board').data('id'))
|
||||
{
|
||||
moveColumns = group.columns;
|
||||
break;
|
||||
}
|
||||
});
|
||||
var parentColumns = [];
|
||||
for(let i = moveColumns.length-1 ; i >= 0 ; i -- )
|
||||
{
|
||||
@@ -767,7 +766,7 @@ function createColumnMenu(options)
|
||||
items.push({label: kanbanLang.createColumnOnRight, icon: 'col-add-right', url: createLink('kanban', 'createColumn', 'columnID=' + column.id + '&position=right'), className: 'iframe', attrs: {'data-toggle': 'modal'}});
|
||||
}
|
||||
if(privs.includes('copyColumn')) items.push({label: kanbanLang.copyColumn, icon: 'copy', url: createLink('kanban', 'copyColumn', 'columnID=' + column.id), className: 'iframe', attrs: {'data-toggle': 'modal'}});
|
||||
if(privs.includes('archiveColumn')) items.push({label: kanbanLang.archiveColumn, icon: 'card-archive', url: createLink('kanban', 'archiveColumn', 'columnID=' + column.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbancolumnLang.confirmArchive, 'data-confirmDetail': kanbancolumnLang.confirmArchiveDetail, 'data-confirmButton': lang.archive, 'data-confirming': lang.archiving}});
|
||||
if(privs.includes('archiveColumn') && kanban.archived == '0') items.push({label: kanbanLang.archiveColumn, icon: 'card-archive', url: createLink('kanban', 'archiveColumn', 'columnID=' + column.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbancolumnLang.confirmArchive, 'data-confirmDetail': kanbancolumnLang.confirmArchiveDetail, 'data-confirmButton': lang.archive, 'data-confirming': lang.archiving}});
|
||||
if(privs.includes('deleteColumn')) items.push({label: kanbanLang.deleteColumn, icon: 'trash', url: createLink('kanban', 'deleteColumn', 'columnID=' + column.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbancolumnLang.confirmDelete, 'data-confirmDetail': kanbancolumnLang.confirmDeleteDetail, 'target': 'hiddenwin'}});
|
||||
|
||||
var bounds = options.$trigger[0].getBoundingClientRect();
|
||||
|
||||
@@ -47,6 +47,7 @@ $lang->kanban->custom = 'Custom';
|
||||
/* Fields. */
|
||||
$lang->kanban->space = 'Space';
|
||||
$lang->kanban->name = 'Name';
|
||||
$lang->kanban->archived = 'Archive';
|
||||
$lang->kanban->owner = 'Owner';
|
||||
$lang->kanban->team = 'Team';
|
||||
$lang->kanban->desc = 'Description';
|
||||
@@ -75,6 +76,9 @@ $lang->kanban->aclGroup['private'] = 'Private';
|
||||
$lang->kanban->aclList['open'] = 'Open (Accessible with space view permissions)';
|
||||
$lang->kanban->aclList['private'] = 'Private (For the kanban team, whitelist members and space owner only)';
|
||||
|
||||
$lang->kanban->enableArchived['0'] = 'Enable';
|
||||
$lang->kanban->enableArchived['1'] = 'No Enable';
|
||||
|
||||
$lang->kanban->type = array();
|
||||
$lang->kanban->type['all'] = "All KanBan";
|
||||
$lang->kanban->type['story'] = "Story KanBan";
|
||||
|
||||
@@ -15,7 +15,7 @@ $lang->kanban->editRegion = '编辑区域';
|
||||
$lang->kanban->sortRegion = '区域排序';
|
||||
$lang->kanban->deleteRegion = '删除区域';
|
||||
$lang->kanban->createLane = '创建泳道';
|
||||
$lang->kanban->editLane = '编辑泳道';
|
||||
$lang->kanban->editLane = '泳道设置';
|
||||
$lang->kanban->sortLane = '泳道排序';
|
||||
$lang->kanban->deleteLane = '删除泳道';
|
||||
$lang->kanban->createColumn = '创建看板列';
|
||||
@@ -47,6 +47,7 @@ $lang->kanban->custom = '自定义';
|
||||
/* Fields. */
|
||||
$lang->kanban->space = '所属空间';
|
||||
$lang->kanban->name = '看板名称';
|
||||
$lang->kanban->archived = '归档功能';
|
||||
$lang->kanban->owner = '负责人';
|
||||
$lang->kanban->team = '团队';
|
||||
$lang->kanban->desc = '看板描述';
|
||||
@@ -75,6 +76,9 @@ $lang->kanban->aclList['private'] = '私有(看板团队成员、白名单、
|
||||
$lang->kanban->aclGroup['open'] = '公开';
|
||||
$lang->kanban->aclGroup['private'] = '私有';
|
||||
|
||||
$lang->kanban->enableArchived['0'] = '启用';
|
||||
$lang->kanban->enableArchived['1'] = '不启用';
|
||||
|
||||
$lang->kanban->type = array();
|
||||
$lang->kanban->type['all'] = "综合看板";
|
||||
$lang->kanban->type['story'] = "{$lang->SRCommon}看板";
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
<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>
|
||||
<tr>
|
||||
<th><?php echo $lang->kanban->owner;?></th>
|
||||
<td><?php echo html::select('owner', $users, '', "class='form-control chosen'");?></td>
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
<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>
|
||||
<tr>
|
||||
<th><?php echo $lang->kanban->owner;?></th>
|
||||
<td><?php echo html::select('owner', $users, $kanban->owner, "class='form-control chosen'");?></td>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<?php echo $lang->kanban->editLane;?>
|
||||
<?php echo $lang->kanban->setLane;?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class="load-indicator main-form form-ajax" method='post' target='hiddenwin'>
|
||||
|
||||
@@ -18,6 +18,7 @@ $laneCount = 0;
|
||||
foreach($regions as $region) $laneCount += $region->laneCount;
|
||||
|
||||
js::set('regions', $regions);
|
||||
js::set('kanban', $kanban);
|
||||
js::set('kanbanLang', $lang->kanban);
|
||||
js::set('kanbanlaneLang', $lang->kanbanlane);
|
||||
js::set('kanbancolumnLang', $lang->kanbancolumn);
|
||||
|
||||
Reference in New Issue
Block a user