创建版本
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#color-picker").colorpicker({
|
||||
fillcolor: true,
|
||||
target: "#calendarcolor",
|
||||
change: function(obj, color) {
|
||||
$(obj).css({'background-color': color});
|
||||
$('#calendarcolor').val(color);
|
||||
},
|
||||
reset: function(obj, color) {
|
||||
$(obj).css({'background-color': color});
|
||||
$('#calendarcolor').val(color);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<form method="post" role="form" class="form-horizontal" id="myform" name="myform">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">日程名称</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-sm" id="displayname" name="displayname" value="{{$calendar['displayname']}}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">日程描述</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea rows="2" class="form-control input-sm" name="description">{{$calendar['description']}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group m-b-none">
|
||||
<label class="col-sm-2 control-label">日程颜色</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="colorpicker-controller m-t-xs" title="选择颜色">
|
||||
<div id="color-picker" class="colorpicker" style="background-color:{{$calendar['calendarcolor']}};"></div>
|
||||
</div>
|
||||
<input type="hidden" id="calendarcolor" name="calendarcolor" value="{{$calendar['calendarcolor']}}">
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="id" name="id" value="{{$calendar['id']}}" />
|
||||
</form>
|
||||
@@ -0,0 +1,22 @@
|
||||
<ul class="list-group list-group-lg no-radius no-bg auto m-b-none">
|
||||
|
||||
<li class="list-group-item no-border">
|
||||
<span class="text-ellipsis">
|
||||
<span class="label bg-info">CalDAV URL</span>
|
||||
<code>{{$public_url}}/caldav</code>
|
||||
<div style="padding-top:6px;">
|
||||
安卓系统使用此地址 <a class="option" href="http://www.xijianfood.com/uploads/calendar.caldav.sync.apk">同步助手下载</a>
|
||||
</div>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
<li class="list-group-item" style="border-bottom:0;">
|
||||
<span class="text-ellipsis">
|
||||
<span class="label bg-info">CalDAV URL(<strong>IOS/OS X</strong>)</span>
|
||||
<code>{{$public_url}}/caldav/principals/{{Auth::user()->username}}</code>
|
||||
<div style="padding-top:6px;">
|
||||
苹果系统及苹果手机请使用此地址
|
||||
</div>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -0,0 +1,589 @@
|
||||
<link href='{{$asset_url}}/vendor/fullcalendar/fullcalendar.css' rel='stylesheet' />
|
||||
|
||||
<script src='{{$asset_url}}/libs/moment.min.js'></script>
|
||||
<script src='{{$asset_url}}/vendor/fullcalendar/fullcalendar.js'></script>
|
||||
<script src='{{$asset_url}}/vendor/fullcalendar/locale/zh-cn.js'></script>
|
||||
<script type='text/javascript'>
|
||||
|
||||
var timelineInterval = 0;
|
||||
var calendar = null;
|
||||
var auth_id = '{{Auth::id()}}';
|
||||
var user_id = '{{$user->id}}';
|
||||
|
||||
// var overlay = null;
|
||||
|
||||
$(function() {
|
||||
|
||||
getCalendars(function(eventSources) {
|
||||
|
||||
InitCalendar(eventSources);
|
||||
|
||||
$('#calendars').on('click',"[data-calendar='active']", function() {
|
||||
activeCalendar(this);
|
||||
}).on('click',"[data-calendar='edit']", function() {
|
||||
var data = $(this).data();
|
||||
editCalendar(data.id);
|
||||
}).on('click',"[data-calendar='delete']", function() {
|
||||
var data = $(this).data();
|
||||
deleteCalendar(data.id);
|
||||
})
|
||||
|
||||
$(document).on('click',"[data-calendar='help']", function() {
|
||||
help();
|
||||
});
|
||||
});
|
||||
|
||||
// overlay = $('.fc-overlay');
|
||||
});
|
||||
|
||||
function InitCalendar(sources)
|
||||
{
|
||||
calendar = $('#calendar').fullCalendar({
|
||||
height: getPanelHeight(),
|
||||
buttonIcons: {
|
||||
prev: 'icon-chevron-left',
|
||||
next: 'icon-chevron-right',
|
||||
prevYear: 'icon-backward',
|
||||
nextYear: 'icon-forward'
|
||||
},
|
||||
header: {
|
||||
right: 'agendaDay,agendaWeek,month,listMonth',
|
||||
center: 'title',
|
||||
left: 'prev,next today'
|
||||
},
|
||||
lang: 'zh_cn',
|
||||
views: {
|
||||
month: {
|
||||
titleFormat: 'YYYY年M月'
|
||||
},
|
||||
week: {
|
||||
titleFormat: 'YYYY年M月D日'
|
||||
},
|
||||
day: {
|
||||
titleFormat: 'YYYY年M月D日'
|
||||
}
|
||||
},
|
||||
aspectRatio: 1.8,
|
||||
allDayText:'全天',
|
||||
slotLabelFormat: 'HH:mm',
|
||||
timeFormat: 'HH:mm',
|
||||
minTime:'07:00:00',
|
||||
maxTime:'23:00:00',
|
||||
titleRangeSeparator:' - ',
|
||||
monthNames: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],
|
||||
monthNamesShort: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
|
||||
dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
|
||||
dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
|
||||
buttonText: {today: '今天',month: '月',week: '周',day: '日', listMonth: '列表'},
|
||||
editable: true,
|
||||
selectable: true,
|
||||
selectHelper: true,
|
||||
eventLimit: true,
|
||||
defaultView: 'agendaWeek',
|
||||
//eventSources: sources,
|
||||
events: function(start, end, timezone, callback) {
|
||||
$.get(app.url('calendar/event/index'), {user_id: user_id, start: start.format(),end: end.format()}, function(res) {
|
||||
callback(res);
|
||||
});
|
||||
},
|
||||
viewRender:function(view) {
|
||||
/*
|
||||
window.clearInterval(timelineInterval);
|
||||
timelineInterval = window.setInterval(function() {
|
||||
timeLine(view);
|
||||
}, 10000);
|
||||
timeLine(view);
|
||||
*/
|
||||
},
|
||||
loading:function(status, view) {
|
||||
if (status) {
|
||||
$('#loading').show();
|
||||
} else {
|
||||
$('#loading').hide();
|
||||
}
|
||||
},
|
||||
|
||||
// 改变大小事件 event, dayDelta, minuteDelta, revertFunc
|
||||
eventResize: function(event, delta, revertFunc) {
|
||||
|
||||
if(auth_id == user_id) {
|
||||
resizeEvent(event, delta, revertFunc);
|
||||
} else {
|
||||
toastrError('不能给下属调整事件。');
|
||||
revertFunc();
|
||||
}
|
||||
},
|
||||
|
||||
// 拖动事件
|
||||
eventDrop: function(event, delta, revertFunc) {
|
||||
|
||||
if(auth_id == user_id) {
|
||||
moveEvent(event, delta, revertFunc);
|
||||
} else {
|
||||
toastrError('不能给下属移动事件。');
|
||||
revertFunc();
|
||||
}
|
||||
},
|
||||
|
||||
// 点击事件
|
||||
eventClick: function(event, jsEvent, view) {
|
||||
if(event.shared == true) {
|
||||
viewEvent(event, jsEvent, view);
|
||||
|
||||
} else if(auth_id == event.userid) {
|
||||
if(event.id > 0) {
|
||||
editEvent(event, jsEvent, view);
|
||||
} else {
|
||||
addEvent(event, jsEvent, view);
|
||||
}
|
||||
} else {
|
||||
viewEvent(event, jsEvent, view);
|
||||
}
|
||||
},
|
||||
|
||||
// 选择后弹出
|
||||
select: function(start, end, jsEvent, view) {
|
||||
|
||||
if(auth_id == user_id) {
|
||||
addEvent({start: start, end: end}, jsEvent, view);
|
||||
} else {
|
||||
toastrError('不能给下属添加事件。');
|
||||
}
|
||||
},
|
||||
eventMouseover: function(calEvent, jsEvent, view) {
|
||||
/*
|
||||
if(view.type == 'listMonth') {
|
||||
return;
|
||||
}
|
||||
|
||||
overlay.find('#overlay-title').text(calEvent.title);
|
||||
overlay.find('#overlay-start').text(calEvent.start.format());
|
||||
overlay.find('#overlay-end').text(calEvent.end.format());
|
||||
overlay.find('#overlay-location').text(calEvent.location);
|
||||
overlay.find('#overlay-description').text(calEvent.description);
|
||||
|
||||
overlay.removeClass('left right top').find('.arrow').removeClass('left right top pull-up');
|
||||
var wrap = $(jsEvent.target).closest('.fc-event');
|
||||
var cal = wrap.closest('#calendar');
|
||||
var left = wrap.offset().left - cal.offset().left;
|
||||
var right = cal.width() - (wrap.offset().left - cal.offset().left + wrap.width());
|
||||
var top = cal.height() - (wrap.offset().top - cal.offset().top + wrap.height());
|
||||
if(right > overlay.width()) {
|
||||
overlay.addClass('left').find('.arrow').addClass('left pull-up')
|
||||
}else if (left > overlay.width()) {
|
||||
overlay.addClass('right').find('.arrow').addClass('right pull-up');
|
||||
}else{
|
||||
overlay.find('.arrow').addClass('top');
|
||||
}
|
||||
if(top < overlay.height()) {
|
||||
overlay.addClass('top').find('.arrow').removeClass('pull-up').addClass('pull-down')
|
||||
}
|
||||
(wrap.find('.fc-overlay').length == 0) && wrap.append(overlay);
|
||||
*/
|
||||
}
|
||||
});
|
||||
|
||||
calendar.find('.fc-right').append('<button data-calendar="help" class="btn btn-default"><i class="fa fa-info-circle"></i> 帮助</button>')
|
||||
}
|
||||
|
||||
function help() {
|
||||
$.dialog({
|
||||
title: '帮助',
|
||||
onShow: function() {
|
||||
var self = this;
|
||||
$.get('{{url("help")}}',function(res) {
|
||||
self.html(res);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function timeLine(curView) {
|
||||
|
||||
var curTime = new Date();
|
||||
var parentDiv = $(".fc-slats:visible").parent();
|
||||
|
||||
var cur = moment(curTime).format();
|
||||
|
||||
var timeline = parentDiv.children(".timeline");
|
||||
if (timeline.length == 0) {
|
||||
//添加时间线标签
|
||||
timeline = $("<hr>").addClass("timeline");
|
||||
parentDiv.prepend(timeline);
|
||||
}
|
||||
|
||||
if (curView.start.format() < cur && curView.end.format() > cur) {
|
||||
timeline.show();
|
||||
} else {
|
||||
timeline.hide();
|
||||
}
|
||||
var curSeconds = (curTime.getHours() * 60 * 60) + (curTime.getMinutes() * 60) + curTime.getSeconds();
|
||||
//24 * 60 * 60 = 86400, # of seconds in a day
|
||||
var percentOfDay = curSeconds / 86400;
|
||||
var topPos = Math.floor(parentDiv.height() * percentOfDay);
|
||||
|
||||
timeline.css("top", topPos+"px");
|
||||
|
||||
// 周视图时设置时间线的位置和宽度
|
||||
if (curView.name == "agendaWeek") {
|
||||
|
||||
var dayCol = $(".fc-today:visible");
|
||||
|
||||
if(dayCol.position()) {
|
||||
var left = dayCol.position().left;
|
||||
var width = dayCol.width();
|
||||
timeline.css({
|
||||
left:left + "px",
|
||||
width:width + "px"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function viewEvent(event, jsEvent, view)
|
||||
{
|
||||
var data = dateFormat(event);
|
||||
data.id = event.id;
|
||||
$.dialog({
|
||||
title: '查看事件',
|
||||
onShow:function() {
|
||||
var self = this;
|
||||
$.get('{{url("event/view")}}?'+$.param(data), function(res) {
|
||||
self.html(res);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addEvent(event, jsEvent, view)
|
||||
{
|
||||
var data = dateFormat(event);
|
||||
$.dialog({
|
||||
title:'事件管理',
|
||||
url: app.url('calendar/event/add', data),
|
||||
buttons:[{
|
||||
text: '取消',
|
||||
'class': 'btn-default',
|
||||
click: function() {
|
||||
$(this).dialog('close');
|
||||
}
|
||||
},{
|
||||
text: '提交',
|
||||
'class': 'btn-info',
|
||||
click: function() {
|
||||
var $this = $(this);
|
||||
if ($('#title').val().length == 0) {
|
||||
toastrError('主题必须填写。');
|
||||
return false;
|
||||
}
|
||||
var myform = $('#myform').serialize();
|
||||
$.post('{{url("event/add")}}',myform, function(res) {
|
||||
if (res.status) {
|
||||
calendar.fullCalendar('refetchEvents');
|
||||
toastrSuccess('事件已保存。');
|
||||
$this.dialog('close');
|
||||
} else {
|
||||
toastrError('事件未保存。');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
function resizeEvent(event, delta, revertFunc)
|
||||
{
|
||||
var data = {
|
||||
id: event.id,
|
||||
delta:delta.asSeconds(),
|
||||
lastmodified: event.lastmodified
|
||||
};
|
||||
|
||||
$.post('{{url("event/resize")}}', data, function(r) {
|
||||
if (r.status) {
|
||||
calendar.fullCalendar('refetchEvents');
|
||||
toastrSuccess('事件已保存。');
|
||||
} else {
|
||||
toastrError('事件未保存。');
|
||||
revertFunc();
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
|
||||
function moveEvent(event, delta, revertFunc)
|
||||
{
|
||||
var data = {
|
||||
id:event.id,
|
||||
allday:event.allDay,
|
||||
delta:delta.asSeconds(),
|
||||
lastmodified:event.lastmodified
|
||||
};
|
||||
$.post('{{url("event/move")}}', data, function(res) {
|
||||
if (res.status) {
|
||||
calendar.fullCalendar('refetchEvents');
|
||||
toastrSuccess('事件已保存。');
|
||||
} else {
|
||||
toastrError('事件未保存。');
|
||||
revertFunc();
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
|
||||
function editEvent(event, jsEvent, view)
|
||||
{
|
||||
var data = dateFormat(event);
|
||||
data.id = event.id;
|
||||
data.title = event.title;
|
||||
data.location = event.location;
|
||||
data.description = event.description;
|
||||
data.lastmodified = event.lastmodified;
|
||||
|
||||
$.dialog({
|
||||
title:'事件管理',
|
||||
url:app.url('calendar/event/edit', data),
|
||||
buttons:[{
|
||||
text: '取消',
|
||||
'class': 'btn-default',
|
||||
click: function() {
|
||||
$(this).dialog('close');
|
||||
}
|
||||
},{
|
||||
text: '提交',
|
||||
'class': 'btn-info',
|
||||
click: function() {
|
||||
|
||||
var $this = $(this);
|
||||
if ($('#title').val().length == 0) {
|
||||
toastrError('主题必须填写。');
|
||||
return false;
|
||||
}
|
||||
|
||||
var myform = $('#myform').serialize();
|
||||
$.post('{{url("event/edit")}}', myform, function(res) {
|
||||
if (res.status) {
|
||||
calendar.fullCalendar('refetchEvents');
|
||||
toastrSuccess('事件已保存。');
|
||||
$this.dialog('close');
|
||||
} else {
|
||||
toastrError('事件未保存。');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
},{
|
||||
text: '删除',
|
||||
'class': 'btn-danger',
|
||||
click: function() {
|
||||
var $btn = $(this);
|
||||
|
||||
$.messager.confirm('操作警告', '确定要删除事件吗?', function(btn) {
|
||||
if (btn == true) {
|
||||
$.post('{{url("event/delete")}}', data, function(res) {
|
||||
if (res.status) {
|
||||
toastrSuccess(res.data);
|
||||
calendar.fullCalendar('refetchEvents');
|
||||
$btn.dialog('close');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
});
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
function deleteCalendar(id)
|
||||
{
|
||||
$.messager.confirm('操作警告', '确定删除日历,事件也会被同时删除?', function(btn) {
|
||||
if (btn == true) {
|
||||
$.post("{{url('delete')}}", {id:id}, function(res) {
|
||||
if (res.status) {
|
||||
toastrSuccess('日历删除完成。');
|
||||
calendar.fullCalendar('refetchEvents');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function editCalendar(id)
|
||||
{
|
||||
$.dialog({
|
||||
title: '日历管理',
|
||||
modalClass:'',
|
||||
dialogClass:'modal-xs',
|
||||
onShow:function() {
|
||||
var self = this;
|
||||
$.get('{{url("add")}}?id='+id, function(res) {
|
||||
self.html(res);
|
||||
});
|
||||
},
|
||||
buttons: [{
|
||||
text: '提交',
|
||||
'class': 'btn-info',
|
||||
click: function() {
|
||||
var $btn = $(this);
|
||||
var data = $('#myform').serialize();
|
||||
$.post('{{url("add")}}', data, function(res) {
|
||||
if (res.status) {
|
||||
getCalendars();
|
||||
toastrSuccess('日历已保存。');
|
||||
$btn.dialog('close');
|
||||
} else {
|
||||
toastrError('日历未保存。');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
},{
|
||||
text: '取消',
|
||||
'class': 'btn-default',
|
||||
click: function() {
|
||||
$(this).dialog('close');
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
function getCalendars(callback)
|
||||
{
|
||||
var rows = [];
|
||||
var home = user_id == auth_id ? '<a href="javascript:;" data-calendar="edit" id="0" title="新建日历"><i class="icon icon-plus"></i> 新建</a>' : '<a href="{{url("index")}}" title="返回我的日历">[返回]</a>';
|
||||
|
||||
$.get("{{url('calendars',['user_id'=>$user->id])}}", function(res) {
|
||||
|
||||
rows.push('<ul class="list-group"><li class="list-group-item"><span class="edit pull-right">'+home+'</span><strong>{{$user->name}}的日历</strong></li>');
|
||||
|
||||
$.each(res.data.calendars, function() {
|
||||
|
||||
var edit = '';
|
||||
if(this.userid == auth_id) {
|
||||
edit = '<span class="pull-right"><a class="option" href="javascript:;" data-calendar="edit" data-id="'+this.id+'"><i class="fa fa-pencil"></i></a> <a href="javascript:;" class="option" data-calendar="delete" data-id="'+this.id+'"><i class="fa fa-remove"></i></a></span>';
|
||||
}
|
||||
if(this.active == 1) {
|
||||
var checkbox = 'checked';
|
||||
}
|
||||
if(this.id == 'shared') {
|
||||
var checkbox = 'checked disabled';
|
||||
}
|
||||
rows.push('<li class="list-group-item">'+ edit +'<label class="checkbox-inline"><input data-calendar="active" data-id="'+this.id+'" type="checkbox" '+checkbox+' /> <span class="text" style="color:'+this.calendarcolor+'">'+this.displayname+'</span></label></li>');
|
||||
});
|
||||
rows.push('</ul>');
|
||||
$('#calendars').html(rows.join(''));
|
||||
|
||||
if(callback) {
|
||||
callback(res.data.sources);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function activeCalendar(self)
|
||||
{
|
||||
var $self = $(self);
|
||||
var id = $self.data('id');
|
||||
var active = $self.prop('checked') ? 1 : 0;
|
||||
$.post('{{url("active")}}',{id:id,active:active}, function(res) {
|
||||
if (res.status) {
|
||||
calendar.fullCalendar('refetchEvents');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
|
||||
function dateFormat(event)
|
||||
{
|
||||
var allDay = !event.start.hasTime();
|
||||
var start = event.start.format();
|
||||
var end = event.end == null ? start : event.end.format();
|
||||
return {
|
||||
start:start,
|
||||
end:end,
|
||||
allDay:allDay
|
||||
};
|
||||
}
|
||||
|
||||
function getPanelHeight() {
|
||||
var position = $('#calendar-wrapper').position();
|
||||
var iframeHeight = $(window).height();
|
||||
return iframeHeight - position.top - 23;
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$(window).resize(function() {
|
||||
$('#calendar').fullCalendar('option', 'height', getPanelHeight());
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style type='text/css'>
|
||||
|
||||
#calendar { position: relative; }
|
||||
.fc-toolbar h2 { font-size: 24px; }
|
||||
|
||||
#loading { background:red; color:#fff; padding:3px; position:absolute; top:5px;right:5px;z-index:9999;}
|
||||
|
||||
.category .tree ul {padding:5px 0;}
|
||||
.category .tree ul li.me {padding:5px; color:#666;}
|
||||
.category .tree ul li ul {padding:5px 0 0;}
|
||||
.category .tree ul li ul li {padding:5px 5px 0 5px; border:0;border-top:1px solid #eee;}
|
||||
|
||||
</style>
|
||||
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-2 padder-r-n">
|
||||
|
||||
<div id="calendars"></div>
|
||||
|
||||
<div class="category m-t m-b">
|
||||
|
||||
<div class="tree">
|
||||
|
||||
<ul class="list-group">
|
||||
|
||||
<li class="list-group-item"><strong>下属日历</strong></li>
|
||||
|
||||
@if($underling['role'])
|
||||
@foreach($underling['role'] as $role_id => $role)
|
||||
<li class="list-group-item">
|
||||
{{$role['title']}}
|
||||
<ul>
|
||||
@if($underling['user'][$role_id])
|
||||
@foreach($underling['user'][$role_id] as $user)
|
||||
<li class="list-group-item"><a href="{{url('index',['user_id'=>$user['id']])}}">{{$user['name']}}</a></li>
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
</li>
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-10" id="calendar-wrapper">
|
||||
<div id='loading' style='display:none;'>加载数据...</div>
|
||||
<!--
|
||||
<div class="fc-overlay">
|
||||
<div class="panel bg-white b-a pos-rlt">
|
||||
<span class="arrow"></span>
|
||||
<div class="h4 font-thin m-b-sm" id="overlay-title"></div>
|
||||
<div class="line b-b b-light"></div>
|
||||
<div><i class="fa fa-calendar text-muted m-r-xs"></i><span id="overlay-start"></span></div>
|
||||
<div><i class="fa fa-clock-o text-muted m-r-xs"></i><span id="overlay-end"></span></div>
|
||||
<div><i class="fa fa-map-marker text-muted m-r-xs"></i><span id="overlay-location"></span></div>
|
||||
<div class="m-t-sm" id="overlay-description"></div>
|
||||
<div class="m-t-sm" id="overlay-url"></div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div id='calendar'></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,382 @@
|
||||
<ul class="nav nav-tabs m-t padder" role="tablist">
|
||||
<li class="active"><a href="#tabs-1" data-toggle="tab">事件</a></li>
|
||||
<li><a href="#tabs-2" data-toggle="tab">重复</a></li>
|
||||
<li><a href="#tabs-3" data-toggle="tab">提醒</a></li>
|
||||
<li><a href="#tabs-4" data-toggle="tab">共享</a></li>
|
||||
</ul>
|
||||
|
||||
<form method="post" id="myform" name="myform">
|
||||
|
||||
<div class="tab-content">
|
||||
|
||||
<div class="tab-pane active" id="tabs-1">
|
||||
|
||||
<div class="table-responsive">
|
||||
|
||||
<table class="table table-form m-b-none">
|
||||
<tr>
|
||||
<td width="15%" align="right">主题</td>
|
||||
<td align="left">
|
||||
<input type="text" class="form-control input-sm" id="title" name="title" value="{{$options['title']}}" size="40" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">地点</td>
|
||||
<td align="left">
|
||||
<input type="text" class="form-control input-sm" name="location" value="{{$options['location']}}" size="40" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">日历</td>
|
||||
<td align="left">
|
||||
<select class="form-control input-inline input-sm" id="calendarid" name="calendarid">
|
||||
@if($options['calendar_options']) @foreach($options['calendar_options'] as $calendar)
|
||||
<option value="{{$calendar['id']}}" @if($calendar['id']==$options['calendarid']) selected @endif >{{$calendar['displayname']}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">访问规则</td>
|
||||
<td>
|
||||
<select class="form-control input-inline input-sm" name="accessclass">
|
||||
@if($options['access_class_options']) @foreach($options['access_class_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if($key==$options['accessclass']) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
|
||||
<label for="allday_checkbox" class="checkbox-inline"><input type="checkbox" id="allday_checkbox" name="allday" @if($options['allday']=='true') checked @endif> 全天事件</label>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">开始时间</td>
|
||||
<td align="left">
|
||||
<span id="time">
|
||||
<input type="text" onfocus="datePicker({dateFmt:'yyyy-MM-dd'})"; class="form-control input-inline input-sm" name="from" value="{{$options['startdate']}}" />
|
||||
<input type="text" onfocus="datePicker({dateFmt:'HH:mm'})"; class="form-control input-inline input-sm" id="fromtime" name="fromtime" value="{{$options['starttime']}}" />
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">结束时间</td>
|
||||
<td align="left">
|
||||
<input type="text" onfocus="datePicker({dateFmt:'yyyy-MM-dd'})"; class="form-control input-inline input-sm" name="to" value="{{$options['enddate']}}" />
|
||||
<input type="text" onfocus="datePicker({dateFmt:'HH:mm'})"; class="form-control input-inline input-sm" id="totime" name="totime" value="{{$options['endtime']}}" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">附件列表</td>
|
||||
<td align="left">
|
||||
@include('attachment/add')
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">描述</td>
|
||||
<td align="left">
|
||||
<textarea class="form-control" rows="3" name="description">{{$options['description']}}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="tabs-2">
|
||||
|
||||
<table class="table table-form">
|
||||
<tr>
|
||||
<td width="15%" align="right">重复</td>
|
||||
<td>
|
||||
<select id="repeat" class="form-control input-sm" name="repeat">
|
||||
@if($options['repeat_options']) @foreach($options['repeat_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if($repeats['repeat']==$key) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tbody id="advanced_options_repeating" style="display:none;">
|
||||
<tr id="advanced_month" style="display:none;">
|
||||
<td> </td>
|
||||
<td>
|
||||
<select class="form-control input-inline input-sm" id="advanced_month_select" name="advanced_month_select">
|
||||
@if($options['repeat_month_options']) @foreach($options['repeat_month_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if($repeats['repeat_month']==$key) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="advanced_year" style="display:none;">
|
||||
<td> </td>
|
||||
<td>
|
||||
<select class="form-control input-inline input-sm" id="advanced_year_select" name="advanced_year_select">
|
||||
@if($options['repeat_year_options']) @foreach($options['repeat_year_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if($repeats['repeat_year']==$key) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="advanced_weekofmonth" style="display:none;">
|
||||
<td> </td>
|
||||
<td id="weekofmonthcheckbox">
|
||||
<select class="form-control input-inline input-sm" id="weekofmonthoptions" name="weekofmonthoptions">
|
||||
@if($options['repeat_weekofmonth_options']) @foreach($options['repeat_weekofmonth_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if($repeats['repeat_weekofmonth']==$key) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="advanced_weekday" style="display:none;">
|
||||
<td> </td>
|
||||
<td id="weeklycheckbox">
|
||||
<select class="form-control input-inline input-sm" id="weeklyoptions" name="weeklyoptions[]" multiple="multiple" style="width: 150px;" title="选择星期">
|
||||
@if($options['repeat_weekly_options']) @foreach($options['repeat_weekly_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if(in_array($key,$repeats['repeat_weekdays'])) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="advanced_byyearday" style="display:none;">
|
||||
<td> </td>
|
||||
<td id="byyeardaycheckbox">
|
||||
<select class="form-control input-inline input-sm" id="byyearday" name="byyearday[]" multiple="multiple" title="选择日">
|
||||
@if($options['repeat_byyearday_options']) @foreach($options['repeat_byyearday_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if(is_array($repeats['repeat_byyearday']) && in_array($key, $repeats['repeat_byyearday'])) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select> 选择每年时间发生天数
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="advanced_bymonthday" style="display:none;">
|
||||
<td> </td>
|
||||
<td id="bymonthdaycheckbox">
|
||||
<select class="form-control input-inline input-sm" id="bymonthday" name="bymonthday[]" multiple="multiple" title="选择日">
|
||||
@if($options['repeat_bymonthday_options']) @foreach($options['repeat_bymonthday_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if(is_array($repeats['repeat_bymonthday']) && in_array($key,$repeats['repeat_bymonthday'])) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select> 选择每个月事件发生的天
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="advanced_bymonth" style="display:none;">
|
||||
<td> </td>
|
||||
<td id="bymonthcheckbox">
|
||||
<select class="form-control input-inline input-sm" id="bymonth" name="bymonth[]" multiple="multiple" title="选择月份">
|
||||
@if($options['repeat_bymonth_options']) @foreach($options['repeat_bymonth_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if(is_array($repeats['repeat_bymonth']) && in_array($key,$repeats['repeat_bymonth'])) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="advanced_byweekno" style="display:none;">
|
||||
<td> </td>
|
||||
<td id="bymonthcheckbox">
|
||||
<select class="form-control input-inline input-sm" id="byweekno" name="byweekno[]" multiple="multiple" title="选择星期">
|
||||
@if($options['repeat_byweekno_options']) @foreach($options['repeat_byweekno_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if(is_array($repeats['repeat_byweekno']) && in_array($key,$repeats['repeat_byweekno'])) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select> 每年时间发生的星期
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">间隔</td>
|
||||
<td>
|
||||
<input type="number" class="form-control input-inline input-sm" min="1" size="4" max="1000" value="{{$repeats['repeat_interval']}}" name="interval">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">结束</td>
|
||||
<td>
|
||||
<select class="form-control input-inline input-sm" id="end" name="end">
|
||||
@if($options['repeat_end_options']) @foreach($options['repeat_end_options'] as $key => $value)
|
||||
<option value="{{$key}}" @if($repeats['repeat_end']==$key) selected="selected" @endif >{{$value}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="byoccurrences" style="display:none;">
|
||||
<td> </td>
|
||||
<td>
|
||||
<input type="number" class="form-control input-inline input-sm" min="1" max="99999" id="until_count" name="byoccurrences" value="{{$repeats['repeat_count']}}"> 发生
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="bydate" style="display:none;">
|
||||
<td> </td>
|
||||
<td>
|
||||
<input type="text" class="form-control input-inline input-sm" data-toggle="date" value="{{$repeats['repeat_date']}}">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="tabs-3">
|
||||
|
||||
<table class="table table-form">
|
||||
<tr>
|
||||
<td width="15%" align="right">提醒</td>
|
||||
<td>
|
||||
@if($options['valarm_options']) @foreach($options['valarm_options'] as $key => $valarms)
|
||||
<div id="valarm_{{$key}}">
|
||||
<select class="form-control input-sm" id="valarm" name="valarm_{{$key}}">
|
||||
<option value=""> - </option>
|
||||
@if($valarms) @foreach($valarms as $k => $v)
|
||||
<option value="{{$k}}" @if($options['valarm']==$k) selected="selected" @endif >{{$v}}</option>
|
||||
@endforeach @endif
|
||||
</select>
|
||||
</div>
|
||||
@endforeach @endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tabs-4">
|
||||
|
||||
<table class="table table-form">
|
||||
<tr>
|
||||
<td width="15%" align="right">共享对象</td>
|
||||
<td>{{App\Support\Dialog::search($share, 'id=receive_id&name=receive_name&multi=1')}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="lastmodified" value="{{$options['lastmodified']}}" />
|
||||
<input type="hidden" name="id" value="{{$options['id']}}" />
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function()
|
||||
{
|
||||
looktime();
|
||||
@if($repeats['repeat'])
|
||||
repeat('repeat');
|
||||
@endif
|
||||
|
||||
@if($repeats['repeat_end'])
|
||||
repeat('end');
|
||||
@endif
|
||||
|
||||
$('#end').change(function() {
|
||||
repeat('end');
|
||||
});
|
||||
$('#repeat').change(function() {
|
||||
repeat('repeat');
|
||||
});
|
||||
$('#advanced_year').change(function() {
|
||||
repeat('year');
|
||||
});
|
||||
$('#advanced_month').change(function() {
|
||||
repeat('month');
|
||||
});
|
||||
|
||||
$('#allday_checkbox').click(function() {
|
||||
looktime();
|
||||
});
|
||||
});
|
||||
|
||||
function looktime() {
|
||||
|
||||
$("#valarm_time").css('display', '');
|
||||
$("#valarm_day").css('display', 'none');
|
||||
|
||||
if ($('#allday_checkbox').is(':checked')) {
|
||||
$("#fromtime").attr('disabled',true).addClass('disabled');
|
||||
$("#totime").attr('disabled',true).addClass('disabled');
|
||||
$("#valarm_time").css('display', 'none');
|
||||
$("#valarm_day").css('display', '');
|
||||
} else {
|
||||
$("#fromtime").attr('disabled',false).removeClass('disabled');
|
||||
$("#totime").attr('disabled',false).removeClass('disabled');
|
||||
$("#valarm_time").css('display', '');
|
||||
$("#valarm_day").css('display', 'none');
|
||||
}
|
||||
}
|
||||
|
||||
function repeat(key) {
|
||||
if (key == 'end') {
|
||||
$('#byoccurrences').css('display', 'none');
|
||||
$('#bydate').css('display', 'none');
|
||||
if ($('#end option:selected').val() == 'count') {
|
||||
$('#byoccurrences').css('display', '');
|
||||
}
|
||||
if ($('#end option:selected').val() == 'date') {
|
||||
$('#bydate').css('display', '');
|
||||
}
|
||||
}
|
||||
if (key == 'repeat') {
|
||||
$('#advanced_month').css('display', 'none');
|
||||
$('#advanced_weekday').css('display', 'none');
|
||||
$('#advanced_weekofmonth').css('display', 'none');
|
||||
$('#advanced_byyearday').css('display', 'none');
|
||||
$('#advanced_bymonth').css('display', 'none');
|
||||
$('#advanced_byweekno').css('display', 'none');
|
||||
$('#advanced_year').css('display', 'none');
|
||||
$('#advanced_bymonthday').css('display', 'none');
|
||||
|
||||
$('#advanced_options_repeating').css('display', '');
|
||||
|
||||
if ($('#repeat option:selected').val() == 'monthly') {
|
||||
$('#advanced_month').css('display', '');
|
||||
repeat('month');
|
||||
}
|
||||
|
||||
if ($('#repeat option:selected').val() == 'weekly') {
|
||||
$('#advanced_weekday').css('display', '');
|
||||
}
|
||||
|
||||
if ($('#repeat option:selected').val() == 'yearly') {
|
||||
$('#advanced_year').css('display', '');
|
||||
repeat('year');
|
||||
}
|
||||
|
||||
if ($('#repeat option:selected').val() == 'doesnotrepeat') {
|
||||
$('#advanced_options_repeating').css('display', 'none');
|
||||
}
|
||||
}
|
||||
|
||||
if (key == 'month') {
|
||||
$('#advanced_weekday').css('display', 'none');
|
||||
$('#advanced_weekofmonth').css('display', 'none');
|
||||
if ($('#advanced_month_select option:selected').val() == 'weekday') {
|
||||
$('#advanced_weekday').css('display', '');
|
||||
$('#advanced_weekofmonth').css('display', '');
|
||||
}
|
||||
}
|
||||
|
||||
if (key == 'year') {
|
||||
$('#advanced_weekday').css('display', 'none');
|
||||
$('#advanced_byyearday').css('display', 'none');
|
||||
$('#advanced_bymonth').css('display', 'none');
|
||||
$('#advanced_byweekno').css('display', 'none');
|
||||
$('#advanced_bymonthday').css('display', 'none');
|
||||
if ($('#advanced_year_select option:selected').val() == 'byyearday') {
|
||||
//$('#advanced_byyearday').css('display', '');
|
||||
}
|
||||
if ($('#advanced_year_select option:selected').val() == 'byweekno') {
|
||||
$('#advanced_byweekno').css('display', '');
|
||||
}
|
||||
if ($('#advanced_year_select option:selected').val() == 'bydaymonth') {
|
||||
$('#advanced_bymonth').css('display', '');
|
||||
$('#advanced_bymonthday').css('display', '');
|
||||
$('#advanced_weekday').css('display', '');
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,82 @@
|
||||
<table class="table table-form">
|
||||
<tr>
|
||||
<td width="15%" align="right">主题</td>
|
||||
<td align="left">
|
||||
{{$options['title']}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">地点</td>
|
||||
<td align="left">
|
||||
{{$options['location']}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">共享对象</td>
|
||||
<td>
|
||||
{{$share['receive_name']}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">日历</td>
|
||||
<td align="left">
|
||||
{{$calendar['displayname']}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">访问规则</td>
|
||||
<td>
|
||||
@if($options['access_class_options']) @foreach($options['access_class_options'] as $key => $value)
|
||||
@if($key==$options['accessclass']) {{$value}} @endif
|
||||
@endforeach @endif
|
||||
@if($options['allday']=='true') 全天事件 @endif
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">开始时间</td>
|
||||
<td align="left">
|
||||
<span id="time">
|
||||
{{$options['startdate']}}
|
||||
{{$options['starttime']}}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">结束时间</td>
|
||||
<td align="left">
|
||||
{{$options['enddate']}}
|
||||
{{$options['endtime']}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">附件管理</td>
|
||||
@if($attachList['main'])
|
||||
<td>
|
||||
|
||||
@if($attachList['main'])
|
||||
@foreach($attachList['main'] as $k => $v)
|
||||
<div class="uploadify-queue-item">
|
||||
<span class="fileName"><a href="{{url('file/attachment/file',['model'=>$attachList['model'],'id'=>$v['id']])}}">{{$v['title']}}</a></span>
|
||||
<span class="fileSize"> ({{human_filesize($v['size'])}})</span>
|
||||
</div><div class="clear"></div>
|
||||
@endforeach
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">描述</td>
|
||||
<td align="left">
|
||||
{{$options['description']}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
Reference in New Issue
Block a user