You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2018/02/26 09:49:53 UTC
[openmeetings] branch master updated: [OPENMEETINGS-1791]
action/poll sub-menu is hidden (not disabled)
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new a01a979 [OPENMEETINGS-1791] action/poll sub-menu is hidden (not disabled)
a01a979 is described below
commit a01a979c9052a4fdf29d574fb431230736e32258
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Mon Feb 26 16:49:26 2018 +0700
[OPENMEETINGS-1791] action/poll sub-menu is hidden (not disabled)
---
.../openmeetings/web/room/menu/ActionsSubMenu.java | 181 +++++++++++++++++++++
.../openmeetings/web/room/menu/PollsSubMenu.java | 11 +-
.../openmeetings/web/room/menu/RoomMenuPanel.java | 135 ++-------------
3 files changed, 202 insertions(+), 125 deletions(-)
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
new file mode 100644
index 0000000..fa97f8c
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room.menu;
+
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isSipEnabled;
+
+import java.io.Serializable;
+
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.Room.RoomElement;
+import org.apache.openmeetings.web.common.InvitationDialog;
+import org.apache.openmeetings.web.common.menu.RoomMenuItem;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+
+public class ActionsSubMenu implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private final InvitationDialog invite;
+ private final SipDialerDialog sipDialer;
+ private final RoomPanel room;
+ private final RoomMenuPanel mp;
+ private final StartSharingButton shareBtn;
+ private RoomMenuItem actionsMenu;
+ private RoomMenuItem inviteMenuItem;
+ private RoomMenuItem shareMenuItem;
+ private RoomMenuItem applyModerMenuItem;
+ private RoomMenuItem applyWbMenuItem;
+ private RoomMenuItem applyAvMenuItem;
+ private RoomMenuItem sipDialerMenuItem;
+ private RoomMenuItem downloadPngMenuItem;
+ private RoomMenuItem downloadJpgMenuItem;
+ private RoomMenuItem downloadPdfMenuItem;
+ private final boolean visible;
+
+ public ActionsSubMenu(final RoomPanel room, final RoomMenuPanel mp, final StartSharingButton shareBtn) {
+ this.room = room;
+ this.mp = mp;
+ this.shareBtn = shareBtn;
+ RoomInvitationForm rif = new RoomInvitationForm("form", room.getRoom().getId());
+ mp.add(invite = new InvitationDialog("invite", rif));
+ rif.setDialog(invite);
+ mp.add(sipDialer = new SipDialerDialog("sipDialer", room));
+ visible = !room.getRoom().isHidden(RoomElement.ActionMenu);
+ }
+
+ public void init() {
+ actionsMenu = new RoomMenuItem(mp.getString("635"), null, false);
+ inviteMenuItem = new RoomMenuItem(mp.getString("213"), mp.getString("1489"), false) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ invite.updateModel(target);
+ invite.open(target);
+ }
+ };
+ shareMenuItem = new RoomMenuItem(mp.getString("239"), mp.getString("1480"), false) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ shareBtn.onClick(target);
+ }
+ };
+ applyModerMenuItem = new RoomMenuItem(mp.getString("784"), mp.getString("1481"), false) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ room.requestRight(Room.Right.moderator, target);
+ }
+ };
+ applyWbMenuItem = new RoomMenuItem(mp.getString("785"), mp.getString("1492"), false) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ room.requestRight(Room.Right.whiteBoard, target);
+ }
+ };
+ applyAvMenuItem = new RoomMenuItem(mp.getString("786"), mp.getString("1482"), false) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ room.requestRight(Room.Right.video, target);
+ }
+ };
+ sipDialerMenuItem = new RoomMenuItem(mp.getString("1447"), mp.getString("1488"), false) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ sipDialer.open(target);
+ }
+ };
+ downloadPngMenuItem = new RoomMenuItem(mp.getString("download.png"), mp.getString("download.png")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ download(target, EXTENSION_PNG);
+ }
+ };
+ downloadJpgMenuItem = new RoomMenuItem(mp.getString("download.jpg"), mp.getString("download.jpg")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ download(target, EXTENSION_JPG);
+ }
+ };
+ downloadPdfMenuItem = new RoomMenuItem(mp.getString("download.pdf"), mp.getString("download.pdf")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ download(target, EXTENSION_PDF);
+ }
+ };
+ }
+
+ RoomMenuItem getMenu() {
+ actionsMenu.setTop(true);
+ actionsMenu.getItems().add(inviteMenuItem);
+ actionsMenu.getItems().add(shareMenuItem);
+ actionsMenu.getItems().add(applyModerMenuItem);
+ actionsMenu.getItems().add(applyWbMenuItem);
+ actionsMenu.getItems().add(applyAvMenuItem);
+ actionsMenu.getItems().add(sipDialerMenuItem);
+ actionsMenu.getItems().add(downloadPngMenuItem);
+ actionsMenu.getItems().add(downloadJpgMenuItem);
+ actionsMenu.getItems().add(downloadPdfMenuItem);
+ return actionsMenu;
+ }
+
+ public void update(final boolean moder, final boolean notExternalUser, final Room r) {
+ if (!visible) {
+ return;
+ }
+ boolean isInterview = Room.Type.interview == r.getType();
+ downloadPngMenuItem.setEnabled(!isInterview);
+ downloadJpgMenuItem.setEnabled(!isInterview);
+ downloadPdfMenuItem.setEnabled(!isInterview);
+ actionsMenu.setEnabled((moder && visible) || (!moder && r.isAllowUserQuestions()));
+ inviteMenuItem.setEnabled(notExternalUser && moder);
+ boolean shareVisible = room.screenShareAllowed();
+ shareMenuItem.setEnabled(shareVisible);
+ applyModerMenuItem.setEnabled(!moder);
+ applyWbMenuItem.setEnabled(!room.getClient().hasRight(Room.Right.whiteBoard));
+ applyAvMenuItem.setEnabled(!room.getClient().hasRight(Room.Right.audio) || !room.getClient().hasRight(Room.Right.video));
+ sipDialerMenuItem.setEnabled(r.isSipEnabled() && isSipEnabled());
+ }
+
+ private static void download(AjaxRequestTarget target, String type) {
+ target.appendJavaScript(String.format("WbArea.download('%s');", type));
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
index 7ae26bd..e1325c3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
@@ -85,6 +85,7 @@ public class PollsSubMenu implements Serializable {
}
}
};
+ private final boolean visible;
public PollsSubMenu(final RoomPanel room, final RoomMenuPanel mp) {
this.room = room;
@@ -92,6 +93,7 @@ public class PollsSubMenu implements Serializable {
mp.add(createPoll = new CreatePollDialog("createPoll", room.getRoom().getId()));
mp.add(vote = new VoteDialog("vote"));
mp.add(pollResults = new PollResultsDialog("pollResults", room.getRoom().getId()));
+ visible = !room.getRoom().isHidden(RoomElement.PollMenu);
}
public void init() {
@@ -147,9 +149,12 @@ public class PollsSubMenu implements Serializable {
}
public void update(final boolean moder, final boolean notExternalUser, final Room r) {
+ if (!visible) {
+ return;
+ }
PollDao pollDao = getBean(PollDao.class);
boolean pollExists = pollDao.hasPoll(r.getId());
- pollsMenu.setEnabled((moder && !r.isHidden(RoomElement.PollMenu)) || (!moder && r.isAllowUserQuestions()));
+ pollsMenu.setEnabled((moder && visible) || (!moder && r.isAllowUserQuestions()));
pollQuickMenuItem.setEnabled(room.getClient().hasRight(Room.Right.presenter) && !getBean(QuickPollManager.class).isStarted(r.getId()));
pollCreateMenuItem.setEnabled(moder);
pollVoteMenuItem.setEnabled(pollExists && notExternalUser && !pollDao.hasVoted(r.getId(), getUserId()));
@@ -174,4 +179,8 @@ public class PollsSubMenu implements Serializable {
public void renderHead(IHeaderResponse response) {
response.render(new PriorityHeaderItem(getNamedFunction(FUNC_QPOLL_ACTION, quickPollAction, explicit(PARAM_ACTION), explicit(PARAM_VOTE))));
}
+
+ public boolean isVisible() {
+ return visible;
+ }
}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index e3a2f1a..c0b30af 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -18,14 +18,10 @@
*/
package org.apache.openmeetings.web.room.menu;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isSipEnabled;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl;
import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC;
@@ -46,7 +42,6 @@ import org.apache.openmeetings.db.util.ws.TextRoomMessage;
import org.apache.openmeetings.web.app.ClientManager;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.ImagePanel;
-import org.apache.openmeetings.web.common.InvitationDialog;
import org.apache.openmeetings.web.common.OmButton;
import org.apache.openmeetings.web.common.menu.MenuPanel;
import org.apache.openmeetings.web.common.menu.RoomMenuItem;
@@ -66,8 +61,6 @@ import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
public class RoomMenuPanel extends Panel {
private static final long serialVersionUID = 1L;
- private final InvitationDialog invite;
- private final SipDialerDialog sipDialer;
private MenuPanel menuPanel;
private final StartSharingButton shareBtn;
private final Label roomName;
@@ -91,16 +84,6 @@ public class RoomMenuPanel extends Panel {
private final RoomPanel room;
private RoomMenuItem exitMenuItem;
private RoomMenuItem filesMenu;
- private RoomMenuItem actionsMenu;
- private RoomMenuItem inviteMenuItem;
- private RoomMenuItem shareMenuItem;
- private RoomMenuItem applyModerMenuItem;
- private RoomMenuItem applyWbMenuItem;
- private RoomMenuItem applyAvMenuItem;
- private RoomMenuItem sipDialerMenuItem;
- private RoomMenuItem downloadPngMenuItem;
- private RoomMenuItem downloadJpgMenuItem;
- private RoomMenuItem downloadPdfMenuItem;
private final ImagePanel logo = new ImagePanel("logo") {
private static final long serialVersionUID = 1L;
@@ -110,6 +93,7 @@ public class RoomMenuPanel extends Panel {
}
};
private final PollsSubMenu pollsSubMenu;
+ private final ActionsSubMenu actionsSubMenu;
public RoomMenuPanel(String id, final RoomPanel room) {
super(id);
@@ -122,11 +106,8 @@ public class RoomMenuPanel extends Panel {
add(logo, new Label("tag", tag).setVisible(!Strings.isEmpty(tag)));
add((shareBtn = new StartSharingButton("share", room.getUid()))
.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true));
- RoomInvitationForm rif = new RoomInvitationForm("form", room.getRoom().getId());
- add(invite = new InvitationDialog("invite", rif));
- rif.setDialog(invite);
- add(sipDialer = new SipDialerDialog("sipDialer", room));
pollsSubMenu = new PollsSubMenu(room, this);
+ actionsSubMenu = new ActionsSubMenu(room, this, shareBtn);
}
private Group getGroup() {
@@ -147,81 +128,8 @@ public class RoomMenuPanel extends Panel {
}
};
filesMenu = new RoomMenuItem(getString("245"), null, false);
- actionsMenu = new RoomMenuItem(getString("635"), null, false);
+ actionsSubMenu.init();
pollsSubMenu.init();
- inviteMenuItem = new RoomMenuItem(getString("213"), getString("1489"), false) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- invite.updateModel(target);
- invite.open(target);
- }
- };
- shareMenuItem = new RoomMenuItem(getString("239"), getString("1480"), false) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- shareBtn.onClick(target);
- }
- };
- applyModerMenuItem = new RoomMenuItem(getString("784"), getString("1481"), false) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- room.requestRight(Room.Right.moderator, target);
- }
- };
- applyWbMenuItem = new RoomMenuItem(getString("785"), getString("1492"), false) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- room.requestRight(Room.Right.whiteBoard, target);
- }
- };
- applyAvMenuItem = new RoomMenuItem(getString("786"), getString("1482"), false) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- room.requestRight(Room.Right.video, target);
- }
- };
- sipDialerMenuItem = new RoomMenuItem(getString("1447"), getString("1488"), false) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- sipDialer.open(target);
- }
- };
- downloadPngMenuItem = new RoomMenuItem(getString("download.png"), getString("download.png")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- download(target, EXTENSION_PNG);
- }
- };
- downloadJpgMenuItem = new RoomMenuItem(getString("download.jpg"), getString("download.jpg")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- download(target, EXTENSION_JPG);
- }
- };
- downloadPdfMenuItem = new RoomMenuItem(getString("download.pdf"), getString("download.pdf")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- download(target, EXTENSION_PDF);
- }
- };
add((menuPanel = new MenuPanel("menu", getMenu())).setVisible(isVisible()));
add(askBtn.add(AttributeModifier.replace(ATTR_TITLE, getString("84"))));
@@ -267,19 +175,12 @@ public class RoomMenuPanel extends Panel {
});
menu.add(filesMenu.setTop(true));
- actionsMenu.setTop(true);
- actionsMenu.getItems().add(inviteMenuItem);
- actionsMenu.getItems().add(shareMenuItem);
- actionsMenu.getItems().add(applyModerMenuItem);
- actionsMenu.getItems().add(applyWbMenuItem);
- actionsMenu.getItems().add(applyAvMenuItem);
- actionsMenu.getItems().add(sipDialerMenuItem);
- actionsMenu.getItems().add(downloadPngMenuItem);
- actionsMenu.getItems().add(downloadJpgMenuItem);
- actionsMenu.getItems().add(downloadPdfMenuItem);
- menu.add(actionsMenu);
-
- menu.add(pollsSubMenu.getMenu());
+ if (actionsSubMenu.isVisible()) {
+ menu.add(actionsSubMenu.getMenu());
+ }
+ if (pollsSubMenu.isVisible()) {
+ menu.add(pollsSubMenu.getMenu());
+ }
return menu;
}
@@ -289,23 +190,13 @@ public class RoomMenuPanel extends Panel {
}
Room r = room.getRoom();
boolean isInterview = Room.Type.interview == r.getType();
- downloadPngMenuItem.setEnabled(!isInterview);
- downloadJpgMenuItem.setEnabled(!isInterview);
- downloadPdfMenuItem.setEnabled(!isInterview);
User u = room.getClient().getUser();
boolean notExternalUser = u.getType() != User.Type.contact;
exitMenuItem.setEnabled(notExternalUser);
filesMenu.setEnabled(!isInterview && room.getSidebar().isShowFiles());
boolean moder = room.getClient().hasRight(Room.Right.moderator);
+ actionsSubMenu.update(moder, notExternalUser, r);
pollsSubMenu.update(moder, notExternalUser, r);
- actionsMenu.setEnabled((moder && !r.isHidden(RoomElement.ActionMenu)) || (!moder && r.isAllowUserQuestions()));
- inviteMenuItem.setEnabled(notExternalUser && moder);
- boolean shareVisible = room.screenShareAllowed();
- shareMenuItem.setEnabled(shareVisible);
- applyModerMenuItem.setEnabled(!moder);
- applyWbMenuItem.setEnabled(!room.getClient().hasRight(Room.Right.whiteBoard));
- applyAvMenuItem.setEnabled(!room.getClient().hasRight(Room.Right.audio) || !room.getClient().hasRight(Room.Right.video));
- sipDialerMenuItem.setEnabled(r.isSipEnabled() && isSipEnabled());
menuPanel.update(handler);
StringBuilder roomClass = new StringBuilder("room name");
StringBuilder roomTitle = new StringBuilder();
@@ -329,7 +220,7 @@ public class RoomMenuPanel extends Panel {
}
handler.add(roomName.add(AttributeModifier.replace(ATTR_CLASS, roomClass), AttributeModifier.replace(ATTR_TITLE, roomTitle)));
handler.add(askBtn.setVisible(!moder && r.isAllowUserQuestions()));
- handler.add(shareBtn.setVisible(shareVisible));
+ handler.add(shareBtn.setVisible(room.screenShareAllowed()));
}
public void updatePoll(IPartialPageRequestHandler handler, Long createdBy) {
@@ -346,8 +237,4 @@ public class RoomMenuPanel extends Panel {
throw new RedirectToUrlException(Strings.isEmpty(url) ? getBaseUrl() : url);
}
}
-
- private static void download(AjaxRequestTarget target, String type) {
- target.appendJavaScript(String.format("WbArea.download('%s');", type));
- }
}
--
To stop receiving notification emails like this one, please contact
solomax@apache.org.