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.