diff --git a/main/calendar/agenda_js.php b/main/calendar/agenda_js.php index 536911d953..b0b6008286 100755 --- a/main/calendar/agenda_js.php +++ b/main/calendar/agenda_js.php @@ -138,7 +138,7 @@ $tpl->assign('button_text', //see http://docs.jquery.com/UI/Datepicker/$.datepicker.formatDate -$tpl->assign('js_format_date', 'D d M yy'); +$tpl->assign('js_format_date', 'll'); $region_value = api_get_language_isocode(); if ($region_value == 'en') { diff --git a/main/inc/ajax/agenda.ajax.php b/main/inc/ajax/agenda.ajax.php index 08abaaabad..0b01c07370 100755 --- a/main/inc/ajax/agenda.ajax.php +++ b/main/inc/ajax/agenda.ajax.php @@ -27,7 +27,7 @@ $group_id = api_get_group_id(); $is_group_tutor = GroupManager::is_tutor_of_group(api_get_user_id(), $group_id); $agenda = new Agenda(); -$agenda->type = $type; +$agenda->setType($type); switch ($action) { case 'add_event': @@ -36,13 +36,14 @@ switch ($action) { } $add_as_announcement = isset($_REQUEST['add_as_annonuncement']) ? $_REQUEST['add_as_annonuncement'] : null; $comment = isset($_REQUEST['comment']) ? $_REQUEST['comment'] : null; + $userToSend = isset($_REQUEST['users_to_send']) ? $_REQUEST['users_to_send'] : array(); echo $agenda->add_event( $_REQUEST['start'], $_REQUEST['end'], $_REQUEST['all_day'], $_REQUEST['title'], $_REQUEST['content'], - $_REQUEST['users_to_send'], + $userToSend, $add_as_announcement, null, //$parentEventId = null, array(), //$attachmentArray = array(), @@ -100,8 +101,8 @@ switch ($action) { $groupId = current($result['groups']); $userId = current($result['users']); - $start = isset($_REQUEST['start']) ? $_REQUEST['start'] : null; - $end = isset($_REQUEST['end']) ? $_REQUEST['end'] : null; + $start = isset($_REQUEST['start']) ? api_strtotime($_REQUEST['start']) : null; + $end = isset($_REQUEST['end']) ? api_strtotime($_REQUEST['end']) : null; $events = $agenda->get_events( $start, diff --git a/main/inc/lib/agenda.lib.php b/main/inc/lib/agenda.lib.php index 8054bc64ed..9c70623c3b 100644 --- a/main/inc/lib/agenda.lib.php +++ b/main/inc/lib/agenda.lib.php @@ -147,6 +147,7 @@ class Agenda 'enddate' => $end, 'all_day' => $allDay ); + $id = Database::insert( $this->tbl_personal_agenda, $attributes @@ -881,8 +882,14 @@ class Agenda * @param string $format * @return array|string */ - public function get_events($start, $end, $course_id = null, $groupId = null, $user_id = 0, $format = 'json') - { + public function get_events( + $start, + $end, + $course_id = null, + $groupId = null, + $user_id = 0, + $format = 'json' + ) { switch ($this->type) { case 'admin': $this->get_platform_events($start, $end); @@ -941,7 +948,7 @@ class Agenda } break; } - +//var_dump($this->events); if (!empty($this->events)) { switch ($format) { case 'json': @@ -1140,12 +1147,12 @@ class Agenda $event['type'] = 'personal'; if (!empty($row['date']) && $row['date'] != '0000-00-00 00:00:00') { - $event['start'] = $this->format_event_date($row['date']); + $event['start'] = $this->formatEventDate($row['date']); $event['start_date_localtime'] = api_get_local_time($row['date']); } if (!empty($row['enddate']) && $row['enddate'] != '0000-00-00 00:00:00') { - $event['end'] = $this->format_event_date($row['enddate']); + $event['end'] = $this->formatEventDate($row['enddate']); $event['end_date_localtime'] = api_get_local_time($row['enddate']); } $event['description'] = $row['text']; @@ -1390,11 +1397,11 @@ class Agenda } if (!empty($row['start_date']) && $row['start_date'] != '0000-00-00 00:00:00') { - $event['start'] = $this->format_event_date($row['start_date']); + $event['start'] = $this->formatEventDate($row['start_date']); $event['start_date_localtime'] = api_get_local_time($row['start_date']); } if (!empty($row['end_date']) && $row['end_date'] != '0000-00-00 00:00:00') { - $event['end'] = $this->format_event_date($row['end_date']); + $event['end'] = $this->formatEventDate($row['end_date']); $event['end_date_localtime'] = api_get_local_time($row['end_date']); } @@ -1504,11 +1511,11 @@ class Agenda } if (!empty($row['start_date']) && $row['start_date'] != '0000-00-00 00:00:00') { - $event['start'] = $this->format_event_date($row['start_date']); + $event['start'] = $this->formatEventDate($row['start_date']); $event['start_date_localtime'] = api_get_local_time($row['start_date']); } if (!empty($row['end_date']) && $row['end_date'] != '0000-00-00 00:00:00') { - $event['end'] = $this->format_event_date($row['end_date']); + $event['end'] = $this->formatEventDate($row['end_date']); $event['end_date_localtime'] = api_get_local_time($row['end_date']); } @@ -1528,12 +1535,12 @@ class Agenda /** * Format needed for the Fullcalendar js lib * - * @param string $utc_time + * @param string $utcTime * @return bool|string */ - function format_event_date($utc_time) + private function formatEventDate($utcTime) { - return date('c', api_strtotime(api_get_local_time($utc_time))); + return date('c', api_strtotime(api_get_local_time($utcTime))); } /** diff --git a/main/inc/lib/formvalidator/FormValidator.class.php b/main/inc/lib/formvalidator/FormValidator.class.php index abc255c504..f8aa7b100d 100755 --- a/main/inc/lib/formvalidator/FormValidator.class.php +++ b/main/inc/lib/formvalidator/FormValidator.class.php @@ -486,12 +486,8 @@ EOT; $return_value = ''; $js = null; if ($addDateLibraries) { - - $js .= ''; $js .= ''; $js .= ''; - $js .= ''; - $js .= ''; $isoCode = api_get_language_isocode(); diff --git a/main/inc/lib/template.lib.php b/main/inc/lib/template.lib.php index 62bd7c973f..19ba655652 100755 --- a/main/inc/lib/template.lib.php +++ b/main/inc/lib/template.lib.php @@ -147,6 +147,8 @@ class Template } $this->assign('template', $this->templateFolder); + $this->assign('locale', api_get_language_isocode()); + $this->assign('css_styles', $this->theme); $this->assign('login_class', null); @@ -488,6 +490,8 @@ class Template $css[] = api_get_path(WEB_CSS_PATH).'font-awesome.css'; $css[] = api_get_path(WEB_LIBRARY_PATH).'javascript/mediaelement/mediaelementplayer.css'; + $css[] = api_get_path(WEB_LIBRARY_PATH).'javascript/daterange/daterangepicker-bs3.css'; + //THEME CSS STYLE // $css[] = api_get_cdn_path(api_get_path(WEB_CSS_PATH).'responsive.css'); // $css[] = api_get_cdn_path(api_get_path(WEB_CSS_PATH).$this->theme.'/default.css'); @@ -553,6 +557,7 @@ class Template 'modernizr.js', 'jquery.min.js', 'fullcalendar/lib/moment.min.js', + 'daterange/daterangepicker.js', 'chosen/chosen.jquery.min.js', 'thickbox.js', 'bootstrap/bootstrap.js', diff --git a/main/template/default/agenda/month.tpl b/main/template/default/agenda/month.tpl index 5e94f6b838..d37f9686de 100755 --- a/main/template/default/agenda/month.tpl +++ b/main/template/default/agenda/month.tpl @@ -46,45 +46,16 @@ $(document).ready(function() { allFields = $( [] ).add( title ).add( content ), tips = $(".validateTips"); $('#users_to_send_id').bind('change', function() { - var selected_counts = $("#users_to_send_id option:selected").size(); - - //alert(selected_counts); - /* if (selected_counts >= 1 && $("#users_to_send_id option[value='everyone']").attr('selected') == 'selected') { - clean_user_select(); - - $('#users_to_send_id option').eq(0).attr('selected', 'selected'); - //deleting the everyone - $("#users_to_send_id").trigger("liszt:updated"); - deleted_items = true; - - }*/ - //$("#users_to_send_id").trigger("chosen:updated"); - /* - if (selected_counts >= 1) { - $('#users_to_send_id option').eq(0).removeAttr('selected'); - - - } - - */ - //clean_user_select(); - //$("#users_to_send_id").trigger("liszt:updated"); - //alert($("#users_to_send_id option[value='everyone']").attr('selected')); - if ($("#users_to_send_id option[value='everyone']").attr('selected') == 'selected') { - //clean_user_select(); - //$('#users_to_send_id option').eq(0).attr('selected', 'selected'); - //$("#users_to_send_id").trigger("liszt:updated"); - } }); $.datepicker.setDefaults( $.datepicker.regional[region_value] ); - + var calendar = $('#calendar').fullCalendar({ header: { left: 'today prev,next', center: 'title', - right: 'month,agendaWeek,agendaDay, test' + right: 'month,agendaWeek,agendaDay' }, {% if use_google_calendar == 1 %} eventSources: [ @@ -106,20 +77,26 @@ $(document).ready(function() { firstDay: 1, selectable : true, selectHelper: true, - viewDisplay: function(view) { /* When changing the view update the qtips */ - var api = $('.qtip').qtip('api'); // Access the API of the first tooltip on the page + /*var api = $('.qtip').qtip('api'); // Access the API of the first tooltip on the page if (api) { api.destroy(); //api.render(); - } + }*/ }, // Add event - select: function(start, end, allDay, jsEvent, view) { + select: function(start, end, jsEvent, view) { //Removing UTC stuff - var start_date = $.datepicker.formatDate("yy-mm-dd", start) + " " + start.toTimeString().substr(0, 8); - var end_date = $.datepicker.formatDate("yy-mm-dd", end) + " " + end.toTimeString().substr(0, 8); + //var start_date = $.datepicker.formatDate("yy-mm-dd", start) + " " + start.toTimeString().substr(0, 8); + //var end_date = $.datepicker.formatDate("yy-mm-dd", end) + " " + end.toTimeString().substr(0, 8); + var start_date = start.format("YY-MM-DD"); + var end_date = end.format("YY-MM-DD"); + + var allDay = true; + if (end.hasTime()) { + allDay = false; + } $('#visible_to_input').show(); $('#add_as_announcement_div').show(); @@ -135,23 +112,19 @@ $(document).ready(function() { //$("#users_to_send_id").trigger("chosen:updated"); if ({{ can_add_events }} == 1) { - var url = '{{ web_agenda_ajax_url }}&a=add_event&start='+start_date+'&end='+end_date+'&all_day='+allDay+'&view='+view.name; - var start_date_value = $.datepicker.formatDate('{{ js_format_date }}', start); - var end_date_value = $.datepicker.formatDate('{{ js_format_date }}', end); - - $('#start_date').html(start_date_value + " " + start.toTimeString().substr(0, 8)); - - if (view.name != 'month') { - $('#start_date').html(start_date_value + " " + start.toTimeString().substr(0, 8)); - if (start.toDateString() == end.toDateString()) { - $('#end_date').html(' - '+end.toTimeString().substr(0, 8)); - } else { - $('#end_date').html(' - '+start_date_value+" " + end.toTimeString().substr(0, 8)); - } - } else { - $('#start_date').html(start_date_value); - $('#end_date').html(' '); - } + var url = '{{ web_agenda_ajax_url }}&a=add_event&start='+start.unix()+'&end='+end.unix()+'&all_day='+allDay+'&view='+view.name; + var start_date_value = start.format('{{ js_format_date }}'); + var end_date_value = end.format('{{ js_format_date }}'); + + $('#start_date').html(start_date_value); + + if (start_date_value == end_date_value) { + $('#end_date').html(' - ' + end_date_value); + } else { + $('#start_date').html(''); + $('#end_date').html(start_date_value+" - " + end_date_value); + } + $('#color_calendar').html('{{ type_label }}'); $('#color_calendar').removeClass('group_event'); $('#color_calendar').addClass('label_tag'); @@ -164,9 +137,9 @@ $(document).ready(function() { '{{ "Add" | get_lang }}' : function() { var bValid = true; bValid = bValid && checkLength(title, "title", 1, 255); - //bValid = bValid && checkLength( content, "content", 1, 255 ); var params = $("#add_event_form").serialize(); + $.ajax({ url: url+'&'+params, success:function(data) { @@ -188,7 +161,6 @@ $(document).ready(function() { var position =String(window.location).indexOf("&user"); var url_length = String(window.location).length; var url = String(window.location).substring(0, position)+temp; - /*if (position > 0) { window.location.replace(url); } else { @@ -226,13 +198,14 @@ $(document).ready(function() { }, eventRender: function(event, element) { if (event.attachment) { - element.qtip({ + /*element.qtip({ hide: { delay: 2000 }, content: event.attachment, position: { at:'top right' , my:'bottom right'} }).removeData('qtip'); // this is an special hack to add multiple qtip in the same target + */ } if (event.description) { var comment = ''; @@ -240,17 +213,17 @@ $(document).ready(function() { comment = event.comment; } - element.qtip({ + /*element.qtip({ hide: { delay: 2000 }, content: event.description + ' ' + comment, position: { at:'top left' , my:'bottom left'} - }); + });*/ } }, eventClick: function(calEvent, jsEvent, view) { - var start_date = $.datepicker.formatDate("yy-mm-dd", calEvent.start) + " " + calEvent.start.toTimeString().substr(0, 8); + var start_date = calEvent.start.format("YY-MM-DD"); if (calEvent.allDay == 1) { var end_date = ''; @@ -258,7 +231,7 @@ $(document).ready(function() { var end_date = ''; if (calEvent.end && calEvent.end != '') { //var end_date = Math.round(calEvent.end.getTime() / 1000); - var end_date = $.datepicker.formatDate("yy-mm-dd", calEvent.end) + " " + calEvent.end.toTimeString().substr(0, 8); + var end_date = calEvent.end.format("YY-MM-DD"); } } @@ -280,13 +253,13 @@ $(document).ready(function() { $('#color_calendar').removeClass('group_event'); $('#color_calendar').addClass(calEvent.type+'_event'); - my_start_month = calEvent.start.getMonth() +1; - - $('#start_date').html(calEvent.start.getDate() +"/"+ my_start_month +"/"+calEvent.start.getFullYear()); - - if (end_date != '') { - my_end_month = calEvent.end.getMonth() +1; - $('#end_date').html(' '+calEvent.end.getDate() +"/"+ my_end_month +"/"+calEvent.end.getFullYear()); + //my_start_month = calEvent.start.getMonth() +1; + //$('#start_date').html(calEvent.start.getDate() +"/"+ my_start_month +"/"+calEvent.start.getFullYear()); + $('#start_date').html(calEvent.start.format("YY-MM-DD")); + if (calEvent.end) { + //my_end_month = calEvent.end.getMonth() +1; + //$('#end_date').html(' '+calEvent.end.getDate() +"/"+ my_end_month +"/"+calEvent.end.getFullYear()); + $('#end_date').html(' - '+calEvent.end.format("YY-MM-DD")); } if ($("#title").parent().find('#title_edit').length == 0) { @@ -318,7 +291,7 @@ $(document).ready(function() { $("#dialog-form").dialog("open"); - var url = '{{ web_agenda_ajax_url }}&a=edit_event&id='+calEvent.id+'&start='+start_date+'&end='+end_date+'&all_day='+calEvent.allDay+'&view='+view.name; + var url = '{{ web_agenda_ajax_url }}&a=edit_event&id='+calEvent.id+'&start='+calEvent.start.unix()+'&end='+calEvent.end.unix()+'&all_day='+calEvent.allDay+'&view='+view.name; var delete_url = '{{ web_agenda_ajax_url }}&a=delete_event&id='+calEvent.id; $("#dialog-form").dialog({ @@ -453,13 +426,15 @@ $(document).ready(function() { }); } else { //Simple form - my_start_month = calEvent.start.getMonth() +1; - $('#simple_start_date').html(calEvent.start.getDate() +"/"+ my_start_month +"/"+calEvent.start.getFullYear()); + //my_start_month = calEvent.start.getMonth() +1; + $('#simple_start_date').html(calEvent.start.format("YY-MM-DD")); if (end_date != '') { my_end_month = calEvent.end.getMonth() +1; - $('#simple_start_date').html(calEvent.start.getDate() +"/"+ my_start_month +"/"+calEvent.start.getFullYear() +" - "+calEvent.start.toLocaleTimeString()); - $('#simple_end_date').html(' '+calEvent.end.getDate() +"/"+ my_end_month +"/"+calEvent.end.getFullYear() +" - "+calEvent.end.toLocaleTimeString()); + //$('#simple_start_date').html(calEvent.start.getDate() +"/"+ my_start_month +"/"+calEvent.start.getFullYear() +" - "+calEvent.start.toLocaleTimeString()); + $('#simple_start_date').html(calEvent.start.format("YY-MM-DD")); + //$('#simple_end_date').html(' '+calEvent.end.getDate() +"/"+ my_end_month +"/"+calEvent.end.getFullYear() +" - "+calEvent.end.toLocaleTimeString()); + $('#simple_end_date').html(' ' + calEvent.end.format("YY-MM-DD")); } $("#simple_title").html(calEvent.title); @@ -487,30 +462,30 @@ $(document).ready(function() { }, editable: true, events: "{{web_agenda_ajax_url}}&a=get_events", - eventDrop: function(event, day_delta, minute_delta, all_day, revert_func) { + eventDrop: function(event, delta, revert_func) { $.ajax({ url: '{{ web_agenda_ajax_url }}', data: { a: 'move_event', id: event.id, - day_delta: day_delta, - minute_delta: minute_delta + day_delta: delta.days(), + minute_delta: delta.minutes() } }); }, - eventResize: function(event, day_delta, minute_delta, revert_func) { + eventResize: function(event, delta, revert_func) { $.ajax({ url: '{{ web_agenda_ajax_url }}', data: { a: 'resize_event', id: event.id, - day_delta: day_delta, - minute_delta: minute_delta + day_delta: delta.days(), + minute_delta: delta.minutes() } }); }, - axisFormat: 'HH(:mm)', - timeFormat: 'HH:mm{ - HH:mm}', + axisFormat: 'h(:mm)a', + timeFormat: 'h:mm', loading: function(bool) { if (bool) $('#loading').show(); else $('#loading').hide(); diff --git a/main/template/default/layout/footer.tpl b/main/template/default/layout/footer.tpl index 45e95ba150..41e05e904f 100755 --- a/main/template/default/layout/footer.tpl +++ b/main/template/default/layout/footer.tpl @@ -71,6 +71,9 @@ /* Makes row highlighting possible */ $(document).ready( function() { + + moment.locale('{{ locale }}'); + /** * Advanced options * Usage