Repository: openmeetings
Updated Branches:
  refs/heads/3.3.x c6b2a3f65 -> d6f0f022b


[OPENMEETINGS-1008] 'personal.rooms.enabled' config is added


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/d6f0f022
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/d6f0f022
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/d6f0f022

Branch: refs/heads/3.3.x
Commit: d6f0f022b1ad198a0206000e9a9ff3ff3f9c448d
Parents: c6b2a3f
Author: Maxim Solodovnik <[email protected]>
Authored: Tue Sep 12 23:20:28 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Tue Sep 12 23:20:28 2017 +0700

----------------------------------------------------------------------
 .../core/documents/LibraryChartLoader.java      |  42 ++--
 .../openmeetings/core/remote/MobileService.java |  17 +-
 .../db/dao/basic/NavigationDao.java             | 117 -----------
 .../db/dao/user/PrivateMessageDao.java          |  50 ++---
 .../db/entity/basic/Naviglobal.java             | 196 ------------------
 .../openmeetings/db/entity/basic/Navimain.java  | 201 -------------------
 .../openmeetings/db/entity/room/RoomGroup.java  |  20 +-
 .../installation/ImportInitvalues.java          |  67 +------
 .../openmeetings/screenshare/gui/BlankArea.java |  20 +-
 .../util/OpenmeetingsVariables.java             |   7 +-
 .../openmeetings/util/geom/GeomPoint.java       |  98 ++++-----
 .../apache/openmeetings/web/app/WebSession.java |   4 +-
 .../openmeetings/web/common/MainPanel.java      |  93 ++++++---
 .../web/common/menu/MainMenuItem.java           |  13 +-
 .../openmeetings/web/user/MessageDialog.html    |   2 +-
 .../openmeetings/web/user/MessageDialog.java    |  19 +-
 .../web/user/calendar/AppointmentDialog.html    |   2 +-
 .../web/user/calendar/AppointmentDialog.java    |  11 +-
 .../openmeetings/web/util/OmUrlFragment.java    |   3 +-
 .../classes/META-INF/db2_persistence.xml        |   2 -
 .../classes/META-INF/derby_persistence.xml      |   2 -
 .../classes/META-INF/mssql_persistence.xml      |   2 -
 .../classes/META-INF/mysql_persistence.xml      |   2 -
 .../classes/META-INF/oracle_persistence.xml     |   2 -
 .../classes/META-INF/postgresql_persistence.xml |   2 -
 .../WEB-INF/classes/applicationContext.xml      |   1 -
 .../apache/openmeetings/test/navi/TestNavi.java |  77 -------
 27 files changed, 232 insertions(+), 840 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
index 85ba038..d61296e 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
@@ -37,29 +37,29 @@ import com.thoughtworks.xstream.io.xml.XppDriver;
 public class LibraryChartLoader {
        private static final Logger log = 
Red5LoggerFactory.getLogger(LibraryChartLoader.class, webAppRootKey);
 
-    private static final String fileExt = ".xchart";
+       private static final String fileExt = ".xchart";
 
-    private static LibraryChartLoader instance;
+       private static LibraryChartLoader instance;
 
-    private LibraryChartLoader() {
-    }
+       private LibraryChartLoader() {
+       }
 
-    public static synchronized LibraryChartLoader getInstance() {
-        if (instance == null) {
-            instance = new LibraryChartLoader();
-        }
-        return instance;
-    }
+       public static synchronized LibraryChartLoader getInstance() {
+               if (instance == null) {
+                       instance = new LibraryChartLoader();
+               }
+               return instance;
+       }
 
-    @SuppressWarnings("rawtypes")
+       @SuppressWarnings("rawtypes")
        public ArrayList loadChart(File dir, String fileName) {
-        try {
-            File file = new File(dir, fileName + fileExt);
+               try {
+                       File file = new File(dir, fileName + fileExt);
 
-            log.error("filepathComplete: " + file);
+                       log.error("filepathComplete: " + file);
 
-            XStream xStream = new XStream(new XppDriver());
-            xStream.setMode(XStream.NO_REFERENCES);
+                       XStream xStream = new XStream(new XppDriver());
+                       xStream.setMode(XStream.NO_REFERENCES);
 
                        try (InputStream is = new FileInputStream(file);
                                        BufferedReader reader = new 
BufferedReader(new InputStreamReader(is, UTF_8)))
@@ -67,11 +67,11 @@ public class LibraryChartLoader {
                                ArrayList lMapList = (ArrayList) 
xStream.fromXML(reader);
                                return lMapList;
                        }
-        } catch (Exception err) {
-            log.error("Unexpected error while loading chart", err);
-        }
+               } catch (Exception err) {
+                       log.error("Unexpected error while loading chart", err);
+               }
 
-        return null;
-    }
+               return null;
+       }
 
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
index d007887..1e953da 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
@@ -22,6 +22,7 @@ import static 
org.apache.openmeetings.core.remote.ScopeApplicationAdapter.nextBr
 import static org.apache.openmeetings.db.util.LocaleHelper.getCountryName;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_GROUP_ID;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FRONTEND_REGISTER_KEY;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_OAUTH_REGISTER_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SOAP_REGISTER_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -298,13 +299,15 @@ public class MobileService {
                IConnection current = Red5.getConnectionLocal();
                StreamClient c = 
sessionManager.get(IClientUtil.getId(current.getClient()));
                User u = userDao.get(c.getUserId());
-               //my rooms
-               List<Room> myl = new ArrayList<>();
-               myl.add(roomDao.getUserRoom(u.getId(), Room.Type.conference, 
LabelDao.getString(1306L, u.getLanguageId())));
-               myl.add(roomDao.getUserRoom(u.getId(), Room.Type.restricted, 
LabelDao.getString(1307L, u.getLanguageId())));
-               myl.addAll(roomDao.getAppointedRoomsByUser(u.getId()));
-               for (Room r : myl) {
-                       addRoom("my", null, false, result, r);
+               if ("true".equals(cfgDao.getConfValue(CONFIG_MYROOMS_ENABLED, 
String.class, "true"))) {
+                       //my rooms
+                       List<Room> myl = new ArrayList<>();
+                       myl.add(roomDao.getUserRoom(u.getId(), 
Room.Type.conference, LabelDao.getString(1306L, u.getLanguageId())));
+                       myl.add(roomDao.getUserRoom(u.getId(), 
Room.Type.restricted, LabelDao.getString(1307L, u.getLanguageId())));
+                       myl.addAll(roomDao.getAppointedRoomsByUser(u.getId()));
+                       for (Room r : myl) {
+                               addRoom("my", null, false, result, r);
+                       }
                }
 
                //private rooms

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/NavigationDao.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/NavigationDao.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/NavigationDao.java
deleted file mode 100644
index c496fe5..0000000
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/NavigationDao.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.db.dao.basic;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_GROUP_ADMIN;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-
-import org.apache.openmeetings.db.entity.basic.Naviglobal;
-import org.apache.openmeetings.db.entity.basic.Navimain;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class NavigationDao {
-       private static final Logger log = 
Red5LoggerFactory.getLogger(NavigationDao.class, webAppRootKey);
-
-       @PersistenceContext
-       private EntityManager em;
-
-       public Naviglobal getGlobalMenuEntry(Long globalId) {
-               try {
-                       TypedQuery<Naviglobal> query = 
em.createNamedQuery("getNavigationById", Naviglobal.class);
-                       query.setParameter("id", globalId);
-                       return query.getSingleResult();
-               } catch (Exception ex2) {
-                       log.error("getGlobalMenuEntry", ex2);
-               }
-               return null;
-
-       }
-
-       public List<Naviglobal> getMainMenu(int level) {
-               List<Naviglobal> menu = em.createNamedQuery("getNavigation", 
Naviglobal.class)
-                               .setParameter("levelId", level)
-                               .getResultList();
-               if (LEVEL_GROUP_ADMIN == level) {
-                       // filtering of child objects is not working on JPQL 
level
-                       for (Naviglobal ng : menu) {
-                               em.detach(ng);
-                               ng.setId(null); // we don't need below changed 
to be saved
-                               List<Navimain> sub = new ArrayList<>();
-                               for (Navimain nm : ng.getMainnavi()) {
-                                       if (nm.getLevelId() <= level) {
-                                               sub.add(nm);
-                                       }
-                               }
-                               ng.setMainnavi(sub);
-                       }
-               }
-               return menu;
-       }
-
-       public Naviglobal addGlobalStructure(int naviorder, String labelId, int 
levelId, String name, String tooltipLabelId) {
-               Naviglobal ng = new Naviglobal();
-               ng.setComment("");
-               ng.setIcon("");
-               ng.setNaviorder(naviorder);
-               ng.setLabelId(labelId);
-               ng.setDeleted(false);
-               ng.setLevelId(levelId);
-               ng.setName(name);
-               ng.setInserted(new Date());
-               ng.setTooltipLabelId(tooltipLabelId);
-
-               em.persist(ng);
-               return ng;
-       }
-
-       public void addMainStructure(String action, String params, int 
naviorder, String labelId,
-                       int levelId, String name, Long globalId, String 
tooltipLabelId) {
-               Naviglobal ng = getGlobalMenuEntry(globalId);
-
-               Navimain nm = new Navimain();
-               nm.setAction(action);
-               nm.setParams(params);
-               nm.setComment("");
-               nm.setIcon("");
-               nm.setLabelId(labelId);
-               nm.setNaviorder(naviorder);
-               nm.setLevelId(levelId);
-               nm.setName(name);
-               nm.setDeleted(false);
-               nm.setGlobalId(globalId);
-               nm.setInserted(new Date());
-               nm.setTooltipLabelId(tooltipLabelId);
-
-               ng.getMainnavi().add(nm);
-
-               em.merge(ng);
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
index 475fafd..cd98143 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
@@ -45,8 +45,8 @@ public class PrivateMessageDao implements 
IDataProviderDao<PrivateMessage> {
        private static final Logger log = 
Red5LoggerFactory.getLogger(PrivateMessageDao.class, webAppRootKey);
        @PersistenceContext
        private EntityManager em;
-       
-       public Long addPrivateMessage(String subject, String message, Long 
parentMessageId, 
+
+       public Long addPrivateMessage(String subject, String message, Long 
parentMessageId,
                        User from, User to, User owner, Boolean bookedRoom, 
Room room,
                        boolean isContactRequest, Long userContactId) {
                try {
@@ -64,41 +64,41 @@ public class PrivateMessageDao implements 
IDataProviderDao<PrivateMessage> {
                        privateMessage.setIsRead(false);
                        privateMessage.setIsContactRequest(isContactRequest);
                        privateMessage.setUserContactId(userContactId);
-                       
+
                        privateMessage = em.merge(privateMessage);
                        Long privateMessageId = privateMessage.getFolderId();
-                       
-                       return privateMessageId;                        
+
+                       return privateMessageId;
                } catch (Exception e) {
                        log.error("[addPrivateMessage]",e);
                }
                return null;
        }
-       
+
        @Override
        public List<PrivateMessage> get(int first, int count) {
                return em.createNamedQuery("getPrivateMessages", 
PrivateMessage.class)
                                .setFirstResult(first).setMaxResults(count)
                                .getResultList();
        }
-       
+
        @Override
        public PrivateMessage get(long id) {
                return get(Long.valueOf(id));
        }
-       
+
        @Override
        public PrivateMessage get(Long id) {
-               TypedQuery<PrivateMessage> query = 
em.createNamedQuery("getPrivateMessageById", PrivateMessage.class); 
+               TypedQuery<PrivateMessage> query = 
em.createNamedQuery("getPrivateMessageById", PrivateMessage.class);
                query.setParameter("id", id);
                PrivateMessage privateMessage = null;
                try {
                        privateMessage = query.getSingleResult();
-           } catch (NoResultException ex) {
-           }
+               } catch (NoResultException ex) {
+               }
                return privateMessage;
        }
-       
+
        @Override
        public PrivateMessage update(PrivateMessage entity, Long userId) {
                if (entity.getId() == null) {
@@ -109,13 +109,13 @@ public class PrivateMessageDao implements 
IDataProviderDao<PrivateMessage> {
                }
                return entity;
        }
-       
+
        private static String getQuery(boolean isCount, String search, String 
orderBy, boolean asc) {
                StringBuilder hql = new StringBuilder("SELECT ");
                hql.append(isCount ? "COUNT(" : "").append("m").append(isCount 
? ")" : "")
                        .append(" FROM PrivateMessage m WHERE m.owner.id = 
:ownerId ")
                        .append(" AND m.folderId = :folderId ");
-               
+
                if (!StringUtils.isEmpty(search)) {
                        hql.append(" AND ( ")
                                .append("lower(m.subject) LIKE :search ")
@@ -126,15 +126,15 @@ public class PrivateMessageDao implements 
IDataProviderDao<PrivateMessage> {
                                .append("OR lower(m.from.address.email) LIKE 
:search ")
                                .append(" ) ");
                }
-               
+
                if (!isCount && !StringUtils.isEmpty(orderBy)) {
                        hql.append(" ORDER BY ").append(orderBy).append(asc ? " 
ASC" : " DESC");
                }
                return hql.toString();
        }
-       
+
        public Long count(Long ownerId, Long folderId, String search) {
-               TypedQuery<Long> query = em.createQuery(getQuery(true, search, 
null, true), Long.class); 
+               TypedQuery<Long> query = em.createQuery(getQuery(true, search, 
null, true), Long.class);
                query.setParameter("ownerId", ownerId);
                if (!StringUtils.isEmpty(search)) {
                        query.setParameter("search", StringUtils.lowerCase("%" 
+ search + "%"));
@@ -142,9 +142,9 @@ public class PrivateMessageDao implements 
IDataProviderDao<PrivateMessage> {
                query.setParameter("folderId", folderId);
                return query.getSingleResult();
        }
-       
+
        public List<PrivateMessage> get(Long ownerId, Long folderId, String 
search, String orderBy, boolean asc, int start, int max) {
-               TypedQuery<PrivateMessage> query = 
em.createQuery(getQuery(false, search, orderBy, asc), PrivateMessage.class); 
+               TypedQuery<PrivateMessage> query = 
em.createQuery(getQuery(false, search, orderBy, asc), PrivateMessage.class);
                query.setParameter("ownerId", ownerId);
                query.setParameter("folderId", folderId);
                if (!StringUtils.isEmpty(search)) {
@@ -154,27 +154,27 @@ public class PrivateMessageDao implements 
IDataProviderDao<PrivateMessage> {
                query.setMaxResults(max);
                return query.getResultList();
        }
-       
+
        public int updateReadStatus(Collection<Long> ids, Boolean isRead) {
-               Query query = 
em.createNamedQuery("updatePrivateMessagesReadStatus"); 
+               Query query = 
em.createNamedQuery("updatePrivateMessagesReadStatus");
                query.setParameter("isRead", isRead);
                query.setParameter("ids", ids);
                return query.executeUpdate();
        }
 
        public int moveMailsToFolder(Collection<Long> ids, Long folderId) {
-               Query query = em.createNamedQuery("moveMailsToFolder"); 
+               Query query = em.createNamedQuery("moveMailsToFolder");
                query.setParameter("folderId", folderId);
                query.setParameter("ids", ids);
                return query.executeUpdate();
        }
-       
+
        public int delete(Collection<Long> ids) {
-               Query query = em.createNamedQuery("deletePrivateMessages"); 
+               Query query = em.createNamedQuery("deletePrivateMessages");
                query.setParameter("ids", ids);
                return query.executeUpdate();
        }
-       
+
        public List<PrivateMessage> getByRoom(Long roomId) {
                return em.createNamedQuery("getPrivateMessagesByRoom", 
PrivateMessage.class)
                                .setParameter("roomId", roomId).getResultList();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Naviglobal.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Naviglobal.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Naviglobal.java
deleted file mode 100644
index be48494..0000000
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Naviglobal.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * 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.db.entity.basic;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.OrderBy;
-import javax.persistence.Table;
-
-import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-
-@Entity
-@NamedQueries({
-               @NamedQuery(name = "getNavigation", query = "SELECT ng FROM 
Naviglobal ng "
-                               + "WHERE ng.levelId <= :levelId AND ng.deleted 
= false ORDER BY ng.naviorder ASC"),
-               @NamedQuery(name = "getNavigationById", query = "SELECT ng from 
Naviglobal ng WHERE ng.id = :id") })
-@Table(name = "naviglobal")
-public class Naviglobal implements IDataProviderEntity {
-       private static final long serialVersionUID = 1L;
-
-       @Id
-       @GeneratedValue(strategy = GenerationType.IDENTITY)
-       @Column(name = "id")
-       private Long id;
-
-       @Column(name = "name")
-       private String name;
-
-       @Column(name = "icon")
-       private String icon;
-
-       @Column(name = "updated")
-       private Date updated;
-
-       @Column(name = "inserted")
-       private Date inserted;
-
-       @Column(name = "comment")
-       private String comment;
-
-       @Column(name = "naviorder", nullable = false)
-       private int naviorder;
-
-       @Column(name = "level_id", nullable = false)
-       private int levelId;
-
-       @Column(name = "deleted", nullable = false)
-       private boolean deleted;
-
-       @Column(name = "label_id")
-       private String labelId;
-
-       @Column(name = "tooltip_label_id")
-       private String tooltipLabelId;
-
-       @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-       @JoinColumn(name = "global_id", nullable = false)
-       @ForeignKey(enabled = true)
-       @OrderBy("naviorder")
-       private List<Navimain> mainnavi = new ArrayList<>();
-
-       @Override
-       public Long getId() {
-               return id;
-       }
-
-       @Override
-       public void setId(Long id) {
-               this.id = id;
-       }
-
-       public String getComment() {
-               return comment;
-       }
-
-       public void setComment(String comment) {
-               this.comment = comment;
-       }
-
-       public String getIcon() {
-               return icon;
-       }
-
-       public void setIcon(String icon) {
-               this.icon = icon;
-       }
-
-       public Date getInserted() {
-               return inserted;
-       }
-
-       public void setInserted(Date inserted) {
-               this.inserted = inserted;
-       }
-
-       public Date getUpdated() {
-               return updated;
-       }
-
-       public void setUpdated(Date updated) {
-               this.updated = updated;
-       }
-
-       public boolean isDeleted() {
-               return deleted;
-       }
-
-       public void setDeleted(boolean deleted) {
-               this.deleted = deleted;
-       }
-
-       public String getName() {
-               return name;
-       }
-
-       public void setName(String name) {
-               this.name = name;
-       }
-
-       public int getNaviorder() {
-               return naviorder;
-       }
-
-       public void setNaviorder(int naviorder) {
-               this.naviorder = naviorder;
-       }
-
-       public int getLevelId() {
-               return levelId;
-       }
-
-       public void setLevelId(int levelId) {
-               this.levelId = levelId;
-       }
-
-       public List<Navimain> getMainnavi() {
-               return mainnavi;
-       }
-
-       public void setMainnavi(List<Navimain> mainnavi) {
-               this.mainnavi = mainnavi;
-       }
-
-       public String getLabelId() {
-               return labelId;
-       }
-
-       public void setLabelId(String labelId) {
-               this.labelId = labelId;
-       }
-
-       public String getTooltipLabelId() {
-               return tooltipLabelId;
-       }
-
-       public void setTooltipLabelId(String tooltipLabelId) {
-               this.tooltipLabelId = tooltipLabelId;
-       }
-
-       @Override
-       public String toString() {
-               return "Naviglobal [id=" + id + ", name=" + name + ", 
naviorder=" + naviorder + ", deleted="
-                               + deleted + ", labelId=" + labelId + ", 
tooltipLabelId=" + tooltipLabelId + "]";
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Navimain.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Navimain.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Navimain.java
deleted file mode 100644
index 2561e3e..0000000
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Navimain.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * 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.db.entity.basic;
-
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-
-@Entity
-@Table(name = "navimain")
-public class Navimain implements IDataProviderEntity {
-       private static final long serialVersionUID = 1L;
-
-       @Id
-       @GeneratedValue(strategy = GenerationType.IDENTITY)
-       @Column(name = "id")
-       private Long id;
-
-       @Column(name = "global_id")
-       private Long globalId;
-
-       @Column(name = "name")
-       private String name;
-
-       @Column(name = "icon")
-       private String icon;
-
-       @Column(name = "action")
-       private String action;
-
-       @Column(name = "params")
-       private String params;
-
-       @Column(name = "updated")
-       private Date updated;
-
-       @Column(name = "inserted")
-       private Date inserted;
-
-       @Column(name = "comment")
-       private String comment;
-
-       @Column(name = "naviorder", nullable = false)
-       private int naviorder;
-
-       @Column(name = "level_id", nullable = false)
-       private int levelId;
-
-       @Column(name = "label_id")
-       private String labelId;
-
-       @Column(name = "deleted", nullable = false)
-       private boolean deleted;
-
-       @Column(name = "tooltip_label_id")
-       private String tooltipLabelId;
-
-       @Override
-       public Long getId() {
-               return id;
-       }
-
-       @Override
-       public void setId(Long id) {
-               this.id = id;
-       }
-
-       public String getAction() {
-               return action;
-       }
-
-       public void setAction(String action) {
-               this.action = action;
-       }
-
-       public int getLevelId() {
-               return levelId;
-       }
-
-       public void setLevelId(int levelId) {
-               this.levelId = levelId;
-       }
-
-       public Long getGlobalId() {
-               return globalId;
-       }
-
-       public void setGlobalId(Long globalId) {
-               this.globalId = globalId;
-       }
-
-       public String getComment() {
-               return comment;
-       }
-
-       public void setComment(String comment) {
-               this.comment = comment;
-       }
-
-       public String getIcon() {
-               return icon;
-       }
-
-       public void setIcon(String icon) {
-               this.icon = icon;
-       }
-
-       public Date getInserted() {
-               return inserted;
-       }
-
-       public void setInserted(Date inserted) {
-               this.inserted = inserted;
-       }
-
-       public Date getUpdated() {
-               return updated;
-       }
-
-       public void setUpdated(Date updated) {
-               this.updated = updated;
-       }
-
-       public boolean isDeleted() {
-               return deleted;
-       }
-
-       public void setDeleted(boolean deleted) {
-               this.deleted = deleted;
-       }
-
-       public String getName() {
-               return name;
-       }
-
-       public void setName(String name) {
-               this.name = name;
-       }
-
-       public int getNaviorder() {
-               return naviorder;
-       }
-
-       public void setNaviorder(int naviorder) {
-               this.naviorder = naviorder;
-       }
-
-       public String getLabelId() {
-               return labelId;
-       }
-
-       public void setLabelId(String labelId) {
-               this.labelId = labelId;
-       }
-
-       public String getTooltipLabelId() {
-               return tooltipLabelId;
-       }
-
-       public void setTooltipLabelId(String tooltipLabelId) {
-               this.tooltipLabelId = tooltipLabelId;
-       }
-
-       public String getParams() {
-               return params;
-       }
-
-       public void setParams(String params) {
-               this.params = params;
-       }
-
-       @Override
-       public String toString() {
-               return "Navimain [id=" + id + ", globalId=" + globalId + ", 
name=" + name + ", action=" + action + ", params=" + params
-                               + ", naviorder=" + naviorder + ", labelId=" + 
labelId + ", deleted=" + deleted + ", tooltipLabelId="
-                               + tooltipLabelId + "]";
-       }
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
index f08670a..42bf899 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
@@ -70,25 +70,25 @@ public class RoomGroup implements IDataProviderEntity {
        @Column(name = "id")
        @Element(data = true, name = "rooms_organisation_id")
        private Long id;
-       
+
        @ManyToOne(fetch = FetchType.EAGER)
        @JoinColumn(name="room_id", nullable=true)
        @ForeignKey(enabled = true)
        @Element(name="rooms_id", data=true, required=false)
        private Room room;
-       
+
        @ManyToOne(fetch = FetchType.EAGER)
        @JoinColumn(name="group_id", nullable=true)
        @ForeignKey(enabled = true)
        @Element(name="organisation_id", data=true, required=false)
        private Group group;
-       
+
        @Column(name = "inserted")
        private Date inserted;
-       
+
        @Column(name = "updated")
        private Date updated;
-       
+
        @Column(name = "deleted", nullable = false)
        @Element(data=true)
        private boolean deleted;
@@ -107,7 +107,7 @@ public class RoomGroup implements IDataProviderEntity {
        public void setGroup(Group group) {
                this.group = group;
        }
-       
+
        public Room getRoom() {
                return room;
        }
@@ -123,21 +123,21 @@ public class RoomGroup implements IDataProviderEntity {
        public void setId(Long id) {
                this.id = id;
        }
-    
+
        public Date getInserted() {
                return inserted;
        }
        public void setInserted(Date inserted) {
                this.inserted = inserted;
        }
-    
+
        public Date getUpdated() {
                return updated;
        }
        public void setUpdated(Date updated) {
                this.updated = updated;
-       }       
-       
+       }
+
        public boolean isDeleted() {
                return deleted;
        }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index 3c1212f..8530d70 100644
--- 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -39,6 +39,7 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IGNORE_B
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IMAGEMAGIC_PATH;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_LOGIN_MIN_LENGTH_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_OAUTH_REGISTER_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PASS_MIN_LENGTH_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY;
@@ -56,10 +57,6 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_MAX_UPL
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.EXT_PROCESS_TTL;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.HEADER_CSP_SELF;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.HEADER_XFRAME_SAMEORIGIN;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_ADMIN;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_GROUP_ADMIN;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_USER;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.MENU_ROOMS_NAME;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -70,7 +67,6 @@ import java.util.Iterator;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.basic.ErrorDao;
-import org.apache.openmeetings.db.dao.basic.NavigationDao;
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.room.SipDao;
@@ -78,7 +74,6 @@ import org.apache.openmeetings.db.dao.server.OAuth2Dao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.ErrorValue;
-import org.apache.openmeetings.db.entity.basic.Naviglobal;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
 import org.apache.openmeetings.db.entity.room.Room.Type;
@@ -106,8 +101,6 @@ public class ImportInitvalues {
        @Autowired
        private UserDao userDao;
        @Autowired
-       private NavigationDao navimanagement;
-       @Autowired
        private ErrorDao errorDao;
        @Autowired
        private SipDao sipDao;
@@ -124,45 +117,6 @@ public class ImportInitvalues {
                return progress;
        }
 
-       public void loadMainMenu() {
-               /*
-                * ######################## Dashboard Menu Points
-                */
-               Naviglobal home = navimanagement.addGlobalStructure(1, "124", 
LEVEL_USER, "home", "582");
-               navimanagement.addMainStructure("dashboardModuleStartScreen", 
null, 1, "290", LEVEL_USER, "Dashboard", home.getId(), "1450");
-               navimanagement.addMainStructure("dashboardModuleCalendar", 
null, 2, "291", LEVEL_USER, "Calendar", home.getId(), "1451");
-
-               /*
-                * ######################## Conference Menu Points
-                */
-               Naviglobal rooms = navimanagement.addGlobalStructure(2, "792", 
LEVEL_USER, MENU_ROOMS_NAME, "793");
-               navimanagement.addMainStructure("conferenceModuleRoomList", 
"publicTabButton", 1, "777", LEVEL_USER, "Public Rooms", rooms.getId(), "1506");
-               navimanagement.addMainStructure("conferenceModuleRoomList", 
"privateTabButton", 2, "779", LEVEL_USER, "Private Rooms", rooms.getId(), 
"1507");
-               navimanagement.addMainStructure("conferenceModuleRoomList", 
"myTabButton", 3, "781", LEVEL_USER, "My Rooms", rooms.getId(), "1508");
-
-               /*
-                * ######################## Recording Menu Points
-                */
-               Naviglobal rec = navimanagement.addGlobalStructure(3, "395", 
LEVEL_USER, "record", "583");
-               navimanagement.addMainStructure("recordModule", null, 1, "395", 
LEVEL_USER, "Recordings", rec.getId(), "1452");
-
-               /*
-                * ######################## Administration Menu Points
-                */
-               Naviglobal admin = navimanagement.addGlobalStructure(6, "6", 
LEVEL_GROUP_ADMIN, "Administration Menu", "586");
-               navimanagement.addMainStructure("adminModuleUser", null, 14, 
"125", LEVEL_GROUP_ADMIN, "Administration of Users", admin.getId(), "1454");
-               navimanagement.addMainStructure("adminModuleConnections", null, 
15, "597", LEVEL_ADMIN, "Aministration of Connections", admin.getId(), "1455");
-               navimanagement.addMainStructure("adminModuleOrg", null, 16, 
"127", LEVEL_GROUP_ADMIN, "Administration of Groups", admin.getId(), "1456");
-               navimanagement.addMainStructure("adminModuleRoom", null, 17, 
"186", LEVEL_GROUP_ADMIN, "Administration of Rooms", admin.getId(), "1457");
-               navimanagement.addMainStructure("adminModuleConfiguration", 
null, 18, "263", LEVEL_ADMIN, "Administration of Configuration", admin.getId(), 
"1458");
-               navimanagement.addMainStructure("adminModuleLanguages", null, 
19, "348", LEVEL_ADMIN, "Administration of Languages", admin.getId(), "1459");
-               navimanagement.addMainStructure("adminModuleLDAP", null, 20, 
"1103", LEVEL_ADMIN, "Administration of LDAP Configs", admin.getId(), "1460");
-               navimanagement.addMainStructure("adminModuleOAuth", null, 21, 
"1571", LEVEL_ADMIN, "Administration of OAuth2 servers", admin.getId(), "1572");
-               navimanagement.addMainStructure("adminModuleBackup", null, 22, 
"367", LEVEL_ADMIN, "Administration of Backups", admin.getId(), "1461");
-               navimanagement.addMainStructure("adminModuleEmail", null, 23, 
"main.menu.admin.email", LEVEL_ADMIN, "Administration of Emails", 
admin.getId(), "main.menu.admin.email.desc");
-               log.debug("MainMenu ADDED");
-       }
-
        public void loadErrorMappingsFromXML() throws Exception {
                SAXReader reader = new SAXReader();
                Document document = reader.read(new 
File(OmFileHelper.getLanguagesDir(), OmFileHelper.nameOfErrorFile));
@@ -301,11 +255,11 @@ public class ImportInitvalues {
                cfgDao.add(CONFIG_SCREENSHARING_FPS_SHOW, "true", null, "Is 
screensharing FPS should be displayed or not (true/false)");
                cfgDao.add(CONFIG_SCREENSHARING_ALLOW_REMOTE, "true", null, "Is 
remote control will be enabled while screensharing. Allowing remote control 
will be not possible in case it is set to 'false' (true/false)");
 
-               cfgDao.add(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, "1", null, "Show 
My Rooms Tab");
+               cfgDao.add(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, "1", null, "Show 
'My Rooms' widget on dashboard");
 
-               cfgDao.add(CONFIG_DASHBOARD_SHOW_CHAT, "1", null, "Show Chat 
Tab");
+               cfgDao.add(CONFIG_DASHBOARD_SHOW_CHAT, "1", null, "Show 'Global 
Chat' outside the room");
 
-               cfgDao.add(CONFIG_DASHBOARD_SHOW_RSS_KEY, "0", null, "Show RSS 
Tab");
+               cfgDao.add(CONFIG_DASHBOARD_SHOW_RSS_KEY, "0", null, "Show RSS 
widget on dashboard");
 
                cfgDao.add("show.whiteboard.draw.status", "0", null,
                                "Display name of the user who draw the current 
object (User Name auto-disapper after 3 seconds.");
@@ -355,6 +309,7 @@ public class ImportInitvalues {
                cfgDao.add(CONFIG_HEADER_XFRAME, HEADER_XFRAME_SAMEORIGIN, 
null, "Value for 'X-Frame-Options' header (default: DENY), more info: 
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options";);
                cfgDao.add(CONFIG_HEADER_CSP, HEADER_CSP_SELF, null, "Value for 
'Content-Security-Policy' header (default: default-src 'self'; style-src 'self' 
'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';), have to be 
modified to enable Google analytics site: 
https://content-security-policy.com/";);
                cfgDao.add(CONFIG_EXT_PROCESS_TTL, "" + EXT_PROCESS_TTL, null, 
String.format("Time to live in minutes for external processes such as 
conversion via ffmpeg (default %s minutes)", EXT_PROCESS_TTL));
+               cfgDao.add(CONFIG_MYROOMS_ENABLED, "" + true, null, "Users are 
allowed to create personal rooms");
                log.debug("Configurations ADDED");
        }
 
@@ -512,15 +467,13 @@ public class ImportInitvalues {
                        log.debug("System contains users, no need to install 
data one more time.");
                }
                sipDao.delete();
-               progress = 14;
-               loadMainMenu();
-               progress = 28;
+               progress = 17;
                loadErrorMappingsFromXML();
-               progress = 42;
+               progress = 34;
                loadConfiguration(cfg);
-               progress = 56;
+               progress = 51;
                loadInitialOAuthServers();
-               progress = 70;
+               progress = 68;
        }
 
        public void loadAll(InstallationConfig cfg, boolean force) throws 
Exception {
@@ -531,7 +484,7 @@ public class ImportInitvalues {
                }
                loadSystem(cfg, force);
                loadInitUserAndGroup(cfg);
-               progress = 84;
+               progress = 85;
 
                loadDefaultRooms("1".equals(cfg.createDefaultRooms), 
StringValue.valueOf(cfg.defaultLangId).toLong(1L));
                progress = 100;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/BlankArea.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/BlankArea.java
 
b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/BlankArea.java
index 3839f7c..1616180 100644
--- 
a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/BlankArea.java
+++ 
b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/BlankArea.java
@@ -18,23 +18,25 @@
  */
 package org.apache.openmeetings.screenshare.gui;
 
-import javax.swing.*;
-import java.awt.Dimension;
 import java.awt.Color;
+import java.awt.Dimension;
+
+import javax.swing.BorderFactory;
+import javax.swing.SwingConstants;
 
 public class BlankArea extends MouseListenerable {
        private static final long serialVersionUID = 1L;
        private Dimension minSize = new Dimension(100, 50);
 
-    public BlankArea(Color color) {
-        setBackground(color);
-        setOpaque(false);
+       public BlankArea(Color color) {
+               setBackground(color);
+               setOpaque(false);
                setHorizontalAlignment(SwingConstants.LEFT);
                setVerticalAlignment(SwingConstants.TOP);
                setHorizontalTextPosition(0);
                setVerticalTextPosition(0);
-        setBorder(BorderFactory.createLineBorder(Color.black));
-        setMinimumSize(minSize);
-        setPreferredSize(minSize);
-    }
+               setBorder(BorderFactory.createLineBorder(Color.black));
+               setMinimumSize(minSize);
+               setPreferredSize(minSize);
+       }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
index e0d7f4a..fea7d2c 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -51,14 +51,11 @@ public class OpenmeetingsVariables {
        public static final String CONFIG_IMAGEMAGIC_PATH = "imagemagick_path";
        public static final String CONFIG_HEADER_XFRAME = 
"header.x.frame.options";
        public static final String CONFIG_EXT_PROCESS_TTL = 
"external.process.ttl";
+       public static final String CONFIG_HEADER_CSP = 
"header.content.security.policy";
+       public static final String CONFIG_MYROOMS_ENABLED = 
"personal.rooms.enabled";
        public static final String HEADER_XFRAME_SAMEORIGIN = "SAMEORIGIN";
        public static final String HEADER_CSP_SELF = "default-src 'self'; 
style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 
'unsafe-eval';";
-       public static final String CONFIG_HEADER_CSP = 
"header.content.security.policy";
-       public static final String MENU_ROOMS_NAME = "Conference Rooms";
        public static final int RECENT_ROOMS_COUNT = 5;
-       public static final int LEVEL_USER = 1;
-       public static final int LEVEL_GROUP_ADMIN = 2;
-       public static final int LEVEL_ADMIN = 3;
 
        public static int DEFAULT_MINUTES_REMINDER_SEND = 15;
        public static String DEFAULT_BASE_URL = 
"http://localhost:5080/openmeetings/";;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-util/src/main/java/org/apache/openmeetings/util/geom/GeomPoint.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/geom/GeomPoint.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/geom/GeomPoint.java
index f03222b..74dd3b7 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/geom/GeomPoint.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/geom/GeomPoint.java
@@ -26,9 +26,9 @@ import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
 /**
- * 
+ *
  * Java Implementation of the Actionscript Class flash.geom.Point
- * 
+ *
  * @author swagner
  *
  */
@@ -43,22 +43,22 @@ public class GeomPoint extends Point {
                gPoint.setLocation(this.getX() + p.getX(),this.getY() + 
p.getY());
                return gPoint;
        }
-       
+
        public GeomPoint subtract(GeomPoint p) {
                GeomPoint gPoint = new GeomPoint();
                gPoint.setLocation(this.getX() - p.getX(),this.getY() - 
p.getY());
                return gPoint;
        }
-       
+
        @Override
        public GeomPoint clone() {
                GeomPoint p = new GeomPoint();
                p.setLocation(this.getX(), this.getY());
                return p;
        }
-       
+
        public static GeomPoint interpolate(GeomPoint p1, GeomPoint p2, float 
f) {
-               
+
                if (f == 0) {
                        GeomPoint p = new GeomPoint();
                        p.setLocation(p2.getX(), p2.getY());
@@ -68,31 +68,31 @@ public class GeomPoint extends Point {
                        p.setLocation(p1.getX(), p1.getY());
                        return p;
                }
-               
+
                double returnValueP1 = 
linearInterpolation(p1.getX(),p2.getX(),f);
                double returnValueP2 = 
linearInterpolation(p1.getY(),p2.getY(),f);
-               
+
                GeomPoint p = new GeomPoint();
                p.setLocation(returnValueP1, returnValueP2);
                return p;
        }
-       
+
        public double length() {
                return Math.sqrt( this.getX()*this.getX() + 
this.getY()*this.getY() );
        }
-       
+
        @Override
        public String toString() {
                return getClass().getName() + "[x=" + this.getX() + ",y=" + 
this.getY() + "]";
-    }
-       
+       }
+
        public void normalize(double newLength) {
-               
-               //Function for Line y = mx + 0 
+
+               //Function for Line y = mx + 0
                //given points 0,0 and this.getX(),this.getY();
                //              0 = m*0 + c
                //              m = -c;
-               //              
+               //
                //              this.getY() = m*this.getX();
 
                double m;
@@ -109,36 +109,36 @@ public class GeomPoint extends Point {
                        m = this.getY() / this.getX();
                        //log.debug("Case 2");
                }
-               
+
                //log.debug("m :"+m +" newLength "+newLength);
-               
+
                //Circle (x-x0)^2 + (y-y0)^2 = r^2
                //              anyY = m * anyX;
                //              newLength * newLength = anyY * anyY + anyX * 
anyX;
-               //              
+               //
                //              newLength * newLength = (m * anyX) * (m * anyX) 
+ anyX * anyX;
-               //              
+               //
                //              newLength * newLength = m * m * anyX * anyX + 
anyX * anyX;
                //              newLength * newLength = ( m*m + 1 ) * anyX * 
anyX;
-               //              
+               //
                //              newLength * newLength / ( m*m + 1 ) = anyX * 
anyX;
-               
+
                double anyX = Math.sqrt( ( newLength * newLength ) / ( m*m + 1 
) );
                double anyY = m * anyX;
-               
+
                //log.debug("anyX :"+anyX + " anyY: " + anyY);
-               
+
                //translate to Flash point of origin
                if (this.getX() < 0) {
                        anyX *= -1;
                        anyY *= -1;
                }
-               
+
                //log.debug("anyX :"+anyX + " anyY: " + anyY);
                this.setLocation(anyX, anyY);
-               
+
        }
-       
+
        /**
         * Interpolate one number
         * @param a
@@ -149,20 +149,20 @@ public class GeomPoint extends Point {
        public static double linearInterpolation(double a, double b, float t) {
                return a + t * (b - a);
        }
-       
+
 
        public static GeomPoint getLineIntersection ( GeomPoint a1,GeomPoint a2,
                        GeomPoint b1,GeomPoint b2) {
-               
+
                //log.debug("b1: "+b1);
                //log.debug("b2: "+b2);
-               
+
                double x,y,m1,m2;
-       
+
                if ((a2.getX()-a1.getX()) == 0) {
-                       
+
                        //log.debug("k1 ^ 0");
-                       
+
                        double k2 = (b2.getY()-b1.getY()) / 
(b2.getX()-b1.getX());
                        //log.debug("k2: "+k2);
                        //log.debug("b1.getY(): "+b1.getY());
@@ -170,45 +170,45 @@ public class GeomPoint extends Point {
                        // an infinite directional constant means the line is 
vertical
                        // so the intersection must be at the x coordinate of 
the line
                        x = a1.getX();
-            m2 = b1.getY() - k2 * b1.getX();
-            //log.debug("m2: "+m2);
-            y = k2 * x + m2;
-            //log.debug("y: "+y);
-                       
+                       m2 = b1.getY() - k2 * b1.getX();
+                       //log.debug("m2: "+m2);
+                       y = k2 * x + m2;
+                       //log.debug("y: "+y);
+
                } else if((b2.getX()-b1.getX()) == 0) {
-                       
+
                        //log.debug("k2 ^^ 0");
-                       
+
                        double k1 = (a2.getY()-a1.getY()) / 
(a2.getX()-a1.getX());
                        // same as above for line 2
                        m1 = a1.getY() - k1 * a1.getX();
                        x = b1.getX();
                        y = k1 * x + m1;
-                       
+
                } else {
-               
+
                        //calculate directional constants
                        double k1 = (a2.getY()-a1.getY()) / 
(a2.getX()-a1.getX());
                        double k2 = (b2.getY()-b1.getY()) / 
(b2.getX()-b1.getX());
-                       
+
                        // if the directional constants are equal, the lines 
are parallel,
                        // meaning there is no intersection point.
                        if (java.lang.Double.compare(k1, k2) == 0) return null;
-               
+
                        //log.debug("neither");
 //                     log.debug("k1: "+k1);
 //                     log.debug("k2: "+k2);
-                       
+
                        m1 = a1.getY() - k1 * a1.getX();
-                       m2 = b1.getY() - k2 * b1.getX();                        
        
+                       m2 = b1.getY() - k2 * b1.getX();
                        x = (m1-m2) / (k2-k1);
                        y = k1 * x + m1;
                }
-               
-               
+
+
                GeomPoint gPoint = new GeomPoint();
                gPoint.setLocation(x, y);
-               
+
                return gPoint;
-       }       
+       }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
index 72939d8..5dd42cd 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
@@ -23,6 +23,7 @@ import static 
org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT_
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANG_KEY;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.exit;
 import static 
org.apache.openmeetings.web.app.Application.getAuthenticationStrategy;
@@ -515,7 +516,8 @@ public class WebSession extends 
AbstractAuthenticatedWebSession implements IWebS
                dashboard = 
(UserDashboard)dashboardContext.getDashboardPersister().load();
                boolean existMyRoomWidget = false, existRssWidget = false, 
existAdminWidget = false;
                ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
-               boolean showMyRoomConfValue = 1 == 
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, Integer.class, "0");
+               boolean showMyRoomConfValue = 
"true".equals(cfgDao.getConfValue(CONFIG_MYROOMS_ENABLED, String.class, "true"))
+                               && 1 == 
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, Integer.class, "0");
                boolean showRssConfValue = 1 == 
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_RSS_KEY, Integer.class, "0");
                boolean showAdminWidget = 
getRights().contains(User.Right.Admin);
                boolean save = false;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 2176e16..573d5ef 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -20,10 +20,7 @@ package org.apache.openmeetings.web.common;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_ADMIN;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_GROUP_ADMIN;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_USER;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.MENU_ROOMS_NAME;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.addOnlineUser;
 import static org.apache.openmeetings.web.app.Application.getBean;
@@ -42,12 +39,10 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.openmeetings.core.util.WebSocketHelper;
-import org.apache.openmeetings.db.dao.basic.NavigationDao;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.basic.Naviglobal;
-import org.apache.openmeetings.db.entity.basic.Navimain;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
 import org.apache.openmeetings.db.entity.user.User.Right;
@@ -64,6 +59,8 @@ import org.apache.openmeetings.web.user.chat.ChatPanel;
 import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
 import org.apache.openmeetings.web.util.ContactsHelper;
 import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.openmeetings.web.util.OmUrlFragment.MenuActions;
+import org.apache.openmeetings.web.util.OmUrlFragment.MenuParams;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
@@ -287,43 +284,77 @@ public class MainPanel extends Panel {
                });
        }
 
-       private static int getLevel() {
-               Set<Right> r = WebSession.getRights();
-               return hasAdminLevel(r) ? LEVEL_ADMIN : (hasGroupAdminLevel(r) 
? LEVEL_GROUP_ADMIN : LEVEL_USER);
+       private IMenuItem getSubItem(String lbl, String title, MenuActions 
action, MenuParams param) {
+               return new MainMenuItem(lbl, title, action, param) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClick(AjaxRequestTarget target) {
+                               onClick(MainPanel.this, target);
+                       }
+               };
        }
 
        private List<IMenuItem> getMainMenu() {
                List<IMenuItem> menu = new ArrayList<>();
-               for (Naviglobal gl : 
getBean(NavigationDao.class).getMainMenu(getLevel())) {
+               {
+                       // Dashboard Menu Points
+                       List<IMenuItem> l = new ArrayList<>();
+                       l.add(getSubItem("290", "1450", 
MenuActions.dashboardModuleStartScreen, null));
+                       l.add(getSubItem("291", "1451", 
MenuActions.dashboardModuleCalendar, null));
+                       menu.add(new MenuItem(Application.getString("124"), l));
+               }
+               {
+                       // Conference Menu Points
                        List<IMenuItem> l = new ArrayList<>();
-                       for (Navimain nm : gl.getMainnavi()) {
-                               l.add(new MainMenuItem(nm) {
+                       l.add(getSubItem("777", "1506", 
MenuActions.conferenceModuleRoomList, MenuParams.publicTabButton));
+                       l.add(getSubItem("779", "1507", 
MenuActions.conferenceModuleRoomList, MenuParams.privateTabButton));
+                       if 
("true".equals(getBean(ConfigurationDao.class).getConfValue(CONFIG_MYROOMS_ENABLED,
 String.class, "true"))) {
+                               l.add(getSubItem("781", "1508", 
MenuActions.conferenceModuleRoomList, MenuParams.myTabButton));
+                       }
+                       List<Room> recent = 
getBean(RoomDao.class).getRecent(getUserId());
+                       if (!recent.isEmpty()) {
+                               l.add(new MenuItem(DELIMITER, (String)null));
+                       }
+                       for (Room r : recent) {
+                               final Long roomId = r.getId();
+                               l.add(new MenuItem(r.getName(), r.getName()) {
                                        private static final long 
serialVersionUID = 1L;
 
                                        @Override
                                        public void onClick(AjaxRequestTarget 
target) {
-                                               onClick(MainPanel.this, target);
+                                               
RoomEnterBehavior.roomEnter((MainPage)getPage(), target, roomId);
                                        }
                                });
                        }
-                       if (MENU_ROOMS_NAME.equals(gl.getName())) {
-                               List<Room> recent = 
getBean(RoomDao.class).getRecent(getUserId());
-                               if (!recent.isEmpty()) {
-                                       l.add(new MenuItem(DELIMITER, 
(String)null));
-                               }
-                               for (Room r : recent) {
-                                       final Long roomId = r.getId();
-                                       l.add(new MenuItem(r.getName(), 
r.getName()) {
-                                               private static final long 
serialVersionUID = 1L;
-
-                                               @Override
-                                               public void 
onClick(AjaxRequestTarget target) {
-                                                       
RoomEnterBehavior.roomEnter((MainPage)getPage(), target, roomId);
-                                               }
-                                       });
-                               }
+                       menu.add(new MenuItem(Application.getString("792"), l));
+               }
+               {
+                       // Recording Menu Points
+                       List<IMenuItem> l = new ArrayList<>();
+                       l.add(getSubItem("395", "1452", 
MenuActions.recordModule, null));
+                       menu.add(new MenuItem(Application.getString("395"), l));
+               }
+               Set<Right> r = WebSession.getRights();
+               boolean isAdmin = hasAdminLevel(r);
+               if (isAdmin || hasGroupAdminLevel(r)) {
+                       // Administration Menu Points
+                       List<IMenuItem> l = new ArrayList<>();
+                       l.add(getSubItem("125", "1454", 
MenuActions.adminModuleUser, null));
+                       if (isAdmin) {
+                               l.add(getSubItem("597", "1455", 
MenuActions.adminModuleConnections, null));
+                       }
+                       l.add(getSubItem("127", "1456", 
MenuActions.adminModuleOrg, null));
+                       l.add(getSubItem("186", "1457", 
MenuActions.adminModuleRoom, null));
+                       if (isAdmin) {
+                               l.add(getSubItem("263", "1458", 
MenuActions.adminModuleConfiguration, null));
+                               l.add(getSubItem("348", "1459", 
MenuActions.adminModuleLanguages, null));
+                               l.add(getSubItem("1103", "1454", 
MenuActions.adminModuleLDAP, null));
+                               l.add(getSubItem("1571", "1572", 
MenuActions.adminModuleOAuth, null));
+                               l.add(getSubItem("367", "1461", 
MenuActions.adminModuleBackup, null));
+                               l.add(getSubItem("main.menu.admin.email", 
"main.menu.admin.email.desc", MenuActions.adminModuleEmail, null));
                        }
-                       menu.add(new 
MenuItem(Application.getString(gl.getLabelId()), l));
+                       menu.add(new MenuItem(Application.getString("6"), l));
                }
                return menu;
        }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java
index 099289a..630987d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.common.menu;
 
-import org.apache.openmeetings.db.entity.basic.Navimain;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.common.MainPanel;
 import org.apache.openmeetings.web.util.OmUrlFragment;
@@ -30,13 +29,13 @@ public class MainMenuItem extends MenuItem {
        private static final long serialVersionUID = 1L;
        private MenuActions action;
        private MenuParams params;
-       
-       public MainMenuItem(Navimain m) {
-               super(Application.getString(m.getLabelId()), 
Application.getString(m.getTooltipLabelId()));
-               action = MenuActions.valueOf(m.getAction());
-               params = m.getParams() != null ? 
MenuParams.valueOf(m.getParams()) : MenuParams.publicTabButton;
+
+       public MainMenuItem(String lbl, String title, MenuActions action, 
MenuParams param) {
+               super(Application.getString(lbl), Application.getString(title));
+               this.action = action;
+               this.params = param != null ? param : 
MenuParams.publicTabButton;
        }
-       
+
        public void onClick(MainPanel main, AjaxRequestTarget target) {
                main.updateContents(new OmUrlFragment(action, params), target);
        }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
index 1b60e5a..fe3bfea 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
@@ -46,7 +46,7 @@
                                        <div wicket:id="message"></div>
                                </td>
                        </tr>
-                       <tr>
+                       <tr wicket:enclosure="bookedRoom">
                                <td colspan="2"><input type="checkbox" 
wicket:id="bookedRoom" /><label wicket:for="bookedRoom"><wicket:message 
key="1218"/></label></td>
                        </tr>
                        <tr wicket:id="roomParamsBlock">

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
index 6f222bf..7b6141f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.user;
 
 import static 
org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
 import static 
org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.Application.getContactsLink;
 import static org.apache.openmeetings.web.app.Application.getInvitationLink;
@@ -36,6 +37,7 @@ import java.util.Date;
 import java.util.List;
 
 import org.apache.openmeetings.core.mail.MailHandler;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.room.IInvitationManager;
 import org.apache.openmeetings.db.dao.room.RoomDao;
@@ -153,6 +155,7 @@ public class MessageDialog extends 
AbstractFormDialog<PrivateMessage> {
                                target.add(bookedRoom, roomParamsBlock);
                        }
                }));
+               
bookedRoom.setVisible("true".equals(getBean(ConfigurationDao.class).getConfValue(CONFIG_MYROOMS_ENABLED,
 String.class, "true")));
                roomParamsBlock.add(roomParams);
                roomParams.add(new RoomTypeDropDown("room.type"));
                roomParams.add(start);
@@ -202,17 +205,17 @@ public class MessageDialog extends 
AbstractFormDialog<PrivateMessage> {
                        
a.setEnd(CalendarWebHelper.getDate(end.getModelObject()));
                        List<MeetingMember> attendees = new ArrayList<>();
                        for (User to : modelTo.getObject()) {
-                       MeetingMember mm = new MeetingMember();
-                       mm.setUser(to);
-                       mm.setDeleted(false);
-                       mm.setInserted(a.getInserted());
-                       mm.setUpdated(a.getUpdated());
-                       mm.setAppointment(a);
-                       attendees.add(mm);
+                               MeetingMember mm = new MeetingMember();
+                               mm.setUser(to);
+                               mm.setDeleted(false);
+                               mm.setInserted(a.getInserted());
+                               mm.setUpdated(a.getUpdated());
+                               mm.setAppointment(a);
+                               attendees.add(mm);
                        }
                        a.setOwner(owner);
                        a.setMeetingMembers(attendees);
-               getBean(AppointmentDao.class).update(a, getUserId(), false);
+                       getBean(AppointmentDao.class).update(a, getUserId(), 
false);
                        m.setRoom(r);
                } else {
                        m.setRoom(null);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
index 6a69179..0834a93 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
@@ -71,7 +71,7 @@
                                </div>
                                <div id="tab2">
                                        <div class="table">
-                                               <div>
+                                               <div 
wicket:enclosure="createRoom">
                                                        <input type="checkbox" 
wicket:id="createRoom" /><label wicket:for="createRoom"><wicket:message 
key="1509" /></label>
                                                </div>
                                                <div 
wicket:id="create-room-block">

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index e721c0b..8ab6dbb 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.web.user.calendar;
 
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
@@ -33,6 +34,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
@@ -283,6 +285,7 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
 
        private class AppointmentForm extends Form<Appointment> {
                private static final long serialVersionUID = 1L;
+               private final boolean myRoomsAllowed;
                private boolean createRoom = true;
                private Room appRoom = null;
                private final DateTimePicker start = new 
OmDateTimePicker("start", Model.of(LocalDateTime.now()));
@@ -331,7 +334,7 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
                        if (a.getRoom() == null) {
                                a.setRoom(createAppRoom());
                        }
-                       createRoom = a.getRoom().isAppointment();
+                       createRoom = myRoomsAllowed && 
a.getRoom().isAppointment();
                        if (createRoom) {
                                appRoom = a.getRoom();
                        } else {
@@ -372,6 +375,8 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
                        super(id, model);
                        setOutputMarkupId(true);
 
+                       myRoomsAllowed = 
"true".equals(getBean(ConfigurationDao.class).getConfValue(CONFIG_MYROOMS_ENABLED,
 String.class, "true"));
+                       createRoom = myRoomsAllowed;
                        add(feedback.setOutputMarkupId(true));
                        //General
                        add(new 
RequiredTextField<String>("title").setLabel(Model.of(Application.getString(572))));
@@ -426,8 +431,8 @@ public class AppointmentDialog extends 
AbstractFormDialog<Appointment> {
                                        createRoom = getConvertedInput();
                                        
target.add(createRoomBlock.setEnabled(createRoom), 
groom.setEnabled(!createRoom));
                                }
-                       });
-                       add(createRoomBlock.add(roomType, new 
CheckBox("moderated")).setEnabled(createRoom).setOutputMarkupId(true));
+                       }.setVisible(myRoomsAllowed));
+                       add(createRoomBlock.add(roomType, new 
CheckBox("moderated")).setEnabled(createRoom).setVisible(myRoomsAllowed).setOutputMarkupId(true));
                        
add(groom.setRequired(true).setLabel(Model.of(Application.getString(406))).setEnabled(!createRoom).setOutputMarkupId(true));
                        
add(sipContainer.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true));
                        sipContainer.add(new Label("room.confno", 
"")).setVisible(false);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java
----------------------------------------------------------------------
diff --git 
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
index 9ca152f..957a789 100644
--- 
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
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.util;
 
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANDING_ZONE;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MYROOMS_ENABLED;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static 
org.apache.openmeetings.web.user.profile.SettingsPanel.EDIT_PROFILE_TAB_ID;
 import static 
org.apache.openmeetings.web.user.profile.SettingsPanel.MESSAGES_TAB_ID;
@@ -273,7 +274,7 @@ public class OmUrlFragment implements Serializable {
                                MenuParams params = MenuParams.publicTabButton;
                                if (TYPE_GROUP.equals(type)) {
                                        params = MenuParams.privateTabButton;
-                               } else if (TYPE_MY.equals(type)) {
+                               } else if 
("true".equals(getBean(ConfigurationDao.class).getConfValue(CONFIG_MYROOMS_ENABLED,
 String.class, "true")) && TYPE_MY.equals(type)) {
                                        params = MenuParams.myTabButton;
                                }
                                basePanel = new RoomsSelectorPanel(CHILD_ID, 
params);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
index 4f59627..7268dbf 100644
--- 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
+++ 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
@@ -28,8 +28,6 @@
                
<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
                
<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
                
<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
-               
<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
-               <class>org.apache.openmeetings.db.entity.basic.Navimain</class>
                
<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
                
<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
                
<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
index f0600aa..1f1e117 100644
--- 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
+++ 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
@@ -28,8 +28,6 @@
                
<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
                
<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
                
<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
-               
<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
-               <class>org.apache.openmeetings.db.entity.basic.Navimain</class>
                
<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
                
<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
                
<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
index 311d32f..1406f21 100644
--- 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
+++ 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
@@ -28,8 +28,6 @@
                
<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
                
<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
                
<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
-               
<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
-               <class>org.apache.openmeetings.db.entity.basic.Navimain</class>
                
<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
                
<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
                
<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
index a59d954..bd84f1c 100644
--- 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
+++ 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
@@ -28,8 +28,6 @@
                
<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
                
<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
                
<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
-               
<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
-               <class>org.apache.openmeetings.db.entity.basic.Navimain</class>
                
<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
                
<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
                
<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
index 87faf64..a5229c1 100644
--- 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
+++ 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
@@ -28,8 +28,6 @@
                
<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
                
<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
                
<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
-               
<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
-               <class>org.apache.openmeetings.db.entity.basic.Navimain</class>
                
<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
                
<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
                
<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
index fc25f9f..6d2c129 100644
--- 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
+++ 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
@@ -28,8 +28,6 @@
                
<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
                
<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
                
<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
-               
<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
-               <class>org.apache.openmeetings.db.entity.basic.Navimain</class>
                
<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
                
<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
                
<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index 9c95d2b..12e412e 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -154,7 +154,6 @@
        <bean id="groupDao" 
class="org.apache.openmeetings.db.dao.user.GroupDao" />
        <bean id="groupUserDao" 
class="org.apache.openmeetings.db.dao.user.GroupUserDao" />
        <bean id="errorManagement" 
class="org.apache.openmeetings.db.dao.basic.ErrorDao" />
-       <bean id="navimanagement" 
class="org.apache.openmeetings.db.dao.basic.NavigationDao" />
        <bean id="pollManagement" 
class="org.apache.openmeetings.db.dao.room.PollDao" />
        <bean id="labelDao" 
class="org.apache.openmeetings.db.dao.label.LabelDao" />
        <bean id="configurationDaoImpl" 
class="org.apache.openmeetings.db.dao.basic.ConfigurationDao" />

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d6f0f022/openmeetings-web/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java
deleted file mode 100644
index c0d4165..0000000
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.test.navi;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_ADMIN;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_GROUP_ADMIN;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_USER;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.basic.NavigationDao;
-import org.apache.openmeetings.db.entity.basic.Naviglobal;
-import org.apache.openmeetings.db.entity.basic.Navimain;
-import org.apache.openmeetings.test.AbstractJUnitDefaults;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class TestNavi extends AbstractJUnitDefaults {
-       @Autowired
-       private NavigationDao navimanagement;
-
-       private List<Naviglobal> testGetNavi(int level) {
-               List<Naviglobal> ll = navimanagement.getMainMenu(level);
-
-               assertTrue("GlobalNavi size should be greater than zero: " + 
ll.size(), ll.size() > 0);
-
-               for (Naviglobal navigl : ll) {
-                       assertNotNull("Naviglobal retrieved should not be 
null", navigl);
-                       assertTrue(String.format("Naviglobal retrieved should 
have level not greater than: %s, has: ", level, navigl.getLevelId()), 
navigl.getLevelId() <= level);
-
-                       assertNotNull("Naviglobal retrieved should have 
Navimain entries", navigl.getMainnavi());
-                       for (Navimain navim : navigl.getMainnavi()) {
-                               assertNotNull("Navimain retrieved should not be 
null", navim);
-                               assertTrue(String.format("Navimain retrieved 
should have level not greater than: %s, has: ", level, navim.getLevelId()), 
navim.getLevelId() <= level);
-                       }
-               }
-               return ll;
-       }
-
-       @Test
-       public void testGetUserNavi() {
-               testGetNavi(LEVEL_USER);
-       }
-
-       @Test
-       public void testGetGroupAdminNavi() {
-               testGetNavi(LEVEL_GROUP_ADMIN);
-       }
-
-       @Test
-       public void testGetAdminNavi() {
-               List<Naviglobal> menu = testGetNavi(LEVEL_ADMIN);
-               for (Naviglobal ng : menu) {
-                       if (ng.getLevelId() == LEVEL_ADMIN) {
-                               assertTrue("Admin menu should conatin more than 
4 items: " + ng.getMainnavi().size(), ng.getMainnavi().size() > 4);
-                       }
-               }
-       }
-}

Reply via email to