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/20 19:15:42 UTC

svn commit: r1388118 - in /incubator/openmeetings/trunk/singlewebapp: WebContent/openmeetings/css/ src/org/apache/openmeetings/web/components/admin/users/ src/org/apache/openmeetings/web/components/user/calendar/

Author: solomax
Date: Thu Sep 20 17:15:41 2012
New Revision: 1388118

URL: http://svn.apache.org/viewvc?rev=1388118&view=rev
Log:
Wicket:
	Rows on users panel are now clickable (with cursor change);
	Selects on Admin Form are limited in size;
	Basic form with event details is added to the calendar + on-click and click-and-drag events

Modified:
    incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.html
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.java
    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

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1388118&r1=1388117&r2=1388118&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Thu Sep 20 17:15:41 2012
@@ -114,4 +114,12 @@ table.adminListTable tr.odd {
 
 .adminForm {
 	
-}
\ No newline at end of file
+}
+
+.clickable {
+	cursor: pointer;
+}
+
+.adminForm select {
+	width: 200px;
+}

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.html
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.html?rev=1388118&r1=1388117&r2=1388118&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.html (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.html Thu Sep 20 17:15:41 2012
@@ -47,7 +47,7 @@
 			            <br/>
 			            <wicket:ommessage key="133" />: <input type="password" />
 			            <br/>
-			            <wicket:ommessage key="135" />: <select wicket:id="salutations_id"/> <input type="text" wicket:id="firstname"/>
+			            <wicket:ommessage key="135" />: <select wicket:id="salutations_id" style="width: 70px;"/> <input type="text" wicket:id="firstname"/>
 			            <br/>
 			            <wicket:ommessage key="136" />: <input type="text" wicket:id="lastname"/>
 			            <br/>

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.java?rev=1388118&r1=1388117&r2=1388118&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UsersPanel.java Thu Sep 20 17:15:41 2012
@@ -24,6 +24,7 @@ import org.apache.openmeetings.web.compo
 import org.apache.openmeetings.web.components.admin.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.OmDataProvider;
 import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
@@ -51,7 +52,15 @@ public class UsersPanel extends AdminPan
 				item.add(new Label("firstName", fName));
 				final String lName = u.getLastname();
 				item.add(new Label("lastName", lName));
-				item.add(AttributeModifier.replace("class", (item.getIndex() % 2 == 1) ? "even" : "odd"));
+				item.add(AttributeModifier.append("class", "clickable " + ((item.getIndex() % 2 == 1) ? "even" : "odd")));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = -8069413566800571061L;
+
+					protected void onEvent(AjaxRequestTarget target) {
+						form.setModelObject(u);
+						target.add(form);
+					}
+				});
 			}
 		};
 		final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");

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=1388118&r1=1388117&r2=1388118&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 Thu Sep 20 17:15:41 2012
@@ -42,6 +42,7 @@
 					, editable: true
 					, allDaySlot: false
 					, axisFormat: 'HH(:mm)'
+					, selectable: true
 					, defaultEventMinutes: 60
 					, timeFormat: {
 						agenda: 'HH:mm{ - HH:mm}'
@@ -54,6 +55,8 @@
 					}
 					, eventDrop: dropEventFunc //TODO confirm ??
 					, eventResize: resizeEventFunc //TODO confirm ??
+					, eventClick: eventClickFunc
+					, select: selectFunc
 					, eventSources: [
 						{
 							events: fetchEventsFunc
@@ -68,7 +71,29 @@
 				});
 				*/
 				window.setInterval(function(){$('#calendar').fullCalendar('refetchEvents');}, 10 * 1000); //FIXME refresh calendar every XX seconds
+				
+				$('#appointment').dialog({
+					closeOnEscape: true
+					, resizable: true
+					, width: 400
+					, autoOpen: false
+					, modal: true
+				});
 			});
 		</script>
+		<div id="appointment" wicket:ommessage="title:815">
+			<form wicket:id="appointment">
+				<table>
+					<tr>
+						<td><wicket:ommessage key="572" /></td>
+						<td><input type="text" wicket:id="appointmentName" /></td>
+					</tr>
+					<tr>
+						<td><wicket:ommessage key="573" /></td>
+						<td><input type="text" wicket:id="appointmentDescription" /></td>
+					</tr>
+				</table>
+			</form>
+		</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=1388118&r1=1388117&r2=1388118&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 Thu Sep 20 17:15:41 2012
@@ -40,6 +40,10 @@ import org.apache.wicket.ajax.json.JSONO
 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.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.request.handler.TextRequestHandler;
 
 public class CalendarPanel extends UserPanel {
@@ -52,6 +56,18 @@ public class CalendarPanel extends UserP
 		calendar.setOutputMarkupId(true);
 		calendar.setMarkupId("calendar");
 		add(calendar);
+		
+		final Form<Appointment> form = new Form<Appointment>("appointment", new CompoundPropertyModel<Appointment>(new Appointment())){
+			private static final long serialVersionUID = 192883745414475639L;
+
+			{
+				setOutputMarkupId(true);
+				add(new RequiredTextField<String>("appointmentName"));
+				add(new TextArea<String>("appointmentDescription"));
+			}
+		};
+		add(form);
+		
 		//fetchEvents
 		add(new AbstractDefaultAjaxBehavior() {
 			private static final long serialVersionUID = 6880514947331946407L;
@@ -91,6 +107,7 @@ public class CalendarPanel extends UserP
 						events.put(new JSONObject()
 							.put("id", a.getAppointmentId())
 							.put("title", a.getAppointmentName())
+							.put("description", a.getAppointmentDescription())
 							.put("start", WebSession.getDateFormat().format(a.getAppointmentStarttime()))
 							.put("end", WebSession.getDateFormat().format(a.getAppointmentEndtime()))
 							.put("allDay", false));
@@ -106,6 +123,79 @@ public class CalendarPanel extends UserP
 		add(new DropResizeBehavior(true, "dropEventFunc"));
 		//resizeEvent
 		add(new DropResizeBehavior(false, "resizeEventFunc"));
+		//create on click-and-drag
+		add(new AbstractDefaultAjaxBehavior() {
+			private static final long serialVersionUID = 6880514947331946407L;
+
+			@Override
+			protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+				super.updateAjaxAttributes(attributes);
+				attributes.getAjaxCallListeners().add(new AjaxCallListener().onSuccess("$('#appointment').dialog('open');"));
+			}
+			
+			@Override
+			public void renderHead(Component component, IHeaderResponse response) {
+				super.renderHead(component, response);
+				response.render(JavaScriptHeaderItem.forScript(
+					"var selectFunc = "
+						+ this.getCallbackFunction(
+							context("start")
+							, context("end")
+							, context("allDay")
+							, context("jsEvent")
+							, context("view")
+							, resolved("_start", "start.getTime()")
+							, resolved("_end", "end.getTime()")) + ";"
+					, "selectFunc"));
+			}
+
+			@Override
+			protected void respond(AjaxRequestTarget target) {
+				Calendar start = WebSession.getCalendar();
+				start.setTimeInMillis(getRequestCycle().getRequest().getRequestParameters().getParameterValue("_start").toLong());
+				Calendar end = WebSession.getCalendar();
+				end.setTimeInMillis(getRequestCycle().getRequest().getRequestParameters().getParameterValue("_end").toLong());
+				
+				Appointment a = new Appointment();
+				a.setAppointmentStarttime(start.getTime());
+				a.setAppointmentEndtime(end.getTime());
+				form.setModelObject(a);
+				
+				target.add(form);
+			}
+		});
+		//eventClick
+		add(new AbstractDefaultAjaxBehavior() {
+			private static final long serialVersionUID = 6880514947331946407L;
+
+			@Override
+			protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+				super.updateAjaxAttributes(attributes);
+				attributes.getAjaxCallListeners().add(new AjaxCallListener().onSuccess("$('#appointment').dialog('open');"));
+			}
+			
+			@Override
+			public void renderHead(Component component, IHeaderResponse response) {
+				super.renderHead(component, response);
+				response.render(JavaScriptHeaderItem.forScript(
+					"var eventClickFunc = "
+						+ this.getCallbackFunction(
+							context("event")
+							, context("jsEvent")
+							, context("view")
+							, resolved("_id", "event.id")) + ";"
+					, "eventClickFunc"));
+			}
+
+			@Override
+			protected void respond(AjaxRequestTarget target) {
+				Appointment a = Application.getBean(AppointmentDaoImpl.class).getAppointmentById(
+						getRequestCycle().getRequest().getRequestParameters().getParameterValue("_id").toLong());
+				form.setModelObject(a);
+				
+				target.add(form);
+			}
+		});
 	}
 
 	private class DropResizeBehavior extends AbstractDefaultAjaxBehavior {