Merge branch 'sprint/182_liumengyi_47339' into 'kanban'

* Finish task #47339.

See merge request easycorp/zentaopms!1382
This commit is contained in:
孙广明
2022-01-13 07:30:51 +00:00
6 changed files with 72 additions and 7 deletions
+1
View File
@@ -26,6 +26,7 @@ js::set('storyLang', $lang->story);
js::set('executionLang', $lang->execution);
js::set('bugLang', $lang->bug);
js::set('taskLang', $lang->task);
js::set('deadlineLang', $lang->task->deadlineAB);
js::set('kanbancolumnLang', $lang->kanbancolumn);
js::set('kanbancardLang', $lang->kanbancard);
js::set('executionID', $execution->id);
-1
View File
@@ -1815,7 +1815,6 @@ class kanbanModel extends model
foreach($columnList as $type => $name)
{
$data = new stdClass();
$data->lane = $laneID;
$data->name = $name;
$data->color = '#333';
$data->type = $type;
+15 -4
View File
@@ -244,10 +244,21 @@ class project extends control
if($project->model == 'kanban')
{
$kanbanList = $this->loadModel('execution')->getList($projectID, 'all', $browseType);
$this->view->kanbanList = $kanbanList;
$this->view->browseType = $browseType;
$this->view->memberGroup = $this->execution->getMembersByIdList(array_keys($kanbanList));
$this->view->usersAvatar = $this->loadModel('user')->getAvatarPairs();
$executionActions = array();
foreach($kanbanList as $kanbanID => $kanban)
{
foreach($this->config->execution->statusActions as $action)
{
if($this->execution->isClickable($kanban, $action)) $executionActions[$kanbanID][] = $action;
}
}
$this->view->kanbanList = $kanbanList;
$this->view->browseType = $browseType;
$this->view->memberGroup = $this->execution->getMembersByIdList(array_keys($kanbanList));
$this->view->usersAvatar = $this->loadModel('user')->getAvatarPairs();
$this->view->executionActions = $executionActions;
}
$this->view->title = $this->lang->project->common . $this->lang->colon . $this->lang->project->index;
+4
View File
@@ -22,3 +22,7 @@
#cards .kanban-members > span:after {right: -4px;}
#cards .kanban-members-total {display: inline-block; margin-left: 6px; position: relative; top: 3px}
#cards .kanbanAcl {position: absolute; right: 0px; bottom: 2px; color: #838a9d;}
.kanbans .kanban-actions {float: right; visibility: hidden;}
.kanbans .kanban-actions .dropdown-menu.pull-right {top:31px; right: -84px; left: auto;}
.kanbans .kanban-actions .dropdown-menu.pull-left {top:31px; right:-1px; left: auto;}
+22
View File
@@ -0,0 +1,22 @@
/* Make cards clickable. */
var $kanbans = $('.kanbans');
$kanbans.on('click', '.panel', function(e)
{
if(!$(e.target).closest('.kanban-actions').length)
{
window.location.href = $(this).data('url');
}
});
/* Display drop-down menu.*/
$('.panel').mouseenter(function(e)
{
$('.kanban-actions' + e.currentTarget.parentElement.dataset.id).css('visibility','visible');
});
/* Hide drop-down menu. */
$('.panel').mouseleave(function(e)
{
$('.kanban-actions').css('visibility','hidden');
$('.dropdown').removeClass('open');
});
+30 -2
View File
@@ -18,7 +18,7 @@
<?php
foreach($lang->project->featureBar as $label => $labelName)
{
$active = $browseType == $label ? 'btn-active-text' : '';
$active = $browseType == $label ? 'btn-active-text' : '';
echo html::a($this->createLink('project', 'index', "projectID=$project->id&browseType=" . $label), '<span class="text">' . $labelName . '</span> ' . ($browseType == $label ? "<span class='label label-light label-badge'>0</span>" : ''), '', "class='btn btn-link $active'");
}
?>
@@ -31,12 +31,13 @@
<div class="row cell" id='cards'>
<?php if(empty($kanbanList)):?>
<div class="table-empty-tip">
<p>
<p>
<span class="text-muted"><?php echo $lang->noData;?></span>
<?php common::printLink('execution', 'create', "projectID=$project->id", '<i class="icon icon-plus"></i> ' . $lang->project->createKanban, '', 'class="btn btn-info"');?>
</p>
</div>
<?php else:?>
<?php $kanbanCount = 0;?>
<?php foreach ($kanbanList as $kanbanID => $kanban):?>
<div class='col' data-id='<?php echo $kanbanID?>'>
<div class='panel'>
@@ -45,6 +46,33 @@
<span class="label label-closed"><?php echo zget($lang->execution->statusList, $kanban->status);?></span>
<strong title='<?php echo $kanban->name;?>'><?php echo $kanban->name;?></strong>
</div>
<?php
$canActions = (common::hasPriv('project','edit') or !empty($executionActions[$kanbanID]));
$kanbanCount ++;
?>
<?php if($canActions):?>
<div class='kanban-actions kanban-actions<?php echo $kanbanID;?>'>
<div class='dropdown'>
<?php echo html::a('javascript:;', "<i class='icon icon-ellipsis-v'></i>", '', "data-toggle='dropdown' class='btn btn-link'");?>
<ul class='dropdown-menu <?php echo $kanbanCount % 4 == 0 ? 'pull-left' : 'pull-right';?>'>
<?php
if(common::hasPriv('project','edit'))
{
$this->app->loadLang('kanban');
echo '<li>';
common::printLink('project', 'edit', "projectID={$project->id}", '<i class="icon icon-edit"></i> ' . $lang->kanban->edit, '', "class='iframe' data-width='75%'", '', true);
echo '</li>';
}
if(in_array('start', $executionActions[$kanbanID])) echo '<li>' . html::a(helper::createLink('execution', 'start', "executionID=$kanbanID", '', true), '<i class="icon icon-play"></i>' . $lang->execution->start, '', "class='iframe btn btn-link text-left' data-width='75%'") . '</li>';
if(in_array('putoff', $executionActions[$kanbanID])) echo '<li>' . html::a(helper::createLink('execution', 'putoff', "executionID=$kanbanID", '', true), '<i class="icon icon-calendar"></i>' . $lang->execution->putoff, '', "class='iframe btn btn-link text-left' data-width='75%'") . '</li>';
if(in_array('suspend', $executionActions[$kanbanID])) echo '<li>' . html::a(helper::createLink('execution', 'suspend', "executionID=$kanbanID", '', true), '<i class="icon icon-pause"></i>' . $lang->execution->suspend, '', "class='iframe btn btn-link text-left' data-width='75%'") . '</li>';
if(in_array('close', $executionActions[$kanbanID])) echo '<li>' . html::a(helper::createLink('execution', 'close', "executionID=$kanbanID", '', true), '<i class="icon icon-off"></i>' . $lang->execution->close, '', "class='iframe btn btn-link text-left' data-width='75%'") . '</li>';
if(in_array('activate', $executionActions[$kanbanID])) echo '<li>' . html::a(helper::createLink('execution', 'activate', "executionID=$kanbanID", '', true), '<i class="icon icon-magic"></i>' . $lang->execution->activate, '', "class='iframe btn btn-link text-left' data-width='75%'") . '</li>';
?>
</ul>
</div>
</div>
<?php endif;?>
</div>
<div class='panel-body'>
<div class='kanban-desc' title="<?php echo strip_tags(htmlspecialchars_decode($kanban->desc));?>"><?php echo strip_tags(htmlspecialchars_decode($kanban->desc));?></div>