Browse Source

Adding agenda personal event in new agenda view

Julio Montoya 13 years ago
parent
commit
1a458badb6

+ 23 - 0
main/calendar/agenda.lib.php

@@ -15,6 +15,29 @@ class Agenda {
 		
 	}
 	
+	/**
+	 * 
+	 * Add an event
+	 * @param 	int		start tms
+	 * @param 	int		end tms
+	 * @param 	string	agendaDay, agendaWeek, month
+	 * @param	string	personal, course or global (only works for personal by now) 
+	 */
+	function add_event($start, $end, $view, $type, $title, $content) {
+		$start = date('Y-m-d H:i:s', $start);
+		$end = date('Y-m-d H:i:s', $end);
+				
+		$start 		= api_get_utc_datetime($start);
+		$end 		= api_get_utc_datetime($end);
+		$title 		= Database::escape_string($title);
+		$content 	= Database::escape_string($content);
+			
+		// we are adding a new item
+		$sql = "INSERT INTO $this->tbl_personal_agenda (user, title, text, date, enddate) VALUES ('".api_get_user_id()."','$title', '$content', '$start', '$end')";		
+		$result = Database::query($sql);
+		
+	}
+	
 	/**
 	 * 
 	 * Get agenda events

+ 0 - 2
main/calendar/agenda_js.php

@@ -26,8 +26,6 @@ $tpl->assign('ajax_url', api_get_path(WEB_AJAX_PATH).'agenda.ajax.php');
 $content = $tpl->fetch('default/agenda/month.tpl');
 $tpl->assign('content', $content);
 
-
-
 $template_file = $tpl->get_template('layout/layout_1_col.tpl');
 
 $tpl->display($template_file);

+ 4 - 0
main/inc/ajax/agenda.ajax.php

@@ -14,6 +14,10 @@ $action = $_REQUEST['a'];
 $agenda = new Agenda();
 
 switch ($action) {    
+	case 'add_event':		
+		$agenda->add_event($_REQUEST['start'], $_REQUEST['end'], $_REQUEST['view'], 'personal',$_REQUEST['title'], $_REQUEST['content']);
+		break;
+		
 	case 'move_event':
 		$day_delta 		= $_REQUEST['day_delta'];
 		$minute_delta 	= $_REQUEST['minute_delta'];

+ 1 - 0
main/inc/lib/template.lib.php

@@ -72,6 +72,7 @@ class Template extends Smarty {
 		$_p = array('web' 			=> api_get_path(WEB_PATH),
 					'web_course'	=> api_get_path(WEB_COURSE_PATH),
 					'web_main' 		=> api_get_path(WEB_CODE_PATH),
+					'web_ajax' 		=> api_get_path(WEB_AJAX_PATH),
 					
 					);
 		$this->assign('_p', $_p);

+ 83 - 11
main/template/default/agenda/month.tpl

@@ -1,20 +1,74 @@
 <script type='text/javascript'>
-$(document).ready(function() {	
+$(document).ready(function() {
+	
 	var date = new Date();
 	var d = date.getDate();
 	var m = date.getMonth();
 	var y = date.getFullYear();
 	
-	$('#calendar').fullCalendar({
+	$( "#dialog-form" ).dialog({
+		autoOpen: false,
+		modal	: false, 
+		width	: 500, 
+		height	: 320
+   	});
+	
+	var calendar = $('#calendar').fullCalendar({
 		header: {
-			left: 'prev,next today',
+			left: '',
 			center: 'title',
-			right: 'month,agendaWeek,agendaDay'
+			right: 'today prev,next month,agendaWeek,agendaDay'
 		},	
-		editable: true,		
-		
-		events: "{$ajax_url}?a=get_events",
+		selectable	: true,
+		selectHelper: true,
+		select: function(start, end, allDay, jsEvent, view) {	
+			var start_date 	= Math.round(start.getTime() / 1000);
+			var end_date 	= Math.round(end.getTime() / 1000);
+			
+			var url = '{$_p.web_ajax}agenda.ajax.php?a=add_event&start='+start_date+'&end='+end_date+'&view='+view.name;
+			
+			$('#start_date').html(start.getDate() +"/"+ start.getMonth() +"/"+start.getFullYear());
+			$('#end_date').html(end.getDate() +"/"+ end.getMonth() +"/"+end.getFullYear());
+			
+			$("#dialog-form").dialog("open");
+			$("#dialog-form").dialog({				
+				buttons: {
+					"Add event": function() {
+						var params = $("#add_event_form").serialize();						
+						$.ajax({
+							url: url+'&'+params,
+							success:function() {
+								calendar.fullCalendar('renderEvent', 
+										{
+											title: $("#title").val(),
+											start: start,
+											end: end,
+											allDay: allDay
+										},
+										true // make the event "stick"
+								);
+								
+								$("#dialog-form").dialog("close");										
+							}							
+						});
+					},
+				},				
+				close: function() {
+						
+				}
+			});                   
+
+			
+			 
 		
+            //prevent the browser to follow the link
+            return false;
+			calendar.fullCalendar('unselect');
+		},	
+		dayClick: function(date, allDay, jsEvent, view) {
+		},
+		editable: true,		
+		events: "{$ajax_url}?a=get_events",		
 		eventDrop: function(event, day_delta, minute_delta, all_day, revert_func) {		
 			$.ajax({
 				url: '{$ajax_url}',
@@ -23,10 +77,8 @@ $(document).ready(function() {
 				}
 			});
 		},
-
 		axisFormat: 'HH(:mm)',
-		timeFormat: 'HH:mm{ - HH:mm}',
-		
+		timeFormat: 'HH:mm{ - HH:mm}',		
 		loading: function(bool) {
 			if (bool) $('#loading').show();
 			else $('#loading').hide();
@@ -36,5 +88,25 @@ $(document).ready(function() {
 	
 });
 </script>
-<div id='loading' style='display:none'>{"Loading"|get_lang}...</div>
+
+<div id="dialog-form"  title="{"AddEvent"|get_lang}" style="display:none">				
+	<form id="add_event_form" name="form">
+		<span id="start_date" ></span> - <span id="end_date" ></span>
+		<div class="row">
+				<label for="name">{"Title"|get_lang}</label>
+		</div>
+		<div class="formw">
+			<input type="text" name="title" id="title" size="52" />				
+		</div>
+		
+		<div class="row">
+			<label for="name">{"Description"|get_lang}</label>
+		</div>
+		
+		<div class="formw">
+			<textarea name="content" id="content" cols="50" rows="7"></textarea>
+		</div>
+	</form>
+</div>
 <div id='calendar'></div>
+<div id='loading' style='display:none'>{"Loading"|get_lang}...</div>