You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/09/12 16:20:38 UTC

openmeetings git commit: [OPENMEETINGS-1008] 'personal.rooms.enabled' config is added

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 <so...@gmail.com>
Authored: Tue Sep 12 23:20:28 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
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);
-			}
-		}
-	}
-}