Author: solomax
Date: Fri Mar 22 05:16:31 2013
New Revision: 1459637
URL: http://svn.apache.org/r1459637
Log:
[OPENMEETINGS-574] ability to create events in calendar is added
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java?rev=1459637&r1=1459636&r2=1459637&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
Fri Mar 22 05:16:31 2013
@@ -36,9 +36,11 @@ import javax.persistence.criteria.Predic
import javax.persistence.criteria.Root;
import org.apache.openmeetings.OpenmeetingsVariables;
+import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
import org.apache.openmeetings.data.basic.dao.OmTimeZoneDao;
import org.apache.openmeetings.data.calendar.management.MeetingMemberLogic;
import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.data.conference.dao.RoomDao;
import org.apache.openmeetings.data.user.UserManager;
import org.apache.openmeetings.data.user.dao.UsersDao;
import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
@@ -75,6 +77,10 @@ public class AppointmentDao {
@Autowired
private UsersDao usersDao;
@Autowired
+ private RoomDao roomDao;
+ @Autowired
+ private ConfigurationDao cfgDao;
+ @Autowired
private InvitationManager invitationManager;
@Autowired
private MeetingMemberLogic meetingMemberLogic;
@@ -253,6 +259,25 @@ public class AppointmentDao {
return null;
}
+ public Appointment update(Appointment a, Long userId) {
+ a.setUserId(usersDao.get(userId));
+ Room r = a.getRoom();
+ if (r.getRooms_id() == null) {
+ r.setName(a.getAppointmentName());
+
r.setNumberOfPartizipants(cfgDao.getConfValue("calendar.conference.rooms.default.size",
Long.class, "50"));
+ }
+ roomDao.update(r, userId);
+ //FIXME meeting members
+ if (a.getAppointmentId() == null) {
+ a.setStarttime(new Date());
+ em.persist(a);
+ } else {
+ a.setUpdatetime(new Date());
+ a = em.merge(a);
+ }
+ return a;
+ }
+
//
----------------------------------------------------------------------------------------------------------------------------
public Long updateAppointment(Appointment appointment) {
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java?rev=1459637&r1=1459636&r2=1459637&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
Fri Mar 22 05:16:31 2013
@@ -111,6 +111,7 @@ public class Appointment implements Seri
@Element(name="users_id", data=true, required=false)
private User userId;
+ // FIXME need to be renamed => inserted
@Column(name = "starttime")
private Date starttime;
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java?rev=1459637&r1=1459636&r2=1459637&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java
Fri Mar 22 05:16:31 2013
@@ -1,8 +1,10 @@
package org.apache.openmeetings.web.components.user.calendar;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
+import org.apache.openmeetings.data.calendar.daos.AppointmentDao;
import org.apache.openmeetings.data.calendar.daos.AppointmentReminderTypDao;
import org.apache.openmeetings.data.conference.RoomManager;
import org.apache.openmeetings.data.conference.dao.RoomDao;
@@ -34,17 +36,31 @@ import com.googlecode.wicket.jquery.ui.w
public class AppointmentDialog extends AbstractFormDialog<Appointment> {
private static final long serialVersionUID = 7553035786264113827L;
private AppointmentForm form;
+ private DialogButton save = new
DialogButton(WebSession.getString(813L));
+ private DialogButton cancel = new
DialogButton(WebSession.getString(1130L));
+ private final CalendarPanel calendar;
- public AppointmentDialog(String id, String title, IModel<Appointment>
model) {
+ @Override
+ public void setModelObject(Appointment object) {
+ form.setModelObject(object);
+ super.setModelObject(object);
+ }
+
+ public AppointmentDialog(String id, String title, CalendarPanel
calendar, IModel<Appointment> model) {
super(id, title, model, true);
+ this.calendar = calendar;
form = new AppointmentForm("appForm", new
CompoundPropertyModel<Appointment>(this.getModel()));
add(form);
}
@Override
+ protected List<DialogButton> getButtons() {
+ return Arrays.asList(cancel, save);
+ }
+
+ @Override
protected DialogButton getSubmitButton() {
- // TODO Auto-generated method stub
- return null;
+ return save;
}
@Override
@@ -59,20 +75,53 @@ public class AppointmentDialog extends A
@Override
protected void onError(AjaxRequestTarget target) {
- // TODO Auto-generated method stub
-
+ // FIXME feedback
}
@Override
protected void onSubmit(AjaxRequestTarget target) {
- // TODO Auto-generated method stub
-
+
Application.getBean(AppointmentDao.class).update(form.getModelObject(),
WebSession.getUserId());
+ // FIXME feedback
+ calendar.refresh(target);
}
private class AppointmentForm extends Form<Appointment> {
private static final long serialVersionUID =
-1764738237821487526L;
private boolean createRoom = true;
+ @Override
+ protected void onModelChanged() {
+ super.onModelChanged();
+
+ Appointment a = getModelObject();
+
+ List<AppointmentReminderTyps> remindTypes =
getRemindTypes();
+ if (a.getRemind() == null && !remindTypes.isEmpty()) {
+ a.setRemind(remindTypes.get(0));
+ }
+
+ List<RoomType> roomTypes = getRoomTypes();
+ if (a.getRoom() == null) {
+ Room r = new Room();
+ r.setAppointment(true);
+ a.setRoom(r);
+ }
+ if (a.getRoom().getRoomtype() == null &&
!roomTypes.isEmpty()) {
+ a.getRoom().setRoomtype(roomTypes.get(0));
+ }
+ if (a.getAppointmentId() == null) {
+ java.util.Calendar start =
WebSession.getCalendar();
+ start.setTime(a.getAppointmentStarttime());
+ java.util.Calendar end =
WebSession.getCalendar();
+ end.setTime(a.getAppointmentEndtime());
+
+ if (start.equals(end)) {
+ end.add(java.util.Calendar.HOUR_OF_DAY,
1);
+ a.setAppointmentEndtime(end.getTime());
+ }
+ }
+ }
+
public AppointmentForm(String id, IModel<Appointment> model) {
super(id, model);
setOutputMarkupId(true);
@@ -87,14 +136,16 @@ public class AppointmentDialog extends A
pwd.setOutputMarkupId(true);
add(pwd);
+ List<AppointmentReminderTyps> remindTypes =
getRemindTypes();
add(new DropDownChoice<AppointmentReminderTyps>(
"remind"
- ,
Application.getBean(AppointmentReminderTypDao.class).getAppointmentReminderTypList()
+ , remindTypes
, new
ChoiceRenderer<AppointmentReminderTyps>("name", "typId")));
+ List<RoomType> roomTypes = getRoomTypes();
final DropDownChoice<RoomType> roomType = new
DropDownChoice<RoomType>(
"room.roomtype"
- ,
Application.getBean(RoomManager.class).getAllRoomTypes()
+ , roomTypes
, new ChoiceRenderer<RoomType>("name",
"roomtypes_id"));
roomType.setEnabled(createRoom);
roomType.setOutputMarkupId(true);
@@ -132,6 +183,14 @@ public class AppointmentDialog extends A
return
Boolean.TRUE.equals(getModelObject().getIsPasswordProtected());
}
+ private List<RoomType> getRoomTypes() {
+ return
Application.getBean(RoomManager.class).getAllRoomTypes();
+ }
+
+ private List<AppointmentReminderTyps> getRemindTypes() {
+ return
Application.getBean(AppointmentReminderTypDao.class).getAppointmentReminderTypList();
+ }
+
private List<Room> getRoomList() {
//FIXME need to be reviewed
List<Room> result = new ArrayList<Room>();
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java?rev=1459637&r1=1459636&r2=1459637&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
Fri Mar 22 05:16:31 2013
@@ -35,19 +35,28 @@ import com.googlecode.wicket.jquery.ui.c
public class CalendarPanel extends UserPanel {
private static final long serialVersionUID = -6536379497642291437L;
+ private Calendar calendar;
@Override
public void onMenuPanelLoad(AjaxRequestTarget target) {
target.appendJavaScript("calendarInit();");
}
+ private AppointmentDao getDao() {
+ return Application.getBean(AppointmentDao.class);
+ }
+
+ public void refresh(AjaxRequestTarget target) {
+ calendar.refresh(target);
+ }
+
public CalendarPanel(String id) {
super(id);
final Form<Date> form = new Form<Date>("form");
add(form);
- final AppointmentDialog dialog = new
AppointmentDialog("appointment", WebSession.getString(815), Model.of(new
Appointment()));
+ final AppointmentDialog dialog = new
AppointmentDialog("appointment", WebSession.getString(815), this, Model.of(new
Appointment()));
add(dialog);
Options options = new Options();
@@ -58,7 +67,7 @@ public class CalendarPanel extends UserP
options.set("defaultEventMinutes", 60);
options.set("timeFormat", "{agenda: 'HH:mm{ - HH:mm}', '':
'HH(:mm)'}");
- final Calendar calendar = new Calendar("calendar", new
AppointmentModel(), options) {
+ calendar = new Calendar("calendar", new AppointmentModel(),
options) {
private static final long serialVersionUID =
8442068089963449950L;
@Override
@@ -102,29 +111,26 @@ public class CalendarPanel extends UserP
return true;
}
- @Override
- protected void onDayClick(AjaxRequestTarget target,
Date date) {
- java.util.Calendar start =
WebSession.getCalendar();
- start.setTime(date);
- java.util.Calendar end =
WebSession.getCalendar();
- end.setTime(date);
-
- if (start.equals(end)) {
- end.add(java.util.Calendar.HOUR_OF_DAY,
1);
- }
- Appointment a = new Appointment();
- a.setAppointmentStarttime(start.getTime());
- a.setAppointmentEndtime(end.getTime());
- dialog.setModelObject(a);
-
- dialog.open(target);
- }
+ //no need to override onDayClick
@Override
protected void onSelect(AjaxRequestTarget target, Date
start, Date end, boolean allDay) {
Appointment a = new Appointment();
- a.setAppointmentStarttime(start);
- a.setAppointmentEndtime(end);
+ //FIXME seems like this check should be done
for monthly view only
+ if (start.equals(end)) {
+ java.util.Calendar now =
WebSession.getCalendar();
+ java.util.Calendar cal =
WebSession.getCalendar();
+ cal.setTime(start);
+ cal.set(java.util.Calendar.HOUR,
now.get(java.util.Calendar.HOUR));
+ cal.set(java.util.Calendar.MINUTE,
now.get(java.util.Calendar.MINUTE));
+ cal.set(java.util.Calendar.SECOND, 0);
+ cal.set(java.util.Calendar.MILLISECOND,
0);
+
a.setAppointmentStarttime(cal.getTime());
+ a.setAppointmentEndtime(cal.getTime());
+ } else {
+ a.setAppointmentStarttime(start);
+ a.setAppointmentEndtime(end);
+ }
dialog.setModelObject(a);
dialog.open(target);
@@ -132,7 +138,7 @@ public class CalendarPanel extends UserP
@Override
protected void onEventClick(AjaxRequestTarget target,
int eventId) {
- Appointment a =
Application.getBean(AppointmentDao.class).getAppointmentById((long)eventId);
+ Appointment a =
getDao().getAppointmentById((long)eventId);
dialog.setModelObject(a);
dialog.open(target);
@@ -140,7 +146,7 @@ public class CalendarPanel extends UserP
@Override
protected void onEventDrop(AjaxRequestTarget target,
int eventId, long delta, boolean allDay) {
- AppointmentDao dao =
Application.getBean(AppointmentDao.class);
+ AppointmentDao dao = getDao();
Appointment a =
dao.getAppointmentById((long)eventId);
java.util.Calendar cal =
WebSession.getCalendar();
@@ -158,7 +164,7 @@ public class CalendarPanel extends UserP
@Override
protected void onEventResize(AjaxRequestTarget target,
int eventId, long delta) {
- AppointmentDao dao =
Application.getBean(AppointmentDao.class);
+ AppointmentDao dao = getDao();
Appointment a =
dao.getAppointmentById((long)eventId);
java.util.Calendar cal =
WebSession.getCalendar();
cal.setTime(a.getAppointmentEndtime());