123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928 |
- /**
- * Copyright (c) 2012 Georg Ehrke <ownclouddev at georgswebsite dot de>
- * Copyright (c) 2011 Bart Visscher <bartv@thisnet.nl>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
- Calendar={
- UI:{
- loading: function(isLoading){
- if (isLoading){
- $('#loading').show();
- }else{
- $('#loading').hide();
- }
- },
- startEventDialog:function(){
- Calendar.UI.loading(false);
- $('.tipsy').remove();
- $('#calendar_holder').fullCalendar('unselect');
- Calendar.UI.lockTime();
- $( "#from" ).datepicker({
- dateFormat : 'dd-mm-yy'
- });
- $( "#to" ).datepicker({
- dateFormat : 'dd-mm-yy'
- });
- $('#fromtime').timepicker({
- showPeriodLabels: false
- });
- $('#totime').timepicker({
- showPeriodLabels: false
- });
- $('#category').multiple_autocomplete({source: categories});
- Calendar.UI.repeat('init');
- $('#end').change(function(){
- Calendar.UI.repeat('end');
- });
- $('#repeat').change(function(){
- Calendar.UI.repeat('repeat');
- });
- $('#advanced_year').change(function(){
- Calendar.UI.repeat('year');
- });
- $('#advanced_month').change(function(){
- Calendar.UI.repeat('month');
- });
- $( "#event" ).tabs({ selected: 0});
- $('#event').dialog({
- width : 500,
- height: 600,
- close : function(event, ui) {
- $(this).dialog('destroy').remove();
- }
- });
- },
- newEvent:function(start, end, allday){
- start = Math.round(start.getTime()/1000);
- if (end){
- end = Math.round(end.getTime()/1000);
- }
- if($('#event').dialog('isOpen') == true){
- // TODO: save event
- $('#event').dialog('destroy').remove();
- }else{
- Calendar.UI.loading(true);
- $('#dialog_holder').load(OC.filePath('calendar', 'ajax/event', 'new.form.php'), {start:start, end:end, allday:allday?1:0}, Calendar.UI.startEventDialog);
- }
- },
- editEvent:function(calEvent, jsEvent, view){
- if (calEvent.editable == false || calEvent.source.editable == false) {
- return;
- }
- var id = calEvent.id;
- if($('#event').dialog('isOpen') == true){
- // TODO: save event
- $('#event').dialog('destroy').remove();
- }else{
- Calendar.UI.loading(true);
- $('#dialog_holder').load(OC.filePath('calendar', 'ajax/event', 'edit.form.php'), {id: id}, Calendar.UI.startEventDialog);
- }
- },
- submitDeleteEventForm:function(url){
- var post = $( '#event_form' ).serialize();
- $('#errorbox').empty();
- Calendar.UI.loading(true);
- $.post(url, post, function(data){
- Calendar.UI.loading(false);
- if(data.status == 'success'){
- $('#calendar_holder').fullCalendar('removeEvents', $('#event_form input[name=id]').val());
- $('#event').dialog('destroy').remove();
- } else {
- $('#errorbox').html(t('calendar', 'Deletion failed'));
- }
- }, "json");
- },
- validateEventForm:function(url){
- var post = $( "#event_form" ).serialize();
- $("#errorbox").empty();
- Calendar.UI.loading(true);
- $.post(url, post,
- function(data){
- Calendar.UI.loading(false);
- if(data.status == "error"){
- var output = missing_field + ": <br />";
- if(data.title == "true"){
- output = output + missing_field_title + "<br />";
- }
- if(data.cal == "true"){
- output = output + missing_field_calendar + "<br />";
- }
- if(data.from == "true"){
- output = output + missing_field_fromdate + "<br />";
- }
- if(data.fromtime == "true"){
- output = output + missing_field_fromtime + "<br />";
- }
- if(data.to == "true"){
- output = output + missing_field_todate + "<br />";
- }
- if(data.totime == "true"){
- output = output + missing_field_totime + "<br />";
- }
- if(data.endbeforestart == "true"){
- output = output + missing_field_startsbeforeends + "!<br/>";
- }
- if(data.dberror == "true"){
- output = "There was a database fail!";
- }
- $("#errorbox").html(output);
- } else
- if(data.status == 'success'){
- $('#event').dialog('destroy').remove();
- $('#calendar_holder').fullCalendar('refetchEvents');
- }
- },"json");
- },
- moveEvent:function(event, dayDelta, minuteDelta, allDay, revertFunc){
- $('.tipsy').remove();
- Calendar.UI.loading(true);
- $.post(OC.filePath('calendar', 'ajax/event', 'move.php'), { id: event.id, dayDelta: dayDelta, minuteDelta: minuteDelta, allDay: allDay?1:0, lastmodified: event.lastmodified},
- function(data) {
- Calendar.UI.loading(false);
- if (data.status == 'success'){
- event.lastmodified = data.lastmodified;
- console.log("Event moved successfully");
- }else{
- revertFunc();
- $('#calendar_holder').fullCalendar('refetchEvents');
- }
- });
- },
- resizeEvent:function(event, dayDelta, minuteDelta, revertFunc){
- $('.tipsy').remove();
- Calendar.UI.loading(true);
- $.post(OC.filePath('calendar', 'ajax/event', 'resize.php'), { id: event.id, dayDelta: dayDelta, minuteDelta: minuteDelta, lastmodified: event.lastmodified},
- function(data) {
- Calendar.UI.loading(false);
- if (data.status == 'success'){
- event.lastmodified = data.lastmodified;
- console.log("Event resized successfully");
- }else{
- revertFunc();
- $('#calendar_holder').fullCalendar('refetchEvents');
- }
- });
- },
- showadvancedoptions:function(){
- $("#advanced_options").slideDown('slow');
- $("#advanced_options_button").css("display", "none");
- },
- showadvancedoptionsforrepeating:function(){
- if($("#advanced_options_repeating").is(":hidden")){
- $('#advanced_options_repeating').slideDown('slow');
- }else{
- $('#advanced_options_repeating').slideUp('slow');
- }
- },
- getEventPopupText:function(event){
- if (event.allDay){
- var timespan = $.fullCalendar.formatDates(event.start, event.end, 'ddd d MMMM[ yyyy]{ -[ddd d] MMMM yyyy}', {monthNamesShort: monthNamesShort, monthNames: monthNames, dayNames: dayNames, dayNamesShort: dayNamesShort}); //t('calendar', "ddd d MMMM[ yyyy]{ -[ddd d] MMMM yyyy}")
- }else{
- var timespan = $.fullCalendar.formatDates(event.start, event.end, 'ddd d MMMM[ yyyy] ' + defaulttime + '{ -[ ddd d MMMM yyyy]' + defaulttime + '}', {monthNamesShort: monthNamesShort, monthNames: monthNames, dayNames: dayNames, dayNamesShort: dayNamesShort}); //t('calendar', "ddd d MMMM[ yyyy] HH:mm{ -[ ddd d MMMM yyyy] HH:mm}")
- // Tue 18 October 2011 08:00 - 16:00
- }
- var html =
- '<div class="summary">' + event.title + '</div>' +
- '<div class="timespan">' + timespan + '</div>';
- if (event.description){
- html += '<div class="description">' + event.description + '</div>';
- }
- return html;
- },
- lockTime:function(){
- if($('#allday_checkbox').is(':checked')) {
- $("#fromtime").attr('disabled', true)
- .addClass('disabled');
- $("#totime").attr('disabled', true)
- .addClass('disabled');
- } else {
- $("#fromtime").attr('disabled', false)
- .removeClass('disabled');
- $("#totime").attr('disabled', false)
- .removeClass('disabled');
- }
- },
- showCalDAVUrl:function(username, calname){
- $('#caldav_url').val(totalurl + '/' + username + '/' + calname);
- $('#caldav_url').val(encodeURI($('#caldav_url').val()));
- $('#caldav_url').show();
- $("#caldav_url_close").show();
- },
- initScroll:function(){
- if(window.addEventListener)
- document.addEventListener('DOMMouseScroll', Calendar.UI.scrollCalendar, false);
- //}else{
- document.onmousewheel = Calendar.UI.scrollCalendar;
- //}
- },
- scrollCalendar:function(event){
- $('.tipsy').remove();
- var direction;
- if(event.detail){
- if(event.detail < 0){
- direction = 'top';
- }else{
- direction = 'down';
- }
- }
- if (event.wheelDelta){
- if(event.wheelDelta > 0){
- direction = 'top';
- }else{
- direction = 'down';
- }
- }
- var scroll = $(document).scrollTop(),
- doc_height = $(document).height(),
- win_height = $(window).height();
- if(direction == 'down' && win_height == (doc_height - scroll)){
- $('#calendar_holder').fullCalendar('next');
- $(document).scrollTop(0);
- event.preventDefault();
- }else if (direction == 'top' && scroll == 0) {
- $('#calendar_holder').fullCalendar('prev');
- $(document).scrollTop(win_height);
- event.preventDefault();
- }
- },
- repeat:function(task){
- if(task=='init'){
- $('#byweekno').multiselect({
- header: false,
- noneSelectedText: $('#advanced_byweekno').attr('title'),
- selectedList: 2,
- minWidth:'auto'
- });
- $('#weeklyoptions').multiselect({
- header: false,
- noneSelectedText: $('#weeklyoptions').attr('title'),
- selectedList: 2,
- minWidth:'auto'
- });
- $('input[name="bydate"]').datepicker({
- dateFormat : 'dd-mm-yy'
- });
- $('#byyearday').multiselect({
- header: false,
- noneSelectedText: $('#byyearday').attr('title'),
- selectedList: 2,
- minWidth:'auto'
- });
- $('#bymonth').multiselect({
- header: false,
- noneSelectedText: $('#bymonth').attr('title'),
- selectedList: 2,
- minWidth:'auto'
- });
- $('#bymonthday').multiselect({
- header: false,
- noneSelectedText: $('#bymonthday').attr('title'),
- selectedList: 2,
- minWidth:'auto'
- });
- Calendar.UI.repeat('end');
- Calendar.UI.repeat('month');
- Calendar.UI.repeat('year');
- Calendar.UI.repeat('repeat');
- }
- if(task == 'end'){
- $('#byoccurrences').css('display', 'none');
- $('#bydate').css('display', 'none');
- if($('#end option:selected').val() == 'count'){
- $('#byoccurrences').css('display', 'block');
- }
- if($('#end option:selected').val() == 'date'){
- $('#bydate').css('display', 'block');
- }
- }
- if(task == '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');
- if($('#repeat option:selected').val() == 'monthly'){
- $('#advanced_month').css('display', 'block');
- Calendar.UI.repeat('month');
- }
- if($('#repeat option:selected').val() == 'weekly'){
- $('#advanced_weekday').css('display', 'block');
- }
- if($('#repeat option:selected').val() == 'yearly'){
- $('#advanced_year').css('display', 'block');
- Calendar.UI.repeat('year');
- }
- if($('#repeat option:selected').val() == 'doesnotrepeat'){
- $('#advanced_options_repeating').slideUp('slow');
- }
- }
- if(task == 'month'){
- $('#advanced_weekday').css('display', 'none');
- $('#advanced_weekofmonth').css('display', 'none');
- if($('#advanced_month_select option:selected').val() == 'weekday'){
- $('#advanced_weekday').css('display', 'block');
- $('#advanced_weekofmonth').css('display', 'block');
- }
- }
- if(task == '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', 'block');
- }
- if($('#advanced_year_select option:selected').val() == 'byweekno'){
- $('#advanced_byweekno').css('display', 'block');
- }
- if($('#advanced_year_select option:selected').val() == 'bydaymonth'){
- $('#advanced_bymonth').css('display', 'block');
- $('#advanced_bymonthday').css('display', 'block');
- $('#advanced_weekday').css('display', 'block');
- }
- }
-
- },
- setViewActive: function(view){
- $('#view input[type="button"]').removeClass('active');
- var id;
- switch (view) {
- case 'agendaWeek':
- id = 'oneweekview_radio';
- break;
- case 'month':
- id = 'onemonthview_radio';
- break;
- case 'list':
- id = 'listview_radio';
- break;
- }
- $('#'+id).addClass('active');
- },
- categoriesChanged:function(newcategories){
- categories = $.map(newcategories, function(v) {return v;});
- console.log('Calendar categories changed to: ' + categories);
- $('#category').multiple_autocomplete('option', 'source', categories);
- },
- Calendar:{
- overview:function(){
- if($('#choosecalendar_dialog').dialog('isOpen') == true){
- $('#choosecalendar_dialog').dialog('moveToTop');
- }else{
- Calendar.UI.loading(true);
- $('#dialog_holder').load(OC.filePath('calendar', 'ajax/calendar', 'overview.php'), function(){
- $('#choosecalendar_dialog').dialog({
- width : 600,
- height: 400,
- close : function(event, ui) {
- $(this).dialog('destroy').remove();
- }
- });
- Calendar.UI.loading(false);
- });
- }
- },
- activation:function(checkbox, calendarid)
- {
- Calendar.UI.loading(true);
- $.post(OC.filePath('calendar', 'ajax/calendar', 'activation.php'), { calendarid: calendarid, active: checkbox.checked?1:0 },
- function(data) {
- Calendar.UI.loading(false);
- if (data.status == 'success'){
- checkbox.checked = data.active == 1;
- if (data.active == 1){
- $('#calendar_holder').fullCalendar('addEventSource', data.eventSource);
- }else{
- $('#calendar_holder').fullCalendar('removeEventSource', data.eventSource.url);
- }
- }
- });
- },
- newCalendar:function(object){
- var tr = $(document.createElement('tr'))
- .load(OC.filePath('calendar', 'ajax/calendar', 'new.form.php'),
- function(){Calendar.UI.Calendar.colorPicker(this)});
- $(object).closest('tr').after(tr).hide();
- },
- edit:function(object, calendarid){
- var tr = $(document.createElement('tr'))
- .load(OC.filePath('calendar', 'ajax/calendar', 'edit.form.php'), {calendarid: calendarid},
- function(){Calendar.UI.Calendar.colorPicker(this)});
- $(object).closest('tr').after(tr).hide();
- },
- deleteCalendar:function(calid){
- var check = confirm("Do you really want to delete this calendar?");
- if(check == false){
- return false;
- }else{
- $.post(OC.filePath('calendar', 'ajax/calendar', 'delete.php'), { calendarid: calid},
- function(data) {
- if (data.status == 'success'){
- var url = 'ajax/events.php?calendar_id='+calid;
- $('#calendar_holder').fullCalendar('removeEventSource', url);
- $('#choosecalendar_dialog').dialog('destroy').remove();
- Calendar.UI.Calendar.overview();
- $('#calendar_holder').fullCalendar('refetchEvents');
- }
- });
- }
- },
- submit:function(button, calendarid){
- var displayname = $.trim($("#displayname_"+calendarid).val());
- var active = $("#edit_active_"+calendarid+":checked").length;
- var description = $("#description_"+calendarid).val();
- var calendarcolor = $("#calendarcolor_"+calendarid).val();
- if(displayname == ''){
- $("#displayname_"+calendarid).css('background-color', '#FF2626');
- $("#displayname_"+calendarid).focus(function(){
- $("#displayname_"+calendarid).css('background-color', '#F8F8F8');
- });
- }
-
- var url;
- if (calendarid == 'new'){
- url = OC.filePath('calendar', 'ajax/calendar', 'new.php');
- }else{
- url = OC.filePath('calendar', 'ajax/calendar', 'update.php');
- }
- $.post(url, { id: calendarid, name: displayname, active: active, description: description, color: calendarcolor },
- function(data){
- if(data.status == 'success'){
- $(button).closest('tr').prev().html(data.page).show().next().remove();
- $('#calendar_holder').fullCalendar('removeEventSource', data.eventSource.url);
- $('#calendar_holder').fullCalendar('addEventSource', data.eventSource);
- if (calendarid == 'new'){
- $('#choosecalendar_dialog > table:first').append('<tr><td colspan="6"><a href="#" onclick="Calendar.UI.Calendar.newCalendar(this);"><input type="button" value="' + newcalendar + '"></a></td></tr>');
- }
- }else{
- $("#displayname_"+calendarid).css('background-color', '#FF2626');
- $("#displayname_"+calendarid).focus(function(){
- $("#displayname_"+calendarid).css('background-color', '#F8F8F8');
- });
- }
- }, 'json');
- },
- cancel:function(button, calendarid){
- $(button).closest('tr').prev().show().next().remove();
- },
- colorPicker:function(container){
- // based on jquery-colorpicker at jquery.webspirited.com
- var obj = $('.colorpicker', container);
- var picker = $('<div class="calendar-colorpicker"></div>');
- //build an array of colors
- var colors = {};
- $(obj).children('option').each(function(i, elm) {
- colors[i] = {};
- colors[i].color = $(elm).val();
- colors[i].label = $(elm).text();
- });
- for (var i in colors) {
- picker.append('<span class="calendar-colorpicker-color ' + (colors[i].color == $(obj).children(":selected").val() ? ' active' : '') + '" rel="' + colors[i].label + '" style="background-color: ' + colors[i].color + ';"></span>');
- }
- picker.delegate(".calendar-colorpicker-color", "click", function() {
- $(obj).val($(this).attr('rel'));
- $(obj).change();
- picker.children('.calendar-colorpicker-color.active').removeClass('active');
- $(this).addClass('active');
- });
- $(obj).after(picker);
- $(obj).css({
- position: 'absolute',
- left: -10000
- });
- }
- },
- Share:{
- currentid: 'false',
- idtype: '',
- activation:function(object,owner,id){
- $.post(OC.filePath('calendar', 'ajax/share', 'activation.php'),{id:id, idtype:'calendar', activation:object.checked?1:0});
- $('#calendar_holder').fullCalendar('refetchEvents');
- },
- dropdown:function(userid, calid){
- $('.calendar_share_dropdown').remove();
- var element = document.getElementById(userid+'_'+calid);
- $('<div class="calendar_share_dropdown"></div>').appendTo(element);
- $.post(OC.filePath('calendar', 'ajax/share', 'dropdown.php'), {calid: calid}, function(data){
- $('.calendar_share_dropdown').html(data);
- $('.calendar_share_dropdown').show('blind');
- $('#share_user').chosen();
- $('#share_group').chosen();
- });
- Calendar.UI.Share.currentid = calid;
- Calendar.UI.Share.idtype = 'calendar';
- },
- share:function(id, idtype, sharewith, sharetype){
- $.post(OC.filePath('calendar', 'ajax/share', 'share.php'),{id:id, idtype:idtype, sharewith:sharewith, sharetype:sharetype}, function(data){
- if(sharetype == 'public'){
- $('#public_token').val(parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=calendar&t='+data.message);
- $('#public_token').css('display', 'block');
- }
- });
- },
- unshare:function(id, idtype, sharewith, sharetype){
- $.post(OC.filePath('calendar', 'ajax/share', 'unshare.php'),{id:id, idtype:idtype, sharewith:sharewith, sharetype:sharetype}, function(){
- if(sharetype == 'public'){
- $('#public_token').val('');
- $('#public_token').css('display', 'none');
- }
- });
- },
- changepermission:function(id, idtype, sharewith, sharetype, permission){
- $.post(OC.filePath('calendar', 'ajax/share', 'changepermission.php'),{id:id, idtype:idtype, sharewith: sharewith, sharetype:sharetype, permission: (permission?1:0)});
- },
- init:function(){
- $('.calendar_share_dropdown').live('mouseleave', function(){
- $('.calendar_share_dropdown').hide('blind', function(){
- $('.calendar_share_dropdown').remove();
- });
- });
- $('#share_user').live('change', function(){
- if($('#sharewithuser_' + $('#share_user option:selected').text()).length == 0){
- Calendar.UI.Share.share(Calendar.UI.Share.currentid, Calendar.UI.Share.idtype, $('#share_user option:selected').text(), 'user');
- var newitem = '<li id="sharewithuser_' + $('#share_user option:selected').text() +'"><input type="checkbox" width="12px" style="visibility:hidden;" title="' + $('#share_user option:selected').text() + '">' + $('#share_user option:selected').text() + '<img src="' + oc_webroot + '/core/img/actions/delete.svg" class="svg action" style="display:none;float:right;"></li>';
- $('#sharewithuser_list').append(newitem);
- $('#sharewithuser_' + $('#share_user option:selected').text() + ' > img').click(function(){
- $('#share_user option[value="' + $(this).parent().text() + '"]').removeAttr('disabled');
- Calendar.UI.Share.unshare(Calendar.UI.Share.currentid, Calendar.UI.Share.idtype, $(this).parent().text(), 'user' );
- $("#share_user").trigger("liszt:updated");
- $(this).parent().remove();
- });
- $('#share_user option:selected').attr('disabled', 'disabled');
- $("#share_user").trigger("liszt:updated");
- }
- });
- $('#share_group').live('change', function(){
- if($('#sharewithgroup_' + $('#share_group option:selected').text()).length == 0){
- Calendar.UI.Share.share(Calendar.UI.Share.currentid, Calendar.UI.Share.idtype, $('#share_group option:selected').text(), 'group');
- var newitem = '<li id="sharewithgroup_' + $('#share_group option:selected').text() +'"><input type="checkbox" width="12px" style="visibility:hidden;" title="' + $('#share_group option:selected').text() + '">' + $('#share_group option:selected').text() + '<img src="' + oc_webroot + '/core/img/actions/delete.svg" class="svg action" style="display:none;float:right;"></li>';
- $('#sharewithgroup_list').append(newitem);
- $('#sharewithgroup_' + $('#share_group option:selected').text() + ' > img').click(function(){
- $('#share_group option[value="' + $(this).parent().text() + '"]').removeAttr('disabled');
- Calendar.UI.Share.unshare(Calendar.UI.Share.currentid, Calendar.UI.Share.idtype, $(this).parent().text(), 'group');
- $("#share_group").trigger("liszt:updated");
- $(this).parent().remove();
- });
- $('#share_group option:selected').attr('disabled', 'disabled');
- $("#share_group").trigger("liszt:updated");
- }
- });
- $('#sharewithuser_list > li > input:checkbox').live('change', function(){
- Calendar.UI.Share.changepermission(Calendar.UI.Share.currentid, Calendar.UI.Share.idtype, $(this).parent().text(), 'user', this.checked);
- });
- $('#sharewithgroup_list > li > input:checkbox').live('change', function(){
- Calendar.UI.Share.changepermission(Calendar.UI.Share.currentid, Calendar.UI.Share.idtype, $(this).parent().text(), 'group', this.checked);
- });
- $('#publish').live('change', function(){
- if(this.checked == 1){
- Calendar.UI.Share.share(Calendar.UI.Share.currentid, Calendar.UI.Share.idtype, '', 'public');
- }else{
- Calendar.UI.Share.unshare(Calendar.UI.Share.currentid, Calendar.UI.Share.idtype, '', 'public');
- }
- });
- $('#sharewithuser_list').live('mouseenter', function(){
- $('#sharewithuser_list > li > img').css('display', 'block');
- $('#sharewithuser_list > li > input').css('visibility', 'visible');
- });
- $('#sharewithuser_list').live('mouseleave', function(){
- $('#sharewithuser_list > li > img').css('display', 'none');
- $('#sharewithuser_list > li > input').css('visibility', 'hidden');
- });
- $('#sharewithgroup_list').live('mouseenter', function(){
- $('#sharewithgroup_list > li > img').css('display', 'block');
- $('#sharewithgroup_list > li > input').css('visibility', 'visible');
- });
- $('#sharewithgroup_list').live('mouseleave', function(){
- $('#sharewithgroup_list > li > img').css('display', 'none');
- $('#sharewithgroup_list > li > input').css('visibility', 'hidden');
- });
- /*var permissions = (this.checked) ? 1 : 0;*/
- }
- },
- Drop:{
- init:function(){
- if (typeof window.FileReader === 'undefined') {
- console.log('The drop-import feature is not supported in your browser :(');
- return false;
- }
- droparea = document.getElementById('calendar_holder');
- droparea.ondrop = function(e){
- e.preventDefault();
- Calendar.UI.Drop.drop(e);
- }
- console.log('Drop initialized successfully');
- },
- drop:function(e){
- var files = e.dataTransfer.files;
- for(var i = 0;i < files.length;i++){
- var file = files[i]
- reader = new FileReader();
- reader.onload = function(event){
- if(file.type != 'text/calendar'){
- $('#notification').html('At least one file don\'t seems to be a calendar file. File skipped.');
- $('#notification').slideDown();
- window.setTimeout(function(){$('#notification').slideUp();}, 5000);
- return false;
- }else{
- Calendar.UI.Drop.import(event.target.result);
- $('#calendar_holder').fullCalendar('refetchEvents');
- }
- }
- reader.readAsDataURL(file);
- }
- },
- import:function(data){
- $.post(OC.filePath('calendar', 'ajax/import', 'dropimport.php'), {'data':data},function(result) {
- if(result.status == 'success'){
- return true;
- }else{
- $('#notification').html('ownCloud wasn\'t able to import at least one file. File skipped.');
- $('#notification').slideDown();
- window.setTimeout(function(){$('#notification').slideUp();}, 5000);
- }
- });
- }
- }
- }
- }
- $.fullCalendar.views.list = ListView;
- function ListView(element, calendar) {
- var t = this;
- // imports
- jQuery.fullCalendar.views.month.call(t, element, calendar);
- var opt = t.opt;
- var trigger = t.trigger;
- var eventElementHandlers = t.eventElementHandlers;
- var reportEventElement = t.reportEventElement;
- var formatDate = calendar.formatDate;
- var formatDates = calendar.formatDates;
- var addDays = $.fullCalendar.addDays;
- var cloneDate = $.fullCalendar.cloneDate;
- function skipWeekend(date, inc, excl) {
- inc = inc || 1;
- while (!date.getDay() || (excl && date.getDay()==1 || !excl && date.getDay()==6)) {
- addDays(date, inc);
- }
- return date;
- }
- // overrides
- t.name='list';
- t.render=render;
- t.renderEvents=renderEvents;
- t.setHeight=setHeight;
- t.setWidth=setWidth;
- t.clearEvents=clearEvents;
- function setHeight(height, dateChanged) {
- }
- function setWidth(width) {
- }
- function clearEvents() {
- this.reportEventClear();
- }
- // main
- function sortEvent(a, b) {
- return a.start - b.start;
- }
- function render(date, delta) {
- if (!t.start){
- t.start = addDays(cloneDate(date, true), -7);
- t.end = addDays(cloneDate(date, true), 7);
- }
- if (delta) {
- if (delta < 0){
- addDays(t.start, -7);
- if (!opt('weekends')) {
- skipWeekend(t.start, delta < 0 ? -1 : 1);
- }
- }else{
- addDays(t.end, 7);
- if (!opt('weekends')) {
- skipWeekend(t.end, delta < 0 ? -1 : 1);
- }
- }
- }
- t.title = formatDates(
- t.start,
- t.end,
- opt('titleFormat', 'week')
- );
- t.visStart = cloneDate(t.start);
- t.visEnd = cloneDate(t.end);
- }
- function eventsOfThisDay(events, theDate) {
- var start = cloneDate(theDate, true);
- var end = addDays(cloneDate(start), 1);
- var retArr = new Array();
- for (i in events) {
- var event_end = t.eventEnd(events[i]);
- if (events[i].start < end && event_end >= start) {
- retArr.push(events[i]);
- }
- }
- return retArr;
- }
- function renderEvent(event) {
- if (event.allDay) { //all day event
- var time = opt('allDayText');
- }
- else {
- var time = formatDates(event.start, event.end, opt('timeFormat', 'agenda'));
- }
- var classes = ['fc-event', 'fc-list-event'];
- classes = classes.concat(event.className);
- if (event.source) {
- classes = classes.concat(event.source.className || []);
- }
- var html = '<tr>' +
- '<td> </td>' +
- '<td class="fc-list-time">' +
- time +
- '</td>' +
- '<td> </td>' +
- '<td class="fc-list-event">' +
- '<span id="list' + event.id + '"' +
- ' class="' + classes.join(' ') + '"' +
- '>' +
- '<span class="fc-event-title">' +
- event.title +
- '</span>' +
- '</span>' +
- '</td>' +
- '</tr>';
- return html;
- }
- function renderDay(date, events) {
- var dayRows = $('<tr>' +
- '<td colspan="4" class="fc-list-date">' +
- '<span>' +
- formatDate(date, opt('titleFormat', 'day')) +
- '</span>' +
- '</td>' +
- '</tr>');
- for (i in events) {
- var event = events[i];
- var eventElement = $(renderEvent(event));
- triggerRes = trigger('eventRender', event, event, eventElement);
- if (triggerRes === false) {
- eventElement.remove();
- }else{
- if (triggerRes && triggerRes !== true) {
- eventElement.remove();
- eventElement = $(triggerRes);
- }
- $.merge(dayRows, eventElement);
- eventElementHandlers(event, eventElement);
- reportEventElement(event, eventElement);
- }
- }
- return dayRows;
- }
- function renderEvents(events, modifiedEventId) {
- events = events.sort(sortEvent);
- var table = $('<table class="fc-list-table"></table>');
- var total = events.length;
- if (total > 0) {
- var date = cloneDate(t.visStart);
- while (date <= t.visEnd) {
- var dayEvents = eventsOfThisDay(events, date);
- if (dayEvents.length > 0) {
- table.append(renderDay(date, dayEvents));
- }
- date=addDays(date, 1);
- }
- }
- this.element.html(table);
- }
- }
- $(document).ready(function(){
- Calendar.UI.initScroll();
- $('#calendar_holder').fullCalendar({
- header: false,
- firstDay: firstDay,
- editable: true,
- defaultView: defaultView,
- timeFormat: {
- agenda: agendatime,
- '': defaulttime
- },
- columnFormat: {
- month: t('calendar', 'ddd'), // Mon
- week: t('calendar', 'ddd M/d'), // Mon 9/7
- day: t('calendar', 'dddd M/d') // Monday 9/7
- },
- titleFormat: {
- month: t('calendar', 'MMMM yyyy'),
- // September 2009
- week: t('calendar', "MMM d[ yyyy]{ '—'[ MMM] d yyyy}"),
- // Sep 7 - 13 2009
- day: t('calendar', 'dddd, MMM d, yyyy'),
- // Tuesday, Sep 8, 2009
- },
- axisFormat: defaulttime,
- monthNames: monthNames,
- monthNamesShort: monthNamesShort,
- dayNames: dayNames,
- dayNamesShort: dayNamesShort,
- allDayText: allDayText,
- viewDisplay: function(view) {
- $('#datecontrol_date').val($('<p>').html(view.title).text());
- if (view.name != defaultView) {
- $.post(OC.filePath('calendar', 'ajax', 'changeview.php'), {v:view.name});
- defaultView = view.name;
- }
- Calendar.UI.setViewActive(view.name);
- if (view.name == 'agendaWeek') {
- $('#calendar_holder').fullCalendar('option', 'aspectRatio', 0.1);
- }
- else {
- $('#calendar_holder').fullCalendar('option', 'aspectRatio', 1.35);
- }
- },
- columnFormat: {
- week: 'ddd d. MMM'
- },
- selectable: true,
- selectHelper: true,
- select: Calendar.UI.newEvent,
- eventClick: Calendar.UI.editEvent,
- eventDrop: Calendar.UI.moveEvent,
- eventResize: Calendar.UI.resizeEvent,
- eventRender: function(event, element) {
- element.find('.fc-event-title').html(element.find('.fc-event-title').text());
- element.tipsy({
- className: 'tipsy-event',
- opacity: 0.9,
- gravity:$.fn.tipsy.autoBounds(150, 's'),
- fade:true,
- delayIn: 400,
- html:true,
- title:function() {
- return Calendar.UI.getEventPopupText(event);
- }
- });
- },
- loading: Calendar.UI.loading,
- eventSources: eventSources
- });
- $('#datecontrol_date').datepicker({
- changeMonth: true,
- changeYear: true,
- showButtonPanel: true,
- beforeShow: function(input, inst) {
- var calendar_holder = $('#calendar_holder');
- var date = calendar_holder.fullCalendar('getDate');
- inst.input.datepicker('setDate', date);
- inst.input.val(calendar_holder.fullCalendar('getView').title);
- return inst;
- },
- onSelect: function(value, inst) {
- var date = inst.input.datepicker('getDate');
- $('#calendar_holder').fullCalendar('gotoDate', date);
- }
- });
- fillWindow($('#content'));
- OCCategories.changed = Calendar.UI.categoriesChanged;
- OCCategories.app = 'calendar';
- $('#oneweekview_radio').click(function(){
- $('#calendar_holder').fullCalendar('changeView', 'agendaWeek');
- });
- $('#onemonthview_radio').click(function(){
- $('#calendar_holder').fullCalendar('changeView', 'month');
- });
- $('#listview_radio').click(function(){
- $('#calendar_holder').fullCalendar('changeView', 'list');
- });
- $('#today_input').click(function(){
- $('#calendar_holder').fullCalendar('today');
- });
- $('#datecontrol_left').click(function(){
- $('#calendar_holder').fullCalendar('prev');
- });
- $('#datecontrol_right').click(function(){
- $('#calendar_holder').fullCalendar('next');
- });
- Calendar.UI.Share.init();
- Calendar.UI.Drop.init();
- });
|