Author: solomax Date: Sat Aug 20 00:17:15 2016 New Revision: 1756977 URL: http://svn.apache.org/viewvc?rev=1756977&view=rev Log: [OPENMEETINGS-1138] more generalization
Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomInvitationForm.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java Sat Aug 20 00:17:15 2016 @@ -33,7 +33,7 @@ public class InvitationDialog extends Ab private static final long serialVersionUID = 1L; public final DialogButton generate = new DialogButton("generate", Application.getString(1526)); public final DialogButton send = new DialogButton("send", Application.getString(218)); - private final DialogButton cancel = new DialogButton("cancel", Application.getString(219)); + public final DialogButton cancel = new DialogButton("cancel", Application.getString(219)); private final InvitationForm form; public InvitationDialog(String id, final InvitationForm _form) { @@ -80,13 +80,15 @@ public class InvitationDialog extends Ab form.onError(target); } + public void onSuperClick(AjaxRequestTarget target, DialogButton button) { + super.onClick(target, button); + } + @Override public void onClick(AjaxRequestTarget target, DialogButton button) { - if (!form.onSubmit(target, button.equals(generate), button.equals(send))) { - super.onClick(target, button); - } + form.onClick(target, button); } - + @Override protected void onSubmit(AjaxRequestTarget target) { //designed to be empty because of multiple submit buttons Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java Sat Aug 20 00:17:15 2016 @@ -19,20 +19,28 @@ package org.apache.openmeetings.web.common; import static org.apache.openmeetings.util.CalendarHelper.getDate; +import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.web.app.Application.getBean; +import static org.apache.openmeetings.web.app.Application.getInvitationLink; import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES; import static org.apache.openmeetings.web.app.WebSession.getUserId; +import java.util.ArrayList; +import java.util.Collection; import java.util.UUID; +import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.room.InvitationDao; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.entity.room.Invitation; +import org.apache.openmeetings.db.entity.room.Invitation.MessageType; import org.apache.openmeetings.db.entity.room.Invitation.Valid; import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.db.entity.user.User.Type; +import org.apache.openmeetings.service.room.InvitationManager; import org.apache.openmeetings.util.crypt.CryptProvider; import org.apache.openmeetings.web.app.Application; +import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -48,13 +56,19 @@ import org.apache.wicket.markup.html.pan import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.CollectionModel; +import org.apache.wicket.util.string.Strings; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; import org.threeten.bp.LocalDateTime; import com.googlecode.wicket.jquery.core.Options; +import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton; import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel; public abstract class InvitationForm extends Form<Invitation> { private static final long serialVersionUID = 1L; + private static final Logger log = Red5LoggerFactory.getLogger(InvitationForm.class, webAppRootKey); private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true)); private final PasswordTextField passwd; private final DropDownChoice<String> timeZoneId = new DropDownChoice<String>("timeZoneId", Model.of((String)null), AVAILABLE_TIMEZONES); @@ -64,6 +78,7 @@ public abstract class InvitationForm ext protected final TextField<String> subject = new TextField<String>("subject", Model.of((String)null)); protected final TextArea<String> message = new TextArea<String>("message", Model.of((String)null)); protected final TextField<String> url = new TextField<String>("url", Model.of((String)null)); + protected final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); protected InvitationDialog dialog; public InvitationForm(String id) { @@ -71,6 +86,15 @@ public abstract class InvitationForm ext setOutputMarkupId(true); add(subject, message); + recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { + private static final long serialVersionUID = 1L; + + @Override + protected void onUpdate(AjaxRequestTarget target) { + url.setModelObject(null); + updateButtons(target); + } + }).setOutputMarkupId(true); add(new AjaxCheckBox("passwordProtected") { private static final long serialVersionUID = 1L; @@ -112,7 +136,13 @@ public abstract class InvitationForm ext add(url.setOutputMarkupId(true)); add(lang, feedback); } - + + protected void updateButtons(AjaxRequestTarget target) { + Collection<User> to = recipients.getModelObject(); + dialog.send.setEnabled(to.size() > 0, target); + dialog.generate.setEnabled(to.size() == 1, target); + } + @Override protected void onValidate() { if (from.getConvertedInput() != null && to.getConvertedInput() != null && from.getConvertedInput().isAfter(to.getConvertedInput())) { @@ -163,6 +193,8 @@ public abstract class InvitationForm ext lang.setModelObject(u.getLanguageId()); url.setModelObject(null); setModelObject(i); + recipients.setModelObject(new ArrayList<User>()); + recipients.setEnabled(true); target.add(this); } @@ -170,5 +202,34 @@ public abstract class InvitationForm ext this.dialog = dialog; } - public abstract boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send); + public void onClick(AjaxRequestTarget target, DialogButton button) { + //TODO need to be reviewed + if (button.equals(dialog.cancel)) { + dialog.onSuperClick(target, button); + } else if (button.equals(dialog.generate)) { + Invitation i = create(recipients.getModelObject().iterator().next()); + setModelObject(i); + url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); + target.add(url); + } else if (button.equals(dialog.send)) { + if (Strings.isEmpty(url.getModelObject())) { + for (User u : recipients.getModelObject()) { + Invitation i = create(u); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by User ", e); + } + } + } else { + Invitation i = getModelObject(); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by URL ", e); + } + } + dialog.onSuperClick(target, button); + } + } } \ No newline at end of file Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomInvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomInvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomInvitationForm.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomInvitationForm.java Sat Aug 20 00:17:15 2016 @@ -20,7 +20,6 @@ package org.apache.openmeetings.web.room import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.web.app.Application.getBean; -import static org.apache.openmeetings.web.app.Application.getInvitationLink; import static org.apache.openmeetings.web.app.WebSession.getRights; import static org.apache.openmeetings.web.app.WebSession.getUserId; @@ -28,7 +27,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.room.RoomDao; import org.apache.openmeetings.db.dao.user.GroupDao; import org.apache.openmeetings.db.dao.user.GroupUserDao; @@ -43,7 +41,6 @@ import org.apache.openmeetings.service.r import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.app.WebSession; import org.apache.openmeetings.web.common.InvitationForm; -import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -60,13 +57,14 @@ import org.wicketstuff.select2.ChoicePro import org.wicketstuff.select2.Response; import org.wicketstuff.select2.Select2MultiChoice; +import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton; + public class RoomInvitationForm extends InvitationForm { private static final long serialVersionUID = 1L; private static final Logger log = Red5LoggerFactory.getLogger(RoomInvitationForm.class, webAppRootKey); private final RadioGroup<InviteeType> rdi = new RadioGroup<>("inviteeType", Model.of(InviteeType.user)); private final Long roomId; private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer"); - final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); final Select2MultiChoice<Group> groups = new Select2MultiChoice<Group>("groups" , new CollectionModel<Group>(new ArrayList<Group>()) , new ChoiceProvider<Group>() { @@ -132,15 +130,6 @@ public class RoomInvitationForm extends target.add(groups.setEnabled(groupsEnabled), recipients.setEnabled(!groupsEnabled)); } })); - rdi.add(recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - url.setModelObject(null); - updateButtons(target); - } - }).setOutputMarkupId(true)); groupContainer.add( groups.setLabel(Model.of(Application.getString(126))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { private static final long serialVersionUID = 1L; @@ -153,17 +142,16 @@ public class RoomInvitationForm extends }).setOutputMarkupId(true) , new Radio<InviteeType>("group", Model.of(InviteeType.group)) ); - rdi.add(groupContainer.setVisible(showGroups)); + rdi.add(recipients, groupContainer.setVisible(showGroups)); rdi.add(new Radio<InviteeType>("user", Model.of(InviteeType.user))); add(sipContainer.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true)); sipContainer.add(new Label("room.confno", "")).setVisible(false); } - private void updateButtons(AjaxRequestTarget target) { + @Override + protected void updateButtons(AjaxRequestTarget target) { if (rdi.getModelObject() == InviteeType.user) { - Collection<User> to = recipients.getModelObject(); - dialog.send.setEnabled(to.size() > 0, target); - dialog.generate.setEnabled(to.size() == 1, target); + super.updateButtons(target); } else { Collection<Group> to = groups.getModelObject(); dialog.send.setEnabled(to.size() > 0, target); @@ -179,54 +167,26 @@ public class RoomInvitationForm extends if (i.getRoom() != null) { target.add(sipContainer.replace(new Label("room.confno", i.getRoom().getConfno())).setVisible(i.getRoom().isSipEnabled())); } - recipients.setModelObject(new ArrayList<User>()); - recipients.setEnabled(true); groups.setModelObject(new ArrayList<Group>()); groups.setEnabled(false); rdi.setModelObject(InviteeType.user); } @Override - public boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send) { + public void onClick(AjaxRequestTarget target, DialogButton button) { //TODO need to be reviewed - if (generate) { - Invitation i = create(recipients.getModelObject().iterator().next()); - setModelObject(i); - url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); - target.add(url); - return true; - } else if (send) { - if (Strings.isEmpty(url.getModelObject())) { - if (rdi.getModelObject() == InviteeType.user) { - for (User u : recipients.getModelObject()) { - Invitation i = create(u); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by User ", e); - } - } - } else { - for (Group g : groups.getModelObject()) { - for (GroupUser ou : getBean(GroupUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) { - Invitation i = create(ou.getUser()); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by Group ", e); - } - } + if (button.equals(dialog.send) && Strings.isEmpty(url.getModelObject()) && rdi.getModelObject() == InviteeType.group) { + for (Group g : groups.getModelObject()) { + for (GroupUser ou : getBean(GroupUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) { + Invitation i = create(ou.getUser()); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by Group ", e); } } - } else { - Invitation i = getModelObject(); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by URL ", e); - } } } - return false; + super.onClick(target, button); } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java Sat Aug 20 00:17:15 2016 @@ -18,52 +18,16 @@ */ package org.apache.openmeetings.web.user.record; -import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; -import static org.apache.openmeetings.web.app.Application.getBean; -import static org.apache.openmeetings.web.app.Application.getInvitationLink; - -import java.util.ArrayList; -import java.util.Collection; - -import org.apache.openmeetings.db.dao.basic.ConfigurationDao; -import org.apache.openmeetings.db.entity.room.Invitation; -import org.apache.openmeetings.db.entity.room.Invitation.MessageType; -import org.apache.openmeetings.db.entity.user.User; -import org.apache.openmeetings.service.room.InvitationManager; -import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.common.InvitationForm; -import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.util.CollectionModel; -import org.apache.wicket.util.string.Strings; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; public class RecordingInvitationForm extends InvitationForm { private static final long serialVersionUID = 1L; - private static final Logger log = Red5LoggerFactory.getLogger(RecordingInvitationForm.class, webAppRootKey); private Long recordingId; - final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); public RecordingInvitationForm(String id) { super(id); - add(recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - url.setModelObject(null); - updateButtons(target); - } - }).setOutputMarkupId(true)); - } - - private void updateButtons(AjaxRequestTarget target) { - Collection<User> to = recipients.getModelObject(); - dialog.send.setEnabled(to.size() > 0, target); - dialog.generate.setEnabled(to.size() == 1, target); + add(recipients); } @Override @@ -71,39 +35,6 @@ public class RecordingInvitationForm ext super.updateModel(target); //Invitation i = getModelObject(); //i.setReco - recipients.setModelObject(new ArrayList<User>()); - recipients.setEnabled(true); - } - - @Override - public boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send) { - //TODO need to be reviewed - if (generate) { - Invitation i = create(recipients.getModelObject().iterator().next()); - setModelObject(i); - url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); - target.add(url); - return true; - } else if (send) { - if (Strings.isEmpty(url.getModelObject())) { - for (User u : recipients.getModelObject()) { - Invitation i = create(u); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by User ", e); - } - } - } else { - Invitation i = getModelObject(); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by URL ", e); - } - } - } - return false; } public void setRecordingId(Long recordingId) { Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java Sat Aug 20 00:17:15 2016 @@ -90,6 +90,7 @@ public class VideoInfo extends Panel { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { rif.setRecordingId(rm.getObject().getId()); + invite.updateModel(target); invite.open(target); } }; Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css Sat Aug 20 00:17:15 2016 @@ -241,6 +241,7 @@ html, body { } .file.tree.container { border: 1px solid #ccc; + max-width: 350px; } .file.tree { width: 100%; @@ -633,6 +634,9 @@ form .input { .table .column { display: inline-block; margin-bottom: 5px; + min-height: initial; + float: none; + margin-right: 0; } .table .column.label { width: 20%; Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java (original) +++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java Sat Aug 20 00:17:15 2016 @@ -33,7 +33,7 @@ public class InvitationDialog extends Ab private static final long serialVersionUID = 1L; public final DialogButton generate = new DialogButton("generate", Application.getString(1526)); public final DialogButton send = new DialogButton("send", Application.getString(218)); - private final DialogButton cancel = new DialogButton("cancel", Application.getString(219)); + public final DialogButton cancel = new DialogButton("cancel", Application.getString(219)); private final InvitationForm form; public InvitationDialog(String id, final InvitationForm _form) { @@ -80,13 +80,15 @@ public class InvitationDialog extends Ab form.onError(target); } + public void onSuperClick(AjaxRequestTarget target, DialogButton button) { + super.onClick(target, button); + } + @Override public void onClick(AjaxRequestTarget target, DialogButton button) { - if (!form.onSubmit(target, button.equals(generate), button.equals(send))) { - super.onClick(target, button); - } + form.onClick(target, button); } - + @Override protected void onSubmit(AjaxRequestTarget target) { //designed to be empty because of multiple submit buttons Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java (original) +++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java Sat Aug 20 00:17:15 2016 @@ -19,20 +19,28 @@ package org.apache.openmeetings.web.common; import static org.apache.openmeetings.util.CalendarHelper.getDate; +import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.web.app.Application.getBean; +import static org.apache.openmeetings.web.app.Application.getInvitationLink; import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES; import static org.apache.openmeetings.web.app.WebSession.getUserId; +import java.util.ArrayList; +import java.util.Collection; import java.util.UUID; +import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.room.InvitationDao; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.entity.room.Invitation; +import org.apache.openmeetings.db.entity.room.Invitation.MessageType; import org.apache.openmeetings.db.entity.room.Invitation.Valid; import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.db.entity.user.User.Type; +import org.apache.openmeetings.service.room.InvitationManager; import org.apache.openmeetings.util.crypt.CryptProvider; import org.apache.openmeetings.web.app.Application; +import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -48,13 +56,19 @@ import org.apache.wicket.markup.html.pan import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.CollectionModel; +import org.apache.wicket.util.string.Strings; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; import org.threeten.bp.LocalDateTime; import com.googlecode.wicket.jquery.core.Options; +import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton; import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel; public abstract class InvitationForm extends Form<Invitation> { private static final long serialVersionUID = 1L; + private static final Logger log = Red5LoggerFactory.getLogger(InvitationForm.class, webAppRootKey); private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true)); private final PasswordTextField passwd; private final DropDownChoice<String> timeZoneId = new DropDownChoice<String>("timeZoneId", Model.of((String)null), AVAILABLE_TIMEZONES); @@ -64,6 +78,7 @@ public abstract class InvitationForm ext protected final TextField<String> subject = new TextField<String>("subject", Model.of((String)null)); protected final TextArea<String> message = new TextArea<String>("message", Model.of((String)null)); protected final TextField<String> url = new TextField<String>("url", Model.of((String)null)); + protected final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); protected InvitationDialog dialog; public InvitationForm(String id) { @@ -71,6 +86,15 @@ public abstract class InvitationForm ext setOutputMarkupId(true); add(subject, message); + recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { + private static final long serialVersionUID = 1L; + + @Override + protected void onUpdate(AjaxRequestTarget target) { + url.setModelObject(null); + updateButtons(target); + } + }).setOutputMarkupId(true); add(new AjaxCheckBox("passwordProtected") { private static final long serialVersionUID = 1L; @@ -112,7 +136,13 @@ public abstract class InvitationForm ext add(url.setOutputMarkupId(true)); add(lang, feedback); } - + + protected void updateButtons(AjaxRequestTarget target) { + Collection<User> to = recipients.getModelObject(); + dialog.send.setEnabled(to.size() > 0, target); + dialog.generate.setEnabled(to.size() == 1, target); + } + @Override protected void onValidate() { if (from.getConvertedInput() != null && to.getConvertedInput() != null && from.getConvertedInput().isAfter(to.getConvertedInput())) { @@ -163,6 +193,8 @@ public abstract class InvitationForm ext lang.setModelObject(u.getLanguageId()); url.setModelObject(null); setModelObject(i); + recipients.setModelObject(new ArrayList<User>()); + recipients.setEnabled(true); target.add(this); } @@ -170,5 +202,34 @@ public abstract class InvitationForm ext this.dialog = dialog; } - public abstract boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send); + public void onClick(AjaxRequestTarget target, DialogButton button) { + //TODO need to be reviewed + if (button.equals(dialog.cancel)) { + dialog.onSuperClick(target, button); + } else if (button.equals(dialog.generate)) { + Invitation i = create(recipients.getModelObject().iterator().next()); + setModelObject(i); + url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); + target.add(url); + } else if (button.equals(dialog.send)) { + if (Strings.isEmpty(url.getModelObject())) { + for (User u : recipients.getModelObject()) { + Invitation i = create(u); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by User ", e); + } + } + } else { + Invitation i = getModelObject(); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by URL ", e); + } + } + dialog.onSuperClick(target, button); + } + } } \ No newline at end of file Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java (original) +++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java Sat Aug 20 00:17:15 2016 @@ -20,7 +20,6 @@ package org.apache.openmeetings.web.room import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.web.app.Application.getBean; -import static org.apache.openmeetings.web.app.Application.getInvitationLink; import static org.apache.openmeetings.web.app.WebSession.getRights; import static org.apache.openmeetings.web.app.WebSession.getUserId; @@ -28,7 +27,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.room.RoomDao; import org.apache.openmeetings.db.dao.user.GroupDao; import org.apache.openmeetings.db.dao.user.GroupUserDao; @@ -43,7 +41,6 @@ import org.apache.openmeetings.service.r import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.app.WebSession; import org.apache.openmeetings.web.common.InvitationForm; -import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -60,13 +57,14 @@ import org.wicketstuff.select2.ChoicePro import org.wicketstuff.select2.Response; import org.wicketstuff.select2.Select2MultiChoice; +import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton; + public class RoomInvitationForm extends InvitationForm { private static final long serialVersionUID = 1L; private static final Logger log = Red5LoggerFactory.getLogger(RoomInvitationForm.class, webAppRootKey); private final RadioGroup<InviteeType> rdi = new RadioGroup<>("inviteeType", Model.of(InviteeType.user)); private final Long roomId; private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer"); - final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); final Select2MultiChoice<Group> groups = new Select2MultiChoice<Group>("groups" , new CollectionModel<Group>(new ArrayList<Group>()) , new ChoiceProvider<Group>() { @@ -132,15 +130,6 @@ public class RoomInvitationForm extends target.add(groups.setEnabled(groupsEnabled), recipients.setEnabled(!groupsEnabled)); } })); - rdi.add(recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - url.setModelObject(null); - updateButtons(target); - } - }).setOutputMarkupId(true)); groupContainer.add( groups.setLabel(Model.of(Application.getString(126))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { private static final long serialVersionUID = 1L; @@ -153,17 +142,16 @@ public class RoomInvitationForm extends }).setOutputMarkupId(true) , new Radio<InviteeType>("group", Model.of(InviteeType.group)) ); - rdi.add(groupContainer.setVisible(showGroups)); + rdi.add(recipients, groupContainer.setVisible(showGroups)); rdi.add(new Radio<InviteeType>("user", Model.of(InviteeType.user))); add(sipContainer.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true)); sipContainer.add(new Label("room.confno", "")).setVisible(false); } - private void updateButtons(AjaxRequestTarget target) { + @Override + protected void updateButtons(AjaxRequestTarget target) { if (rdi.getModelObject() == InviteeType.user) { - Collection<User> to = recipients.getModelObject(); - dialog.send.setEnabled(to.size() > 0, target); - dialog.generate.setEnabled(to.size() == 1, target); + super.updateButtons(target); } else { Collection<Group> to = groups.getModelObject(); dialog.send.setEnabled(to.size() > 0, target); @@ -179,54 +167,26 @@ public class RoomInvitationForm extends if (i.getRoom() != null) { target.add(sipContainer.replace(new Label("room.confno", i.getRoom().getConfno())).setVisible(i.getRoom().isSipEnabled())); } - recipients.setModelObject(new ArrayList<User>()); - recipients.setEnabled(true); groups.setModelObject(new ArrayList<Group>()); groups.setEnabled(false); rdi.setModelObject(InviteeType.user); } @Override - public boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send) { + public void onClick(AjaxRequestTarget target, DialogButton button) { //TODO need to be reviewed - if (generate) { - Invitation i = create(recipients.getModelObject().iterator().next()); - setModelObject(i); - url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); - target.add(url); - return true; - } else if (send) { - if (Strings.isEmpty(url.getModelObject())) { - if (rdi.getModelObject() == InviteeType.user) { - for (User u : recipients.getModelObject()) { - Invitation i = create(u); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by User ", e); - } - } - } else { - for (Group g : groups.getModelObject()) { - for (GroupUser ou : getBean(GroupUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) { - Invitation i = create(ou.getUser()); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by Group ", e); - } - } + if (button.equals(dialog.send) && Strings.isEmpty(url.getModelObject()) && rdi.getModelObject() == InviteeType.group) { + for (Group g : groups.getModelObject()) { + for (GroupUser ou : getBean(GroupUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) { + Invitation i = create(ou.getUser()); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by Group ", e); } } - } else { - Invitation i = getModelObject(); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by URL ", e); - } } } - return false; + super.onClick(target, button); } } Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java (original) +++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java Sat Aug 20 00:17:15 2016 @@ -18,52 +18,16 @@ */ package org.apache.openmeetings.web.user.record; -import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; -import static org.apache.openmeetings.web.app.Application.getBean; -import static org.apache.openmeetings.web.app.Application.getInvitationLink; - -import java.util.ArrayList; -import java.util.Collection; - -import org.apache.openmeetings.db.dao.basic.ConfigurationDao; -import org.apache.openmeetings.db.entity.room.Invitation; -import org.apache.openmeetings.db.entity.room.Invitation.MessageType; -import org.apache.openmeetings.db.entity.user.User; -import org.apache.openmeetings.service.room.InvitationManager; -import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.common.InvitationForm; -import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.util.CollectionModel; -import org.apache.wicket.util.string.Strings; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; public class RecordingInvitationForm extends InvitationForm { private static final long serialVersionUID = 1L; - private static final Logger log = Red5LoggerFactory.getLogger(RecordingInvitationForm.class, webAppRootKey); private Long recordingId; - final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); public RecordingInvitationForm(String id) { super(id); - add(recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - url.setModelObject(null); - updateButtons(target); - } - }).setOutputMarkupId(true)); - } - - private void updateButtons(AjaxRequestTarget target) { - Collection<User> to = recipients.getModelObject(); - dialog.send.setEnabled(to.size() > 0, target); - dialog.generate.setEnabled(to.size() == 1, target); + add(recipients); } @Override @@ -71,39 +35,6 @@ public class RecordingInvitationForm ext super.updateModel(target); //Invitation i = getModelObject(); //i.setReco - recipients.setModelObject(new ArrayList<User>()); - recipients.setEnabled(true); - } - - @Override - public boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send) { - //TODO need to be reviewed - if (generate) { - Invitation i = create(recipients.getModelObject().iterator().next()); - setModelObject(i); - url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); - target.add(url); - return true; - } else if (send) { - if (Strings.isEmpty(url.getModelObject())) { - for (User u : recipients.getModelObject()) { - Invitation i = create(u); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by User ", e); - } - } - } else { - Invitation i = getModelObject(); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by URL ", e); - } - } - } - return false; } public void setRecordingId(Long recordingId) { Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java (original) +++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java Sat Aug 20 00:17:15 2016 @@ -90,6 +90,7 @@ public class VideoInfo extends Panel { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { rif.setRecordingId(rm.getObject().getId()); + invite.updateModel(target); invite.open(target); } }; Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css (original) +++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css Sat Aug 20 00:17:15 2016 @@ -241,6 +241,7 @@ html, body { } .file.tree.container { border: 1px solid #ccc; + max-width: 350px; } .file.tree { width: 100%; Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationDialog.java Sat Aug 20 00:17:15 2016 @@ -33,7 +33,7 @@ public class InvitationDialog extends Ab private static final long serialVersionUID = 1L; public final DialogButton generate = new DialogButton("generate", Application.getString(1526)); public final DialogButton send = new DialogButton("send", Application.getString(218)); - private final DialogButton cancel = new DialogButton("cancel", Application.getString(219)); + public final DialogButton cancel = new DialogButton("cancel", Application.getString(219)); private final InvitationForm form; public InvitationDialog(String id, final InvitationForm _form) { @@ -80,13 +80,15 @@ public class InvitationDialog extends Ab form.onError(target); } + public void onSuperClick(AjaxRequestTarget target, DialogButton button) { + super.onClick(target, button); + } + @Override public void onClick(AjaxRequestTarget target, DialogButton button) { - if (!form.onSubmit(target, button.equals(generate), button.equals(send))) { - super.onClick(target, button); - } + form.onClick(target, button); } - + @Override protected void onSubmit(AjaxRequestTarget target) { //designed to be empty because of multiple submit buttons Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java Sat Aug 20 00:17:15 2016 @@ -19,20 +19,28 @@ package org.apache.openmeetings.web.common; import static org.apache.openmeetings.util.CalendarHelper.getDate; +import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.web.app.Application.getBean; +import static org.apache.openmeetings.web.app.Application.getInvitationLink; import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES; import static org.apache.openmeetings.web.app.WebSession.getUserId; +import java.util.ArrayList; +import java.util.Collection; import java.util.UUID; +import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.room.InvitationDao; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.entity.room.Invitation; +import org.apache.openmeetings.db.entity.room.Invitation.MessageType; import org.apache.openmeetings.db.entity.room.Invitation.Valid; import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.db.entity.user.User.Type; +import org.apache.openmeetings.service.room.InvitationManager; import org.apache.openmeetings.util.crypt.CryptProvider; import org.apache.openmeetings.web.app.Application; +import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -48,13 +56,19 @@ import org.apache.wicket.markup.html.pan import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.CollectionModel; +import org.apache.wicket.util.string.Strings; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; import org.threeten.bp.LocalDateTime; import com.googlecode.wicket.jquery.core.Options; +import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton; import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel; public abstract class InvitationForm extends Form<Invitation> { private static final long serialVersionUID = 1L; + private static final Logger log = Red5LoggerFactory.getLogger(InvitationForm.class, webAppRootKey); private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true)); private final PasswordTextField passwd; private final DropDownChoice<String> timeZoneId = new DropDownChoice<String>("timeZoneId", Model.of((String)null), AVAILABLE_TIMEZONES); @@ -64,6 +78,7 @@ public abstract class InvitationForm ext protected final TextField<String> subject = new TextField<String>("subject", Model.of((String)null)); protected final TextArea<String> message = new TextArea<String>("message", Model.of((String)null)); protected final TextField<String> url = new TextField<String>("url", Model.of((String)null)); + protected final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); protected InvitationDialog dialog; public InvitationForm(String id) { @@ -71,6 +86,15 @@ public abstract class InvitationForm ext setOutputMarkupId(true); add(subject, message); + recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { + private static final long serialVersionUID = 1L; + + @Override + protected void onUpdate(AjaxRequestTarget target) { + url.setModelObject(null); + updateButtons(target); + } + }).setOutputMarkupId(true); add(new AjaxCheckBox("passwordProtected") { private static final long serialVersionUID = 1L; @@ -112,7 +136,13 @@ public abstract class InvitationForm ext add(url.setOutputMarkupId(true)); add(lang, feedback); } - + + protected void updateButtons(AjaxRequestTarget target) { + Collection<User> to = recipients.getModelObject(); + dialog.send.setEnabled(to.size() > 0, target); + dialog.generate.setEnabled(to.size() == 1, target); + } + @Override protected void onValidate() { if (from.getConvertedInput() != null && to.getConvertedInput() != null && from.getConvertedInput().isAfter(to.getConvertedInput())) { @@ -163,6 +193,8 @@ public abstract class InvitationForm ext lang.setModelObject(u.getLanguageId()); url.setModelObject(null); setModelObject(i); + recipients.setModelObject(new ArrayList<User>()); + recipients.setEnabled(true); target.add(this); } @@ -170,5 +202,34 @@ public abstract class InvitationForm ext this.dialog = dialog; } - public abstract boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send); + public void onClick(AjaxRequestTarget target, DialogButton button) { + //TODO need to be reviewed + if (button.equals(dialog.cancel)) { + dialog.onSuperClick(target, button); + } else if (button.equals(dialog.generate)) { + Invitation i = create(recipients.getModelObject().iterator().next()); + setModelObject(i); + url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); + target.add(url); + } else if (button.equals(dialog.send)) { + if (Strings.isEmpty(url.getModelObject())) { + for (User u : recipients.getModelObject()) { + Invitation i = create(u); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by User ", e); + } + } + } else { + Invitation i = getModelObject(); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by URL ", e); + } + } + dialog.onSuperClick(target, button); + } + } } \ No newline at end of file Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java Sat Aug 20 00:17:15 2016 @@ -20,7 +20,6 @@ package org.apache.openmeetings.web.room import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.web.app.Application.getBean; -import static org.apache.openmeetings.web.app.Application.getInvitationLink; import static org.apache.openmeetings.web.app.WebSession.getRights; import static org.apache.openmeetings.web.app.WebSession.getUserId; @@ -28,7 +27,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.room.RoomDao; import org.apache.openmeetings.db.dao.user.GroupDao; import org.apache.openmeetings.db.dao.user.GroupUserDao; @@ -43,7 +41,6 @@ import org.apache.openmeetings.service.r import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.app.WebSession; import org.apache.openmeetings.web.common.InvitationForm; -import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -60,13 +57,14 @@ import org.wicketstuff.select2.ChoicePro import org.wicketstuff.select2.Response; import org.wicketstuff.select2.Select2MultiChoice; +import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton; + public class RoomInvitationForm extends InvitationForm { private static final long serialVersionUID = 1L; private static final Logger log = Red5LoggerFactory.getLogger(RoomInvitationForm.class, webAppRootKey); private final RadioGroup<InviteeType> rdi = new RadioGroup<>("inviteeType", Model.of(InviteeType.user)); private final Long roomId; private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer"); - final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); final Select2MultiChoice<Group> groups = new Select2MultiChoice<Group>("groups" , new CollectionModel<Group>(new ArrayList<Group>()) , new ChoiceProvider<Group>() { @@ -132,15 +130,6 @@ public class RoomInvitationForm extends target.add(groups.setEnabled(groupsEnabled), recipients.setEnabled(!groupsEnabled)); } })); - rdi.add(recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - url.setModelObject(null); - updateButtons(target); - } - }).setOutputMarkupId(true)); groupContainer.add( groups.setLabel(Model.of(Application.getString(126))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { private static final long serialVersionUID = 1L; @@ -153,17 +142,16 @@ public class RoomInvitationForm extends }).setOutputMarkupId(true) , new Radio<InviteeType>("group", Model.of(InviteeType.group)) ); - rdi.add(groupContainer.setVisible(showGroups)); + rdi.add(recipients, groupContainer.setVisible(showGroups)); rdi.add(new Radio<InviteeType>("user", Model.of(InviteeType.user))); add(sipContainer.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true)); sipContainer.add(new Label("room.confno", "")).setVisible(false); } - private void updateButtons(AjaxRequestTarget target) { + @Override + protected void updateButtons(AjaxRequestTarget target) { if (rdi.getModelObject() == InviteeType.user) { - Collection<User> to = recipients.getModelObject(); - dialog.send.setEnabled(to.size() > 0, target); - dialog.generate.setEnabled(to.size() == 1, target); + super.updateButtons(target); } else { Collection<Group> to = groups.getModelObject(); dialog.send.setEnabled(to.size() > 0, target); @@ -179,54 +167,26 @@ public class RoomInvitationForm extends if (i.getRoom() != null) { target.add(sipContainer.replace(new Label("room.confno", i.getRoom().getConfno())).setVisible(i.getRoom().isSipEnabled())); } - recipients.setModelObject(new ArrayList<User>()); - recipients.setEnabled(true); groups.setModelObject(new ArrayList<Group>()); groups.setEnabled(false); rdi.setModelObject(InviteeType.user); } @Override - public boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send) { + public void onClick(AjaxRequestTarget target, DialogButton button) { //TODO need to be reviewed - if (generate) { - Invitation i = create(recipients.getModelObject().iterator().next()); - setModelObject(i); - url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); - target.add(url); - return true; - } else if (send) { - if (Strings.isEmpty(url.getModelObject())) { - if (rdi.getModelObject() == InviteeType.user) { - for (User u : recipients.getModelObject()) { - Invitation i = create(u); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by User ", e); - } - } - } else { - for (Group g : groups.getModelObject()) { - for (GroupUser ou : getBean(GroupUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) { - Invitation i = create(ou.getUser()); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by Group ", e); - } - } + if (button.equals(dialog.send) && Strings.isEmpty(url.getModelObject()) && rdi.getModelObject() == InviteeType.group) { + for (Group g : groups.getModelObject()) { + for (GroupUser ou : getBean(GroupUserDao.class).get(g.getId(), 0, Integer.MAX_VALUE)) { + Invitation i = create(ou.getUser()); + try { + getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); + } catch (Exception e) { + log.error("error while sending invitation by Group ", e); } } - } else { - Invitation i = getModelObject(); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by URL ", e); - } } } - return false; + super.onClick(target, button); } } Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java Sat Aug 20 00:17:15 2016 @@ -18,52 +18,16 @@ */ package org.apache.openmeetings.web.user.record; -import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; -import static org.apache.openmeetings.web.app.Application.getBean; -import static org.apache.openmeetings.web.app.Application.getInvitationLink; - -import java.util.ArrayList; -import java.util.Collection; - -import org.apache.openmeetings.db.dao.basic.ConfigurationDao; -import org.apache.openmeetings.db.entity.room.Invitation; -import org.apache.openmeetings.db.entity.room.Invitation.MessageType; -import org.apache.openmeetings.db.entity.user.User; -import org.apache.openmeetings.service.room.InvitationManager; -import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.common.InvitationForm; -import org.apache.openmeetings.web.util.UserMultiChoice; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.util.CollectionModel; -import org.apache.wicket.util.string.Strings; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; public class RecordingInvitationForm extends InvitationForm { private static final long serialVersionUID = 1L; - private static final Logger log = Red5LoggerFactory.getLogger(RecordingInvitationForm.class, webAppRootKey); private Long recordingId; - final UserMultiChoice recipients = new UserMultiChoice("recipients", new CollectionModel<User>(new ArrayList<User>())); public RecordingInvitationForm(String id) { super(id); - add(recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - url.setModelObject(null); - updateButtons(target); - } - }).setOutputMarkupId(true)); - } - - private void updateButtons(AjaxRequestTarget target) { - Collection<User> to = recipients.getModelObject(); - dialog.send.setEnabled(to.size() > 0, target); - dialog.generate.setEnabled(to.size() == 1, target); + add(recipients); } @Override @@ -71,39 +35,6 @@ public class RecordingInvitationForm ext super.updateModel(target); //Invitation i = getModelObject(); //i.setReco - recipients.setModelObject(new ArrayList<User>()); - recipients.setEnabled(true); - } - - @Override - public boolean onSubmit(AjaxRequestTarget target, boolean generate, boolean send) { - //TODO need to be reviewed - if (generate) { - Invitation i = create(recipients.getModelObject().iterator().next()); - setModelObject(i); - url.setModelObject(getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i)); - target.add(url); - return true; - } else if (send) { - if (Strings.isEmpty(url.getModelObject())) { - for (User u : recipients.getModelObject()) { - Invitation i = create(u); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by User ", e); - } - } - } else { - Invitation i = getModelObject(); - try { - getBean(InvitationManager.class).sendInvitationLink(i, MessageType.Create, subject.getModelObject(), message.getModelObject(), false); - } catch (Exception e) { - log.error("error while sending invitation by URL ", e); - } - } - } - return false; } public void setRecordingId(Long recordingId) { Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java Sat Aug 20 00:17:15 2016 @@ -90,6 +90,7 @@ public class VideoInfo extends Panel { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { rif.setRecordingId(rm.getObject().getId()); + invite.updateModel(target); invite.open(target); } }; Modified: openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css?rev=1756977&r1=1756976&r2=1756977&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css Sat Aug 20 00:17:15 2016 @@ -241,6 +241,7 @@ html, body { } .file.tree.container { border: 1px solid #ccc; + max-width: 350px; } .file.tree { width: 100%;