File Manager
<style type="text/css" scoped>
.fc-event {
min-height: 20px;
}
.fc-event-icons {
text-align: right;
float: right;
position: absolute;
bottom: 0;
right: 0;
}
.information {
display: block;
}
.error {
display: block;
}
.fc-event-container a {
color: white;
}
.text_right {
text-align: right;
}
.form_row {
padding: 2px 0;
height: auto;
}
.form_prompt {
text-align: right;
}
.form_input {
}
a.goto_date {
cursor: pointer; cursor: hand;
}
#find_results_panel table {
width: 100%;
}
#find_results_panel th {
padding-right: 1em;
}
#find_results_panel td {
padding-right: 1em;
}
</style>
{module_action_link action='admin_ajax_fetchevents' jsfriendly=1 assign=fetch_url}
<script type="text/javascript">
function closeDialog(sel) {
try {
if( $(sel).dialog('isOpen') ) $(sel).dialog('close');
} catch( err ) {
// nothing.
}
}
function formatDate(date,show_time) {
var out = date.toLocaleDateString();
if( show_time ) {
out = out + ' ';
out = out + date.toLocaleTimeString();
}
return out;
}
function createCookie(name, value, days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
} else {
expires = "";
}
document.cookie = escape(name) + "=" + escape(JSON.stringify(value)) + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = escape(name) + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0) {
var t = unescape(c.substring(nameEQ.length, c.length));
t = jQuery.parseJSON(t);
return t;
}
}
return null;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}
$(document).ready(function(){
// restore our selected date from a cookie.
var cur_date = new Date();
var tmp = readCookie('calendar_date');
if( tmp != null ) cur_date = new Date(tmp);
$('#calendarview').fullCalendar({
events: {
url: '{$fetch_url}&showtemplate=false',
type: 'GET',
data: {
'{$actionid}showchildren': 1
},
error: function() {
alert('{$mod->Lang('error_fetching_events')}');
},
},
year: cur_date.getFullYear(),
month: cur_date.getMonth(),
date: cur_date.getDate(),
header: {
left: 'prev,next,today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
eventColor: '{$dflt_bgcolor}',
eventTextColor: '{$dflt_fgcolor}',
monthNames: {$datestrings.monthNames},
monthNamesShort: {$datestrings.monthNamesShort},
dayNames: {$datestrings.dayNames},
dayNamesShort: {$datestrings.dayNamesShort},
buttonText: {
today: '{$text_today}',
week: '{$text_week}',
month: '{$text_month}',
day: '{$text_day}'
},
theme: true,
firstDay: {$firstdayofweek},
defaultEventMinutes: 15,
slotMinutes: 15,
editable: true,
viewRender: function( view, element ) {
cur_date = $('#calendarview').fullCalendar('getDate');
createCookie('calendar_date',cur_date,7);
},
viewDestroy: function(view) {
closeDialog('#eventpreview');
closeDialog('#find_panel');
closeDialog('#find_results_panel');
},
eventClick: function(event, jsEvent, view) {
$('#event_start').html(formatDate(event.start,!event.allDay));
$('#event_desc').html(event.summary);
$('#eventpreview .parent_block').hide();
$('#eventpreview .child_block').hide();
if( event.child ) {
$('#eventpreview .child_block').show();
}
else if( event.recurs ) {
$('#eventpreview .child_block').hide();
$('#eventpreview .parent_block').show();
}
if( event.allDay ) {
$('#eventpreview .end_block').hide();
$('#eventpreview .allday_block').show();
}
else {
$('#eventpreview .allday_block').hide();
if( event.end ) {
$('#eventpreview .end_block').show();
$('#event_end').html(formatDate(event.end,!event.allDay));
}
else {
$('#eventpreview .end_block').hide();
}
}
var tmp_buttons = [{
text: '{$mod->Lang('cal_edit')}',
click: function() {
var url = '{module_action_link action=admin_add_event event_id=xx jsfriendly=1}';
url = url.replace('xx',event._id);
location.href = url;
}
}];
if( event.child ) {
tmp_buttons.push({
text: '{$mod->Lang('editparent')}',
click: function() {
var url = '{module_action_link action=admin_add_event event_id=xx jsfriendly=1}';
url = url.replace('xx',event.child);
location.href = url;
}
});
}
tmp_buttons.push({
text: '{$mod->Lang('delete')}',
click: function() {
var cont = this;
$.ajax({
type: 'POST',
url: '{module_action_link action=admin_ajax_deleteevent jsfriendly=1}&showtemplate=false',
dataType: 'json',
data: {
'{$actionid}event_id': event._id,
'{$actionid}delete_children': 0 // todo, make this an option
},
success: function( data ) {
if( data.status == 0 ) {
alert(data.msg);
} else {
// make sure it's not visible
$('#calendarview').fullCalendar('removeEvents',event._id);
}
closeDialog(cont);
},
error: function(jqXHR, textStatus, errorThrown) {
alert('fail '+textStatus);
closeDialog(cont);
}
});
}
});
tmp_buttons.push({
text: '{$mod->Lang('cancel')}',
click: function() {
$(this).dialog('close');
}
});
$('#eventpreview').dialog({
title: event.title,
width: 'auto',
height: 'auto',
position: {
my: 'center bottom',
at: 'top center',
of: jsEvent
},
buttons: tmp_buttons
});
},
eventResize: function(ev, dayDelta, minuteDelta, revertFunc ) {
// an event time has been extended
$.ajax({
type: 'POST',
url: '{module_action_link action=admin_ajax_editevent jsfriendly=1}&showtemplate=false',
dataType: 'json',
data: {
'{$actionid}event_id': ev.id,
'{$actionid}dayDelta': dayDelta,
'{$actionid}minuteDelta': minuteDelta,
},
success: function( data ) {
if( data.status == 0 ) {
alert(data.msg);
revertFunc();
}
},
fail: function( data ) {
alert('fail');
revertFunc();
}
});
},
eventDrop: function(ev, dayDelta, minuteDelta, allDay, revertFunc) {
// an event has been moved
$.ajax({
type: 'POST',
url: '{module_action_link action=admin_ajax_editevent jsfriendly=1}&showtemplate=false',
dataType: 'json',
data: {
'{$actionid}event_id': ev.id,
'{$actionid}dayDelta': dayDelta,
'{$actionid}minuteDelta': minuteDelta,
'{$actionid}allDay': allDay ? 1 : 0,
'{$actionid}move': 1
},
success: function( data ) {
if( data.status == 0 ) {
alert(data.msg);
revertFunc();
}
},
fail: function( data ) {
alert('fail');
revertFunc();
}
});
}
});
$('a#add_event').click(function(){
var d = $('#calendarview').fullCalendar('getDate').getTime()/1000;
$(this).attr('href',$(this).attr('href').replace('xxxx',d));
});
$('a#find_event').click(function(){
var t = readCookie('cgcal_find');
if( t != null ) {
for( var k in t ) {
var s = '#find_panel :input[name="' + k + '"]';
$(s).val(t[k]);
}
}
$('#find_panel').dialog({
width: 375,
buttons: [
{
text: '{$mod->Lang('submit')}',
click: function() {
// get the data
var data = {};
var f = 0;
$('#find_panel :input').each(function(){
var n = $(this).attr('name');
var v = $(this).val();
if( v ) {
data[n] = v;
f = 1;
}
})
// save it in a cookie
if( f ) createCookie('cgcal_find',data,7);
// close the dialog
$(this).dialog('close');
$.ajax({
url: '{$fetch_url}&showtemplate=false',
type: 'GET',
dataType: 'json',
data: {
'{$actionid}keyword': data.keyword,
'{$actionid}category': data.category,
'{$actionid}showchildren': data.showchildren,
'{$actionid}when': data.when,
'{$actionid}limit': 10
},
success: function( data ) {
if( data.status == 0 ) {
alert(data.msg);
} else {
// got 0 or more results
if( data.length == 0 ) {
$('#find_results_none').show();
$('#find_results_area').hide();
}
else {
$('#find_results_none').hide();
$('#find_results_area').show();
$('#find_results_data').html('');
$.each(data, function(idx,row) {
// display each of the results of the row.
var s_date = new Date(row.start * 1000);
var e_date = null;
if( row.end ) e_date = new Date(row.end * 1000);
var out = $('<tr></tr>');
out.append('<td><a class="edit_event" href="'+row.edit_url+'" title="{$mod->Lang('edit_event')}">'+row.title+'</a></td>');
out.append('<td>' + formatDate(s_date,!row.allDay) + '</td>');
if( e_date ) {
out.append('<td>' + formatDate(e_date,!row.allDay) + '</td>');
} else {
out.append('<td></td>');
}
out.append('<td><a class="goto_date" data-date="'+s_date.toString()+'">{cgimage image='icons/system/view.gif' alt=$mod->Lang('goto_date')}</a></td>');
out.append('<td><a class="edit_event" href="'+row.edit_url+'">{cgimage class='edit_event' image='icons/system/edit.gif' alt=$mod->Lang('edit_event')}</a></td>');
$('#find_results_data').append(out);
});
} /* else */
}
}
});
// open our results dialog
$('#find_results_panel').dialog({
width: 'auto'
})
}
},
{
text: '{$mod->Lang('cancel')}',
click: function() {
$(this).dialog('close');
}
}
]
});
});
$(document).on('click','a.goto_date',function(){
closeDialog('#find_results_panel');
var date = $(this).data('date');
if( !date ) return false;
date = new Date(date);
$('#calendarview').fullCalendar('gotoDate',date);
})
$('#page_tabs > div').click(function(){
$('#calendarview').fullCalendar('render');
closeDialog('#eventpreview');
closeDialog('#find_panel');
closeDialog('#find_results_panel');
});
});
</script>
<div class="pageoptions" style="margin-bottom: 0.5em">
<a id="add_event" href="{module_action_link action=admin_add_event start=xxxx urlonly=1}">{cgimage image='icons/system/newobject.gif' alt=$mod->Lang('cal_add_event') class='systemicon'} {$mod->Lang('cal_add_event')}...</a>
<a id="import_events" href="{module_action_link action=admin_import urlonly=1}">{cgimage image='icons/system/import.gif' alt=$mod->Lang('cal_import_events') class='systemicon'} {$mod->Lang('cal_import_events')}</a>
<a id="find_event">{cgimage image='icons/system/view.gif' alt=$mod->Lang('find')} {$mod->Lang('find')}</a>
<div style="float: right; text-align: right;">{cge_helptag key='eventstab'}</div>
</div>
{* this is where the fullcalendar goes *}
<div id="calendarview"></div>
{* other stuff *}
{* the popup dialog when clicking on an event *}
<div id="eventpreview" style="display: none;" title="{$mod->Lang('event_action')}">
<div class="c_full allday_block">
<strong>{$mod->Lang('allday_event')}</strong>
</div>
<div class="c_full start_block">
<p class="grid_3 text_right">{$mod->Lang('start')}:</p>
<p id="event_start" class="grid_9 cf"></p>
</div>
<div class="c_full end_block">
<p class="grid_3 text_right">{$mod->Lang('end')}:</p>
<p id="event_end" class="grid_9 cf"></p>
</div>
<div class="c_full child_block">
<p class="grid_3 text_right" style="color: red;">{$mod->Lang('note')}:</p>
<p class="grid_9 cf">{$mod->Lang('title_child_event')}</p>
</div>
<div class="c_full parent_block">
<p class="grid_3 text_right" style="color: red;">{$mod->Lang('note')}:</p>
<p class="grid_9 cf">{$mod->Lang('title_parent_event')}</p>
</div>
<div class="c_full desc_block">
<p id="event_desc" class="grid_9 cf"></p>
</div>
</div>
<div id="find_panel" style="display: none;" title="{$mod->Lang('find')}">
<div class="information">{$mod->Lang('info_find_events')}</div>
<div class="c_full form_row">
<p class="grid_3 form_prompt">{$mod->Lang('keywords')}:</p>
<p class="grid_9 form_input">
<input type="text" name="keyword" maxlength="255" value=""/>
{cge_helptag key='find_title'}
</p>
</div>
{if isset($categories)}
<div class="c_full">
<p class="grid_3 form_prompt">{$mod->Lang('category')}:</p>
<p class="grid_9 form_input">
<select name="category">
{html_options options=$categories}
</select>
</p>
</div>
{/if}
<div class="c_full">
<p class="grid_3 form_prompt">{$mod->Lang('find_showchildren')}:</p>
<p class="grid_9 form_input">
{cge_yesno_options name='showchildren'}
{cge_helptag key='find_showchildren'}
</p>
</div>
<div class="c_full">
<p class="grid_3 form_prompt">{$mod->Lang('find_when')}:</p>
<p class="grid_9 form_input">
<select name="when">
<option value="any">{$mod->Lang('any')}</option>
<option value="past">{$mod->Lang('past')}</option>
<option value="future">{$mod->Lang('future')}</option>
</select> {cge_helptag key='hfind_when'}
</p>
</div>
</div>
<div id="find_results_panel" style="display: none;" title="{$mod->Lang('results')}...">
<div id="find_results_none" class="red">{$mod->Lang('noresults')}</div>
<div id="find_results_area">
<div class="information">{$mod->Lang('info_find_results')}</div>
<table class="ui-widget" id="find_results_table">
<thead class="ui-widget-header">
<th>{$mod->Lang('cal_title')}</th>
<th>{$mod->Lang('start')}</th>
<th>{$mod->Lang('end')}</th>
<th></th>
<th></th>
</thead class="ui-widget-content">
<tbody id="find_results_data">
</tbody>
</table>
</div>
</div>
{cge_helphandler}
<div style="display: none;">
{cge_helpcontent key='eventstab' text=$mod->Lang('help_eventstab')}
{cge_helpcontent key='find_title' text=$mod->Lang('help_find_event_keyword')}
{cge_helpcontent key='find_showchildren' text=$mod->Lang('help_find_showchildren')}
{cge_helpcontent key='hfind_when' text=$mod->Lang('help_find_when')}
</div>
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com