[ https://issues.apache.org/jira/browse/OPENMEETINGS-2332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17099610#comment-17099610 ]
Konstantin Kuzov edited comment on OPENMEETINGS-2332 at 5/5/20, 8:00 AM: ------------------------------------------------------------------------- As I previously wrote default.landing.zone is not working for exit from the room because the public room list is hardcoded for exit. And even if it worked I can see a case when admin would want different pages in case of room exit and in case of default landing page after sign-in. So I proposed introduction of new setting so they can be set separately. As for manually editing url IMHO requiring a user to manually edit url is not a good sign on behalf of usability. User as well can just be asked to made browser bookmarks of all rooms beforehand but that's just ridiculous. But I still cannot understand the reasoning against original proposal of redirecting user to related room list on room exit. It's IMHO still be more logical than the current behaviour. Like this: {code:java} --- 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 @@ -22,8 +22,11 @@ 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.isMyRoomsEnabled; import static org.apache.openmeetings.web.app.WebSession.getUserId; import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl; +import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_GROUP; +import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_MY; import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC; import java.util.ArrayList; @@ -247,8 +250,14 @@ public class RoomMenuPanel extends Panel { public void exit(IPartialPageRequestHandler handler) { cm.exitRoom(room.getClient()); + final Room r = room.getRoom(); if (WebSession.getRights().contains(User.Right.DASHBOARD)) { - room.getMainPanel().updateContents(ROOMS_PUBLIC, handler); + if (isMyRoomsEnabled() && r != null && r.getOwnerId() != null && r.getOwnerId().equals(getUserId())) + room.getMainPanel().updateContents(ROOMS_MY, handler); + else if (r != null && !r.getIspublic()) + room.getMainPanel().updateContents(ROOMS_GROUP, handler); + else + room.getMainPanel().updateContents(ROOMS_PUBLIC, handler); } else { String url = cfgDao.getString(CONFIG_REDIRECT_URL_FOR_EXTERNAL, ""); throw new RedirectToUrlException(Strings.isEmpty(url) ? getBaseUrl() : url); --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java @@ -80,7 +80,9 @@ public class OmUrlFragment implements Serializable { public static final OmUrlFragment PROFILE_EDIT = new OmUrlFragment(AreaKeys.profile, TYPE_EDIT); public static final OmUrlFragment PROFILE_MESSAGES = new OmUrlFragment(AreaKeys.profile, TYPE_MESSAGES); public static final OmUrlFragment CALENDAR = new OmUrlFragment(AreaKeys.user, TYPE_CALENDAR); + public static final OmUrlFragment ROOMS_GROUP = new OmUrlFragment(AreaKeys.rooms, TYPE_GROUP); public static final OmUrlFragment ROOMS_PUBLIC = new OmUrlFragment(AreaKeys.rooms, TYPE_PUBLIC); + public static final OmUrlFragment ROOMS_MY = new OmUrlFragment(AreaKeys.rooms, TYPE_MY); public enum AreaKeys { user {code} It can be enchanced with some new override setting if we want to provide admin with ability to override page to which user will be redirected on exit. But for my case it is sufficient. was (Author: nosferatu): As I previously wrote default.landing.zone is not working for exit from the room because the public room list is hardcoded for exit. And even if it worked I can see a case when user want different pages in case of room exit and in case of default landing page after sign-in. So I proposed introduction of new setting so they can be set separately. As for manually editing url IMHO requiring a user to manually edit url is not a good sign on behalf of usability. User as well can just be asked to made browser bookmarks of all rooms beforehand but that's just ridiculous. But I still cannot understand the reasoning against original proposal of redirecting user to related room list on room exit. It's IMHO still be more logical than the current behaviour. Like this: {code:java} --- 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 @@ -22,8 +22,11 @@ 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.isMyRoomsEnabled; import static org.apache.openmeetings.web.app.WebSession.getUserId; import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl; +import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_GROUP; +import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_MY; import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC; import java.util.ArrayList; @@ -247,8 +250,14 @@ public class RoomMenuPanel extends Panel { public void exit(IPartialPageRequestHandler handler) { cm.exitRoom(room.getClient()); + final Room r = room.getRoom(); if (WebSession.getRights().contains(User.Right.DASHBOARD)) { - room.getMainPanel().updateContents(ROOMS_PUBLIC, handler); + if (isMyRoomsEnabled() && r != null && r.getOwnerId() != null && r.getOwnerId().equals(getUserId())) + room.getMainPanel().updateContents(ROOMS_MY, handler); + else if (r != null && !r.getIspublic()) + room.getMainPanel().updateContents(ROOMS_GROUP, handler); + else + room.getMainPanel().updateContents(ROOMS_PUBLIC, handler); } else { String url = cfgDao.getString(CONFIG_REDIRECT_URL_FOR_EXTERNAL, ""); throw new RedirectToUrlException(Strings.isEmpty(url) ? getBaseUrl() : url); --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java @@ -80,7 +80,9 @@ public class OmUrlFragment implements Serializable { public static final OmUrlFragment PROFILE_EDIT = new OmUrlFragment(AreaKeys.profile, TYPE_EDIT); public static final OmUrlFragment PROFILE_MESSAGES = new OmUrlFragment(AreaKeys.profile, TYPE_MESSAGES); public static final OmUrlFragment CALENDAR = new OmUrlFragment(AreaKeys.user, TYPE_CALENDAR); + public static final OmUrlFragment ROOMS_GROUP = new OmUrlFragment(AreaKeys.rooms, TYPE_GROUP); public static final OmUrlFragment ROOMS_PUBLIC = new OmUrlFragment(AreaKeys.rooms, TYPE_PUBLIC); + public static final OmUrlFragment ROOMS_MY = new OmUrlFragment(AreaKeys.rooms, TYPE_MY); public enum AreaKeys { user {code} It can be enchanced with some new override setting if we want to provide user with ability to override page to which user will be redirected on exit. But for my case it is sufficient. > Room exit always redirects to public room list > ---------------------------------------------- > > Key: OPENMEETINGS-2332 > URL: https://issues.apache.org/jira/browse/OPENMEETINGS-2332 > Project: Openmeetings > Issue Type: Bug > Components: Room > Affects Versions: 5.0.0-M4 > Reporter: Konstantin Kuzov > Assignee: Maxim Solodovnik > Priority: Minor > > When exiting the room user is always redirected to public room list. Even > when user was in private or personal room. -- This message was sent by Atlassian Jira (v8.3.4#803005)