This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch csp
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/csp by this push:
     new d5ef650  [OPENMEETINGS-2165] initial work on AppointmentDialog
d5ef650 is described below

commit d5ef650cd79af6c28dd5cd185fee48c555930012
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Fri Feb 14 16:54:42 2020 +0700

    [OPENMEETINGS-2165] initial work on AppointmentDialog
---
 .../web/user/calendar/AppointmentDialog.html       | 159 +++++-----
 .../web/user/calendar/AppointmentDialog.java       | 351 ++++++++++-----------
 .../web/user/calendar/CalendarPanel.html           |   2 +-
 .../web/user/calendar/CalendarPanel.java           |   4 +-
 4 files changed, 242 insertions(+), 274 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
index 398647d..adf47c2 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
@@ -20,103 +20,104 @@
 -->
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
-<wicket:panel>
+<wicket:extend>
        <form wicket:id="appForm" class="appointmentPopUp">
                <span wicket:id="feedback"></span>
                <div class="tabs">
-                       <ul>
-                               <li><a href="#tab1"><wicket:message 
key="appointment.tab.general"/></a></li>
-                               <li><a href="#tab2"><wicket:message 
key="406"/></a></li>
-                               <li><a href="#tab3"><wicket:message 
key="appointment.tab.advanced"/></a></li>
+                       <ul class="nav nav-tabs" role="tablist">
+                               <li class="nav-item"><a class="nav-link active" 
id="tab1-tab" data-toggle="tab" role="tab" aria-controls="tab1" 
href="#tab1"><wicket:message key="appointment.tab.general"/></a></li>
+                               <li class="nav-item"><a class="nav-link" 
id="tab2-tab" data-toggle="tab" role="tab" aria-controls="tab2" 
href="#tab2"><wicket:message key="406"/></a></li>
+                               <li class="nav-item"><a class="nav-link" 
id="tab3-tab" data-toggle="tab" role="tab" aria-controls="tab3" 
href="#tab3"><wicket:message key="appointment.tab.advanced"/></a></li>
                        </ul>
-                       <div id="tab1">
-                               <div class="table">
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="572" /></div>
-                                               <div class="column data"><input 
type="text" wicket:id="title" /></div>
-                                       </div>
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="570" /></div>
-                                               <div class="column data"><span 
class="date time picker" wicket:id="start"></span></div>
-                                       </div>
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="571" /></div>
-                                               <div class="column data"><span 
class="date time picker" wicket:id="end"></span></div>
-                                       </div>
-                                       <div wicket:id="owner-row">
-                                               <div class="column 
label"><wicket:message key="1156" /></div>
-                                               <div class="column data"><span 
wicket:id="aowner"></span></div>
-                                       </div>
-                                       <div wicket:id="inviteeType">
+                       <div class="tab-content">
+                               <div id="tab1" class="tab-pane fade show 
active" role="tabpanel" aria-labelledby="tab1-tab">
+                                       <div class="table">
                                                <div>
-                                                       <div class="column 
label"><input type="radio" wicket:id="user"/><label 
wicket:for="user"><wicket:message key="803" /></label></div>
-                                                       <div class="column data 
om-select2" wicket:message="title:1588"><select class="appointment attendees 
input" wicket:id="attendees"></select></div>
+                                                       <div class="column 
label"><wicket:message key="572" /></div>
+                                                       <div class="column 
data"><input type="text" wicket:id="title" /></div>
                                                </div>
-                                               <div wicket:id="groupContainer">
-                                                       <div class="column 
label"><input type="radio" wicket:id="group"/><label 
wicket:for="group"><wicket:message key="126" /></label></div>
-                                                       <div class="column data 
om-select2"><select wicket:id="groups" class="input invitees"></select></div>
+                                               <div>
+                                                       <div class="column 
label"><wicket:message key="570" /></div>
+                                                       <div class="column 
data"><span class="date time picker" wicket:id="start"></span></div>
                                                </div>
-                                       </div>
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="569" /></div>
-                                               <div class="column data"><input 
type="text" wicket:id="location" /></div>
-                                       </div>
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="196" /></div>
-                                               <div class="column data">
-                                                       <div 
wicket:id="toolbarContainer"></div>
-                                                       <div 
wicket:id="description"></div>
+                                               <div>
+                                                       <div class="column 
label"><wicket:message key="571" /></div>
+                                                       <div class="column 
data"><span class="date time picker" wicket:id="end"></span></div>
+                                               </div>
+                                               <div wicket:id="owner-row">
+                                                       <div class="column 
label"><wicket:message key="1156" /></div>
+                                                       <div class="column 
data"><span wicket:id="aowner"></span></div>
+                                               </div>
+                                               <div wicket:id="inviteeType">
+                                                       <div>
+                                                               <div 
class="column label"><input type="radio" wicket:id="user"/><label 
wicket:for="user"><wicket:message key="803" /></label></div>
+                                                               <div 
class="column data om-select2" wicket:message="title:1588"><select 
class="appointment attendees input" wicket:id="attendees"></select></div>
+                                                       </div>
+                                                       <div 
wicket:id="groupContainer">
+                                                               <div 
class="column label"><input type="radio" wicket:id="group"/><label 
wicket:for="group"><wicket:message key="126" /></label></div>
+                                                               <div 
class="column data om-select2"><select wicket:id="groups" class="input 
invitees"></select></div>
+                                                       </div>
                                                </div>
-                                       </div>
-                               </div>
-                       </div>
-                       <div id="tab2">
-                               <div class="table">
-                                       <div wicket:enclosure="createRoom">
-                                               <input type="checkbox" 
wicket:id="createRoom" /><label wicket:for="createRoom"><wicket:message 
key="1509" /></label>
-                                       </div>
-                                       <div wicket:id="create-room-block">
                                                <div>
-                                                       <div class="column 
label"><wicket:message key="619" /></div>
-                                                       <div class="column 
data"><select wicket:id="type" ></select></div>
+                                                       <div class="column 
label"><wicket:message key="569" /></div>
+                                                       <div class="column 
data"><input type="text" wicket:id="location" /></div>
                                                </div>
                                                <div>
-                                                       <div class="column 
label"><label wicket:for="moderated"><wicket:message key="640" /></label></div>
-                                                       <div class="column 
data"><input type="checkbox" wicket:id="moderated" /></div>
+                                                       <div class="column 
label"><wicket:message key="196" /></div>
+                                                       <div class="column 
data">
+                                                               <div 
wicket:id="toolbarContainer"></div>
+                                                               <div 
wicket:id="description"></div>
+                                                       </div>
                                                </div>
                                        </div>
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="406" /></div>
-                                               <div class="column 
data"><select wicket:id="groom" ></select></div>
-                                       </div>
-                                       <div wicket:id="sip-container">
-                                               <div class="column 
label"><wicket:message key="1003"/></div>
-                                               <div class="column data"><span 
wicket:id="room.confno"></span></div>
-                                       </div>
                                </div>
-                       </div>
-                       <div id="tab3">
-                               <div class="table">
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="565" /></div>
-                                               <div class="column 
data"><select wicket:id="reminder" ></select></div>
-                                       </div>
-                                       <div>
-                                               <input type="checkbox" 
wicket:id="passwordProtected" /><label 
wicket:for="passwordProtected"><wicket:message key="524" /></label>
-                                       </div>
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="110" /></div>
-                                               <div class="column data"><input 
type="password" wicket:id="password" /></div>
+                               <div id="tab2" class="tab-pane fade" 
role="tabpanel" aria-labelledby="tab2-tab">
+                                       <div class="table">
+                                               <div 
wicket:enclosure="createRoom">
+                                                       <input type="checkbox" 
wicket:id="createRoom" /><label wicket:for="createRoom"><wicket:message 
key="1509" /></label>
+                                               </div>
+                                               <div 
wicket:id="create-room-block">
+                                                       <div>
+                                                               <div 
class="column label"><wicket:message key="619" /></div>
+                                                               <div 
class="column data"><select wicket:id="type" ></select></div>
+                                                       </div>
+                                                       <div>
+                                                               <div 
class="column label"><label wicket:for="moderated"><wicket:message key="640" 
/></label></div>
+                                                               <div 
class="column data"><input type="checkbox" wicket:id="moderated" /></div>
+                                                       </div>
+                                               </div>
+                                               <div>
+                                                       <div class="column 
label"><wicket:message key="406" /></div>
+                                                       <div class="column 
data"><select wicket:id="groom" ></select></div>
+                                               </div>
+                                               <div wicket:id="sip-container">
+                                                       <div class="column 
label"><wicket:message key="1003"/></div>
+                                                       <div class="column 
data"><span wicket:id="room.confno"></span></div>
+                                               </div>
                                        </div>
-                                       <div><wicket:message key="1445" /></div>
-                                       <div>
-                                               <div class="column 
label"><wicket:message key="162" /></div>
-                                               <div class="column 
data"><select wicket:id="calendar"></select></div>
+                               </div>
+                               <div id="tab3" class="tab-pane fade" 
role="tabpanel" aria-labelledby="tab3-tab">
+                                       <div class="table">
+                                               <div>
+                                                       <div class="column 
label"><wicket:message key="565" /></div>
+                                                       <div class="column 
data"><select wicket:id="reminder" ></select></div>
+                                               </div>
+                                               <div>
+                                                       <input type="checkbox" 
wicket:id="passwordProtected" /><label 
wicket:for="passwordProtected"><wicket:message key="524" /></label>
+                                               </div>
+                                               <div>
+                                                       <div class="column 
label"><wicket:message key="110" /></div>
+                                                       <div class="column 
data"><input type="password" wicket:id="password" /></div>
+                                               </div>
+                                               <div><wicket:message key="1445" 
/></div>
+                                               <div>
+                                                       <div class="column 
label"><wicket:message key="162" /></div>
+                                                       <div class="column 
data"><select wicket:id="calendar"></select></div>
+                                               </div>
                                        </div>
                                </div>
                        </div>
                </div>
        </form>
-       <div wicket:id="confirmDelete"></div>
-</wicket:panel>
+</wicket:extend>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index d1459d2..2645272 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.user.calendar;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
 import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
 import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
 
@@ -86,30 +87,25 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.wicketstuff.select2.Select2MultiChoice;
 
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
-import com.googlecode.wicket.jquery.ui.JQueryUIBehavior;
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
-import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
 
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
+import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import 
de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
+import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.dialog.ModalCloseButton;
 
-public class AppointmentDialog extends AbstractFormDialog<Appointment> {
+public class AppointmentDialog extends Modal<Appointment> {
        private static final long serialVersionUID = 1L;
        private static final Logger log = 
LoggerFactory.getLogger(AppointmentDialog.class);
 
        private AppointmentForm form;
-       private DialogButton save;
-       private DialogButton cancel;
-       private DialogButton delete;
-       private DialogButton enterRoom;
+       private BootstrapAjaxButton save;
+       private BootstrapAjaxLink<String> delete;
+       private BootstrapAjaxLink<String> enterRoom;
        private final CalendarPanel calendarPanel;
        private final NotificationPanel feedback = new 
NotificationPanel("feedback");
-       MessageDialog confirmDelete;
        private final WebMarkupContainer sipContainer = new 
WebMarkupContainer("sip-container");
        private final RadioGroup<InviteeType> rdi = new 
RadioGroup<>("inviteeType", Model.of(InviteeType.user));
        private final Select2MultiChoice<Group> groups = new 
Select2MultiChoice<>("groups"
@@ -134,44 +130,109 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
        private ConfigurationDao cfgDao;
 
        public AppointmentDialog(String id, CalendarPanel calendarPanel, 
CompoundPropertyModel<Appointment> model) {
-               super(id, "", model, true);
+               super(id, model);
                log.debug(" -- AppointmentDialog -- Current model {}", 
getModel().getObject());
                this.calendarPanel = calendarPanel;
                setOutputMarkupId(true);
-               form = new AppointmentForm("appForm", model);
-               add(form);
        }
 
        @Override
        protected void onInitialize() {
-               getTitle().setObject(getString("815"));
-               save = new DialogButton("save", getString("144"));
-               cancel = new DialogButton("cancel", getString("lbl.cancel"));
-               delete = new DialogButton("delete", getString("80"));
-               enterRoom = new DialogButton("enterRoom", getString("1282"));
-               confirmDelete = new MessageDialog("confirmDelete", 
getString("80"), getString("833"), DialogButtons.OK_CANCEL, DialogIcon.WARN){
+               header(new ResourceModel("815"));
+               setBackdrop(Backdrop.STATIC);
+
+               add(form = new AppointmentForm("appForm", getModel()));
+               addButton(save = new BootstrapAjaxButton("button", new 
ResourceModel("144"), form, Buttons.Type.Outline_Primary) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClose(IPartialPageRequestHandler handler, 
DialogButton button) {
-                               if (button != null && 
button.match(AbstractDialog.OK)){
-                                       deleteAppointment(handler);
+                       protected void onSubmit(AjaxRequestTarget target) {
+                               Appointment a = form.getModelObject();
+                               a.setRoom(form.createRoom ? form.appRoom : 
form.groom.getModelObject());
+                               final List<MeetingMember> mms = 
a.getMeetingMembers() == null ? new ArrayList<>() : a.getMeetingMembers();
+                               Set<Long> currentIds = new HashSet<>();
+                               List<User> users = new ArrayList<>();
+                               if (InviteeType.group == rdi.getModelObject()) {
+                                       //lets iterate through all group users
+                                       for (Group g : groups.getModelObject()) 
{
+                                               for (GroupUser gu : 
groupUserDao.get(g.getId(), 0, Integer.MAX_VALUE)) {
+                                                       User u = gu.getUser();
+                                                       if 
(!currentIds.contains(u.getId())) {
+                                                               users.add(u);
+                                                               
currentIds.add(u.getId());
+                                                       }
+                                               }
+                                       }
+                               } else {
+                                       users = new 
ArrayList<>(attendees.getModelObject());
+                                       for (User u : users) {
+                                               if (u.getId() != null) {
+                                                       
currentIds.add(u.getId());
+                                               }
+                                       }
+                               }
+
+                               //remove users
+                               for (Iterator<MeetingMember> i = 
mms.iterator(); i.hasNext();) {
+                                       MeetingMember m = i.next();
+                                       if 
(!currentIds.contains(m.getUser().getId())) {
+                                               i.remove();
+                                       }
+                               }
+                               Set<Long> originalIds = new HashSet<>();
+                               for (MeetingMember m : mms) {
+                                       originalIds.add(m.getUser().getId());
+                               }
+                               //add users
+                               for (User u : users) {
+                                       if (u.getId() == null || 
!originalIds.contains(u.getId())) {
+                                               MeetingMember mm = new 
MeetingMember();
+                                               mm.setUser(u);
+                                               mm.setDeleted(false);
+                                               mm.setInserted(a.getInserted());
+                                               mm.setUpdated(a.getUpdated());
+                                               mm.setAppointment(a);
+                                               mms.add(mm);
+                                       }
+                               }
+                               a.setMeetingMembers(mms);
+                               
a.setStart(getDate(form.start.getModelObject()));
+                               a.setEnd(getDate(form.end.getModelObject()));
+                               a.setCalendar(form.cals.getModelObject());
+                               if (a.getCalendar() != null) {
+                                       // Updates on the remote server and 
sets the href. Should be before dao update
+                                       
calendarPanel.updatedeleteAppointment(target, 
CalendarDialog.DIALOG_TYPE.UPDATE_APPOINTMENT, a);
                                }
+                               apptDao.update(a, getUserId());
+                               target.add(feedback);
+                               calendarPanel.refresh(target);
                        }
-               };
-               add(confirmDelete);
-               super.onInitialize();
-       }
 
-       @Override
-       public int getWidth() {
-               return 650;
-       }
+                       @Override
+                       protected void onError(AjaxRequestTarget target) {
+                               target.add(feedback);
+                       }
+               });
+               addButton(enterRoom = new BootstrapAjaxLink<>("button", null, 
Buttons.Type.Outline_Success, new ResourceModel("1282")) {
+                       private static final long serialVersionUID = 1L;
 
-       @Override
-       public void onConfigure(JQueryBehavior behavior) {
-               super.onConfigure(behavior);
-               behavior.setOption("classes", "{'ui-dialog': 'ui-corner-all 
appointment'}");
+                       @Override
+                       public void onClick(AjaxRequestTarget handler) {
+                               
RoomEnterBehavior.roomEnter((MainPage)getPage(), handler, 
AppointmentDialog.this.getModelObject().getRoom().getId());
+                       }
+               });
+               delete = new BootstrapAjaxLink<>("button", null, 
Buttons.Type.Outline_Danger, new ResourceModel("80")) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClick(AjaxRequestTarget handler) {
+                               deleteAppointment(handler);
+                       }
+               };
+               
delete.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
+               addButton(delete.add(newOkCancelDangerConfirm(this, 
getString("833"))));
+               addButton(new ModalCloseButton(new 
ResourceModel("lbl.cancel")).type(Buttons.Type.Outline_Secondary));
+               super.onInitialize();
        }
 
        public void setModelObjectWithAjaxTarget(Appointment a, 
AjaxRequestTarget target) {
@@ -181,16 +242,17 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
                form.setEnabled(isOwner(a));
                log.debug(" -- setModelObjectWithAjaxTarget -- Current model 
{}", a);
                if (a.getId() != null) {
-                       delete.setVisible(isOwner(a), target);
-                       enterRoom.setVisible(a.getRoom() != null, target);
+                       delete.setVisible(isOwner(a));
+                       enterRoom.setVisible(a.getRoom() != null);
                } else {
-                       delete.setVisible(false, target);
-                       enterRoom.setVisible(false, target);
+                       delete.setVisible(false);
+                       enterRoom.setVisible(false);
                }
                if (a.getRoom() != null) {
                        target.add(sipContainer.replace(new 
Label("room.confno", 
a.getRoom().getConfno())).setVisible(a.getRoom().isSipEnabled()));
                }
-               save.setVisible(isOwner(a), target);
+               save.setVisible(isOwner(a));
+               target.add(delete, enterRoom, save);
                super.setModelObject(a);
        }
 
@@ -203,103 +265,6 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
                }
        }
 
-       @Override
-       protected List<DialogButton> getButtons() {
-               return Arrays.asList(enterRoom, save, delete, cancel);
-       }
-
-       @Override
-       public DialogButton getSubmitButton() {
-               return save;
-       }
-
-       @Override
-       public Form<?> getForm() {
-               return form;
-       }
-
-       @Override
-       protected void onOpen(IPartialPageRequestHandler handler) {
-               handler.add(form.add(new JQueryUIBehavior(String.format("#%s 
.tabs", getMarkupId()), "tabs")));
-       }
-
-       @Override
-       public void onClose(IPartialPageRequestHandler handler, DialogButton 
button) {
-               if (delete.equals(button)) {
-                       confirmDelete.open(handler);
-               } else if (enterRoom.equals(button)) {
-                       RoomEnterBehavior.roomEnter((MainPage)getPage(), 
handler, getModelObject().getRoom().getId());
-               }
-       }
-
-       @Override
-       protected void onError(AjaxRequestTarget target, DialogButton btn) {
-               target.add(feedback);
-       }
-
-       @Override
-       protected void onSubmit(AjaxRequestTarget target, DialogButton btn) {
-               Appointment a = form.getModelObject();
-               a.setRoom(form.createRoom ? form.appRoom : 
form.groom.getModelObject());
-               final List<MeetingMember> mms = a.getMeetingMembers() == null ? 
new ArrayList<>() : a.getMeetingMembers();
-               Set<Long> currentIds = new HashSet<>();
-               List<User> users = new ArrayList<>();
-               if (InviteeType.group == rdi.getModelObject()) {
-                       //lets iterate through all group users
-                       for (Group g : groups.getModelObject()) {
-                               for (GroupUser gu : groupUserDao.get(g.getId(), 
0, Integer.MAX_VALUE)) {
-                                       User u = gu.getUser();
-                                       if (!currentIds.contains(u.getId())) {
-                                               users.add(u);
-                                               currentIds.add(u.getId());
-                                       }
-                               }
-                       }
-               } else {
-                       users = new ArrayList<>(attendees.getModelObject());
-                       for (User u : users) {
-                               if (u.getId() != null) {
-                                       currentIds.add(u.getId());
-                               }
-                       }
-               }
-
-               //remove users
-               for (Iterator<MeetingMember> i = mms.iterator(); i.hasNext();) {
-                       MeetingMember m = i.next();
-                       if (!currentIds.contains(m.getUser().getId())) {
-                               i.remove();
-                       }
-               }
-               Set<Long> originalIds = new HashSet<>();
-               for (MeetingMember m : mms) {
-                       originalIds.add(m.getUser().getId());
-               }
-               //add users
-               for (User u : users) {
-                       if (u.getId() == null || 
!originalIds.contains(u.getId())) {
-                               MeetingMember mm = new MeetingMember();
-                               mm.setUser(u);
-                               mm.setDeleted(false);
-                               mm.setInserted(a.getInserted());
-                               mm.setUpdated(a.getUpdated());
-                               mm.setAppointment(a);
-                               mms.add(mm);
-                       }
-               }
-               a.setMeetingMembers(mms);
-               a.setStart(getDate(form.start.getModelObject()));
-               a.setEnd(getDate(form.end.getModelObject()));
-               a.setCalendar(form.cals.getModelObject());
-               if (a.getCalendar() != null) {
-                       // Updates on the remote server and sets the href. 
Should be before dao update
-                       calendarPanel.updatedeleteAppointment(target, 
CalendarDialog.DIALOG_TYPE.UPDATE_APPOINTMENT, a);
-               }
-               apptDao.update(a, getUserId());
-               target.add(feedback);
-               calendarPanel.refresh(target);
-       }
-
        public static boolean isOwner(Appointment object) {
                return object.getOwner() != null && 
getUserId().equals(object.getOwner().getId());
        }
@@ -339,12 +304,65 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
                );
                private final WebMarkupContainer groupContainer = new 
WebMarkupContainer("groupContainer");
 
-               public AppointmentForm(String id, 
CompoundPropertyModel<Appointment> model) {
+               public AppointmentForm(String id, IModel<Appointment> model) {
                        super(id, model);
                        setOutputMarkupId(true);
 
                        myRoomsAllowed = cfgDao.getBool(CONFIG_MYROOMS_ENABLED, 
true);
                        createRoom = myRoomsAllowed;
+               }
+
+               @Override
+               protected void onModelChanged() {
+                       super.onModelChanged();
+
+                       Appointment a = getModelObject();
+                       if (a.getReminder() == null) {
+                               a.setReminder(Reminder.none);
+                       }
+                       if (a.getRoom() == null) {
+                               a.setRoom(createAppRoom());
+                       }
+                       createRoom = myRoomsAllowed && 
a.getRoom().isAppointment();
+                       if (createRoom) {
+                               appRoom = a.getRoom();
+                       } else {
+                               groom.setModelObject(a.getRoom());
+                               appRoom = createAppRoom();
+                       }
+                       createRoomBlock.setDefaultModelObject(appRoom);
+                       createRoomBlock.setEnabled(createRoom);
+                       groom.setEnabled(!createRoom);
+                       if (a.getId() == null) {
+                               java.util.Calendar from = 
WebSession.getCalendar();
+                               from.setTime(a.getStart());
+                               java.util.Calendar to = 
WebSession.getCalendar();
+                               to.setTime(a.getEnd());
+
+                               if (from.equals(to)) {
+                                       to.add(java.util.Calendar.HOUR_OF_DAY, 
1);
+                                       a.setEnd(to.getTime());
+                               }
+                               cals.setEnabled(true);
+                       } else {
+                               cals.setEnabled(false);
+                       }
+
+                       rdi.setModelObject(InviteeType.user);
+                       attendees.setModelObject(new ArrayList<>());
+                       if (a.getMeetingMembers() != null) {
+                               for (MeetingMember mm : a.getMeetingMembers()) {
+                                       
attendees.getModelObject().add(mm.getUser());
+                               }
+                       }
+                       pwd.setEnabled(a.isPasswordProtected());
+                       
owner.setDefaultModel(Model.of(FormatHelper.formatUser(a.getOwner())));
+                       ownerPanel.setVisible(!isOwner(a));
+               }
+
+               @Override
+               protected void onInitialize() {
+
                        add(feedback.setOutputMarkupId(true));
                        //General
                        add(ownerPanel.add(owner));
@@ -445,58 +463,7 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
                        pwd.setOutputMarkupId(true);
                        add(pwd);
                        
add(cals.setNullValid(true).setLabel(Model.of("calendar")).setOutputMarkupId(true));
-               }
-
-               @Override
-               protected void onModelChanged() {
-                       super.onModelChanged();
 
-                       Appointment a = getModelObject();
-                       if (a.getReminder() == null) {
-                               a.setReminder(Reminder.none);
-                       }
-                       if (a.getRoom() == null) {
-                               a.setRoom(createAppRoom());
-                       }
-                       createRoom = myRoomsAllowed && 
a.getRoom().isAppointment();
-                       if (createRoom) {
-                               appRoom = a.getRoom();
-                       } else {
-                               groom.setModelObject(a.getRoom());
-                               appRoom = createAppRoom();
-                       }
-                       createRoomBlock.setDefaultModelObject(appRoom);
-                       createRoomBlock.setEnabled(createRoom);
-                       groom.setEnabled(!createRoom);
-                       if (a.getId() == null) {
-                               java.util.Calendar from = 
WebSession.getCalendar();
-                               from.setTime(a.getStart());
-                               java.util.Calendar to = 
WebSession.getCalendar();
-                               to.setTime(a.getEnd());
-
-                               if (from.equals(to)) {
-                                       to.add(java.util.Calendar.HOUR_OF_DAY, 
1);
-                                       a.setEnd(to.getTime());
-                               }
-                               cals.setEnabled(true);
-                       } else {
-                               cals.setEnabled(false);
-                       }
-
-                       rdi.setModelObject(InviteeType.user);
-                       attendees.setModelObject(new ArrayList<>());
-                       if (a.getMeetingMembers() != null) {
-                               for (MeetingMember mm : a.getMeetingMembers()) {
-                                       
attendees.getModelObject().add(mm.getUser());
-                               }
-                       }
-                       pwd.setEnabled(a.isPasswordProtected());
-                       
owner.setDefaultModel(Model.of(FormatHelper.formatUser(a.getOwner())));
-                       ownerPanel.setVisible(!isOwner(a));
-               }
-
-               @Override
-               protected void onInitialize() {
                        groups.setLabel(new ResourceModel("126"));
                        add(new RequiredTextField<String>("title").setLabel(new 
ResourceModel("572")));
                        add(start.setLabel(new 
ResourceModel("570")).setRequired(true)
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
index 4afd78d..3ea06f2 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
@@ -39,7 +39,7 @@
                        <!-- div wicket:id="feedback"></div -->
                </form>
        </div>
-       <div wicket:id="appointment">[appointment]</div>
+       <div wicket:id="appointment" class="appointment">[appointment]</div>
        <div wicket:id="calendarDialog"></div>
        <!-- bottom section -->
 </wicket:panel>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
index ad2473f..d11e79d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
@@ -186,7 +186,7 @@ public class CalendarPanel extends UserBasePanel {
                                a.setEnd(getDate(e));
                                dialog.setModelObjectWithAjaxTarget(a, target);
 
-                               dialog.open(target);
+                               dialog.show(target);
                        }
 
                        @Override
@@ -197,7 +197,7 @@ public class CalendarPanel extends UserBasePanel {
                                Appointment a = 
apptDao.get(Long.valueOf(eventId));
                                dialog.setModelObjectWithAjaxTarget(a, target);
 
-                               dialog.open(target);
+                               dialog.show(target);
                        }
 
                        @Override

Reply via email to