Author: solomax
Date: Fri Oct 19 12:39:38 2012
New Revision: 1400075
URL: http://svn.apache.org/viewvc?rev=1400075&view=rev
Log:
Wicket: calendar form is improved
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomDAO.java
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Rooms.java
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarForm.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/src/org/apache/openmeetings/data/conference/RoomDAO.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomDAO.java?rev=1400075&r1=1400074&r2=1400075&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomDAO.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/RoomDAO.java
Fri Oct 19 12:39:38 2012
@@ -76,6 +76,24 @@ public class RoomDAO implements OmDAO<Ro
return q.getSingleResult();
}
+ public List<Rooms> getPublicRooms() {
+ //TypedQuery<Rooms> q =
em.createNamedQuery("getNondeletedRooms", Rooms.class);
+ TypedQuery<Rooms> q = em.createQuery(
+ "SELECT r from Rooms r LEFT JOIN FETCH
r.currentusers WHERE r.ispublic= true and r.deleted= false ORDER BY r.name
ASC", Rooms.class);
+ return q.getResultList();
+ }
+
+ public List<Rooms> getOrganisationRooms(long orgId) {
+ TypedQuery<Rooms> q = em.createQuery(
+ "SELECT DISTINCT c.room FROM Rooms_Organisation
c LEFT JOIN FETCH c.room LEFT JOIN FETCH c.room.currentusers "
+ + "WHERE c.organisation.organisation_id = :orgId "
+ + "AND c.deleted = false AND c.room.deleted = false "
+ + "AND c.organisation.deleted = false "
+ + "ORDER BY c.room.name ASC", Rooms.class);
+ q.setParameter("orgId", orgId);
+ return q.getResultList();
+ }
+
public Rooms update(Rooms entity, long userId) {
if (entity.getRooms_id() == null) {
/* Red5SIP integration
*******************************************************************************/
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Rooms.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Rooms.java?rev=1400075&r1=1400074&r2=1400075&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Rooms.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Rooms.java
Fri Oct 19 12:39:38 2012
@@ -38,7 +38,6 @@ import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
-import javax.persistence.Transient;
import org.apache.openjpa.persistence.ElementDependent;
import org.apache.openmeetings.persistence.beans.OmEntity;
@@ -69,7 +68,6 @@ public class Rooms implements Serializab
private String name;
@Lob
- // @Basic(fetch=FetchType.LAZY)
@Column(name = "comment_field")
@Element(data = true, required = false)
private String comment;
@@ -217,10 +215,8 @@ public class Rooms implements Serializab
@org.simpleframework.xml.Transient
private List<Rooms_Organisation> roomOrganisations = new
ArrayList<Rooms_Organisation>();
- /*
- * Non persistent attributes
- */
- @Transient
+ @OneToMany(fetch = FetchType.LAZY)
+ @JoinColumn(name = "room_id")
private List<RoomClient> currentusers;
public String getComment() {
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarForm.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarForm.java?rev=1400075&r1=1400074&r2=1400075&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarForm.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarForm.java
Fri Oct 19 12:39:38 2012
@@ -18,14 +18,36 @@
*/
package org.apache.openmeetings.web.components.user.calendar;
+import java.util.ArrayList;
+import java.util.List;
+
+import
org.apache.openmeetings.data.calendar.daos.AppointmentReminderTypDaoImpl;
+import org.apache.openmeetings.data.conference.RoomDAO;
+import org.apache.openmeetings.data.conference.Roommanagement;
+import org.apache.openmeetings.data.user.dao.UsersDaoImpl;
import org.apache.openmeetings.persistence.beans.calendar.Appointment;
+import
org.apache.openmeetings.persistence.beans.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.persistence.beans.domain.Organisation_Users;
+import org.apache.openmeetings.persistence.beans.rooms.RoomTypes;
+import org.apache.openmeetings.persistence.beans.rooms.Rooms;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.extensions.yui.calendar.DateTimeField;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
public class CalendarForm extends Form<Appointment> {
private static final long serialVersionUID = -1764738237821487526L;
+ private boolean createRoom = true;
public CalendarForm(String id, IModel<Appointment> model) {
super(id, model);
@@ -33,5 +55,71 @@ public class CalendarForm extends Form<A
add(new RequiredTextField<String>("appointmentName"));
add(new TextArea<String>("appointmentDescription"));
+ add(new TextField<String>("appointmentLocation"));
+ add(new DateTimeField("appointmentStarttime"));
+ add(new DateTimeField("appointmentEndtime"));
+ final PasswordTextField pwd = new PasswordTextField("password");
+ pwd.setEnabled(isPwdProtected());
+ pwd.setOutputMarkupId(true);
+ add(pwd);
+
+ add(new DropDownChoice<AppointmentReminderTyps>(
+ "remind"
+ ,
Application.getBean(AppointmentReminderTypDaoImpl.class).getAppointmentReminderTypList()
+ , new
ChoiceRenderer<AppointmentReminderTyps>("name", "typId")));
+
+ final DropDownChoice<RoomTypes> roomType = new
DropDownChoice<RoomTypes>(
+ "room.roomtype"
+ ,
Application.getBean(Roommanagement.class).getAllRoomTypes()
+ , new ChoiceRenderer<RoomTypes>("name",
"roomtypes_id"));
+ roomType.setEnabled(createRoom);
+ roomType.setOutputMarkupId(true);
+ add(roomType);
+
+ final DropDownChoice<Rooms> room = new DropDownChoice<Rooms>(
+ "room"
+ , getRoomList()
+ , new ChoiceRenderer<Rooms>("name",
"rooms_id"));
+ room.setEnabled(!createRoom);
+ room.setOutputMarkupId(true);
+ add(room);
+
+ add(new AjaxCheckBox("createRoom", new
PropertyModel<Boolean>(this, "createRoom")) {
+ private static final long serialVersionUID =
-3743113990890386035L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ createRoom = getConvertedInput();
+ target.add(roomType.setEnabled(createRoom),
room.setEnabled(!createRoom));
+ }
+ });
+ add(new AjaxCheckBox("isPasswordProtected") {
+ private static final long serialVersionUID =
6041200584296439976L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+
CalendarForm.this.getModelObject().setIsPasswordProtected(getConvertedInput());
+ pwd.setEnabled(isPwdProtected());
+ target.add(pwd);
+ }
+ });
+ }
+
+ private boolean isPwdProtected() {
+ return
Boolean.TRUE.equals(getModelObject().getIsPasswordProtected());
+ }
+
+ private List<Rooms> getRoomList() {
+ //FIXME need to be reviewed
+ List<Rooms> result = new ArrayList<Rooms>();
+ RoomDAO dao = Application.getBean(RoomDAO.class);
+ result.addAll(dao.getPublicRooms());
+ for (Organisation_Users ou :
Application.getBean(UsersDaoImpl.class).get(WebSession.getUserId()).getOrganisation_users())
{
+
result.addAll(dao.getOrganisationRooms(ou.getOrganisation().getOrganisation_id()));
+ }
+ if (getModelObject().getRoom() != null &&
getModelObject().getRoom().getAppointment()) { //FIXME review
+ result.add(getModelObject().getRoom());
+ }
+ return result;
}
}
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=1400075&r1=1400074&r2=1400075&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
Fri Oct 19 12:39:38 2012
@@ -71,7 +71,7 @@
$('#appointment').dialog({
closeOnEscape: true
, resizable: true
- , width: 400
+ , width: 450
, autoOpen: false
, modal: true
});
@@ -89,53 +89,55 @@
<td><wicket:ommessage key="572"
/></td>
<td><input type="text"
wicket:id="appointmentName" /></td>
</tr>
- <!-- tr>
- <td> </td>
- <td>
- <wicket:ommessage
key="570" /><input type="text" wicket:id="appointmentStarttime" />
- <wicket:ommessage
key="571" /><input type="text" wicket:id="appointmentEndtime" />
- </td>
+ <tr>
+ <td><wicket:ommessage key="570"
/></td>
+ <td><span
wicket:id="appointmentStarttime"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:ommessage key="571"
/></td>
+ <td><span
wicket:id="appointmentEndtime"></span></td>
</tr>
<tr>
<td><wicket:ommessage key="565"
/></td>
- <td><select
wicket:id="notification" ></select></td>
+ <td><select wicket:id="remind"
></select></td>
</tr>
<tr>
<td colspan="2"><input
type="checkbox" wicket:id="createRoom" /><wicket:ommessage key="1509" /></td>
</tr>
<tr>
<td><wicket:ommessage key="619"
/></td>
- <td><select
wicket:id="roomType" ></select></td>
+ <td><select
wicket:id="room.roomtype" ></select></td>
</tr>
<tr>
<td><wicket:ommessage key="406"
/></td>
<td><select wicket:id="room"
></select></td>
</tr>
<tr>
- <td colspan="2"><input
type="checkbox" wicket:id="isPasswordProtected" /><wicket:ommessage key="1509"
/></td>
+ <td colspan="2"><input
type="checkbox" wicket:id="isPasswordProtected" /><wicket:ommessage key="524"
/></td>
</tr>
<tr>
<td><wicket:ommessage key="525"
/></td>
- <td><input type="text"
wicket:id="password" /></td>
+ <td><input type="password"
wicket:id="password" /></td>
</tr>
<tr>
<td
colspan="2"><wicket:ommessage key="1445" /></td>
</tr>
+ <!--
<tr>
<td><wicket:ommessage key="803"
/></td>
<td><select
wicket:id="meetingMember" ></select></td>
- </tr>
+ </tr -->
<tr>
<td><wicket:ommessage key="569"
/></td>
<td><input type="text"
wicket:id="appointmentLocation" /></td>
- </tr-->
+ </tr>
<tr>
<td><wicket:ommessage key="573"
/></td>
- <td><input type="text"
wicket:id="appointmentDescription" /></td>
+ <td><textarea
wicket:id="appointmentDescription"></textarea></td>
</tr>
<!-- tr>
<td colspan="2"
style="text-align: right"><input type="button" wicket:id="save" /><input
type="button" wicket:id="cancel" /></td>
- </tr-->
+ </tr -->
</table>
</form>
</div>
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=1400075&r1=1400074&r2=1400075&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
Fri Oct 19 12:39:38 2012
@@ -150,6 +150,9 @@ public class CalendarPanel extends UserP
Calendar end = WebSession.getCalendar();
end.setTimeInMillis(getRequestCycle().getRequest().getRequestParameters().getParameterValue("_end").toLong());
+ if (start.equals(end)) {
+ end.add(Calendar.HOUR_OF_DAY, 1);
+ }
Appointment a = new Appointment();
a.setAppointmentStarttime(start.getTime());
a.setAppointmentEndtime(end.getTime());