184 lines
6.8 KiB
PHP
184 lines
6.8 KiB
PHP
<?php
|
|
/**
|
|
* The view file of calendar module of ZenTaoPMS.
|
|
*
|
|
* @copyright Copyright 2009-2012 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
|
|
* @license business(商业软件)
|
|
* @author Yangyang Shi <shiyangyang@cnezsoft.com>
|
|
* @package calendar
|
|
* @version $Id$
|
|
* @link http://www.zentao.net
|
|
*/
|
|
?>
|
|
<?php include $app->getModuleRoot() . 'common/view/header.html.php';?>
|
|
<?php include '../../../common/ext/view/calendar.html.php'?>
|
|
<div id='mainMenu' class='clearfix'>
|
|
<div class='btn-toolbar pull-right'>
|
|
<?php
|
|
$misc = common::hasPriv('task', 'export') ? "class='btn btn-link export iframe' data-width='620'" : "class='btn btn-link disabled'";
|
|
$link = common::hasPriv('task', 'export') ? $this->createLink('task', 'export', "execution=$executionID&orderBy=$orderBy&type=calendar") : '#';
|
|
echo html::a($link, "<i class='icon-import muted'></i> " . $lang->task->export, '', $misc);
|
|
?>
|
|
<?php
|
|
$checkObject = new stdclass();
|
|
$checkObject->execution = $executionID;
|
|
$misc = common::hasPriv('task', 'create', $checkObject) ? "class='btn btn-primary'" : "class='btn btn-primary disabled'";
|
|
$link = common::hasPriv('task', 'create', $checkObject) ? $this->createLink('task', 'create', "execution=$executionID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : '')) : '#';
|
|
echo html::a($link, "<i class='icon icon-plus'></i>" . $lang->task->create, '', $misc);
|
|
?>
|
|
</div>
|
|
</div>
|
|
<div id='mainContent' class='main-row'>
|
|
<div class="main-col">
|
|
<div class="cell">
|
|
<div id="calendar" class="calendar load-indicator loading no-margin">
|
|
<header class="calender-header table-row">
|
|
<div class="btn-toolbar col-12 table-col text-middle">
|
|
<button type="button" class="btn btn-info btn-mini btn-today"><?php echo $lang->today;?></button>
|
|
<button type="button" class="btn btn-info btn-icon btn-mini btn-prev"><i class="icon-chevron-left"></i></button>
|
|
<span id="date" class="calendar-caption"></span>
|
|
<button type="button" class="btn btn-info btn-icon btn-mini btn-next"><i class="icon-chevron-right"></i></button>
|
|
</div>
|
|
</header>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php $startDate = '';?>
|
|
<div class="side-col">
|
|
<div class="cell" id="taskLists">
|
|
<ul class="task-list">
|
|
<li id='undoneTask'><?php echo $lang->task->waitTask?></li>
|
|
<?php foreach($events as $i => $task):?>
|
|
<?php if($task['status'] != 'wait') continue;?>
|
|
<li><a class="iframe" data-width='95%' href='<?php echo $task['url'];?>'><?php echo $task['title'];?></a></li>
|
|
<?php unset($events[$i]);?>
|
|
<?php endforeach;?>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
config.textHasMoreItems = '<?php echo $lang->textHasMoreItems;?>';
|
|
</script>
|
|
<script>
|
|
$(function()
|
|
{
|
|
var taskViewModalTrigger = new $.zui.ModalTrigger(
|
|
{
|
|
width: '70%',
|
|
type: 'iframe',
|
|
rememberPos: 'taskViewModal',
|
|
waittime: 5000
|
|
});
|
|
|
|
var $calendar = $('#calendar');
|
|
var $taskLists = $('#taskLists');
|
|
|
|
var scrollToElement = function($ele)
|
|
{
|
|
var ele = $ele[0];
|
|
ele && ele.scrollIntoView && ele.scrollIntoView({block: "start", behavior: "smooth"});
|
|
$ele.addClass('highlight');
|
|
setTimeout(function(){$ele.removeClass('highlight');}, 1000);
|
|
};
|
|
|
|
var scrollToDate = function(date)
|
|
{
|
|
if (!date) date = new Date();
|
|
var $today = $taskLists.find('.task-list .heading[data-day="' + date.format('yyyy-MM-dd') + '"]');
|
|
if($today.length)
|
|
{
|
|
scrollToElement($today);
|
|
}
|
|
else
|
|
{
|
|
var $thisMonth = $taskLists.find('.task-list[data-month="' + date.format('yyyy-MM') + '"]');
|
|
if ($thisMonth.length) scrollToElement($thisMonth);
|
|
}
|
|
};
|
|
|
|
var displayDate = 0;
|
|
var expandedDays = {};
|
|
var minExpandCount = 6;
|
|
var toggleLoading = function(loading)
|
|
{
|
|
$calendar.toggleClass('loading', !!loading);
|
|
};
|
|
var calendarEvents = <?php echo json_encode(array_values($events));?>;
|
|
var calendar = $calendar.calendar(
|
|
{
|
|
startDate:'<?php echo $startDate;?>',
|
|
dragThenDrop: false,
|
|
hideEmptyWeekends: true,
|
|
data:
|
|
{
|
|
events: calendarEvents,
|
|
calendars:
|
|
{
|
|
defaultCal: {color: '#fff'}
|
|
}
|
|
},
|
|
eventCreator: function(event, $cell, calendar)
|
|
{
|
|
var $event = $('<div title="' + event.divTitle + '" data-id="' + (event.id || '') + '" class="event" title="' + (event.desc || '') + '"><span class="status-' + event.status + '">' + ' <span class="label label-dot"></span></span> <span class="title">' + event.iconTitle + '</span></div>');
|
|
return $event;
|
|
},
|
|
dayFormater: function($cell, date, dayEvents, calendar)
|
|
{
|
|
if(dayEvents && dayEvents.maxPos >= minExpandCount)
|
|
{
|
|
var hideManyEvents = !expandedDays[date.toDateString()];
|
|
$cell.toggleClass('hide-many-events', hideManyEvents);
|
|
if(hideManyEvents)
|
|
{
|
|
var $cellContent = $cell.find('.day > .content');
|
|
var $showMore = $cellContent.find('.show-more-events');
|
|
if(!$showMore.length)
|
|
{
|
|
$showMore = $('<div class="show-more-events" />').appendTo($cellContent);
|
|
}
|
|
else
|
|
{
|
|
$showMore.show();
|
|
}
|
|
$showMore.text(config.textHasMoreItems.format(dayEvents.maxPos - minExpandCount + 1));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$cell.removeClass('hide-many-events');
|
|
}
|
|
},
|
|
display: function(e)
|
|
{
|
|
scrollToDate(e.date);
|
|
toggleLoading(false);
|
|
},
|
|
eventSorter: function(a, b)
|
|
{
|
|
var result = a.start - b.start;
|
|
if (result === 0) {
|
|
return a.id - b.id;
|
|
}
|
|
return result;
|
|
}
|
|
}).data('zui.calendar');
|
|
|
|
$calendar.on('click', '.show-more-events', function(e)
|
|
{
|
|
var $cell = $(this).hide().closest('.cell-day');
|
|
$cell.removeClass('hide-many-events');
|
|
expandedDays[$cell.find('.day').attr('data-date')] = true;
|
|
e.stopPropagation();
|
|
}).on('click', '.event', function(e)
|
|
{
|
|
var event = $(this).data('event');
|
|
taskViewModalTrigger.show({url: createLink('task', 'view', 'taskID=' + event.id, 'html', true)});
|
|
e.stopPropagation();
|
|
});
|
|
|
|
$taskLists.css('height', $calendar.parent().outerHeight());
|
|
});
|
|
</script>
|
|
<?php include $app->getModuleRoot() . 'common/view/footer.html.php';?>
|