You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2012/09/19 20:15:40 UTC

svn commit: r1387699 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web: components/user/calendar/CalendarPanel.html components/user/calendar/CalendarPanel.java pages/MainPage.java

Author: solomax
Date: Wed Sep 19 18:15:39 2012
New Revision: 1387699

URL: http://svn.apache.org/viewvc?rev=1387699&view=rev
Log:
Wicket: events for September are displayed as expected

Modified:
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html?rev=1387699&r1=1387698&r2=1387699&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.html Wed Sep 19 18:15:39 2012
@@ -21,24 +21,32 @@
 <html xmlns="http://www.w3.org/1999/xhtml" 
 	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.5-strict.dtd" lang="en">
 	<wicket:head>
-		<link rel='stylesheet' type='text/css' href='css/fullcalendar.css' />
-		<link rel='stylesheet' type='text/css' href='css/fullcalendar.print.css' media='print' />
+		<link media="screen" type="text/css" rel="stylesheet" href='css/fullcalendar.css' />
+		<!-- link media="print" type="text/css" rel="stylesheet" href='css/fullcalendar.print.css' /--> <!-- FIXME incorrectly rendered -->
 	</wicket:head>
 	<wicket:panel>
 		<script type="text/javascript" src="js/fullcalendar.min.js"></script>
+		<div wicket:id="calendar"></div>
+		<!-- bottom section -->
 		<script type="text/javascript">
+			function getCalendarHeight() {
+				return $(window).height() - $('#calendar').position().top - 20; //FIXME HACK
+			}
 			$(function() {
 				$('#calendar').fullCalendar({
 					header: {
-						//FIXME headers
 						left: 'prev,next today',
 						center: 'title',
 						right: 'month,agendaWeek,agendaDay'
 					}
 					, editable: true
+					, height: getCalendarHeight()
+				});
+				$(window).resize(function() {
+					$('#calendar').data().fullCalendar.option('height', getCalendarHeight());
 				});
+				setEventSource();
 			});
 		</script>
-		<div wicket:id="calendar"></div>
 	</wicket:panel>
 </html>

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java?rev=1387699&r1=1387698&r2=1387699&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java Wed Sep 19 18:15:39 2012
@@ -18,12 +18,32 @@
  */
 package org.apache.openmeetings.web.components.user.calendar;
 
+import static org.apache.wicket.ajax.attributes.CallbackParameter.context;
+import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+import org.apache.openmeetings.data.calendar.daos.AppointmentDaoImpl;
+import org.apache.openmeetings.persistence.beans.calendar.Appointment;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.components.UserPanel;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxCallListener;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.core.util.string.JavaScriptUtils;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.request.handler.TextRequestHandler;
 
 public class CalendarPanel extends UserPanel {
 	private static final long serialVersionUID = -6536379497642291437L;
-
+	public static SimpleDateFormat ISO8601FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
+	
 	public CalendarPanel(String id) {
 		super(id);
 		setOutputMarkupId(true);
@@ -31,6 +51,61 @@ public class CalendarPanel extends UserP
 		calendar.setOutputMarkupId(true);
 		calendar.setMarkupId("calendar");
 		add(calendar);
-	}
+		add(new AbstractDefaultAjaxBehavior() {
+			private static final long serialVersionUID = 6880514947331946407L;
 
+			@Override
+			protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+				super.updateAjaxAttributes(attributes);
+				attributes.setDataType("json");
+				attributes.setWicketAjaxResponse(false);
+				attributes.getAjaxCallListeners().add(new AjaxCallListener() {
+					private static final long serialVersionUID = -2316088040375497938L;
+
+					public CharSequence getSuccessHandler(Component component) {
+						return "callback(data);";
+					}
+				});
+			}
+			
+			@Override
+			public void renderHead(Component component, IHeaderResponse response) {
+				super.renderHead(component, response);
+				response.render(JavaScriptHeaderItem.forScript(
+						"function setEventSource(){\n"
+						+ "	$('#calendar').fullCalendar('addEventSource', \n"
+						+ "	{\n"
+						+ "		events: " + this.getCallbackFunction(explicit("start"), explicit("end"), context("callback")) + "\n"
+						//+ "		, color: '#4793E6'\n"
+						//+ "		, textColor: 'black'\n"
+						+ "});\n"
+						+ "}", "setEvtSource"));
+						
+			}
+
+			@Override
+			protected void respond(AjaxRequestTarget target) {
+				StringBuilder sb = new StringBuilder("[");
+				Calendar start = Calendar.getInstance();
+				start.set(2012, 8, 1);
+				Calendar end = Calendar.getInstance();
+				end.set(2012, 8, 30);
+				String delim = "";
+				for (Appointment a : Application.getBean(AppointmentDaoImpl.class).getAppointmentsByRange(WebSession.getUserId(),
+						start.getTime(), end.getTime())) {
+					sb.append(delim).append("{\n")
+						.append("\"id\": ").append(a.getAppointmentId()).append("\n")
+						.append(", \"title\": \"").append(JavaScriptUtils.escapeQuotes(a.getAppointmentName())).append("\"\n")
+						.append(", \"start\": \"").append(ISO8601FORMAT.format(a.getAppointmentStarttime())).append("\"\n")
+						.append(", \"end\": \"").append(ISO8601FORMAT.format(a.getAppointmentEndtime())).append("\"\n")
+						.append(", \"allDay\": false\n")
+						.append("}\n");
+					delim = ", ";
+				}
+				sb.append("]");
+	            getRequestCycle().scheduleRequestHandlerAfterCurrent(
+	            	new TextRequestHandler("application/json", "UTF-8", sb.toString()));
+			}
+		});
+	}
 }

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java?rev=1387699&r1=1387698&r2=1387699&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java Wed Sep 19 18:15:39 2012
@@ -35,7 +35,7 @@ public class MainPage extends BasePage {
 	
 	public MainPage() {
 		MarkupContainer contents = new WebMarkupContainer("contents");
-		contents.add(new WebMarkupContainer("child")).setOutputMarkupId(true);
+		contents.add(new WebMarkupContainer("child")).setOutputMarkupId(true).setMarkupId("contents");
 		add(contents);
 		menu = new MenuPanel("menu", contents);
 		add(menu);