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/05/01 06:10:52 UTC

[01/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1526] Multiselect using Shift/Ctrl seems to be implemented

Repository: openmeetings
Updated Branches:
  refs/heads/2.0 [created] 3678c36ba
  refs/heads/2.x [created] 9672db3bd
  refs/heads/3.0.x [created] 526d03307
  refs/heads/3.1.x [created] be2fbf424


[OPENMEETINGS-1526] Multiselect using Shift/Ctrl seems to be implemented


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

Branch: refs/heads/3.1.x
Commit: 68008ec5ee1c72d726ad055887f2fc6114c77117
Parents: 010ef53
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Dec 22 15:57:57 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Dec 22 15:57:57 2016 +0000

----------------------------------------------------------------------
 .../fileexplorer/dragItemFileExplorer.lzx       | 181 ++++++++++++-------
 .../tabcontent/fileexplorer/fileExplorer.lzx    | 102 +++++++++--
 .../fileexplorer/tabbar/baseChooseIconView.lzx  |  58 +++---
 .../treeitems/baseFileExplorerItem.lzx          | 119 ++++++++----
 4 files changed, 318 insertions(+), 142 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/68008ec5/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx b/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx
index 63b85aa..07c8eaf 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx
@@ -8,15 +8,15 @@
   "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
-		  
+      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.
-  
+
 -->
 <library>
 
@@ -34,7 +34,7 @@
 	<attribute name="alreadySent" value="false" type="boolean" />
 	<attribute name="fileId" value="0" type="number" />
 	<attribute name="moveToHome" value="false" type="boolean" />
-	
+
 	<handler name="oninit">
 		lz.Track.activate(canvas.currentImagesListdraw.currentTrackGroupName);
 		canvas.currentImagesListdraw.currentDragItem = this;
@@ -42,33 +42,52 @@
 		lz.ModeManager.globalLockMouseEvents();
 		this.dragger.apply();
 	</handler>
-	
+
 	<method name="sendOverItem" args="itemRef">
-		<![CDATA[
-			if (this.refObj != itemRef) {
-				
-				if (this.refObj.type == 'Folder') {
-					if (!itemRef.isTrashCan && itemRef.type != 'Folder') {
-						//No Folders to the whiteboard please
-						return;
-					}
+	<![CDATA[
+		if (this.refObj != itemRef) {
+			if (this.refObj.type == 'Folder') {
+				if (!itemRef.isTrashCan && itemRef.type != 'Folder') {
+					//No Folders to the whiteboard please
+					return;
 				}
-				
-				this.overItem = itemRef;
-				this._dragIcon.setAttribute("frame",2);
 			}
-		]]>
+			this.overItem = itemRef;
+			this._dragIcon.setAttribute("frame", 2);
+		}
+	]]>
 	</method>
-	
+
 	<method name="sendOutItem" args="itemRef">
 		this.overItem = null;
-		this._dragIcon.setAttribute("frame",1);
+		this._dragIcon.setAttribute("frame", 1);
 	</method>
-	
+
 	<handler name="onmouseup" reference="lz.GlobalMouse" args="who">
 		this.close();
 	</handler>
-	
+
+	<method name="dropToWb" args="item">
+	<![CDATA[
+		switch (item.type) {
+			case 'Video':
+				item.playVideo();
+				break;
+			case 'WmlFile':
+				item.loadWmlFile();
+				break;
+			case 'Presentation':
+				item.loadDocumentToWhiteboard();
+				break;
+			case 'Image':
+				item.loadImageToWhiteboard();
+				break;
+			default:
+				if ($debug) Debug.warn("Should never happen dragItemFileExplorer unhandled case");
+		}
+	]]>
+	</method>
+
 	<method name="close">
 	<![CDATA[
 		//This can happen when the confirmation pops up
@@ -82,65 +101,57 @@
 		lz.ModeManager.globalUnlockMouseEvents();
 		canvas.currentImagesListdraw.currentDragItem = null;
 		this.dragger.remove();
-		
+
 		if (this.overItem != null) {
-			
 			if ($debug) Debug.write("this.overItem ",this.overItem);
-			
+
 			if (this.overItem["isTrashCan"] && this.overItem.isTrashCan) {
 				if ($debug) Debug.write("SEND TO GARBAGE");
 				this.fileId = this.refObj.fileId;
 				new lz.confirmationSingle(canvas,{
-						   refObj:this,
-						   labelid:710,
-						   labeliderror:713,
-						   showCheckBox:false,
-						   refReturnMethod:"sendConfirmation"
+						refObj:this,
+						labelid:710,
+						labeliderror:713,
+						showCheckBox:false,
+						refReturnMethod:"sendConfirmation"
 						});
 			} else if (this.overItem["type"] && this.overItem.type == 'Folder'){
 				if ($debug) Debug.write("MOVE ITEM",this.refObj.fileId);
 				if ($debug) Debug.write("MOVE TO PARENT",this.overItem.fileId);
 				this.fileId = this.refObj.fileId;
-				
+
 				//check if this is a home folder or not
 				var checkForOwer = this.overItem.checkForIsOwner();
 				if ($debug) Debug.write("checkForOwer ::",checkForOwer);
 				this.moveToHome = checkForOwer;
-				
+
 				//check that the file is not moved inside itself
 				if (this.overItem.checkForIsChild(this.refObj.fileId)) {
 					new lz.labelerrorPopup(canvas,{errorlabelid:922});
 					this.destroy();
 					return;
 				}
-				
+
 				this.moveFile();
 			} else {
 				if ($debug) Debug.warn("Drag to whiteboard !!! ");
-				switch (this.refObj.type) {
-					case 'Video':
-						this.refObj.playVideo();
-						break;
-					case 'WmlFile':
-						this.refObj.loadWmlFile();
-						break;
-					case 'Presentation':
-						this.refObj.loadDocumentToWhiteboard();
-						break;
-					case 'Image':
-						this.refObj.loadImageToWhiteboard();
-						break;
-					default:
-						if ($debug) Debug.warn("Should never happen dragItemFileExplorer unhandled case");
+				var l = canvas.currentFileExplorer._selectedList;
+				if (l.length > 0) {
+					for (var i = 0; i < l.length; ++i) {
+						dropToWb(l[i]);
+					}
+				} else {
+					dropToWb(this.refObj);
 				}
+				canvas.currentFileExplorer.deselectAll();
 				this.destroy();
 			}
 		} else {
 			this.destroy();
 		}
-	]]>	
+	]]>
 	</method>
-	
+
 	<method name="sendConfirmation" args="bool,askAgain">
 		if (bool) {
 			this.deleteFileOrFolder();
@@ -148,11 +159,11 @@
 			this.destroy();
 		}
 	</method>
-	
-	<method name="deleteFileOrFolder">
+
+	<method name="_delete" args="_fileId">
 	<![CDATA[
 		var deleteLoader = new RestCall({
-				url: canvas.getUrl() + 'services/file/' + this.fileId
+				url: canvas.getUrl() + 'services/file/' + _fileId
 				, method: URLRequestMethod.POST
 				, hdrs: [new URLRequestHeader("X-HTTP-Method-Override", "DELETE")]
 				, errorCallback: deleteError
@@ -161,52 +172,86 @@
 		deleteLoader.load('--dummy--');
 	]]>
 	</method>
-	
+
+	<method name="deleteFileOrFolder">
+	<![CDATA[
+		var l = canvas.currentFileExplorer._selectedList;
+		if (l.length > 0) {
+			for (var i = 0; i < l.length; ++i) {
+				_delete(l[i].fileId);
+			}
+		} else {
+			_delete(this.fileId);
+		}
+	]]>
+	</method>
+
 	<method name="deleteComplete" args="event">
 		var o = JSON.parse(event.target.data);
-		if ($debug) Debug.info("drag::deleteComplete ", o);
+		if ($debug) Debug.info("drag::deleteComplete ", o.serviceResult);
 		//TODO check return code
+		var item = canvas.currentFileExplorer.deselect(o.serviceResult.code);
+		if (!!item) {
+			item.parent.parent.doOpen();
+		}
 		this.refObj.parent.parent.doOpen();
 		this.destroy();
 	</method>
-	
+
 	<method name="deleteError" args="event">
 		if ($debug) Debug.error("drag::deleteError ", event);
 		this.destroy();
 	</method>
-	
-	<method name="moveFile">
+
+	<method name="_move" args="_fileId">
 	<![CDATA[
-		if ($debug) Debug.write("moveFile HTTP 1: ");
+		if ($debug) Debug.write("move HTTP 1: ");
 		var moveLoader = new RestCall({
-				url: canvas.getUrl() + 'services/file/move/' + hib.currentroomid + '/' + this.fileId + '/' + this.overItem.fileId
+				url: canvas.getUrl() + 'services/file/move/' + hib.currentroomid + '/' + _fileId + '/' + this.overItem.fileId
 				, method: URLRequestMethod.POST
-				, errorCallback: deleteError
-				, successCallback: deleteComplete
+				, errorCallback: moveError
+				, successCallback: moveComplete
 				});
 		moveLoader.load('--dummy--');
 	]]>
 	</method>
-	
+
+	<method name="moveFile">
+	<![CDATA[
+		var l = canvas.currentFileExplorer._selectedList;
+		if (l.length > 0) {
+			for (var i = 0; i < l.length; ++i) {
+				_move(l[i].fileId);
+			}
+		} else {
+			_move(this.fileId);
+		}
+	]]>
+	</method>
+
 	<method name="moveComplete" args="event">
 		var o = JSON.parse(event.target.data);
-		if ($debug) Debug.info("drag::moveComplete ", o);
+		if ($debug) Debug.info("drag::moveComplete ", o.fileExplorerItemDTO);
 		//TODO check return code
+		var item = canvas.currentFileExplorer.deselect(o.fileExplorerItemDTO.id);
+		if ($debug) Debug.info("drag::moveComplete ", item);
+		if (!!item) {
+			item.parent.parent.doOpen();
+		}
 		this.overItem.doOpen();
 		this.refObj.parent.parent.doOpen();
 		this.destroy();
 	</method>
-	
+
 	<method name="moveError" args="event">
 		if ($debug) Debug.error("drag::moveError ", event);
 		this.destroy();
 	</method>
-	
+
 	<view name="_dragFileSymbol" x="10" y="10" resource="$once{ parent.dragItemResource }" />
-	
+
 	<view name="_dragIcon" x="18" y="14" resource="drag_n_drop_rsc" frame="1" />
-	
+
 	<dragstate name="dragger"/>
 </class>
-
 </library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/68008ec5/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx b/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
index af55660..3339612 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
@@ -32,6 +32,7 @@
 		</when>
 	</switch>
 	<attribute name="_selected" value="null" />
+	<attribute name="_selectedList" value="$once{new Array()}" />
 	<attribute name="rootFileLoader" />
 	<attribute name="createFileLoader"/>
 	<attribute name="createFileRefObj"/>
@@ -53,12 +54,95 @@
 		}
 	</handler>
 
+	<handler name="onkeydown" reference="lz.Keys" args="keyCode">
+	<![CDATA[
+		if (keyCode == 27) { //esc
+			deselectAll();
+		}
+	]]>
+	</handler>
+
+	<method name="deselectAll">
+	<![CDATA[
+		if (_selectedList.length > 0) {
+			for (var i = 0; i < _selectedList.length; ++i) {
+				_selectedList[i].deselectItem();
+			}
+			_selectedList.splice(0, _selectedList.length);
+			_selected.selectItem(null);
+		}
+		if (!!_selected) {
+			_selected.deselectItem();
+		}
+	]]>
+	</method>
+
+	<method name="deselect" args="_fileId">
+	<![CDATA[
+		for (var i = 0; i < _selectedList.length; ++i) {
+			var item = _selectedList[i];
+			if (item.fileId == _fileId) {
+				item.deselectItem();
+				_selectedList.removeAt(i);
+				return item;
+			}
+		}
+		return null;
+	]]>
+	</method>
+
 	<method name="selectItem" args="itemRef">
-		if (this._selected != null) {
-			this._selected.deselectItem();
+	<![CDATA[
+		var singleSel = true;
+		if (lz.Keys.isKeyDown("control")) {
+			// deselect in case already selected
+			singleSel = !deselect(itemRef.fileId);
+			if (singleSel) {
+				if (_selectedList.length == 0 && !!_selected) {
+					_selectedList.push(_selected);
+				}
+				_selectedList.push(itemRef);
+			}
+		} else if (lz.Keys.isKeyDown("shift") && !!_selected && _selected.fileId != itemRef.fileId) {
+			deselectAll();
+			var _y1 = _selected.getGlobalY(), _y2 = itemRef.getGlobalY();
+			var from = _y1 < _y2 ? _selected : itemRef
+				, to = _y1 < _y2 ? itemRef : _selected;
+			var d1 = from.depth(), d2 = to.depth();
+			if (d1 == d2) {
+				var p = null;
+				if (d1 == 0) {
+					p = _filearea._contentarea.subviews;
+				} else if (from.parent.parent.fileId == to.parent.parent.fileId) {
+					p = from.parent.subviews;
+				}
+				if (!!p) {
+					var sel = false;
+					for (var eg in p) {
+						var node = p[eg];
+						if (node.fileId == from.fileId) {
+							sel = true;
+						}
+						if (sel) {
+							_selectedList.push(node);
+							node.selectItem(null);
+						}
+						if (node.fileId == to.fileId) {
+							break;
+						}
+					}
+					singleSel = false;
+				}
+			}
+		} else {
+			deselectAll();
 		}
-		this._selected = itemRef;
-		this._selected.selectItem(null);
+		if (singleSel) {
+			_selected = itemRef;
+			_selected.selectItem(null);
+		}
+		//if ($debug) Debug.write("fileExplorer::selectItem ", _selectedList);
+	]]>
 	</method>
 
 	<method name="addFile">
@@ -146,7 +230,7 @@
 
 	<method name="setSize" args="size, el">
 		var sizem = Math.round((size / 1024 / 1024) * 100) / 100;
-		el.setAttribute("text","" + sizem + " MBytes");
+		el.setAttribute("text", "" + sizem + " MBytes");
 	</method>
 
 	<method name="createRootItems" args="roomObject">
@@ -240,7 +324,6 @@
 	<!--
 		Borders
 	 -->
-
 	<view name="_border2" x="0" y="${ 33 + parent._documentsTabs.height }" width="$once{ parent.width }"
 			height="1" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
 
@@ -253,7 +336,6 @@
 	<!--
 		File Tree Content Tabbar
 	 -->
-
 	<view name="_fileBar" layout="axis:x" x="0" y="${ 14 + parent._documentsTabs.height }">
 		<baseChooseIconView labelid="702" height="20" width="19" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }"
 				resourceN="file_explorer_add_file_rsc">
@@ -282,11 +364,10 @@
 	<!--
 		File Tree Content Trashbar
 	 -->
-
 	<view name="_trashBar" layout="axis:x" x="$once{ parent.width - 20 }"
-		  y="${ 14 + parent._documentsTabs.height }">
+			y="${ 14 + parent._documentsTabs.height }">
 		<baseChooseIconView name="_trashIcon" labelid="705" height="20" width="19"
-						 resourceN="file_explorer_trash_rsc" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }">
+				resourceN="file_explorer_trash_rsc" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }">
 			<attribute name="isTrashCan" value="true" type="boolean" />
 			<handler name="onclick">
 				if ($debug) Debug.write("Delete Folder and Files");
@@ -312,7 +393,6 @@
 	<!--
 		File Tree Content
 	 -->
-
 	<view name="_filearea" x="1" y="${ 34 + parent._documentsTabs.height }" clip="true"
 			height="${ parent.height - 35 - parent._documentsTabs.height - parent._userSpace.height }"
 			width="$once{ parent.width }">

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/68008ec5/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/tabbar/baseChooseIconView.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/tabbar/baseChooseIconView.lzx b/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/tabbar/baseChooseIconView.lzx
index 5b4e828..06cf3d3 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/tabbar/baseChooseIconView.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/tabbar/baseChooseIconView.lzx
@@ -9,44 +9,44 @@
   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.
-  
+
 -->
 <library>
 
-<class name="baseChooseIconView" extends="view" width="24" height="24" 
-       bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }"  >
-    
-    <attribute name="resourceN" value="" type="string" />
-    <attribute name="isselected" value="false" type="boolean" />
-    <attribute name="labelid" value="0" type="number" />
-    
-    <handler name="oninit">
-        if (this.isselected){
-            this.onclick.sendEvent();
-        }
-    </handler> 
-    
-    <handler name="onmouseover">
-        this._bg.setAttribute("bgcolor",canvas.getThemeColor('baseMousecolorizer'));
-    </handler>
-    
-    <handler name="onmouseout">
-        this._bg.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
-    </handler>
-    
-    <view name="_bg" x="1" y="1" width="$once{ parent.width-1 }" 
-          height="$once{ parent.height-2 }" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" />
-    
-    <view x="2" y="2" resource="$once{ parent.resourceN }" />
-             
-    <labelTooltip labelid="$once{ parent.labelid }" inittwice="true" />
+<class name="baseChooseIconView" extends="view" width="24" height="24"
+	   bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }"  >
+
+	<attribute name="resourceN" value="" type="string" />
+	<attribute name="isselected" value="false" type="boolean" />
+	<attribute name="labelid" value="0" type="number" />
+
+	<handler name="oninit">
+		if (this.isselected){
+			this.onclick.sendEvent();
+		}
+	</handler>
+
+	<handler name="onmouseover">
+		this._bg.setAttribute("bgcolor",canvas.getThemeColor('baseMousecolorizer'));
+	</handler>
+
+	<handler name="onmouseout">
+		this._bg.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+	</handler>
+
+	<view name="_bg" x="1" y="1" width="$once{ parent.width-1 }"
+		  height="$once{ parent.height-2 }" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" />
+
+	<view x="2" y="2" resource="$once{ parent.resourceN }" />
+
+	<labelTooltip labelid="$once{ parent.labelid }" inittwice="true" />
 </class>
 
 </library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/68008ec5/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx b/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx
index 747410f..1150cc8 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx
@@ -46,7 +46,6 @@
 	<attribute name="mouseDownClickDelegate" value="null" />
 	<attribute name="isTrashCan" value="false" type="boolean" />
 	<attribute name="folderLoader" />
-	<attribute name="deleteLoader" />
 
 	<handler name="oninit">
 		this.singleClickDelegate = new LzDelegate(this, "doSingleClick");
@@ -140,58 +139,75 @@
 			this.deleteFileOrFolder();
 		}
 	</method>
-	
-	<method name="deleteFileOrFolder">
+
+	<method name="_delete" args="_fileId">
 	<![CDATA[
-		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
-			new lz.labelerrorPopup(canvas, {errorlabelid: 1462});
-			return;
-		}
-		
 		if ($debug) Debug.write("deleteFileOrFolder HTTP 1: ");
-		if (!deleteLoader) {
-			deleteLoader = new RestCall({
-				url: canvas.getUrl() + 'services/file/' + this.fileId
+		var deleteLoader = new RestCall({
+				url: canvas.getUrl() + 'services/file/' + _fileId
 				, method: URLRequestMethod.POST
 				, hdrs: [new URLRequestHeader("X-HTTP-Method-Override", "DELETE")]
 				, errorCallback: deleteError
 				, successCallback: deleteComplete
 				});
-		}
 		deleteLoader.load('--dummy--');
 	]]>
 	</method>
-	
+
+	<method name="deleteFileOrFolder">
+	<![CDATA[
+		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+			new lz.labelerrorPopup(canvas, {errorlabelid: 1462});
+			return;
+		}
+		var l = canvas.currentFileExplorer._selectedList;
+		if (l.length > 0) {
+			for (var i = 0; i < l.length; ++i) {
+				_delete(l[i].fileId);
+			}
+		} else {
+			_delete(this.fileId);
+		}
+	]]>
+	</method>
+
 	<method name="deleteComplete" args="event">
 		var o = JSON.parse(event.target.data);
-		if ($debug) Debug.info("base::deleteComplete ", o);
+		if ($debug) Debug.info("base::deleteComplete ", o.serviceResult);
 		//TODO check return code
+		var item = canvas.currentFileExplorer.deselect(o.serviceResult.code);
+		if (!!item) {
+			item.parent.parent.doOpen();
+		}
 		this.parent.parent.doOpen();
 		canvas.currentFileExplorer._selected = null;
 	</method>
-	
+
 	<method name="deleteError" args="event">
 		if ($debug) Debug.error("base::deleteError ", event);
 	</method>
-	
+
 	<method name="doSingleClick" args="itemObj">
 		this.singleClickStarted = false;
 		//Cannot change name for Root Icons
 		if (this.isRoot) {
 			return;
 		}
+		if (lz.Keys.isKeyDown("control")) {
+			return;
+		}
 		this.addOrUpdateFolderName();
 	</method>
-	
+
 	<method name="doResetSingleClick" args="itmeObj">
 		this.singleClickStarted = false;
 	</method>
-	
+
 	<method name="addFile">
 		canvas.currentFileExplorer.selectItem(this);
 		canvas.currentFileExplorer.addFile();
 	</method>
-	
+
 	<method name="addFolder">
 	<![CDATA[
 		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
@@ -218,11 +234,11 @@
 		}
 	]]>
 	</method>
-	
+
 	<method name="refresh">
 		this.doOpen();
 	</method>
-	
+
 	<method name="playVideo">
 	<![CDATA[
 		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
@@ -232,7 +248,7 @@
 		canvas.currentFileExplorer.playVideo(this);
 	]]>
 	</method>
-	
+
 	<method name="editFolderName">
 	<![CDATA[
 		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
@@ -242,7 +258,7 @@
 		this.addOrUpdateFolderName();
 	]]>
 	</method>
-	
+
 	<method name="loadDocument">
 	<![CDATA[
 		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
@@ -252,7 +268,7 @@
 		canvas.currentFileExplorer.loadDocument(this);
 	]]>
 	</method>
-	
+
 	<method name="loadWmlFile">
 	<![CDATA[
 		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
@@ -272,7 +288,7 @@
 		canvas.currentFileExplorer.loadChart(this);
 	]]>
 	</method>
-	
+
 	<method name="addOrUpdateFolderName">
 	<![CDATA[
 		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
@@ -306,7 +322,7 @@
 			lz.Timer.addTimer(this.resetClickDelegate, 300);
 		}
 	</method>
-	
+
 	<method name="toggleOpen" args="setSelection">
 	<![CDATA[
 		if (this.mouseDownClickUsed) {
@@ -345,6 +361,7 @@
 					if (setSelection) {
 						doSetSelection()
 					} else {
+						canvas.currentFileExplorer.deselectAll();
 						this.doClose();
 					}
 				} else {
@@ -359,12 +376,12 @@
 		if (setSelection) canvas.currentFileExplorer.selectItem(this);
 	]]>
 	</method>
-	
+
 	<method name="selectItem" args="none">
 		this.selected = true;
-		this._fileName.setAttribute("bgcolor",canvas.getThemeColor('baseMousecolorizer'));
+		this._fileName.setAttribute("bgcolor", canvas.getThemeColor('baseMousecolorizer'));
 	</method>
-	
+
 	<method name="deselectItem">
 		this.selected = false;
 		if (this["_fileName"]) {
@@ -373,15 +390,17 @@
 			if ($debug) Debug.warn("deselectItem:: _fileName is NULL ",this);
 		}
 	</method>
-	
+
 	<method name="clearContent">
 	<![CDATA[
-		while (this.content.subviews.length > 0) {
-			this.content.subviews[0].destroy();
+		if (!!this.content) {
+			while (this.content.subviews.length > 0) {
+				this.content.subviews[0].destroy();
+			}
 		}
 	]]>
 	</method>
-	
+
 	<method name="loadFiles">
 	<![CDATA[
 		if (!folderLoader) {
@@ -401,7 +420,7 @@
 		if ($debug) Debug.info("base::loadFilesComplete ", o);
 		setNodes(o.fileExplorerItemDTO);
 	</method>
-	
+
 	<method name="loadFilesError" args="event">
 		if ($debug) Debug.error("base::loadFilesError ", event);
 	</method>
@@ -547,5 +566,37 @@
 		}
 	]]>
 	</method>
+
+	<method name="getGlobalY">
+		return getAttributeRelative("y", canvas.currentFileExplorer._filearea._contentarea);
+	</method>
+
+	<method name="selectBetween" args="y1, y2">
+	<![CDATA[
+		var y = getGlobalY();
+		if (y > y2) {
+			return;
+		}
+		if (y >= y1) {
+			canvas.currentFileExplorer._selectedList.push(this);
+			this.selectItem(null);
+		}
+		if (type == 'Folder' && open) {
+			for (var eg in this.content.subviews) {
+				this.content.subviews[eg].selectBetween(y1, y2);
+			}
+		}
+	]]>
+	</method>
+
+	<method name="depth">
+		var d = 0;
+		var c = this;
+		while (!c.isRoot) {
+			c = c.parent.parent;
+			d++;
+		}
+		return d;
+	</method>
 </class>
 </library>


[30/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1535] range method is fixed

Posted by so...@apache.org.
[OPENMEETINGS-1535] range method is fixed


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

Branch: refs/heads/3.1.x
Commit: 1e406fcda4ebde595590a17aae57a91009f05ba5
Parents: 86e69e3
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Jan 19 14:45:20 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Jan 19 14:45:20 2017 +0000

----------------------------------------------------------------------
 .../db/dto/calendar/AppointmentDTO.java         | 51 +-------------
 .../openmeetings/util/CalendarPatterns.java     |  8 ++-
 .../apache/openmeetings/web/app/WebSession.java |  4 +-
 .../classes/openmeetings-applicationContext.xml |  3 +
 .../util/AppointmentParamConverter.java         | 74 ++++++++++++++++++++
 .../webservice/util/CalendarParamConverter.java | 46 ++++++++++++
 .../webservice/util/DateParamConverter.java     | 55 +++++++++++++++
 .../util/OmParamConverterProvider.java          | 45 ++++++++++++
 8 files changed, 232 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1e406fcd/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
index a485a2f..eb8606a 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
@@ -18,10 +18,7 @@
  */
 package org.apache.openmeetings.db.dto.calendar;
 
-import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT;
-
 import java.io.Serializable;
-import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -39,7 +36,6 @@ import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
-import org.apache.wicket.ajax.json.JSONArray;
 import org.apache.wicket.ajax.json.JSONObject;
 
 @XmlRootElement
@@ -284,53 +280,8 @@ public class AppointmentDTO implements Serializable {
 		this.password = password;
 	}
 
-	private static Date optDate(JSONObject o, String prop) throws ParseException {
-		return ISO8601_FORMAT.parse(o.optString(prop));
-	}
-
-	private static Calendar optCal(AppointmentDTO a, JSONObject o, String prop) throws ParseException {
-		Calendar c = Calendar.getInstance(TimeZone.getTimeZone(a.owner.getTimeZoneId()));
-		c.setTime(ISO8601_FORMAT.parse(o.optString(prop)));
-		return c;
-	}
-
-	public static AppointmentDTO fromString(String s) throws ParseException {
-		JSONObject o = new JSONObject(s);
-		AppointmentDTO a = new AppointmentDTO();
-		a.id = o.optLong("id");
-		a.title = o.optString("title");
-		a.location = o.optString("location");
-		a.owner = UserDTO.get(o.optJSONObject("owner"));
-		a.start = optCal(a, o, "start");
-		a.end = optCal(a, o, "end");
-		a.description = o.optString("description");
-		a.inserted = optDate(o, "inserted");
-		a.updated = optDate(o, "updated");
-		a.deleted = o.optBoolean("inserted");
-		a.reminder = Reminder.valueOf(o.optString("reminder"));
-		a.room = RoomDTO.get(o.optJSONObject("room"));
-		a.icalId = o.optString("icalId");
-		JSONArray mm = o.optJSONArray("meetingMembers");
-		if (mm != null) {
-			for (int i = 0; i < mm.length(); ++i) {
-				a.meetingMembers.add(MeetingMemberDTO.get(mm.getJSONObject(i)));
-			}
-		}
-		a.languageId = o.optLong("languageId");
-		a.password = o.optString("password");
-		a.passwordProtected = o.optBoolean("passwordProtected");
-		a.connectedEvent = o.optBoolean("connectedEvent");
-		a.reminderEmailSend = o.optBoolean("reminderEmailSend");
-		return a;
-	}
-
 	@Override
 	public String toString() {
-		return new JSONObject(this)
-			.put("start", ISO8601_FORMAT.format(start))
-			.put("end", ISO8601_FORMAT.format(end))
-			.put("inserted", ISO8601_FORMAT.format(inserted))
-			.put("updated", ISO8601_FORMAT.format(updated))
-			.toString();
+		return new JSONObject(this).toString();
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1e406fcd/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
index e74020d..84da5df 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
@@ -41,9 +41,13 @@ public class CalendarPatterns {
 	public static final FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
 	public static final FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
 	public static final String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
-	public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
+	public static final String ISO8601_FULL_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
+	public static final String ISO8601_DATETIME_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss";
+	public static final String ISO8601_DATE_FORMAT_STRING = "yyyy-MM-dd";
 	public static final FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
-	public static final FastDateFormat ISO8601_FORMAT = FastDateFormat.getInstance(ISO8601_FORMAT_STRING);
+	public static final FastDateFormat ISO8601_FULL_FORMAT = FastDateFormat.getInstance(ISO8601_FULL_FORMAT_STRING);
+	public static final FastDateFormat ISO8601_DATETIME_FORMAT = FastDateFormat.getInstance(ISO8601_DATETIME_FORMAT_STRING);
+	public static final FastDateFormat ISO8601_DATE_FORMAT = FastDateFormat.getInstance(ISO8601_DATE_FORMAT_STRING);
 
 	public static String getDateByMiliSeconds(Date t) {
 		return dateFormat__yyyyMMddHHmmss.format(t);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1e406fcd/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 dd7d2c0..9bd0757 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
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.web.app;
 
 import static java.text.DateFormat.SHORT;
-import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT_STRING;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT_STRING;
 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;
@@ -311,7 +311,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		languageId = u.getLanguageId();
 		externalType = u.getExternalType();
 		tz = getBean(TimezoneUtil.class).getTimeZone(u);
-		ISO8601FORMAT = FastDateFormat.getInstance(ISO8601_FORMAT_STRING, tz);
+		ISO8601FORMAT = FastDateFormat.getInstance(ISO8601_FULL_FORMAT_STRING, tz);
 		setLocale(getLocale(u));
 		sdf = FastDateFormat.getDateTimeInstance(SHORT, SHORT, getLocale());
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1e406fcd/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
index 18808ff..f073274 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
@@ -283,6 +283,9 @@
 			<ref bean="userWebService"/>
 			<ref bean="netTestWebService"/> <!-- JaxRs only -->
 		</jaxrs:serviceBeans>
+		<jaxrs:providers>
+			<bean id="omParamProvider" class="org.apache.openmeetings.webservice.util.OmParamConverterProvider"/>
+		</jaxrs:providers>
 	</jaxrs:server>
 	<jaxws:endpoint id="calendarServiceWS" address="/CalendarService" implementor="#calendarWebService"/>
 	<jaxws:endpoint id="errorServiceWS" address="/ErrorService" implementor="#errorWebService" />

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1e406fcd/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
new file mode 100644
index 0000000..76f69fc
--- /dev/null
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
@@ -0,0 +1,74 @@
+/*
+ * 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.webservice.util;
+
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
+
+import javax.ws.rs.ext.ParamConverter;
+
+import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
+import org.apache.openmeetings.db.dto.calendar.MeetingMemberDTO;
+import org.apache.openmeetings.db.dto.room.RoomDTO;
+import org.apache.openmeetings.db.dto.user.UserDTO;
+import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
+
+public class AppointmentParamConverter implements ParamConverter<AppointmentDTO> {
+	@Override
+	public AppointmentDTO fromString(String val) {
+		JSONObject o = new JSONObject(val);
+		AppointmentDTO a = new AppointmentDTO();
+		a.setId(o.optLong("id"));
+		a.setTitle(o.optString("title"));
+		a.setLocation(o.optString("location"));
+		a.setOwner(UserDTO.get(o.optJSONObject("owner")));
+		a.setStart(CalendarParamConverter.get(o.optString("start"), a.getOwner().getTimeZoneId()));
+		a.setEnd(CalendarParamConverter.get(o.optString("end"), a.getOwner().getTimeZoneId()));
+		a.setDescription(o.optString("description"));
+		a.setInserted(DateParamConverter.get(o.optString("inserted")));
+		a.setInserted(DateParamConverter.get(o.optString("updated")));
+		a.setDeleted(o.optBoolean("inserted"));
+		a.setReminder(Reminder.valueOf(o.optString("reminder")));
+		a.setRoom(RoomDTO.get(o.optJSONObject("room")));
+		a.setIcalId(o.optString("icalId"));
+		JSONArray mm = o.optJSONArray("meetingMembers");
+		if (mm != null) {
+			for (int i = 0; i < mm.length(); ++i) {
+				a.getMeetingMembers().add(MeetingMemberDTO.get(mm.getJSONObject(i)));
+			}
+		}
+		a.setLanguageId(o.optLong("languageId"));
+		a.setPassword(o.optString("password"));
+		a.setPasswordProtected(o.optBoolean("passwordProtected"));
+		a.setConnectedEvent(o.optBoolean("connectedEvent"));
+		a.setReminderEmailSend(o.optBoolean("reminderEmailSend"));
+		return a;
+	}
+
+	@Override
+	public String toString(AppointmentDTO val) {
+		return new JSONObject(this)
+				.put("start", ISO8601_FULL_FORMAT.format(val.getStart()))
+				.put("end", ISO8601_FULL_FORMAT.format(val.getEnd()))
+				.put("inserted", ISO8601_FULL_FORMAT.format(val.getInserted()))
+				.put("updated", ISO8601_FULL_FORMAT.format(val.getUpdated()))
+				.toString();
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1e406fcd/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
new file mode 100644
index 0000000..0f0ff70
--- /dev/null
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
@@ -0,0 +1,46 @@
+/*
+ * 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.webservice.util;
+
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
+
+import java.util.Calendar;
+import java.util.TimeZone;
+
+import javax.ws.rs.ext.ParamConverter;
+
+public class CalendarParamConverter implements ParamConverter<Calendar> {
+	public static Calendar get(String val, String tzId) {
+		Calendar c = Calendar.getInstance(TimeZone.getTimeZone(tzId));
+		c.setTime(DateParamConverter.get(val));
+		return c;
+	}
+
+	@Override
+	public Calendar fromString(String val) {
+		Calendar c = Calendar.getInstance();
+		c.setTime(DateParamConverter.get(val));
+		return c;
+	}
+
+	@Override
+	public String toString(Calendar val) {
+		return ISO8601_FULL_FORMAT.format(val);
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1e406fcd/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
new file mode 100644
index 0000000..f0411cd
--- /dev/null
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
@@ -0,0 +1,55 @@
+/*
+ * 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.webservice.util;
+
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_DATETIME_FORMAT;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_DATE_FORMAT;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
+
+import java.text.ParseException;
+import java.util.Date;
+
+import javax.ws.rs.ext.ParamConverter;
+
+import org.apache.commons.lang3.time.FastDateFormat;
+
+public class DateParamConverter implements ParamConverter<Date> {
+	private final static FastDateFormat[] formats = new FastDateFormat[] { ISO8601_FULL_FORMAT, ISO8601_DATETIME_FORMAT, ISO8601_DATE_FORMAT };
+
+	static Date get(String val) {
+		for (FastDateFormat df : formats) {
+			try {
+				return df.parse(val);
+			} catch (ParseException e) {
+				// no-op
+			}
+		}
+		throw new IllegalArgumentException("Unparsable format");
+	}
+
+	@Override
+	public Date fromString(String val) {
+		return get(val);
+	}
+
+	@Override
+	public String toString(Date val) {
+		return ISO8601_FULL_FORMAT.format(val);
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1e406fcd/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
new file mode 100644
index 0000000..2432e84
--- /dev/null
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
@@ -0,0 +1,45 @@
+/*
+ * 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.webservice.util;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.ws.rs.ext.ParamConverter;
+import javax.ws.rs.ext.ParamConverterProvider;
+
+import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
+
+public class OmParamConverterProvider implements ParamConverterProvider {
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, Annotation[] annotations) {
+		if (Calendar.class.isAssignableFrom(rawType)) {
+			return (ParamConverter<T>)new CalendarParamConverter();
+		} else if (Date.class.isAssignableFrom(rawType)) {
+			return (ParamConverter<T>)new DateParamConverter();
+		} else if (AppointmentDTO.class.isAssignableFrom(rawType)) {
+			return (ParamConverter<T>)new DateParamConverter();
+		}
+		return null;
+	}
+}


[11/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1507] application.base.url setting is not being used for screen sharing codebase

Posted by so...@apache.org.
[OPENMEETINGS-1507] application.base.url setting is not being used for screen sharing codebase


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

Branch: refs/heads/3.1.x
Commit: 83f14f0e57fa3d3c07a5a5d529cf59c8f7bb0da4
Parents: 43c2e53
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Dec 31 09:19:15 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Dec 31 09:19:15 2016 +0000

----------------------------------------------------------------------
 .../openmeetings/web/app/Application.java       |  7 +--
 .../web/room/StartSharingEventBehavior.java     | 52 ++++++++++++++++++--
 2 files changed, 53 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/83f14f0e/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 038e6e9..f2bd19d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -107,7 +107,8 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		STRINGS_WITH_APP.addAll(Arrays.asList("499", "500", "506", "511", "512", "513", "517", "532", "622", "804"
 				, "909", "952", "978", "981", "984", "989", "990", "999", "1151", "1155", "1157", "1158", "1194"));
 	}
-	
+	public static final String HASH_MAPPING = "/hash";
+
 	@Override
 	protected void init() {
 		wicketApplicationName = super.getName();
@@ -139,13 +140,13 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		getRootRequestMapperAsCompound().add(new NoVersionMapper(getHomePage()));
 		getRootRequestMapperAsCompound().add(new NoVersionMapper("notinited", NotInitedPage.class));
 		getRootRequestMapperAsCompound().add(new NoVersionMapper("swf", HashPage.class));
-		//getRootRequestMapperAsCompound().add(new NoVersionMapper("/hash", HashPage.class));
+		//getRootRequestMapperAsCompound().add(new NoVersionMapper(HASH_MAPPING, HashPage.class));
 		getRootRequestMapperAsCompound().add(new NoVersionMapper("/recording/${hash}", HashPage.class));
 		getRootRequestMapperAsCompound().add(new NoVersionMapper("signin", getSignInPageClass()));
 		mountPage("install", InstallWizardPage.class);
 		mountPage("activate", ActivatePage.class);
 		mountPage("reset", ResetPage.class);
-		mountPage("/hash", HashPage.class);
+		mountPage(HASH_MAPPING, HashPage.class);
 		mountResource("/recordings/mp4/${id}", new Mp4RecordingResourceReference());
 		mountResource("/recordings/jpg/${id}", new JpgRecordingResourceReference()); //should be in sync with VideoPlayer
 		mountResource("/profile/${id}", new ProfileImageResourceReference());

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/83f14f0e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
index e0619a2..0f24895 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/StartSharingEventBehavior.java
@@ -24,6 +24,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSH
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.HASH_MAPPING;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getLanguage;
 import static org.apache.openmeetings.web.room.RoomBroadcaster.getClient;
@@ -46,8 +47,16 @@ import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.protocol.http.ClientProperties;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
@@ -60,6 +69,21 @@ public class StartSharingEventBehavior extends AbstractDefaultAjaxBehavior {
 	private static final String CDATA_END = "]]>";
 	private final AjaxDownload download;
 	private final Long roomId;
+	private final AjaxClientInfoBehavior acib = new AjaxClientInfoBehavior() {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		public void renderHead(Component component, IHeaderResponse response) {
+			super.renderHead(component, response);
+			response.render(JavaScriptHeaderItem.forScript("Wicket.BrowserInfo.collectExtraInfo = function(info) { var l = window.location; info.codebase = l.origin + l.pathname; };", "extended-client-info"));
+		}
+
+		@Override
+		protected WebClientInfo newWebClientInfo(RequestCycle requestCycle) {
+			return new WebClientInfo(requestCycle, extProps);
+		}
+	};
+	private final ExtendedClientProperties extProps = new ExtendedClientProperties();
 	private enum Protocol {
 		rtmp
 		, rtmpe
@@ -82,7 +106,7 @@ public class StartSharingEventBehavior extends AbstractDefaultAjaxBehavior {
 	@Override
 	protected void onBind() {
 		super.onBind();
-		getComponent().add(download);
+		getComponent().add(download, acib);
 	}
 
 	@Override
@@ -92,7 +116,6 @@ public class StartSharingEventBehavior extends AbstractDefaultAjaxBehavior {
 		try (InputStream jnlp = getClass().getClassLoader().getResourceAsStream("APPLICATION.jnlp")) {
 			ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
 			app = IOUtils.toString(jnlp, UTF_8);
-			String baseUrl = cfgDao.getBaseUrl();
 			Room room = getBean(RoomDao.class).get(roomId);
 			String publicSid = getParam(getComponent(), PARAM_PUBLIC_SID).toString();
 			SessionManager sessionManager = getBean(SessionManager.class);
@@ -108,7 +131,7 @@ public class StartSharingEventBehavior extends AbstractDefaultAjaxBehavior {
 				throw new RuntimeException(String.format("Invalid room id passed %s, expected, %s", path, roomId));
 			}
 			Protocol protocol = Protocol.valueOf(url.getScheme());
-			app = addKeystore(rc, app, protocol).replace("$codebase", baseUrl + "screenshare")
+			app = addKeystore(rc, app, protocol).replace("$codebase", extProps.getCodebase())
 					.replace("$applicationName", cfgDao.getAppName())
 					.replace("$url", _url)
 					.replace("$publicSid", publicSid)
@@ -193,4 +216,27 @@ public class StartSharingEventBehavior extends AbstractDefaultAjaxBehavior {
 				.replace("$keystore", CDATA_BEGIN + keystore + CDATA_END)
 				.replace("$password", CDATA_BEGIN + password + CDATA_END);
 	}
+
+	private static class ExtendedClientProperties extends ClientProperties {
+		private static final long serialVersionUID = 1L;
+		private String codebase;
+
+		public String getCodebase() {
+			return codebase;
+		}
+
+		@Override
+		public void read(IRequestParameters parameters) {
+			super.read(parameters);
+			String _url = parameters.getParameterValue("codebase").toString("N/A");
+			StringBuilder sb = new StringBuilder(_url);
+			if (_url.endsWith(HASH_MAPPING)) {
+				sb.setLength(_url.length() - HASH_MAPPING.length());
+			}
+			if (sb.charAt(sb.length() - 1) != '/') {
+				sb.append('/');
+			}
+			codebase = sb.append("screenshare").toString();
+		}
+	}
 }


[04/50] [abbrv] openmeetings git commit: no jira: Code clean-up

Posted by so...@apache.org.
no jira: Code clean-up


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

Branch: refs/heads/3.1.x
Commit: 2ff05c5ee2c1a1c6c798c887edce26e8774c518c
Parents: ee5f145
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Dec 23 07:25:00 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Dec 23 07:25:00 2016 +0000

----------------------------------------------------------------------
 .../openmeetings/db/dao/room/PollDao.java       |   2 +-
 .../openmeetings/db/dao/room/RoomDao.java       |   4 +-
 .../openmeetings/db/entity/room/Room.java       |   3 +-
 .../src/main/swf/base/mainMethods.lzx           |   8 +-
 .../conference/conference/conferenceMenubar.lzx | 288 +++++++++----------
 .../baseConferenceRoom.lzx                      | 111 ++++---
 .../whiteboard/base/tools/baseDrawRect.lzx      |   4 +-
 .../panels/propertypanel/propertyPanel.lzx      |  12 +-
 .../web/admin/email/EmailPanel.html             |   2 +-
 .../openmeetings/web/admin/ldaps/LdapForm.java  |   7 +-
 .../web/admin/ldaps/LdapsPanel.java             |   1 -
 11 files changed, 205 insertions(+), 237 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
index 38f4338..d6496ad 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
@@ -47,7 +47,7 @@ public class PollDao {
 			p.setCreated(new Date());
 			em.persist(p);
 		} else {
-			p =	em.merge(p);
+			p = em.merge(p);
 		}
 		return p;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
index ac50a1c..4209192 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
@@ -48,7 +48,7 @@ import org.springframework.transaction.annotation.Transactional;
 public class RoomDao implements IGroupAdminDataProviderDao<Room> {
 	private static final Logger log = Red5LoggerFactory.getLogger(RoomDao.class, webAppRootKey);
 	public final static String[] searchFields = {"name"};
-	
+
 	@PersistenceContext
 	private EntityManager em;
 	@Autowired
@@ -103,7 +103,7 @@ public class RoomDao implements IGroupAdminDataProviderDao<Room> {
 			oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
 		}
 	}
-	
+
 	public List<Room> get(List<Long> ids) {
 		return em.createNamedQuery("getRoomsByIds", Room.class).setParameter("ids", ids).getResultList();
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
index 6cd7928..d41a790 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
@@ -61,8 +61,7 @@ import org.simpleframework.xml.Root;
 	@NamedQuery(name = "getNondeletedRooms", query = "SELECT r FROM Room r WHERE r.deleted = false"),
 	@NamedQuery(name = "getPublicRooms", query = "SELECT r from Room r WHERE r.ispublic = true and r.deleted = false and r.type = :type"),
 	@NamedQuery(name = "getRoomByOwnerAndTypeId", query = "select c from Room as c where c.ownerId = :ownerId "
-					+ "AND c.type = :type AND c.deleted = false"),	
-										
+					+ "AND c.type = :type AND c.deleted = false"),
 	@NamedQuery(name = "selectMaxFromRooms", query = "select count(c.id) from Room c "
 			+ "where c.deleted = false AND c.name LIKE :search "),
 	@NamedQuery(name = "getRoomByExternalId", query = "select r from Room as r "

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-flash/src/main/swf/base/mainMethods.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/mainMethods.lzx b/openmeetings-flash/src/main/swf/base/mainMethods.lzx
index 48c38e1..15fc1b0 100644
--- a/openmeetings-flash/src/main/swf/base/mainMethods.lzx
+++ b/openmeetings-flash/src/main/swf/base/mainMethods.lzx
@@ -116,12 +116,12 @@
 	<confmenucommand id="cmd_pollResults" tipLabelId="1484" actionCommand="pollResults" />
 	<confmenucommand id="cmd_checkPollVoted" tipLabelId="1485" actionCommand="checkPollVoted" />
 	<confmenucommand id="cmd_importFile" tipLabelId="1479" actionCommand="importFile" />
-	<confmenucommand id="cmd_editCamMicSettings" actionCommand="editCamMicSettings" tipLabelId="1486" /> 
+	<confmenucommand id="cmd_editCamMicSettings" actionCommand="editCamMicSettings" tipLabelId="1486" />
 	<confmenucommand id="cmd_quit" actionCommand="quit" tipLabelId="1487" />
 	<confmenucommand id="cmd_showSipDialer" actionCommand="showSipDialer" tipLabelId="1488" />
 	
-	<confmenucommand id="cmd_invitation" actionCommand="invitation" tipLabelId="1489" /> 
-	<confmenucommand id="cmd_editWhiteboardDefault" actionCommand="editWhiteboardDefault" tipLabelId="1490" /> 
+	<confmenucommand id="cmd_invitation" actionCommand="invitation" tipLabelId="1489" />
+	<confmenucommand id="cmd_editWhiteboardDefault" actionCommand="editWhiteboardDefault" tipLabelId="1490" />
 	
 	<confmenucommand id="cmd_exportFilePNG" onselect="canvas.doWhiteboardActionmenu('exportFilePNG')" tipLabelId="1489" />
 	<confmenucommand id="cmd_exportFileJPG" onselect="canvas.doWhiteboardActionmenu('exportFileJPG')" tipLabelId="1489" />
@@ -130,7 +130,7 @@
 	<confmenucommand id="cmd_exportFilePDF" onselect="canvas.doWhiteboardActionmenu('exportFilePDF')" tipLabelId="1489" />
 	<confmenucommand id="cmd_exportFileTIF" onselect="canvas.doWhiteboardActionmenu('exportFileTIF')" tipLabelId="1489" />
 	 -->
-	
+
 	<attribute name="colorArray" value="null" />
 	<attribute name="errorLoader" />
 	

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-flash/src/main/swf/modules/conference/conference/conferenceMenubar.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/conference/conferenceMenubar.lzx b/openmeetings-flash/src/main/swf/modules/conference/conference/conferenceMenubar.lzx
index 4cab751..d3d3148 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/conference/conferenceMenubar.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/conference/conferenceMenubar.lzx
@@ -7,97 +7,87 @@
   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.
-  
+
 -->
 <library>
-
 	<class name="restrictedConferenceMenubar" extends="conferenceMenubar" viewType="restricted" />
-
 	<class name="interviewConferenceMenubar" extends="conferenceMenubar" viewType="interview"/>
-	
-	<class name="conferenceMenubar" extends="view" height="28" width="${ canvas.width }" 
+
+	<class name="conferenceMenubar" extends="view" height="28" width="${ canvas.width }"
 						bgcolor="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }" >
-						
+
 		<attribute name="viewType" value="conference" type="string" />
-						
-	    <attribute name="selected" value="null" />
-    
+		<attribute name="selected" value="null" />
+
 		<method name="construct" args="parent, args">
 			super.construct(parent, args);
 			canvas._menubar = this;
 		</method>
-		
-	    <method name="sendOpenMenu" args="menuref">
-	    	if (this.selected != null) {
-	    		this.selected.setAttribute("selected",false);
-	    	}
-	    	this.selected = menuref;
-	    	this.selected.setAttribute("selected",true);
-	    </method>
-			
+
+		<method name="sendOpenMenu" args="menuref">
+			if (this.selected != null) {
+				this.selected.setAttribute("selected",false);
+			}
+			this.selected = menuref;
+			this.selected.setAttribute("selected",true);
+		</method>
+
 		<view name="itemlist" layout="axis:x;spacing:0" >
-			
-			<conferenceExitButton name="_exitbtn" 
-				text_y_inset="4" text_fontsize="14" down_y_inset="8" height="28" />
-				
-			<baseMenuMeetingsItem text="$once{ canvas.getLabelName(245) }" 
-						text_y_inset="4" text_fontsize="14" down_y_inset="8"
-						textToolTip="" height="28"
-						visible="${ (canvas._menubar.viewType=='interview') ? false : ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }"
-						>
+			<conferenceExitButton name="_exitbtn"
+					text_y_inset="4" text_fontsize="14" down_y_inset="8" height="28" />
+
+			<baseMenuMeetingsItem text="$once{ canvas.getLabelName(245) }"
+					text_y_inset="4" text_fontsize="14" down_y_inset="8" textToolTip="" height="28"
+					visible="${ canvas._menubar.viewType != 'interview' &amp;&amp; (canvas.ismoderator || canvas.isAllowedToDraw) }"
+					>
 				<handler name="onclick">
-			    	new lz.conferenceMenuFiles(canvas,{
-			    				x:this.getAttributeRelative("x",canvas),
-			    				y:this.getAttributeRelative("y",canvas)+this.height,
-			    				btnRef:this,
-			    				list:this.list
-			    			});
-			        this.parent.parent.sendOpenMenu(this);
-			    </handler>
+					new lz.conferenceMenuFiles(canvas,{
+								x:this.getAttributeRelative("x", canvas),
+								y:this.getAttributeRelative("y", canvas) + this.height,
+								btnRef:this,
+								list:this.list
+							});
+					this.parent.parent.sendOpenMenu(this);
+				</handler>
 			</baseMenuMeetingsItem>
-			
-			<baseMenuMeetingsItem text="$once{ canvas.getLabelName(635) }" 
-						text_y_inset="4" text_fontsize="14" down_y_inset="8"
-						textToolTip="" height="28"
-						visible="${ canvas.currentRoomObj.hideActionsMenu ? false : ((canvas._menubar.viewType=='conference') ? true : (canvas.ismoderator ? true : (canvas.isAllowedToDraw ? true : false ))) }"
-						>
+
+			<baseMenuMeetingsItem text="$once{ canvas.getLabelName(635) }"
+					text_y_inset="4" text_fontsize="14" down_y_inset="8" textToolTip="" height="28"
+					visible="${ !canvas.currentRoomObj.hideActionsMenu &amp;&amp; (canvas._menubar.viewType == 'conference' || canvas.ismoderator || canvas.isAllowedToDraw) }"
+					>
 				<handler name="onclick">
-			    	new lz.conferenceMenuActions(canvas,{
-			    				x:this.getAttributeRelative("x",canvas),
-			    				y:this.getAttributeRelative("y",canvas)+this.height,
-			    				btnRef:this
-			    			});
-			        this.parent.parent.sendOpenMenu(this);
-			    </handler>
+					new lz.conferenceMenuActions(canvas,{
+								x:this.getAttributeRelative("x", canvas),
+								y:this.getAttributeRelative("y", canvas) + this.height,
+								btnRef:this
+							});
+					this.parent.parent.sendOpenMenu(this);
+				</handler>
 			</baseMenuMeetingsItem>
-			
 		</view>
-	
-	</class> 
-	
+	</class>
+
 	<class name="conferenceExitButton" extends="view" height="34" width="${ this._ctext.width+36 }" >
-	
-	    <attribute name="text_y_inset" value="6" type="number" />
-	    <attribute name="text_fontsize" value="14" type="number" />
-	    
-	    <attribute name="down_y_inset" value="10" type="number" />
-	    
-	    <handler name="onmouseover">
-            this.bgc.setAttribute('visibility','visible');
-	    </handler>
-	    <handler name="onmouseout">
-            this.bgc.setAttribute('visibility','hidden');
-	    </handler>
-	    
+		<attribute name="text_y_inset" value="6" type="number" />
+		<attribute name="text_fontsize" value="14" type="number" />
+		<attribute name="down_y_inset" value="10" type="number" />
+
+		<handler name="onmouseover">
+			this.bgc.setAttribute('visibility','visible');
+		</handler>
+		<handler name="onmouseout">
+			this.bgc.setAttribute('visibility','hidden');
+		</handler>
+
 		<handler name="oninit"><![CDATA[
 			if (canvas.isRemoteUser()) {
 				if ($debug) Debug.write("this mbarcontent ",this);
@@ -107,31 +97,28 @@
 			}
 		]]></handler>
 		<handler name="onclick">
-            canvas.commonVideoViewContent.exitRoom();
+			canvas.commonVideoViewContent.exitRoom();
 		</handler>
-	    
-	    <view width="${ parent.width-1 }" bgcolor="0xFFFFFF" opacity="0.4" height="$once{ parent.height - 2}" y="1"
-	        visibility="hidden" name="bgc"/>
-	        
-	    <omImage src="$once{ canvas.getThemeImage( 'exit_btn_rsc' ) }" y="4" x="4" />
-	    
-	    <view width="1" height="${ parent.height }" y="0" bgcolor="0xEEEEEE" x="${ parent.width-1 }" />
-	    
-	    <labelText labelid="789" name="_ctext" fontstyle="plain" fgcolor="0xFFFFFF"
-	        	fontsize="$once{ parent.text_fontsize }" y="$once{ parent.text_y_inset }" x="30" />
-	
-	    <labelTooltip name="_textToolTip" labelid="309" multiline="false" />
-	    
+
+		<view width="${ parent.width-1 }" bgcolor="0xFFFFFF" opacity="0.4" height="$once{ parent.height - 2}" y="1"
+				visibility="hidden" name="bgc"/>
+
+		<omImage src="$once{ canvas.getThemeImage( 'exit_btn_rsc' ) }" y="4" x="4" />
+
+		<view width="1" height="${ parent.height }" y="0" bgcolor="0xEEEEEE" x="${ parent.width-1 }" />
+
+		<labelText labelid="789" name="_ctext" fontstyle="plain" fgcolor="0xFFFFFF"
+				fontsize="$once{ parent.text_fontsize }" y="$once{ parent.text_y_inset }" x="30" />
+
+		<labelTooltip name="_textToolTip" labelid="309" multiline="false" />
 	</class>
-	
-	
-	
+
 	<class name="conferencDropDownMenuItem" extends="view" height="36">
-	
 		<attribute name="isSpacer" value="false" type="boolean" />
-	
 		<attribute name="enabled" type="boolean" setter="this.setEnabled(enabled)" />
-		
+		<attribute name="labelid" type="number" setter="this.setLabelId( labelid )" when="once" />
+		<attribute name="command" type="expression" setter="this.setCommand( command )" when="once" />
+
 		<method name="setEnabled" args="e">
 			this.enabled = e;
 			if (!this.isinited) {
@@ -148,82 +135,70 @@
 				this.command.enabled = this.enabled;
 			}
 		</method>
-		
-		<attribute name="labelid" type="number"
-                   setter="this.setLabelId( labelid )"   when="once" />
-                   
+
 		<method name="setLabelId" args="id" >
-            this.labelid = id;
-            if ( this.labelid ) {
-                this._ctext.setAttribute('text', canvas.getLabelName(this.labelid));
-            }
-        </method>
-		
-		<attribute name="command" type="expression"
-                   setter="this.setCommand( command )"   when="once" />
-		
+			this.labelid = id;
+			if ( this.labelid ) {
+				this._ctext.setAttribute('text', canvas.getLabelName(this.labelid));
+			}
+		</method>
+
 		<method name="setCommand" args="cmd" >
-            this.command = cmd;
-            if ( this.command ) {
-                this._ctextTooltip.setAttribute('text',canvas.getLabelName(command.tipLabelId));
-            }
-        </method>
-        
-        <handler name="onclick">
-        	if (!this.enabled) {
-        		return;
-        	}
-        	this.command.execute(null);
-        	parent.parent.close();
-        </handler>
-        
-        <handler name="onmouseover">
-	        this._bg.setAttribute("visible", true);
-	    </handler>
-	    
-	    <handler name="onmouseout">
-	        this._bg.setAttribute("visible", false);
-	    </handler>
-	
-	    <view name="_bg" visibility="hidden" width="${ parent.width-2 }" y="0" x="1"
-	          bgcolor="0xFFFFFF" opacity="0.5" height="36" />
-	    
-	    <text name="_ctext" fontstyle="bold" fgcolor="0x666666"
-	        	fontsize="14" y="2" x="10" />
-	        	
-	    <text name="_ctextTooltip" fontstyle="plain" fgcolor="0x666666"
-	        	fontsize="10" y="20" x="10" />	
-		
-	</class> 
-	
+			this.command = cmd;
+			if ( this.command ) {
+				this._ctextTooltip.setAttribute('text',canvas.getLabelName(command.tipLabelId));
+			}
+		</method>
+
+		<handler name="onclick">
+			if (!this.enabled) {
+				return;
+			}
+			this.command.execute(null);
+			parent.parent.close();
+		</handler>
+
+		<handler name="onmouseover">
+			this._bg.setAttribute("visible", true);
+		</handler>
+
+		<handler name="onmouseout">
+			this._bg.setAttribute("visible", false);
+		</handler>
+
+		<view name="_bg" visibility="hidden" width="${ parent.width-2 }" y="0" x="1"
+				bgcolor="0xFFFFFF" opacity="0.5" height="36" />
+
+		<text name="_ctext" fontstyle="bold" fgcolor="0x666666" fontsize="14" y="2" x="10" />
+		<text name="_ctextTooltip" fontstyle="plain" fgcolor="0x666666" fontsize="10" y="20" x="10" />
+	</class>
+
 	<class name="conferenceMenuFiles" extends="baseDropDownMenuList"
 			height="${ this._content.height+2 }" width="${ this._content.width+2 }">
-			
-		<view name="_content" x="1" y="1" 
-			layout="axis:y;spacing:1" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" >
-			
+
+		<view name="_content" x="1" y="1"
+				layout="axis:y;spacing:1" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" >
+
 			<conferencDropDownMenuItem labelid="15" command="cmd_importFile"
-						enabled="${ canvas.ismoderator }" />
-			
+					enabled="${ canvas.ismoderator }" />
 		</view>
-		
 	</class>
-	
+
 	<class name="conferenceMenuActions" extends="baseDropDownMenuList"
 			height="${ this._content.height+2 }" width="${ this._content.width+2 }">
-			
+
 		<handler name="oninit">
-	        this.fixWidth();
+			this.fixWidth();
 		</handler>
-			
-		<view name="_content" x="1" y="1" 
-			layout="axis:y;spacing:1" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" >
-			
+
+		<view name="_content" x="1" y="1"
+				layout="axis:y;spacing:1" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" >
+
 			<conferencDropDownMenuItem labelid="213" command="cmd_invitation"
-						enabled="${ canvas.ismoderator &amp;&amp; !hib.currentInvitation }" />
+					enabled="${ canvas.ismoderator &amp;&amp; !hib.currentInvitation }" />
 			<horizontalDropDownSpacer />
-			<conferencDropDownMenuItem labelid="239" command="cmd_shareDesktop" 
-						enabled="${ canvas._menubar.viewType != 'interview' &amp;&amp; canvas.ismoderator }" />
+			<conferencDropDownMenuItem labelid="239" command="cmd_shareDesktop"
+					enabled="${ canvas._menubar.viewType != 'interview' &amp;&amp; canvas.ismoderator }" />
 			<horizontalDropDownSpacer />
 			<conferencDropDownMenuItem labelid="784" command="cmd_applyforMod" enabled="${ !canvas.ismoderator }" />
 			<horizontalDropDownSpacer />
@@ -239,19 +214,18 @@
 			<horizontalDropDownSpacer />
 			<conferencDropDownMenuItem labelid="42" command="cmd_checkPollVoted" enabled="${ canvas.userId != -1 }" />
 			<horizontalDropDownSpacer
-						 visible="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObj.sipEnabled }" />
-            <conferencDropDownMenuItem labelid="1447" command="cmd_showSipDialer" 
-            			 visible="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObj.sipEnabled }"
-            			 enabled="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObj.sipEnabled }"/>
-            <horizontalDropDownSpacer />
+					visible="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObj.sipEnabled }" />
+			<conferencDropDownMenuItem labelid="1447" command="cmd_showSipDialer"
+					visible="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObj.sipEnabled }"
+					enabled="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObj.sipEnabled }"/>
+			<horizontalDropDownSpacer />
 			<conferencDropDownMenuItem labelid="1126" command="cmd_editWhiteboardDefault" enabled="true"/>
 			<!-- Save Whiteboard as Image menues are commented for now
-            <horizontalDropDownSpacer />
+			<horizontalDropDownSpacer />
 			<conferencDropDownMenuItem labelid="560" command="cmd_exportFileSVG" enabled="true"/>
 			<conferencDropDownMenuItem labelid="561" command="cmd_exportFilePNG" enabled="true"/>
 			<conferencDropDownMenuItem labelid="562" command="cmd_exportFileJPG" enabled="true"/>
 			-->
 		</view>
-		
 	</class>
 </library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx b/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
index d64ae6d..4c18cb6 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
@@ -7,47 +7,46 @@
   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.
-  
+
 -->
 <library>
-    
+
 <class name="dtmfButton" extends="button" width="20" height="20" >
-    <attribute name="dtmf" value="" type="string"/>
-    <handler name="onclick">
-        //callDTMFButton(this,this.text);
-    </handler>
-    <method name="doNextSipNumber">
-        if ($debug) Debug.write("doNextSipNumber ",this.text);
-    </method>
+	<attribute name="dtmf" value="" type="string"/>
+	<handler name="onclick">
+		//callDTMFButton(this,this.text);
+	</handler>
+	<method name="doNextSipNumber">
+		if ($debug) Debug.write("doNextSipNumber ",this.text);
+	</method>
 </class>
-    
+
 <class name="debugPinCode" extends="labelExplorerBox" title="Enter PIN Code"
-    docking="true" resizeable="false" closable="true" width="100" x="14" height="120">
-    
-    
-    <view y="24">
-        <dtmfButton text="1" x="20" dtmf="1"/> 
-            <dtmfButton text="2" x="40" dtmf="2"/> 
-                <dtmfButton text="3" x="60" dtmf="3"/>
-                
-        <dtmfButton text="4" x="20" y="20" dtmf="4"/> 
-            <dtmfButton text="5" x="40" y="20" dtmf="5"/> 
-                <dtmfButton text="6" x="60" y="20" dtmf="6"/>
-                
-        <dtmfButton text="7" x="20" y="40" dtmf="7"/> 
-            <dtmfButton text="8" x="40" y="40" dtmf="8"/> 
-            <dtmfButton text="9" x="60" y="40" dtmf="9"/>
-        <dtmfButton text="10" x="20" y="60" dtmf="10"/>
-    </view>
+		docking="true" resizeable="false" closable="true" width="100" x="14" height="120">
+
+	<view y="24">
+		<dtmfButton text="1" x="20" dtmf="1"/>
+			<dtmfButton text="2" x="40" dtmf="2"/>
+				<dtmfButton text="3" x="60" dtmf="3"/>
+
+		<dtmfButton text="4" x="20" y="20" dtmf="4"/>
+			<dtmfButton text="5" x="40" y="20" dtmf="5"/>
+				<dtmfButton text="6" x="60" y="20" dtmf="6"/>
+
+		<dtmfButton text="7" x="20" y="40" dtmf="7"/>
+			<dtmfButton text="8" x="40" y="40" dtmf="8"/>
+				<dtmfButton text="9" x="60" y="40" dtmf="9"/>
+		<dtmfButton text="10" x="20" y="60" dtmf="10"/>
+	</view>
 </class>
 
 <class name="baseConferenceRoom" extends="baseContentView" destroyByMethod="true" >
@@ -58,19 +57,19 @@
 	<![CDATA[
 		if ($debug) Debug.write("baseConferenceRoom:: oninit");
 		_mainScrollBar.setAttribute("visibility","hidden");
-		
+
 		if ($debug) Debug.write("roomobj: ",this.roomobj);
-		
+
 		var r = this.roomobj;
 		r.currentusers = ''; //this might be huge list
-		
+
 		if (this.roomobj.closed) {
 			canvas.roomClosed();
 		}
 		if (this.roomobj.waitForRecording) {
 			new lz.labelerrorPopup(canvas, {labelid: 1316, errorlabelid: 1315});
 		}
-		
+
 		if (this._chatPanelStrict) {
 			var chatHidden = this.roomobj.chatHidden;
 			this._chatPanelStrict.setAttribute('visible', !chatHidden);
@@ -78,14 +77,14 @@
 				this._chatPanelStrict.setAttribute('height', 28);
 			}
 		}
-		
+
 		canvas.currentBaseConferenceRoom = this;
 		if (!this.roomobj.hideTopBar) {
 			canvas.main_content.setAttribute('y', 28);
 			canvas.currentBaseConferenceRoom.createMenu();
 		}
 		canvas._conferencemenu.setAttribute('visible', !this.roomobj.hideTopBar);
-		
+
 		if ($debug) Debug.write("this.roomobj ",this.roomobj);
 
 		if (!!canvas._mymod) {
@@ -101,7 +100,7 @@
 		//if ($debug) Debug.write("GROUPS!!! ", this.roomobj.roomGroups);
 		if (!!this.roomobj.roomGroups && !!this.roomobj.roomGroups.length) {
 			var g = this.roomobj.roomGroups[0].group;
-			m._group_logo.setAttribute('src', canvas.getUrl() + "group/" + g.id + "?anticache=" + new Date().getTime()); 
+			m._group_logo.setAttribute('src', canvas.getUrl() + "group/" + g.id + "?anticache=" + new Date().getTime());
 			m._group_logo.setAttribute("visible", true);
 			if (g.tag) {
 				m._group_tag.setAttribute("text", g.tag);
@@ -113,12 +112,12 @@
 		} else {
 			if ($debug) Debug.write("no appointed meeting");
 		}
-		
+
 		if (this.roomobj.demoRoom && this.roomobj.demoTime != null) {
 			if ($debug) Debug.warn("THIS IS A DEMO ROOM THAT SHOULD CLOSE AFTER SEC: ",this.roomobj.demoTime);
 			this.meetingTimer = new lz.meetingTimer(canvas,{refObj:this, roomobj:this.roomobj});
 		}
-		
+
 		if ($debug) Debug.write("canvas._videocontainer ", canvas._videocontainer);
 		canvas._videocontainer.setAttribute("allowUserQuestions",this.roomobj.allowUserQuestions);
 	]]>
@@ -147,28 +146,28 @@
 	]]>
 	</handler>
 
-    <baseTabChatPanel name="_chatPanelStrict" labelid="616"
-       height="200" x="${ parent._sidePanel.width }"  
-       y="${ canvas.height - (this.height) - ((canvas.currentRoomObj.hideTopBar) ? 0 : 28) }" 
-       width="${ canvas.width - parent._sidePanel.width }" isopen="${ !canvas.currentRoomObj.chatOpened }" />
-       <!-- isopen need to be reverted, will be toggled -->
-       
+	<baseTabChatPanel name="_chatPanelStrict" labelid="616"
+		height="200" x="${ parent._sidePanel.width }"
+		y="${ canvas.height - (this.height) - ((canvas.currentRoomObj.hideTopBar) ? 0 : 28) }"
+		width="${ canvas.width - parent._sidePanel.width }" isopen="${ !canvas.currentRoomObj.chatOpened }" />
+		<!-- isopen need to be reverted, will be toggled -->
+
 	<handler name="ontabcontentleave">
 		if ($debug) Debug.write("################# ontabcontentleave:",this);
-		
+
 		canvas.commonVideoViewContent.closeAllScreenSharings();
-		
+
 		canvas.currentBaseConferenceRoom = null;
-		
+
 		//reset the right to draw on WHiteboard as the RoomClient Object will be destroyed also
 		//on server-Side the canDraw status will be false again when you relogin the same room
 		canvas.isAllowedToDraw = true;
-		
+
 		_mainScrollBar.setAttribute("visibility","visible");
-		
+
 		//reset rights
 		canvas.isAllowedToGiveExclusiveAudio = false;
-		
+
 		canvas.commonVideoViewContent.resetAllValues();
 		if (canvas._chatcontent!=null) {
 			canvas._chatcontent = null;
@@ -176,23 +175,23 @@
 		if (canvas._mymod!=null) {
 			canvas._mymod = null;
 		}
-		
+
 		if (this.meetingTimer != null) {
 			this.meetingTimer.close();
 		}
-		
+
 		if (canvas._drawarea.letterObjectIsActive) {
 			canvas._drawarea.currentletterObj.destroy();
 		}
-		
+
 		if (canvas.currentFileExplorer != null) {
 			canvas.currentFileExplorer = null;
 		}
-		
+
 		if (canvas.currentActivityList != null) {
 			canvas.currentActivityList = null;
 		}
-		
+
 		//@deprecated we will not use old screen sharing implementation
 		//canvas._screens.clearAllSessions();
 		this.logicalRoomLeave.doCall();
@@ -204,7 +203,7 @@
 			if ($debug) Debug.write("############# logicalRoomLeave: ",value);
 			//this.parent.destroy();
 			canvas.thishib.reconnectedRoomInstance = this.parent;
-			
+
 			// Reconnect User to default Scope
 			canvas.thishib.userScope = "hibernate";
 			var src = hib.getUrl();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/tools/baseDrawRect.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/tools/baseDrawRect.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/tools/baseDrawRect.lzx
index c3fcd4e..9abcb1d 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/tools/baseDrawRect.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/tools/baseDrawRect.lzx
@@ -9,7 +9,7 @@
   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
@@ -29,7 +29,7 @@
     <attribute name="currentrectanglestroke" value="0xFF6600" />
     <attribute name="currentrectanglestrokeDis" value="1" type="number" />
     <attribute name="currentrectanglestrokeFill" value="0xFFFF33" />
-    <attribute name="currentrectanglestrokeFillDis" value="1" type="number" />
+	<attribute name="currentrectanglestrokeFillDis" value="1" type="number" />
     <attribute name="currentrectangleineWidth" value="4" type="number" />
     <attribute name="currentrectangleOpacity" value="1" type="number" />
       

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
index 776d7b7..1bf5981 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
@@ -130,36 +130,36 @@
 			if (canvas._drawarea.drawmodus == 'paint'){
 				canvas._drawarea.currentlayerstroke = this._content.lineColorChoose.selectedColor;
 				canvas._drawarea.currentlayerlineWidth = this._content.changeWidthSlider.initialNumber;
-				canvas._drawarea.currentlayerOpacity = this._content.changeOpacitySlider.initialNumber/100;
+				canvas._drawarea.currentlayerOpacity = this._content.changeOpacitySlider.initialNumber / 100;
 			} else if (canvas._drawarea.drawmodus == 'line'){
 				canvas._drawarea.currentlinestroke = this._content.lineColorChoose.selectedColor;
 				canvas._drawarea.currentlinelineWidth = this._content.changeWidthSlider.initialNumber;
-				canvas._drawarea.currentlineOpacity = this._content.changeOpacitySlider.initialNumber/100;
+				canvas._drawarea.currentlineOpacity = this._content.changeOpacitySlider.initialNumber / 100;
 			} else if (canvas._drawarea.drawmodus == 'uline'){
 				canvas._drawarea.currentulinestroke = this._content.lineColorChoose.selectedColor;
 				canvas._drawarea.currentulinelineWidth = this._content.changeWidthSlider.initialNumber;
-				canvas._drawarea.currentulineOpacity = this._content.changeOpacitySlider.initialNumber/100;
+				canvas._drawarea.currentulineOpacity = this._content.changeOpacitySlider.initialNumber / 100;
 			} else if (canvas._drawarea.drawmodus == 'drawarrow'){
 				canvas._drawarea.currentdrawarrowlinestroke = this._content.lineColorChoose.selectedColor;
 				canvas._drawarea.currentdrawarrowlinestrokeDis = this._content.lineColorChoose.selectedColorDis;
 				canvas._drawarea.currentdrawarrowlinestrokeFill = this._content.fillColorChoose.selectedColor;
 				canvas._drawarea.currentdrawarrowlinestrokeFillDis = this._content.fillColorChoose.selectedColorDis;
 				canvas._drawarea.currentdrawarrowlinelineWidth = this._content.changeWidthSlider.initialNumber;
-				canvas._drawarea.currentdrawarrowOpacity = this._content.changeOpacitySlider.initialNumber/100;
+				canvas._drawarea.currentdrawarrowOpacity = this._content.changeOpacitySlider.initialNumber / 100;
 			} else if (canvas._drawarea.drawmodus == 'rectangle'){
 				canvas._drawarea.currentrectanglestroke = this._content.lineColorChoose.selectedColor;
 				canvas._drawarea.currentrectanglestrokeDis = this._content.lineColorChoose.selectedColorDis;
 				canvas._drawarea.currentrectanglestrokeFill = this._content.fillColorChoose.selectedColor;
 				canvas._drawarea.currentrectanglestrokeFillDis = this._content.fillColorChoose.selectedColorDis;
 				canvas._drawarea.currentrectangleineWidth = this._content.changeWidthSlider.initialNumber;
-				canvas._drawarea.currentrectangleOpacity = this._content.changeOpacitySlider.initialNumber/100;
+				canvas._drawarea.currentrectangleOpacity = this._content.changeOpacitySlider.initialNumber / 100;
 			} else if (canvas._drawarea.drawmodus == 'ellipse'){
 				canvas._drawarea.currentellipsestroke = this._content.lineColorChoose.selectedColor;
 				canvas._drawarea.currentellipsestrokeDis = this._content.lineColorChoose.selectedColorDis;
 				canvas._drawarea.currentellipsestrokeFill = this._content.fillColorChoose.selectedColor;
 				canvas._drawarea.currentellipsestrokeFillDis = this._content.fillColorChoose.selectedColorDis;
 				canvas._drawarea.currentellipselineWidth = this._content.changeWidthSlider.initialNumber;
-				canvas._drawarea.currentellipseOpacity = this._content.changeOpacitySlider.initialNumber/100;
+				canvas._drawarea.currentellipseOpacity = this._content.changeOpacitySlider.initialNumber / 100;
 			} else if (canvas._drawarea.drawmodus == 'letter'){
 				canvas._drawarea.setAttribute('currentlayerletter',this._content.lineColorChoose.selectedColor);
 				canvas._drawarea.setAttribute('currentlayersize',this._content.changeWidthSlider.initialNumber);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
index 1fb1182..06b7d33 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
@@ -40,7 +40,7 @@
 							<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="status"></span></div></td>
 							<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="subject"></span></div></td>
 						</tr>
-					</tbody>			
+					</tbody>
 				</table>
 			</div>
 		</div>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
index f99641e..fc577f9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
@@ -73,12 +73,9 @@ public class LdapForm extends AdminBaseForm<LdapConfig> {
 
 	@Override
 	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
-		getBean(LdapConfigDao.class).update(getModelObject(), WebSession.getUserId());
-		LdapConfig ldapConfig = getBean(LdapConfigDao.class).get(getModelObject().getId());
-		this.setModelObject(ldapConfig);
+		setModelObject(getBean(LdapConfigDao.class).update(getModelObject(), WebSession.getUserId()));
 		hideNewRecord();
-		target.add(this);
-		target.add(listContainer);
+		target.add(this, listContainer);
 		target.appendJavaScript("omLdapPanelInit();");
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2ff05c5e/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
index 9edff7f..951f1b1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
@@ -98,6 +98,5 @@ public class LdapsPanel extends AdminPanel {
 		form = new LdapForm("form", listContainer, new LdapConfig());
 		form.showNewRecord();
 		add(form);
-		
 	}
 }


[49/50] [abbrv] openmeetings git commit: Branch is switched to the next dev version

Posted by so...@apache.org.
Branch is switched to the next dev version


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

Branch: refs/heads/3.1.x
Commit: 74bd5493713ba457262395e10614024d29f1b178
Parents: 29a77d3
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sun Jan 29 07:57:50 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sun Jan 29 07:57:50 2017 +0000

----------------------------------------------------------------------
 openmeetings-core/pom.xml        | 2 +-
 openmeetings-db/pom.xml          | 2 +-
 openmeetings-flash/pom.xml       | 2 +-
 openmeetings-install/pom.xml     | 2 +-
 openmeetings-screenshare/pom.xml | 2 +-
 openmeetings-server/pom.xml      | 2 +-
 openmeetings-service/pom.xml     | 2 +-
 openmeetings-util/pom.xml        | 2 +-
 openmeetings-web/pom.xml         | 2 +-
 openmeetings-webservice/pom.xml  | 2 +-
 pom.xml                          | 2 +-
 11 files changed, 11 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-core/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 3dd4fb7..900376e 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-core</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-db/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 70dbb07..e10ac8f 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-db</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-flash/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-flash/pom.xml b/openmeetings-flash/pom.xml
index db2130e..5c2ae0f 100644
--- a/openmeetings-flash/pom.xml
+++ b/openmeetings-flash/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-flash</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-install/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index 8b8857c..7d4501c 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-install</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-screenshare/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index dd9f9c1..3c4406b 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-screenshare</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-server/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index 28ba220..1c119c1 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-server</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-service/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 8d120aa..1bbc0e4 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-service</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-util/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 8bf84b7..7e5f2e8 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-util</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-web/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 91fa692..b7aa877 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-web</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/openmeetings-webservice/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index e75bede..fadf9e8 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.5-SNAPSHOT</version>
+		<version>3.1.6-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-webservice</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/74bd5493/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 40c3205..9f3ec82 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
 	</parent>
 	<groupId>org.apache.openmeetings</groupId>
 	<artifactId>openmeetings-parent</artifactId>
-	<version>3.1.5-SNAPSHOT</version>
+	<version>3.1.6-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<name>Openmeetings</name>
 	<description>OpenMeetings Maven Parent</description>


[44/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1401] invitation is saved as expected, reminders seems to work

Posted by so...@apache.org.
[OPENMEETINGS-1401] invitation is saved as expected, reminders seems to work


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

Branch: refs/heads/3.1.x
Commit: 91b6d9c8328389e6c59e721a9adab3a262e38e6a
Parents: 2c48bef
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Jan 25 02:05:19 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Jan 25 02:05:19 2017 +0000

----------------------------------------------------------------------
 .../org/apache/openmeetings/db/entity/calendar/Appointment.java | 3 +--
 .../apache/openmeetings/db/entity/calendar/MeetingMember.java   | 5 +++--
 .../test/calendar/TestAppointmentAddAppointment.java            | 1 +
 3 files changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/91b6d9c8/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
index 17a861e..259da1d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
@@ -231,7 +231,7 @@ public class Appointment implements IDataProviderEntity {
 	@Element(data = true, required = false)
 	private String icalId;
 
-	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
 	@JoinColumn(name = "appointment_id")
 	private List<MeetingMember> meetingMembers;
 
@@ -456,5 +456,4 @@ public class Appointment implements IDataProviderEntity {
 		return "Appointment [id=" + id + ", title=" + title + ", start=" + start + ", end=" + end + ", owner=" + owner
 				+ ", deleted=" + deleted + ", icalId=" + icalId + "]";
 	}
-
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/91b6d9c8/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
index fbbda7a..634b931 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
@@ -31,6 +31,7 @@ import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
@@ -84,8 +85,8 @@ public class MeetingMember implements IDataProviderEntity {
 	@Element(data = true)
 	private boolean deleted;
 
-	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-	@JoinColumn(name = "invitation", nullable = true, insertable = false)
+	@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@JoinColumn(name = "invitation_id", nullable = true)
 	@ForeignKey(enabled = true)
 	private Invitation invitation;
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/91b6d9c8/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
index ac19360..3f29d85 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
@@ -127,6 +127,7 @@ public class TestAppointmentAddAppointment extends AbstractWicketTester {
 		for (MeetingMember mm : a.getMeetingMembers()) {
 			assertNotNull("Saved guest should have valid id: ", mm.getId());
 			assertNotNull("Saved guest should have valid invitation: ", mm.getInvitation());
+			assertNotNull("Saved guest should have invitation with ID: ", mm.getInvitation().getId());
 		}
 
 		WebSession ws = WebSession.get();


[39/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1533] external user works as expected as meeting member

Posted by so...@apache.org.
[OPENMEETINGS-1533] external user works as expected as meeting member


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

Branch: refs/heads/3.1.x
Commit: d7b6df41f37b89055c3beb6c2cfdfc97d3dc4d27
Parents: 10a84c3
Author: Maxim Solodovnik <so...@apache.org>
Authored: Mon Jan 23 14:50:48 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Mon Jan 23 14:50:48 2017 +0000

----------------------------------------------------------------------
 .../db/dto/calendar/MeetingMemberDTO.java           | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d7b6df41/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index 5e0268a..f660239 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -50,9 +50,19 @@ public class MeetingMemberDTO implements Serializable {
 		if (user.getId() != null) {
 			mm.setUser(userDao.get(user.getId()));
 		} else {
-			mm.setUser(user.get(userDao));
-			mm.getUser().setType(User.Type.contact);
-			mm.getUser().getRights().clear();
+			User u = null;
+			if (User.Type.external == user.getType()) {
+				// try to get ext. user
+				u = userDao.getExternalUser(user.getExternalId(), user.getExternalType());
+			}
+			if (u == null) {
+				u = user.get(userDao);
+				u.setType(User.Type.contact);
+				u.getRights().clear();
+				u.setExternalId(null);
+				u.setExternalType(null);
+			}
+			mm.setUser(u);
 		}
 		return mm;
 	}


[05/50] [abbrv] openmeetings git commit: no jira: code clean-up

Posted by so...@apache.org.
no jira: code clean-up


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

Branch: refs/heads/3.1.x
Commit: 27cdc4b58adcc1b6792e7449110a03b7e006438e
Parents: 2ff05c5
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Dec 23 14:04:29 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Dec 23 14:04:29 2016 +0000

----------------------------------------------------------------------
 .../swf/modules/conference/popups/library.lzx   | 40 ++++++++++----------
 1 file changed, 19 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/27cdc4b5/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx b/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx
index 1da3a8b..5bfdb43 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx
@@ -7,39 +7,37 @@
   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.
-  
+
 -->
 <library>
-	
-	<!-- 
+	<!--
 	FamFam Icon set
 	Creative Commons 3.0
 	 -->
 	<resource name="warning_icon_rsc" src="resources/error.png" />
-    
-    <include href="rpcerrorDialog.lzx" />
-    <include href="errorPopup.lzx" />
-    <include href="messageWin.lzx" />
-    <include href="headerMenu.lzx" />
-    <include href="confirmationBox.lzx" />
-    <include href="editWhiteboardDefault.lzx" />
+
+	<include href="rpcerrorDialog.lzx" />
+	<include href="errorPopup.lzx" />
+	<include href="messageWin.lzx" />
+	<include href="headerMenu.lzx" />
+	<include href="confirmationBox.lzx" />
+	<include href="editWhiteboardDefault.lzx" />
 	<include href="confirmationSingle.lzx" />
-    <include href="autoLoader.lzx" />
-    <include href="converterPopup.lzx" />
-    <include href="errorModeratorPopup.lzx" />
-    <include href="syncWin.lzx" />
-    <include href="meetingTimer.lzx" />
-    <include href="incomingScreenSharing.lzx" />
-    <include href="redirectBox.lzx" />
-    <include href="chooseNickName.lzx" />
-    
+	<include href="autoLoader.lzx" />
+	<include href="converterPopup.lzx" />
+	<include href="errorModeratorPopup.lzx" />
+	<include href="syncWin.lzx" />
+	<include href="meetingTimer.lzx" />
+	<include href="incomingScreenSharing.lzx" />
+	<include href="redirectBox.lzx" />
+	<include href="chooseNickName.lzx" />
 </library>


[22/50] [abbrv] openmeetings git commit: no jira: code clean-up, minor lzx issues are fixed

Posted by so...@apache.org.
no jira: code clean-up, minor lzx issues are fixed


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

Branch: refs/heads/3.1.x
Commit: c81ce366354b563ae5bef50338350e9a8620e1a6
Parents: a57e4a6
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Jan 12 06:38:28 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Jan 12 06:38:28 2017 +0000

----------------------------------------------------------------------
 .../whiteboard/base/baseDrawWords.lzx           | 217 +++++++++----------
 .../fixedFileExplorerWhiteboardPanel.lzx        |   1 +
 2 files changed, 107 insertions(+), 111 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c81ce366/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawWords.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawWords.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawWords.lzx
index 2ea27c3..9b03504 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawWords.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawWords.lzx
@@ -7,16 +7,16 @@
   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.
-  
+
 -->
 <library>
 
@@ -24,12 +24,12 @@
 		width="${ parent.width-2 }" height="${ parent.height-2 }" >
 
 	<attribute name="startAdjustHight" value="false" type="boolean" />
-	
+
 	<attribute name="setFocusOnInit" value="true" type="boolean" />
-	
+
 	<handler name="oninit">
 		if (this.setFocusOnInit) {
-		    lz.Focus.setFocus(this);	
+			lz.Focus.setFocus(this);
 		}
 	</handler>
 	<handler name="ontext">
@@ -41,39 +41,35 @@
 			}
 		}
 	]]>
-	</handler>	
+	</handler>
 	<handler name="onkeyup" args="key">
-       <![CDATA[
-       // 13 is return
-       if ((key==27) || (key==13)) {
-       		this.parent.parent.adjustHeight();
-       }
-       ]]>
-    </handler>	
+	<![CDATA[
+		// 13 is return
+		if ((key==27) || (key==13)) {
+			this.parent.parent.adjustHeight();
+		}
+	]]>
+	</handler>
 	<handler name="onheight">
 		if (this.startAdjustHight) this.parent.parent.adjustHeight();
 	</handler>
-	
+
 	<method name="getURLEncodedText">
-		<![CDATA[
-		
-		    var tString = this.getText();
-		    
-		    //tString = tString.replace("<","&#60;");
-		    //tString = tString.replace(">","&#62;");
-		    
-		    return tString;
-		
-		]]>
+	<![CDATA[
+		var tString = this.getText();
+		//tString = tString.replace("<","&#60;");
+		//tString = tString.replace(">","&#62;");
+		return tString;
+	]]>
 	</method>
-	
+
 </class>
 
-<class name="baseDrawWords" extends="view" bgcolor="black" 
+<class name="baseDrawWords" extends="view" bgcolor="black"
 	width="120" height="40">
-	
+
 	<attribute name="refObj" value="null" />
-	
+
 	<attribute name="inittext" value="" type="string" />
 	<attribute name="initTextName" value="" type="string" />
 
@@ -81,117 +77,116 @@
 		<![CDATA[
 		if ($debug) Debug.write("drawtoArray");
 		if (this._textview._textview.getURLEncodedText().length!=0 && this.inittext.length==0){
-            
-            //var scale = this.parent._drawarea.width / this.parent._drawarea.initW;
-		    var y = ( this.getAttributeRelative('y',this.refObj)-this.refObj.y+1 );
-            if ($debug) Debug.write("this.refObj.y ",this.refObj.y);
+
+			//var scale = this.parent._drawarea.width / this.parent._drawarea.initW;
+			var y = ( this.getAttributeRelative('y',this.refObj)-this.refObj.y+1 );
+			if ($debug) Debug.write("this.refObj.y ",this.refObj.y);
 			if ($debug) Debug.write("this.x-this.refObj.x-this.refObj.parent.x ",y);
 			var x = ( this.getAttributeRelative('x',this.refObj)-this.refObj.x+1 );
-			
-			if(canvas._drawarea.isSnapToGrid){        		
-	    			        	   
-	            x = Math.round(x/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
-		    	y = Math.round(y/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
-            
-            } 
-			
-        	this.refObj.drawTextField(this._textview._textview.getURLEncodedText(),
-                    this._textview._textview.width,
-                    this._textview._textview.height,x,y);
-                    
-        } else if (this._textview._textview.getURLEncodedText().length!=0 && this.inittext.length!=0){
-            
-        	if ($debug) Debug.write("edit modi ",this.initTextName);
-		    var y = (this.getAttributeRelative('y',this.refObj)-this.refObj.y+1);
+
+			if(canvas._drawarea.isSnapToGrid){
+
+				x = Math.round(x/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
+				y = Math.round(y/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
+
+			}
+
+			this.refObj.drawTextField(this._textview._textview.getURLEncodedText(),
+					this._textview._textview.width,
+					this._textview._textview.height,x,y);
+
+		} else if (this._textview._textview.getURLEncodedText().length!=0 && this.inittext.length!=0){
+
+			if ($debug) Debug.write("edit modi ",this.initTextName);
+			var y = (this.getAttributeRelative('y',this.refObj)-this.refObj.y+1);
 			if ($debug) Debug.write("this.x-this.refObj.x-this.refObj.parent.x ",y);
 			var x = (this.getAttributeRelative('x',this.refObj)-this.refObj.x+1);
-            
-			if(canvas._drawarea.isSnapToGrid){        		
-	    			        	   
-	            x = Math.round(x/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
-		    	y = Math.round(y/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
-            
-            } 
-			
-        	this.refObj.setTextFieldByName(this.initTextName,
-                this._textview._textview.getURLEncodedText(),
-                this._textview._textview.width,
-                x,y,this._textview._textview.height);
-                
-        } else {
+
+			if(canvas._drawarea.isSnapToGrid){
+
+				x = Math.round(x/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
+				y = Math.round(y/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
+
+			}
+
+			this.refObj.setTextFieldByName(this.initTextName,
+				this._textview._textview.getURLEncodedText(),
+				this._textview._textview.width,
+				x,y,this._textview._textview.height);
+
+		} else {
 			if ($debug) Debug.write("text smaller then 0",this._textview._textview.getURLEncodedText());
-			
+
 			if ($debug) Debug.write("this.gridWidth",canvas._drawarea.gridWidth);
 			if ($debug) Debug.write("this.isSnapToGrid",canvas._drawarea.isSnapToGrid);
 		}
-        this.giveup();
+		this.giveup();
 		]]>
-    </method>
-    
+	</method>
+
 	<method name="giveup">
 		this.refObj.letterObjectFree(this);
 		this.destroy();
 	</method>
-	    
+
 	<handler name="oninit">
-		//startAdjustHight is set to true later, cause otherwise update 
-		//Events would set the height to 
+		//startAdjustHight is set to true later, cause otherwise update
+		//Events would set the height to
 		//text field default height
 		this.refObj.letterObjectClose(this);
-        var t = new lz.styleableInput(this._textview,{
-	                name:'_textview',text:this.inittext,
-	                fontstyle:this.refObj.currentlayerstyle,
-	                fontsize:this.refObj.currentlayersize,
-	                fgcolor:this.refObj.currentlayerletter
-                });
-        //if ( this.inittext.length==0 ) this.setAttribute('height',40);
+		var t = new lz.styleableInput(this._textview,{
+					name:'_textview',text:this.inittext,
+					fontstyle:this.refObj.currentlayerstyle,
+					fontsize:this.refObj.currentlayersize,
+					fgcolor:this.refObj.currentlayerletter
+				});
+		//if ( this.inittext.length==0 ) this.setAttribute('height',40);
 		if ( this.inittext.length!=0 ) {
-		    this.refObj.edittextLetterObject.setAttribute('visible',false);
-		    this.refObj.setModus('letter');
-	    }
+			this.refObj.edittextLetterObject.setAttribute('visible',false);
+			this.refObj.setModus('letter');
+		}
 		t.startAdjustHight = true;
 	</handler>
-    
-    <handler name="newStyleEvent">
-        this.callNew(this._textview._textview.getText());
-    </handler>
-  
+
+	<handler name="newStyleEvent">
+		this.callNew(this._textview._textview.getText());
+	</handler>
+
 	<method name="callNew" args="txxt">
-		//if ($debug) Debug.write("callNew height-2 ");
-		
-        var h = this.getHeight();
-        
-        //if ($debug) Debug.write("callNew height-3 ",this);
-        //if ($debug) Debug.write("callNew height-4 ",this.getHeight());
-        
+		//if ($debug) Debug.write("callNew height-2 ", this);
+
+		var h = this.height;
+
+		//if ($debug) Debug.write("callNew height-4 ", this.height);
+
 		this._textview._textview.destroy();
 		var t = new lz.styleableInput(this._textview,{
-			        setFocusOnInit:false,
-                    name:'_textview',text:txxt,
-                    fontstyle:this.refObj.currentlayerstyle,
-                    fontsize:this.refObj.currentlayersize,
-                    fgcolor:this.refObj.currentlayerletter
-                });
-        this.setAttribute("height",h);
+					setFocusOnInit: false,
+					name:'_textview',text:txxt,
+					fontstyle:this.refObj.currentlayerstyle,
+					fontsize:this.refObj.currentlayersize,
+					fgcolor:this.refObj.currentlayerletter
+				});
+		this.setAttribute("height",h);
 	</method>
 	<method name="adjustHeight">
 		if ($debug) Debug.write("+++ adjustHeight +++");
 		this.setAttribute('height',this._textview._textview.height+2);
 	</method>
-    
-    <method name="_removeResizestateFromThis">
-    	this.rs.remove();
-    </method>
-    
-    <view name="_textview" width="${ parent.width }" height="${ parent.height }" />
-    
-    <resizestate name="rs" >
-    	<text x="2" y="2" text="${ 'w: '+parent.width+' h: '+parent.height }" bgcolor="white"/>
-    </resizestate>
-	<view resource="_boundingBoxPointerUR" x="${ parent.width-this.width }" y="${ parent.height-this.height }" 
+
+	<method name="_removeResizestateFromThis">
+		this.rs.remove();
+	</method>
+
+	<view name="_textview" width="${ parent.width }" height="${ parent.height }" />
+
+	<resizestate name="rs" >
+		<text x="2" y="2" text="${ 'w: '+parent.width+' h: '+parent.height }" bgcolor="white"/>
+	</resizestate>
+	<view resource="_boundingBoxPointerUR" x="${ parent.width-this.width }" y="${ parent.height-this.height }"
 		onmousedown="parent.rs.apply()" onmouseup="parent._removeResizestateFromThis()" >
 		<labelTooltip text="Resize this Object" />
-	</view>    
+	</view>
 </class>
 
 </library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c81ce366/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteboardPanel.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteboardPanel.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteboardPanel.lzx
index 0843af7..2398475 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteboardPanel.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteboardPanel.lzx
@@ -174,6 +174,7 @@
 			var btn = canvas._wbBar.subviews[eg];
 			if (btn.objRef.whiteboardId == obj[1]) {
 				btn.setAttribute('btnName', obj[2]);
+				btn.calcTextWidth();
 				break;
 			}
 		}


[43/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1541] more fixes for calendar web service and tests

Posted by so...@apache.org.
[OPENMEETINGS-1541] more fixes for calendar web service and tests


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

Branch: refs/heads/3.1.x
Commit: 2c48bef2a55c830f2e8ef7f560b01273598f4a30
Parents: 97c89e9
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Jan 24 17:38:20 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Jan 24 17:38:20 2017 +0000

----------------------------------------------------------------------
 .../db/dao/calendar/AppointmentDao.java         |  31 +++---
 .../db/dto/calendar/AppointmentDTO.java         |   7 +-
 .../db/dto/calendar/MeetingMemberDTO.java       |  15 ++-
 .../openmeetings/db/dto/room/RoomDTO.java       |   7 +-
 .../db/dto/room/RoomOptionsDTO.java             |  10 +-
 .../openmeetings/db/dto/user/UserDTO.java       |  19 ++--
 .../openmeetings/db/entity/user/Address.java    |  23 ++---
 .../apache/openmeetings/db/util/DtoHelper.java  |  45 ++++++++
 .../openmeetings/web/app/Application.java       | 102 ++++++++++---------
 .../openmeetings/web/common/InvitationForm.java |   6 +-
 .../test/AbstractJUnitDefaults.java             |  13 ++-
 .../calendar/TestAppointmentAddAppointment.java |  66 ++++++++++--
 .../test/webservice/TestCalendarService.java    |  12 ++-
 .../webservice/CalendarWebService.java          |   5 +-
 .../util/AppointmentParamConverter.java         |   8 +-
 15 files changed, 238 insertions(+), 131 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
index cc1cad2..8ccb074 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
@@ -69,31 +69,30 @@ public class AppointmentDao {
 	/*
 	 * insert, update, delete, select
 	 */
-
 	// -----------------------------------------------------------------------------------------------
-
 	public Appointment get(Long id) {
 		TypedQuery<Appointment> query = em.createNamedQuery("getAppointmentById", Appointment.class);
 		query.setParameter("id", id);
 
-		Appointment appoint = null;
+		Appointment a = null;
 		try {
-			appoint = query.getSingleResult();
+			a = query.getSingleResult();
 		} catch (NoResultException ex) {
+			//no-op
 		}
-		return appoint;
+		return a;
 	}
 
 	public Appointment getAny(Long id) {
 		TypedQuery<Appointment> query = em.createNamedQuery("getAppointmentByIdAny", Appointment.class).setParameter("id", id);
 
-		Appointment appoint = null;
+		Appointment a = null;
 		try {
-			appoint = query.getSingleResult();
+			a = query.getSingleResult();
 		} catch (NoResultException ex) {
+			//no-op
 		}
-
-		return appoint;
+		return a;
 	}
 
 	public List<Appointment> get() {
@@ -103,7 +102,7 @@ public class AppointmentDao {
 	public Appointment update(Appointment a, Long userId) {
 		return update(a, userId, true);
 	}
-	
+
 	public Appointment update(Appointment a, Long userId, boolean sendmails) {
 		Room r = a.getRoom();
 		if (r.getId() == null) {
@@ -151,11 +150,11 @@ public class AppointmentDao {
 			em.persist(a);
 		} else {
 			a.setUpdated(new Date());
-			a =	em.merge(a);
+			a = em.merge(a);
 		}
 		return a;
 	}
-	
+
 	// ----------------------------------------------------------------------------------------------------------
 
 	public void delete(Appointment a, Long userId) {
@@ -167,7 +166,7 @@ public class AppointmentDao {
 		}
 		update(a, userId);
 	}
-	
+
 	public List<Appointment> getInRange(Long userId, Date start, Date end) {
 		log.debug("Start " + start + " End " + end);
 
@@ -175,8 +174,8 @@ public class AppointmentDao {
 		query.setParameter("start", start);
 		query.setParameter("end", end);
 		query.setParameter("userId", userId);
-		
-		List<Appointment> listAppoints = new ArrayList<Appointment>(query.getResultList()); 
+
+		List<Appointment> listAppoints = new ArrayList<>(query.getResultList());
 		TypedQuery<Appointment> q1 = em.createNamedQuery("joinedAppointmentsInRange", Appointment.class);
 		q1.setParameter("start", start);
 		q1.setParameter("end", end);
@@ -196,7 +195,7 @@ public class AppointmentDao {
 		q.setParameter("end", end.getTime());
 		return q.getResultList();
 	}
-	
+
 	// next appointment to select date
 	public Appointment getNext(Long userId, Date start) {
 		List<Appointment> list = em.createNamedQuery("getNextAppointment", Appointment.class)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
index 45c7edf..2653ea7 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
@@ -36,6 +36,7 @@ import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.ajax.json.JSONObject;
 
 @XmlRootElement
@@ -92,7 +93,7 @@ public class AppointmentDTO implements Serializable {
 		reminderEmailSend = a.isReminderEmailSend();
 	}
 
-	public Appointment get(UserDao userDao, AppointmentDao appointmentDao) {
+	public Appointment get(UserDao userDao, AppointmentDao appointmentDao, User u) {
 		Appointment a = id == null ? new Appointment() : appointmentDao.get(id);
 		a.setId(id);
 		a.setTitle(title);
@@ -100,7 +101,7 @@ public class AppointmentDTO implements Serializable {
 		a.setStart(start.getTime());
 		a.setEnd(end.getTime());
 		a.setDescription(description);
-		a.setOwner(owner == null ? null : userDao.get(owner.getId()));
+		a.setOwner(owner == null ? u : userDao.get(owner.getId()));
 		a.setInserted(inserted);
 		a.setUpdated(updated);
 		a.setDeleted(deleted);
@@ -109,7 +110,7 @@ public class AppointmentDTO implements Serializable {
 		a.setIcalId(icalId);
 		a.setMeetingMembers(new ArrayList<MeetingMember>());
 		for(MeetingMemberDTO mm : meetingMembers) {
-			MeetingMember m = mm.get(userDao);
+			MeetingMember m = mm.get(userDao, u);
 			m.setAppointment(a);
 			a.getMeetingMembers().add(m);
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index f660239..5a84803 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.db.dto.calendar;
 
+import static org.apache.openmeetings.db.util.DtoHelper.optLong;
+
 import java.io.Serializable;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -44,7 +46,7 @@ public class MeetingMemberDTO implements Serializable {
 		this.user = new UserDTO(mm.getUser());
 	}
 
-	public MeetingMember get(UserDao userDao) {
+	public MeetingMember get(UserDao userDao, User owner) {
 		MeetingMember mm = new MeetingMember();
 		mm.setId(id);
 		if (user.getId() != null) {
@@ -55,6 +57,14 @@ public class MeetingMemberDTO implements Serializable {
 				// try to get ext. user
 				u = userDao.getExternalUser(user.getExternalId(), user.getExternalType());
 			}
+			if (u == null && user.getAddress() != null) {
+				u = userDao.getContact(user.getAddress().getEmail()
+						, user.getFirstname()
+						, user.getLastname()
+						, user.getLanguageId()
+						, user.getTimeZoneId()
+						, owner);
+			}
 			if (u == null) {
 				u = user.get(userDao);
 				u.setType(User.Type.contact);
@@ -85,8 +95,7 @@ public class MeetingMemberDTO implements Serializable {
 
 	public static MeetingMemberDTO get(JSONObject o) {
 		MeetingMemberDTO m = new MeetingMemberDTO();
-		long id = o.optLong("id");
-		m.id = id == 0 ? null : id;
+		m.id = optLong(o, "id");
 		m.user = UserDTO.get(o.optJSONObject("user"));
 		return m;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
index 2a9ec7d..8a4e1f1 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -19,6 +19,8 @@
 package org.apache.openmeetings.db.dto.room;
 
 import static org.apache.openmeetings.db.dto.room.RoomOptionsDTO.optInt;
+import static org.apache.openmeetings.db.util.DtoHelper.optEnum;
+import static org.apache.openmeetings.db.util.DtoHelper.optLong;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -349,11 +351,10 @@ public class RoomDTO implements Serializable {
 			return null;
 		}
 		RoomDTO r = new RoomDTO();
-		long id = o.optLong("id");
-		r.id = id == 0 ? null : id;
+		r.id = optLong(o, "id");
 		r.name = o.optString("name");
 		r.comment = o.optString("comment");
-		r.type = Room.Type.valueOf(o.getString("type"));
+		r.type = optEnum(Room.Type.class, o, "type");
 		r.numberOfPartizipants = o.optLong("numberOfPartizipants", 4);
 		r.appointment = o.optBoolean("appointment", false);
 		r.confno = o.optString("confno");

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
index f89aa85..4c71738 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.db.dto.room;
 
+import static org.apache.openmeetings.db.util.DtoHelper.optLong;
+
 import java.io.Serializable;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -99,11 +101,7 @@ public class RoomOptionsDTO implements Serializable {
 	public static Integer optInt(JSONObject o, String key) {
 		return o.has(key) && !o.isNull(key) ? o.getInt(key) : null;
 	}
-	
-	public static Long optLong(JSONObject o, String key) {
-		return o.has(key) && !o.isNull(key) ? o.getLong(key) : null;
-	}
-	
+
 	public static RoomOptionsDTO fromString(String s) {
 		JSONObject o = new JSONObject(s);
 		RoomOptionsDTO ro = new RoomOptionsDTO();
@@ -116,7 +114,7 @@ public class RoomOptionsDTO implements Serializable {
 		ro.showNickNameDialog = o.optBoolean("showNickNameDialog", false);
 		return ro;
 	}
-	
+
 	@Override
 	public String toString() {
 		return new JSONObject(this).toString();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
index ddb1f34..7e31ca6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
@@ -18,6 +18,10 @@
  */
 package org.apache.openmeetings.db.dto.user;
 
+import static org.apache.openmeetings.db.util.DtoHelper.optEnum;
+import static org.apache.openmeetings.db.util.DtoHelper.optEnumList;
+import static org.apache.openmeetings.db.util.DtoHelper.optLong;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -191,30 +195,23 @@ public class UserDTO implements Serializable {
 			return null;
 		}
 		UserDTO u = new UserDTO();
-		long id = o.optLong("id");
-		u.id = id == 0 ? null : id;
+		u.id = optLong(o, "id");
 		u.login = o.optString("login");
 		u.password = o.optString("password");
 		u.firstname = o.optString("firstname");
 		u.lastname = o.optString("lastname");
-		JSONArray rr = o.optJSONArray("rights");
-		if (rr !=  null) {
-			for (int i = 0; i < rr.length(); ++i) {
-				u.rights.add(Right.valueOf(rr.getString(i)));
-			}
-		}
+		u.rights.addAll(optEnumList(Right.class, o.optJSONArray("rights")));
 		u.languageId = o.optLong("languageId");
 		JSONObject a = o.optJSONObject("address");
 		if (a != null) {
-			u.address.setId(a.optLong("id"));
+			u.address.setId(optLong(a, "id"));
 			u.address.setCountry(a.optString("country"));
 			u.address.setEmail(a.optString("email"));
 		}
 		u.timeZoneId = o.optString("timeZoneId");
 		u.externalId = o.optString("externalId");
 		u.externalType = o.optString("externalType");
-		String t = o.optString("type", null);
-		u.type = t == null ? null : Type.valueOf(t);
+		u.type = optEnum(Type.class, o, "type");
 		return u;
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java
index 870da5b..8b3df31 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java
@@ -36,56 +36,55 @@ import org.simpleframework.xml.Root;
 @Table(name = "address")
 @Root(name="address")
 public class Address implements IDataProviderEntity {
-
 	private static final long serialVersionUID = 1L;
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name = "id")
 	private Long id;
-	
+
 	@Column(name = "additionalname")
 	@Element(data=true, required=false)
 	private String additionalname;
-	
+
 	@Lob
 	@Column(name = "comment", length=2048)
 	@Element(data=true, required=false)
 	private String comment;
-	
+
 	@Column(name = "fax")
 	@Element(data=true, required=false)
 	private String fax;
-	
+
 	@Column(name = "inserted")
 	@Element(name = "starttime",data=true, required=false)
 	private Date inserted;
-	
+
 	@Column(name = "country")
 	@Element(name="country", data=true, required=false)
 	private String country;
-	
+
 	@Column(name = "street")
 	@Element(data=true, required=false)
 	private String street;
-	
+
 	@Column(name = "town")
 	@Element(data=true, required=false)
 	private String town;
-	
+
 	@Column(name = "updated")
 	private Date updated;
-	
+
 	@Column(name = "zip")
 	@Element(data=true, required=false)
 	private String zip;
-	
+
 	@Column(name = "deleted", nullable = false)
 	private boolean deleted;
 
 	@Column(name = "email")
 	@Element(name="mail", data=true, required=false)
 	private String email;
-	
+
 	@Column(name = "phone")
 	@Element(data=true, required=false)
 	private String phone;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java
new file mode 100644
index 0000000..77f3737
--- /dev/null
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java
@@ -0,0 +1,45 @@
+/*
+ * 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.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
+
+public class DtoHelper {
+	public static Long optLong(JSONObject o, String key) {
+		return o.has(key) && !o.isNull(key) ? o.getLong(key) : null;
+	}
+
+	public static <T extends Enum<T>> T optEnum(Class<T> clazz, JSONObject o, String key) {
+		return o.has(key) && !o.isNull(key) ? Enum.valueOf(clazz, o.getString(key)) : null;
+	}
+
+	public static <T extends Enum<T>> Collection<T> optEnumList(Class<T> clazz, JSONArray arr) {
+		Collection<T> l = new ArrayList<>();
+		if (arr !=  null) {
+			for (int i = 0; i < arr.length(); ++i) {
+				l.add(Enum.valueOf(clazz, arr.getString(i)));
+			}
+		}
+		return l;
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index f2bd19d..d328a17 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -96,7 +96,7 @@ import org.wicketstuff.dashboard.web.DashboardSettings;
 public class Application extends AuthenticatedWebApplication implements IApplication {
 	private static final Logger log = getLogger(Application.class, webAppRootKey);
 	private static boolean isInstalled;
-	private static ConcurrentHashMap<String, Client> ONLINE_USERS = new ConcurrentHashMap<>(); 
+	private static ConcurrentHashMap<String, Client> ONLINE_USERS = new ConcurrentHashMap<>();
 	private static ConcurrentHashMap<String, Client> INVALID_SESSIONS = new ConcurrentHashMap<>();
 	private static ConcurrentHashMap<Long, Set<String>> ROOMS = new ConcurrentHashMap<>();
 	//additional maps for faster searching should be created
@@ -114,14 +114,14 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		wicketApplicationName = super.getName();
 		getSecuritySettings().setAuthenticationStrategy(new OmAuthenticationStrategy());
 		getApplicationSettings().setAccessDeniedPage(AccessDeniedPage.class);
-		
-		//Add custom resource loader at the beginning, so it will be checked first in the 
-		//chain of Resource Loaders, if not found it will search in Wicket's internal 
+
+		//Add custom resource loader at the beginning, so it will be checked first in the
+		//chain of Resource Loaders, if not found it will search in Wicket's internal
 		//Resource Loader for a the property key
 		getResourceSettings().getStringResourceLoaders().add(0, new LabelResourceLoader());
-		
+
 		super.init();
-		
+
 		// register some widgets
 		dashboardContext = new DashboardContext();
 		dashboardContext.setDashboardPersister(new UserDashboardPersister());
@@ -136,7 +136,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		DashboardSettings dashboardSettings = DashboardSettings.get();
 		dashboardSettings.setIncludeJQuery(false);
 		dashboardSettings.setIncludeJQueryUI(false);
-		
+
 		getRootRequestMapperAsCompound().add(new NoVersionMapper(getHomePage()));
 		getRootRequestMapperAsCompound().add(new NoVersionMapper("notinited", NotInitedPage.class));
 		getRootRequestMapperAsCompound().add(new NoVersionMapper("swf", HashPage.class));
@@ -157,7 +157,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		public NoVersionMapper(final Class<? extends IRequestablePage> pageClass) {
 			this("/", pageClass);
 		}
-		
+
 		public NoVersionMapper(String mountPath, final Class<? extends IRequestablePage> pageClass) {
 			super(mountPath, pageClass, new PageParametersEncoder());
 		}
@@ -166,7 +166,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		protected void encodePageComponentInfo(Url url, PageComponentInfo info) {
 			//Does nothing
 		}
-		
+
 		@Override
 		public Url mapHandler(IRequestHandler requestHandler) {
 			if (requestHandler instanceof ListenerInterfaceRequestHandler || requestHandler instanceof BookmarkableListenerInterfaceRequestHandler) {
@@ -180,7 +180,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 	public static OmAuthenticationStrategy getAuthenticationStrategy() {
 		return (OmAuthenticationStrategy)get().getSecuritySettings().getAuthenticationStrategy();
 	}
-	
+
 	@Override
 	public Class<? extends Page> getHomePage() {
 		return MainPage.class;
@@ -195,31 +195,31 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 	public Class<? extends WebPage> getSignInPageClass() {
 		return SignInPage.class;
 	}
-	
+
 	public static Application get() {
 		return (Application) WebApplication.get();
 	}
-	
+
 	public static DashboardContext getDashboardContext() {
 		return get().dashboardContext;
 	}
-	
+
 	public static void addOnlineUser(Client c) {
 		log.debug("Adding online client: {}, room: {}", c.getUid(), c.getRoomId());
 		ONLINE_USERS.put(c.getUid(), c);
 	}
-	
+
 	public static void removeOnlineUser(Client c) {
 		if (c != null) {
 			log.debug("Removing online client: {}, room: {}", c.getUid(), c.getRoomId());
 			ONLINE_USERS.remove(c.getUid());
 		}
 	}
-	
+
 	public static Client getOnlineClient(String uid) {
 		return uid == null ? null : ONLINE_USERS.get(uid);
 	}
-	
+
 	public static boolean isUserOnline(Long userId) {
 		boolean isUserOnline = false;
 		for (Map.Entry<String, Client> e : ONLINE_USERS.entrySet()) {
@@ -227,7 +227,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 				isUserOnline = true;
 				break;
 			}
-		} 
+		}
 		return isUserOnline;
 	}
 
@@ -245,11 +245,11 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		}
 		return result;
 	}
-	
+
 	public static int getClientsSize() {
 		return ONLINE_USERS.size();
 	}
-	
+
 	public static Client getClientByKeys(Long userId, String sessionId) {
 		Client client = null;
 		for (Map.Entry<String, Client> e : ONLINE_USERS.entrySet()) {
@@ -258,10 +258,10 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 				client = c;
 				break;
 			}
-		} 
+		}
 		return client;
 	}
-	
+
 	@Override
 	public void invalidateClient(Long userId, String sessionId) {
 		Client client = getClientByKeys(userId, sessionId);
@@ -272,24 +272,24 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 			}
 		}
 	}
-	
+
 	public static boolean isInvaldSession(String sessionId) {
 		return sessionId == null ? false : INVALID_SESSIONS.containsKey(sessionId);
 	}
-	
+
 	public static void removeInvalidSession(String sessionId) {
 		if (sessionId != null){
 			INVALID_SESSIONS.remove(sessionId);
 		}
 	}
-	
+
 	public static Client addUserToRoom(Client c) {
 		log.debug("Adding online room client: {}, room: {}", c.getUid(), c.getRoomId());
 		ROOMS.putIfAbsent(c.getRoomId(), new ConcurrentHashSet<String>());
 		ROOMS.get(c.getRoomId()).add(c.getUid());
 		return c;
 	}
-	
+
 	public static Client removeUserFromRoom(Client c) {
 		log.debug("Removing online room client: {}, room: {}", c.getUid(), c.getRoomId());
 		if (c.getRoomId() != null) {
@@ -301,7 +301,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		}
 		return c;
 	}
-	
+
 	public static List<Client> getRoomClients(Long roomId) {
 		List<Client> clients = new ArrayList<>();
 		if (roomId != null) {
@@ -317,7 +317,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		}
 		return clients;
 	}
-	
+
 	public static Set<Long> getUserRooms(Long userId) {
 		Set<Long> result = new HashSet<>();
 		for (Entry<Long, Set<String>> me : ROOMS.entrySet()) {
@@ -330,7 +330,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		}
 		return result;
 	}
-	
+
 	public static boolean isUserInRoom(long roomId, long userId) {
 		Set<String> clients = ROOMS.get(roomId);
 		if (clients != null) {
@@ -342,7 +342,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		}
 		return false;
 	}
-	
+
 	//TODO need more safe way FIXME
 	public <T> T _getBean(Class<T> clazz) {
 		WebApplicationContext wac = getWebApplicationContext(getServletContext());
@@ -364,15 +364,15 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		}
 		return loc;
 	}
-	
+
 	public static String getString(String key, final long languageId) {
 		return getString(key, getLocale(languageId));
 	}
-	
+
 	public static String getString(long id, final long languageId) {
 		return getString(id, getLocale(languageId));
 	}
-	
+
 	public static String getString(long id, final Locale loc) {
 		return getString("" + id, loc);
 	}
@@ -406,7 +406,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		}
 		return result;
 	}
-	
+
 	public static <T> T getBean(Class<T> clazz) {
 		if (InitializationContainer.initComplete) {
 			if (!isInstalled()) {
@@ -417,7 +417,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 			throw new RestartResponseException(NotInitedPage.class);
 		}
 	}
-	
+
 	@Override
 	public <T> T getOmBean(Class<T> clazz) { //FIXME hack for email templates support (should be in separate module for now
 		return Application.getBean(clazz);
@@ -437,19 +437,23 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		Room r = i.getRoom();
 		User u = i.getInvitee();
 		if (r != null) {
-			boolean allowed = u.getType() != Type.contact;
-			if (allowed) {
-				allowed = getBean(MainService.class).isRoomAllowedToUser(r, u);
-			}
-			if (!allowed) {
-				PageParameters pp = new PageParameters();
-				pp.add(INVITATION_HASH, i.getHash());
-				if (u.getLanguageId() > 0) {
-					pp.add("language", u.getLanguageId());
-				}
-				link = urlForPage(HashPage.class, pp);
-			} else {
+			if (r.isAppointment() && i.getInvitedBy().getId().equals(u.getId())) {
 				link = getRoomUrlFragment(r.getId()).getLink();
+			} else {
+				boolean allowed = u.getType() != Type.contact;
+				if (allowed) {
+					allowed = getBean(MainService.class).isRoomAllowedToUser(r, u);
+				}
+				if (allowed) {
+					link = getRoomUrlFragment(r.getId()).getLink();
+				} else {
+					PageParameters pp = new PageParameters();
+					pp.add(INVITATION_HASH, i.getHash());
+					if (u.getLanguageId() > 0) {
+						pp.add("language", u.getLanguageId());
+					}
+					link = urlForPage(HashPage.class, pp);
+				}
 			}
 		}
 		Recording rec = i.getRecording();
@@ -458,12 +462,12 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		}
 		return link;
 	}
-	
+
 	@Override
 	public String getOmInvitationLink(Invitation i) { //FIXME hack for email templates support (should be in separate module for now
 		return getInvitationLink(i);
 	}
-	
+
 	public static String urlForPage(Class<? extends Page> clazz, PageParameters pp) {
 		RequestCycle rc = RequestCycle.get();
 		return rc.getUrlRenderer().renderFullUrl(Url.parse(getBean(ConfigurationDao.class).getBaseUrl() + rc.urlFor(clazz, pp)));
@@ -478,7 +482,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 	public String getOmString(long id) {
 		return getString(id);
 	}
-	
+
 	@Override
 	public String getOmString(long id, long languageId) {
 		return getString(id, languageId);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
index 62a6e2e..e6e2fdc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
@@ -87,7 +87,7 @@ public abstract class InvitationForm extends Form<Invitation> {
 		add(subject, message);
 		recipients.setLabel(Model.of(Application.getString(216))).setRequired(true).add(new AjaxFormComponentUpdatingBehavior("change") {
 			private static final long serialVersionUID = 1L;
-			
+
 			@Override
 			protected void onUpdate(AjaxRequestTarget target) {
 				url.setModelObject(null);
@@ -154,11 +154,11 @@ public abstract class InvitationForm extends Form<Invitation> {
 		i.setId(null);
 		i.setUpdated(null);
 		i.setUsed(false);
-		
+
 		i.setPassword(CryptProvider.get().hash(i.getPassword()));
 		i.setValidFrom(getDate(from.getModelObject().minusMinutes(5), timeZoneId.getModelObject()));
 		i.setValidTo(getDate(to.getModelObject(), timeZoneId.getModelObject()));
-		
+
 		i.setInvitee(u);
 		i.setHash(UUID.randomUUID().toString());
 		if (Type.contact == u.getType()) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
index 4bfa5b7..5751c0a 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
@@ -48,7 +48,7 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 	private static final String orgname = "smoketest";
 	private static final String timeZone = "Europe/Berlin";
 	private static final String useremail = "junit@openmeetings.apache.org";
-	
+
 	@Autowired
 	private AppointmentDao appointmentDao;
 	@Autowired
@@ -114,7 +114,7 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		if (ap.getReminder() == null) {
 			ap.setReminder(Appointment.Reminder.none);
 		}
-		
+
 		if (r == null) {
 			r = new Room();
 			r.setType(Room.Type.conference);
@@ -178,12 +178,15 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		importInitvalues.loadAll(cfg, false);
 	}
 
+	public User getContact(String uuid, Long ownerId) {
+		return userDao.getContact("email" + uuid, "firstname" + uuid, "lastname" + uuid, ownerId);
+	}
+
 	public User createUserContact(Long ownerId) {
-		return createUserContact(UUID.randomUUID().toString(), ownerId);
+		return createUserContact(getContact(UUID.randomUUID().toString(), ownerId), ownerId);
 	}
 
-	public User createUserContact(String uuid, Long ownerId) {
-		User user = userDao.getContact("email" + uuid, "firstname" + uuid, "lastname" + uuid, ownerId);
+	public User createUserContact(User user, Long ownerId) {
 		user = userDao.update(user, ownerId);
 		assertNotNull("Cann't add user", user);
 		return user;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
index ee0bc42..ac19360 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
@@ -19,14 +19,28 @@
 package org.apache.openmeetings.test.calendar;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Date;
+import java.util.UUID;
 
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.service.calendar.AppointmentLogic;
 import org.apache.openmeetings.test.AbstractWicketTester;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.StringValue;
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -39,11 +53,17 @@ public class TestAppointmentAddAppointment extends AbstractWicketTester {
 	private AppointmentLogic appointmentLogic;
 	@Autowired
 	private AppointmentDao appointmentDao;
+	@Autowired
+	private UserDao userDao;
+
+	private void setTime(Appointment a) {
+		a.setStart(Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()));
+		a.setEnd(Date.from(LocalDateTime.now().plusHours(1).atZone(ZoneId.systemDefault()).toInstant()));
+	}
 
 	@Test
 	public void saveAppointment() throws Exception {
-		log.debug("- 1 MeetingReminderJob.execute");
-		log.warn("- 2 MeetingReminderJob.execute");
+		log.debug("- saveAppointment");
 
 		Calendar start = Calendar.getInstance();
 		start.setTimeInMillis(start.getTimeInMillis() + 600000);
@@ -74,14 +94,45 @@ public class TestAppointmentAddAppointment extends AbstractWicketTester {
 				isMonthly, isYearly, remind, mmClient,
 				roomType, languageId, false, "", -1, userId);
 		a = appointmentDao.update(a, userId);
-		
+
 		Thread.sleep(3000);
-		
+
 		appointmentLogic.doScheduledMeetingReminder();
-		
+
 		Thread.sleep(3000);
-		
-		assertTrue("Saved appointment should have valid id: " + a.getId(), a.getId() != null && a.getId() > 0);
+
+		assertNotNull("Saved appointment should have valid id: " + a.getId(), a.getId());
+	}
+
+	@Test
+	public void testCreate() {
+		Appointment a = new Appointment();
+		a.setTitle("Test title");
+		setTime(a);
+		a.setReminder(Reminder.ical);
+		a.setMeetingMembers(new ArrayList<>());
+		User owner = userDao.get(1L);
+		a.setOwner(owner);
+		a.setRoom(new Room());
+		a.getRoom().setAppointment(true);
+		a.getRoom().setType(Room.Type.conference);
+		for (int i = 0; i < 3; ++i) {
+			MeetingMember mm = new MeetingMember();
+			mm.setUser(getContact(UUID.randomUUID().toString(), owner.getId()));
+			a.getMeetingMembers().add(mm);
+		}
+		a = appointmentDao.update(a, owner.getId());
+		assertNotNull("Saved appointment should have valid id: " + a.getId(), a.getId());
+		assertEquals("Saved appointment should have corect count of guests: ", 3, a.getMeetingMembers().size());
+		for (MeetingMember mm : a.getMeetingMembers()) {
+			assertNotNull("Saved guest should have valid id: ", mm.getId());
+			assertNotNull("Saved guest should have valid invitation: ", mm.getInvitation());
+		}
+
+		WebSession ws = WebSession.get();
+		Appointment a1 = appointmentDao.get(a.getId());
+		ws.checkHashes(StringValue.valueOf(""), StringValue.valueOf(a1.getMeetingMembers().get(0).getInvitation().getHash()));
+		assertTrue("Login via secure hash should be successful", ws.isSignedIn());
 	}
 
 	private static String createClientObj(String firstname, String lastname, String email, String jNameTimeZone) {
@@ -94,5 +145,4 @@ public class TestAppointmentAddAppointment extends AbstractWicketTester {
 			.append(jNameTimeZone);
 		return sb.toString();
 	}
-
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index c64e16a..32d7d51 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -32,6 +32,7 @@ import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
+import org.apache.openmeetings.db.dto.calendar.MeetingMemberDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.GroupUser;
@@ -174,14 +175,14 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		JSONObject o = createAppointment()
 				.put("meetingMembers", new JSONArray()
 						.put(new JSONObject().put("user", new JSONObject()
-								.put("firstname", "Jhon 1")
+								.put("firstname", "John 1")
 								.put("lastname", "Doe")
-								.put("Address", new JSONObject().put("email", "jhon1@doe.email"))
+								.put("address", new JSONObject().put("email", "jhon1@doe.email"))
 								))
 						.put(new JSONObject().put("user", new JSONObject()
-								.put("firstname", "Jhon 2")
+								.put("firstname", "John 2")
 								.put("lastname", "Doe")
-								.put("Address", new JSONObject().put("email", "jhon2@doe.email"))
+								.put("address", new JSONObject().put("email", "jhon2@doe.email"))
 								))
 						);
 
@@ -202,6 +203,9 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		assertNotNull("Valid DTO should be returned", dto);
 		assertNotNull("DTO id should be valid", dto.getId());
 		assertEquals("DTO should have 2 attendees", 2, dto.getMeetingMembers().size());
+		for (MeetingMemberDTO mm : dto.getMeetingMembers()) {
+			assertNotNull("Email should be valid", mm.getUser().getAddress().getEmail());
+		}
 
 		//try to change MM list
 		JSONObject o1 = AppointmentParamConverter.json(dto)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index 9959eff..c7be451 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -302,10 +302,7 @@ public class CalendarWebService {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
 			if (AuthLevelUtil.hasUserLevel(u.getRights())) {
-				Appointment a = appointment.get(userDao, appointmentDao);
-				if (a.getOwner() == null) {
-					a.setOwner(u);
-				}
+				Appointment a = appointment.get(userDao, appointmentDao, u);
 				if (a.getRoom().getId() != null) {
 					if (a.getRoom().isAppointment()) {
 						a.getRoom().setIspublic(false);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2c48bef2/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
index f81760d..123e69c 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.webservice.util;
 
+import static org.apache.openmeetings.db.util.DtoHelper.optEnum;
+import static org.apache.openmeetings.db.util.DtoHelper.optLong;
 import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
 
 import java.util.Date;
@@ -37,8 +39,7 @@ public class AppointmentParamConverter implements ParamConverter<AppointmentDTO>
 	public AppointmentDTO fromString(String val) {
 		JSONObject o = new JSONObject(val);
 		AppointmentDTO a = new AppointmentDTO();
-		long id = o.optLong("id");
-		a.setId(id == 0 ? null : id);
+		a.setId(optLong(o, "id"));
 		a.setTitle(o.optString("title"));
 		a.setLocation(o.optString("location"));
 		a.setOwner(UserDTO.get(o.optJSONObject("owner")));
@@ -49,8 +50,7 @@ public class AppointmentParamConverter implements ParamConverter<AppointmentDTO>
 		a.setInserted(DateParamConverter.get(o.optString("inserted")));
 		a.setUpdated(DateParamConverter.get(o.optString("updated")));
 		a.setDeleted(o.optBoolean("inserted"));
-		String r = o.optString("reminder", null);
-		a.setReminder(r == null ? null : Reminder.valueOf(r));
+		a.setReminder(optEnum(Reminder.class, o, "reminder"));
 		a.setRoom(RoomDTO.get(o.optJSONObject("room")));
 		a.setIcalId(o.optString("icalId"));
 		JSONArray mm = o.optJSONArray("meetingMembers");


[34/50] [abbrv] openmeetings git commit: no jira: small issue in backup is fixed

Posted by so...@apache.org.
no jira: small issue in backup is fixed


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

Branch: refs/heads/3.1.x
Commit: a11ef005a6b43ac21198f8f350463938ab07c9e2
Parents: 3306582
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Jan 20 10:18:50 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Jan 20 10:18:50 2017 +0000

----------------------------------------------------------------------
 .../java/org/apache/openmeetings/db/entity/file/FileItem.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a11ef005/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
index 2ed860e..b6a3bc9 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
@@ -67,7 +67,7 @@ public abstract class FileItem implements IDataProviderEntity {
 	private Long insertedBy;
 
 	@Column(name = "inserted")
-	@Element(data = true)
+	@Element(data = true, required = false)
 	private Date inserted;
 
 	@Column(name = "updated")
@@ -204,7 +204,7 @@ public abstract class FileItem implements IDataProviderEntity {
 	}
 
 	protected abstract File internalGetFile(String ext);
-	
+
 	public final File getFile(String ext) {
 		return internalGetFile(ext);
 	}


[47/50] [abbrv] openmeetings git commit: Release preparation: documentation update

Posted by so...@apache.org.
Release preparation: documentation update


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

Branch: refs/heads/3.1.x
Commit: f9eef75c69f2cdbd689ffcdfaf2940a9b5fbf156
Parents: ff80251
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Jan 25 16:50:19 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Jan 25 16:50:19 2017 +0000

----------------------------------------------------------------------
 CHANGELOG                                   | 3 +++
 openmeetings-server/src/site/xdoc/index.xml | 4 ++--
 2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/f9eef75c/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index 94131e4..050539f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,8 @@ See https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-* (where * is the number
 Release Notes - Openmeetings - Version 3.1.5
 ================================================================================================================
 ** Bug
+    * [OPENMEETINGS-863] - Video Problem
+    * [OPENMEETINGS-1401] - Email Reminders for Calendared Events Not Issued
     * [OPENMEETINGS-1530] - Secure Hash is broken
     * [OPENMEETINGS-1532] - Recording folders not always imported as expected
     * [OPENMEETINGS-1533] - Impossible to create Appointment using calendar WebService
@@ -13,6 +15,7 @@ Release Notes - Openmeetings - Version 3.1.5
     * [OPENMEETINGS-1537] - external soap users unable to login to the conference room created
     * [OPENMEETINGS-1539] - Calendar web service: delete method returns nothing on success
     * [OPENMEETINGS-1540] - Placeholder in reset template email is not being replaced
+    * [OPENMEETINGS-1541] - Appointment invitations are not always accessible
 
 ** Improvement
     * [OPENMEETINGS-1531] - 3.1.5 - Library versions should be updated

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/f9eef75c/openmeetings-server/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/index.xml b/openmeetings-server/src/site/xdoc/index.xml
index ef15a70..1730751 100644
--- a/openmeetings-server/src/site/xdoc/index.xml
+++ b/openmeetings-server/src/site/xdoc/index.xml
@@ -83,12 +83,12 @@
 				</div>
 				<br/>
 				<span>
-					8 issues are fixed please check <br/>
+					11 issues are fixed please check <br/>
 					<a href="https://www.apache.org/dist/openmeetings/3.1.5/CHANGELOG">CHANGELOG</a> and
 					<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312720&amp;version=12338819">Detailed list</a>
 				</span>
 				<span> See <a href="downloads.html">Downloads page</a>.</span>
-				<span class="date">(2017-01-28)</span>
+				<span class="date">(2017-01-30)</span>
 			</div>
 			<div class="bs-callout bs-callout-info">
 				<span class="date"><a href="NewsArchive.html">You can find older news here</a></span>


[41/50] [abbrv] openmeetings git commit: no jira: styling instructions are updated

Posted by so...@apache.org.
no jira: styling instructions are updated


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

Branch: refs/heads/3.1.x
Commit: 76c2f43d1074048dfbcf390edf4e033dd23fb1d5
Parents: e910279
Author: Maxim Solodovnik <so...@apache.org>
Authored: Mon Jan 23 16:50:22 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Mon Jan 23 16:50:22 2017 +0000

----------------------------------------------------------------------
 .../src/site/xdoc/themes-and-branding.xml       | 41 +++++++++-----------
 1 file changed, 19 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/76c2f43d/openmeetings-server/src/site/xdoc/themes-and-branding.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/themes-and-branding.xml b/openmeetings-server/src/site/xdoc/themes-and-branding.xml
index 8e4740c..f3f8103 100644
--- a/openmeetings-server/src/site/xdoc/themes-and-branding.xml
+++ b/openmeetings-server/src/site/xdoc/themes-and-branding.xml
@@ -19,35 +19,29 @@
 		<title>Theme and color</title>
 		<author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
 	</properties>
-
 	<body>
-
-		<section name="Available with Apache OpenMeetings 2.0">
-
+		<section name="Available since Apache OpenMeetings 2.0">
 			<p>
 				Themes are only available starting with Openmeetings 2.x.
 				<br />
 				There are also more general client side configuration like port
 				configuration. Those configs are stored in the public/config.xml
 			</p>
-
 		</section>
-
 		<section name="Editing the theme">
-
-			<p>To modify default theme used by OM please open following file in the SVN: </p>
-			<p>
-				<a
-					href="https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css"
-					target="_blank" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css
-				</a>
-			</p>
-			<p>and follow to link following "To view and modify this theme, visit" text in css comments</p>
+			<p>To modify default theme used by OM</p>
+			<ul>
+				<li>please open following file in the SVN:<br/>
+					<a
+						href="https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css"
+						target="_blank" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css
+					</a><br/>
+					Or if you already installed OpenMeetings on your machine at:<br />
+					<tt>/webapps/openmeetings/css/theme_om/jquery-ui.css</tt>
+				</li>
+				<li>follow the link next to "To view and modify this theme, visit" text in css comments</li>
+			</ul>
 			<p>
-				Or if you already installed OpenMeetings on your machine at:
-				<br />
-				<tt>/webapps/openmeetings/css/theme_om/jquery-ui.css</tt>
-				<br />
 				The file contains border, background and font color definitions as
 				well as paths to icons that are loaded at runtime.
 				<br />
@@ -56,9 +50,12 @@
 				modification in your theme.
 			</p>
 			<p>All other elements might be styled by modifying CSS files in <tt>/webapps/openmeetings/css</tt> folder</p>
-
 		</section>
-
+		<section name="Creating custom CSS file">
+			<ol>
+				<li>create <tt>webapps/openmeetings/css/custom.css</tt> file</li>
+				<li>open <tt>webapps/openmeetings/WEB-INF/classes/org/apache/openmeetings/web/pages/BasePage.html</tt> add link to your new CSS file (as last link)</li>
+			</ol>
+		</section>
 	</body>
-
 </document>


[31/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1533] appointment can be created

Posted by so...@apache.org.
[OPENMEETINGS-1533] appointment can be created


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

Branch: refs/heads/3.1.x
Commit: cbb52b459a6341f5ecdceb3f4fc1539ac20965c6
Parents: 1e406fc
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Jan 20 03:01:21 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Jan 20 03:01:21 2017 +0000

----------------------------------------------------------------------
 .../db/dto/calendar/AppointmentDTO.java         |  2 +-
 .../db/dto/calendar/MeetingMemberDTO.java       |  3 +-
 .../openmeetings/db/dto/room/RoomDTO.java       |  7 ++-
 .../openmeetings/db/dto/user/UserDTO.java       |  6 +-
 .../test/webservice/TestCalendarService.java    | 12 ++++
 .../test/webservice/TestWebConverters.java      | 60 ++++++++++++++++++++
 .../util/AppointmentParamConverter.java         | 10 ++--
 .../webservice/util/CalendarParamConverter.java |  7 ++-
 .../webservice/util/DateParamConverter.java     |  8 ++-
 .../util/OmParamConverterProvider.java          |  2 +-
 10 files changed, 104 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
index eb8606a..dfa256b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
@@ -100,7 +100,7 @@ public class AppointmentDTO implements Serializable {
 		a.setStart(start.getTime());
 		a.setEnd(end.getTime());
 		a.setDescription(description);
-		a.setOwner(owner.get(userDao));
+		a.setOwner(owner == null ? null : owner.get(userDao));
 		a.setInserted(inserted);
 		a.setUpdated(updated);
 		a.setDeleted(deleted);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index 44022cb..210e012 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -68,7 +68,8 @@ public class MeetingMemberDTO implements Serializable {
 
 	public static MeetingMemberDTO get(JSONObject o) {
 		MeetingMemberDTO m = new MeetingMemberDTO();
-		m.id = o.optLong("id");
+		long id = o.optLong("id");
+		m.id = id == 0 ? null : id;
 		m.user = UserDTO.get(o.optJSONObject("user"));
 		return m;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
index 3020a25..4dbd193 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.db.dto.room;
 
 import static org.apache.openmeetings.db.dto.room.RoomOptionsDTO.optInt;
-import static org.apache.openmeetings.db.dto.room.RoomOptionsDTO.optLong;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -346,8 +345,12 @@ public class RoomDTO implements Serializable {
 	}
 
 	public static RoomDTO get(JSONObject o) {
+		if (o == null) {
+			return null;
+		}
 		RoomDTO r = new RoomDTO();
-		r.id = optLong(o, "id");
+		long id = o.optLong("id");
+		r.id = id == 0 ? null : id;
 		r.name = o.optString("name");
 		r.comment = o.optString("comment");
 		r.type = Room.Type.valueOf(o.getString("type"));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
index 3e9fc20..2a14996 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
@@ -187,8 +187,12 @@ public class UserDTO implements Serializable {
 	}
 
 	public static UserDTO get(JSONObject o) {
+		if (o == null) {
+			return null;
+		}
 		UserDTO u = new UserDTO();
-		u.id = o.optLong("id");
+		long id = o.optLong("id");
+		u.id = id == 0 ? null : id;
 		u.login = o.optString("login");
 		u.password = o.optString("password");
 		u.firstname = o.optString("firstname");

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index c2f2c08..6c83410 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -18,8 +18,11 @@
  */
 package org.apache.openmeetings.test.webservice;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.Date;
 import java.util.UUID;
 
@@ -31,6 +34,7 @@ import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.webservice.util.DateParamConverter;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -65,4 +69,12 @@ public class TestCalendarService extends AbstractWebServiceTest {
 	public void testGetByPublicRoom() throws Exception {
 		actualTest(roomDao.get(5L)); //default public restricted room
 	}
+
+	@Test
+	public void testDateConverter() throws Exception {
+		assertEquals("Null date should be parsed", null, DateParamConverter.get(null));
+		assertEquals("Date should be parsed"
+				, Date.from(LocalDate.of(2017, 01, 15).atStartOfDay(ZoneId.systemDefault()).toInstant())
+				, DateParamConverter.get("2017-01-15"));
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java
new file mode 100644
index 0000000..c254d89
--- /dev/null
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java
@@ -0,0 +1,60 @@
+/*
+ * 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.webservice;
+
+import static org.junit.Assert.assertEquals;
+
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.util.Calendar;
+import java.util.Date;
+
+import org.apache.openmeetings.db.dto.user.UserDTO;
+import org.apache.openmeetings.webservice.util.CalendarParamConverter;
+import org.apache.openmeetings.webservice.util.DateParamConverter;
+import org.apache.wicket.ajax.json.JSONObject;
+import org.junit.Test;
+
+public class TestWebConverters {
+	@Test
+	public void testDateConverter() throws Exception {
+		assertEquals("Null date should be parsed", null, DateParamConverter.get(null));
+		assertEquals("Date should be parsed"
+				, Date.from(LocalDate.of(2017, 01, 15).atStartOfDay(ZoneId.systemDefault()).toInstant())
+				, DateParamConverter.get("2017-01-15"));
+		assertEquals("Date should be parsed"
+				, Date.from(ZonedDateTime.of(2017, 01, 20, 20, 30, 03, 0, ZoneId.of("Europe/Moscow")).toInstant())
+				, DateParamConverter.get("2017-01-20T20:30:03+0300"));
+	}
+
+	@Test
+	public void testCalendarConverter() throws Exception {
+		CalendarParamConverter c = new CalendarParamConverter();
+		assertEquals("Null calendar should be parsed", null, c.fromString(null));
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(Date.from(LocalDate.of(2017, 01, 15).atStartOfDay(ZoneId.systemDefault()).toInstant()));
+		assertEquals("Calendar should be parsed", cal, c.fromString("2017-01-15"));
+	}
+
+	@Test
+	public void testUserConverter() throws Exception {
+		assertEquals("Null UserDTO should be parsed", null, UserDTO.get((JSONObject)null));
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
index 76f69fc..1a3e4a1 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
@@ -35,15 +35,17 @@ public class AppointmentParamConverter implements ParamConverter<AppointmentDTO>
 	public AppointmentDTO fromString(String val) {
 		JSONObject o = new JSONObject(val);
 		AppointmentDTO a = new AppointmentDTO();
-		a.setId(o.optLong("id"));
+		long id = o.optLong("id");
+		a.setId(id == 0 ? null : id);
 		a.setTitle(o.optString("title"));
 		a.setLocation(o.optString("location"));
 		a.setOwner(UserDTO.get(o.optJSONObject("owner")));
-		a.setStart(CalendarParamConverter.get(o.optString("start"), a.getOwner().getTimeZoneId()));
-		a.setEnd(CalendarParamConverter.get(o.optString("end"), a.getOwner().getTimeZoneId()));
+		String tzId = a.getOwner() == null ? null : a.getOwner().getTimeZoneId();
+		a.setStart(CalendarParamConverter.get(o.optString("start"), tzId));
+		a.setEnd(CalendarParamConverter.get(o.optString("end"), tzId));
 		a.setDescription(o.optString("description"));
 		a.setInserted(DateParamConverter.get(o.optString("inserted")));
-		a.setInserted(DateParamConverter.get(o.optString("updated")));
+		a.setUpdated(DateParamConverter.get(o.optString("updated")));
 		a.setDeleted(o.optBoolean("inserted"));
 		a.setReminder(Reminder.valueOf(o.optString("reminder")));
 		a.setRoom(RoomDTO.get(o.optJSONObject("room")));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
index 0f0ff70..7d4cf19 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
@@ -25,15 +25,20 @@ import java.util.TimeZone;
 
 import javax.ws.rs.ext.ParamConverter;
 
+import org.apache.wicket.util.string.Strings;
+
 public class CalendarParamConverter implements ParamConverter<Calendar> {
 	public static Calendar get(String val, String tzId) {
-		Calendar c = Calendar.getInstance(TimeZone.getTimeZone(tzId));
+		Calendar c = Strings.isEmpty(tzId) ? Calendar.getInstance() : Calendar.getInstance(TimeZone.getTimeZone(tzId));
 		c.setTime(DateParamConverter.get(val));
 		return c;
 	}
 
 	@Override
 	public Calendar fromString(String val) {
+		if (Strings.isEmpty(val)) {
+			return null;
+		}
 		Calendar c = Calendar.getInstance();
 		c.setTime(DateParamConverter.get(val));
 		return c;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
index f0411cd..8d195ff 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
@@ -28,11 +28,15 @@ import java.util.Date;
 import javax.ws.rs.ext.ParamConverter;
 
 import org.apache.commons.lang3.time.FastDateFormat;
+import org.apache.wicket.util.string.Strings;
 
 public class DateParamConverter implements ParamConverter<Date> {
 	private final static FastDateFormat[] formats = new FastDateFormat[] { ISO8601_FULL_FORMAT, ISO8601_DATETIME_FORMAT, ISO8601_DATE_FORMAT };
 
-	static Date get(String val) {
+	public static Date get(String val) {
+		if (Strings.isEmpty(val)) {
+			return null;
+		}
 		for (FastDateFormat df : formats) {
 			try {
 				return df.parse(val);
@@ -40,7 +44,7 @@ public class DateParamConverter implements ParamConverter<Date> {
 				// no-op
 			}
 		}
-		throw new IllegalArgumentException("Unparsable format");
+		throw new IllegalArgumentException("Unparsable format: " + val);
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cbb52b45/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
index 2432e84..2d328d5 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
@@ -38,7 +38,7 @@ public class OmParamConverterProvider implements ParamConverterProvider {
 		} else if (Date.class.isAssignableFrom(rawType)) {
 			return (ParamConverter<T>)new DateParamConverter();
 		} else if (AppointmentDTO.class.isAssignableFrom(rawType)) {
-			return (ParamConverter<T>)new DateParamConverter();
+			return (ParamConverter<T>)new AppointmentParamConverter();
 		}
 		return null;
 	}


[06/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1467, OPENMEETINGS-1525] red5, threetenbp, spring, mina, tomcat and cxf versions are updated

Posted by so...@apache.org.
[OPENMEETINGS-1467, OPENMEETINGS-1525] red5, threetenbp, spring, mina, tomcat and cxf versions are updated


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

Branch: refs/heads/3.1.x
Commit: 6c10178e6bf94308ee179b12d677aa4b2219c76d
Parents: 27cdc4b
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Dec 23 16:20:50 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Dec 23 16:20:50 2016 +0000

----------------------------------------------------------------------
 openmeetings-server/pom.xml |  2 +-
 openmeetings-util/pom.xml   |  2 +-
 pom.xml                     | 12 ++++++------
 3 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6c10178e/openmeetings-server/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index 82d5bb6..3f41e4c 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -117,7 +117,7 @@
 			<id>prepare-red5-server</id>
 			<activation>
 				<file>
-					<missing>red5-server/red5-server-1.0.8-M13.tar.gz</missing> <!-- TODO should be in-sync with global property -->
+					<missing>red5-server/red5-server-1.0.8-RELEASE.tar.gz</missing> <!-- TODO should be in-sync with global property -->
 				</file>
 			</activation>
 			<build>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6c10178e/openmeetings-util/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 1ff429c..15beabc 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -80,7 +80,7 @@
 		<dependency>
 			<groupId>org.threeten</groupId>
 			<artifactId>threetenbp</artifactId>
-			<version>1.3.2</version>
+			<version>1.3.3</version>
 		</dependency>
 	</dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6c10178e/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5507ad2..42b17c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,14 +44,14 @@
 		<wicketju.version>7.5.0</wicketju.version>
 		<wickets.version>7.5.0</wickets.version>
 		<wicketws.version>7.4.0</wicketws.version>
-		<red5-server.version>1.0.8-M13</red5-server.version>
-		<red5-client.version>1.0.8-M13</red5-client.version>
-		<spring.version>4.3.3.RELEASE</spring.version>
-		<mina.version>2.0.15</mina.version>
-		<tomcat.version>8.5.6</tomcat.version>
+		<red5-server.version>1.0.8-RELEASE</red5-server.version>
+		<red5-client.version>1.0.8-RELEASE</red5-client.version>
+		<spring.version>4.3.5.RELEASE</spring.version>
+		<mina.version>2.0.16</mina.version>
+		<tomcat.version>8.5.9</tomcat.version>
 		<commons-transaction.version>1.2</commons-transaction.version>
 		<ical4j.version>2.0.0</ical4j.version>
-		<cxf.version>3.1.8</cxf.version>
+		<cxf.version>3.1.9</cxf.version>
 		<selenium.version>3.0.1</selenium.version>
 		<simple-xml.version>2.7.1</simple-xml.version>
 		<jettison.version>1.3.8</jettison.version>


[42/50] [abbrv] openmeetings git commit: Release preparation: documentation update

Posted by so...@apache.org.
Release preparation: documentation update


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

Branch: refs/heads/3.1.x
Commit: 97c89e977aa953120d17384c8ceb3b086a113728
Parents: 76c2f43
Author: Maxim Solodovnik <so...@apache.org>
Authored: Mon Jan 23 17:28:48 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Mon Jan 23 17:28:48 2017 +0000

----------------------------------------------------------------------
 CHANGELOG                                       | 15 +++++++++
 README                                          | 13 ++++++++
 .../src/site/xdoc/NewsArchive.xml               | 33 ++++++++++++++++++++
 openmeetings-server/src/site/xdoc/downloads.xml | 30 +++++++++---------
 openmeetings-server/src/site/xdoc/index.xml     | 31 ++++++------------
 5 files changed, 86 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97c89e97/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index c826285..94131e4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,21 @@ Apache OpenMeetings Change Log
 See http://issues.apache.org/jira/browse/OPENMEETINGS-* (where * is the number of the issue below)
 See https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-* (where * is the number of CVE below)
 
+Release Notes - Openmeetings - Version 3.1.5
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-1530] - Secure Hash is broken
+    * [OPENMEETINGS-1532] - Recording folders not always imported as expected
+    * [OPENMEETINGS-1533] - Impossible to create Appointment using calendar WebService
+    * [OPENMEETINGS-1535] - Calendar web service range method is broken
+    * [OPENMEETINGS-1537] - external soap users unable to login to the conference room created
+    * [OPENMEETINGS-1539] - Calendar web service: delete method returns nothing on success
+    * [OPENMEETINGS-1540] - Placeholder in reset template email is not being replaced
+
+** Improvement
+    * [OPENMEETINGS-1531] - 3.1.5 - Library versions should be updated
+
+
 Release Notes - Openmeetings - Version 3.1.4
 ================================================================================================================
 ** Bug

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97c89e97/README
----------------------------------------------------------------------
diff --git a/README b/README
index 35469cf..df0af87 100644
--- a/README
+++ b/README
@@ -8,6 +8,19 @@ Apache OpenMeetings provides video conferencing, instant messaging, white board,
 collaborative document editing and other groupware tools using API functions of 
 the Red5 Streaming Server for Remoting and Streaming. 
 
+Release Notes 3.1.5
+=============
+see CHANGELOG file for detailed log
+
+Service release 5 for 3.1.0, provides following improvements:
+
+REST/SOAP
+* Room security hash is fixed
+* Calendar web service is fixed
+
+Other fixes in Import/Export and email templates
+
+
 Release Notes 3.1.4
 =============
 see CHANGELOG file for detailed log

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97c89e97/openmeetings-server/src/site/xdoc/NewsArchive.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/NewsArchive.xml b/openmeetings-server/src/site/xdoc/NewsArchive.xml
index 2220e65..2b60ec3 100644
--- a/openmeetings-server/src/site/xdoc/NewsArchive.xml
+++ b/openmeetings-server/src/site/xdoc/NewsArchive.xml
@@ -22,6 +22,39 @@
 	<body>
 		<section name="News">
 			<div class="bs-callout bs-callout-info">
+				<b>Version 3.1.4 released!</b>
+				<div>Service release 4 for 3.1.0, provides following improvements:<br/>
+					Room<br/>
+					<ul>
+						<li>Performance improvements</li>
+						<li>WB drawing is more smooth</li>
+						<li>WB tabs are now can be renamed</li>
+						<li>Multiple files can be selected in File tree, some issues are fixed</li>
+						<li>Poll results contains poll description</li>
+						<li>User list is fixed in restricted room</li>
+					</ul>
+					<br/>
+					Admin<br/>
+					<ul>
+						<li>Backup/Restore is fixed</li>
+						<li>Admin->Connections and Admin->Labels are fixed</li>
+					</ul>
+					<br/>
+					Other fixes in LDAP, groups, recordings, screen-sharing, calendar and installer<br/>
+					Italian and Ukrainian translations are improved
+					<br/>
+					<span class="bs-callout bs-callout-info">Please update to this release from any previous OpenMeetings release</span>
+				</div>
+				<br/>
+				<span>
+					47 issues are fixed please check <br/>
+					<a href="https://www.apache.org/dist/openmeetings/3.1.4/CHANGELOG">CHANGELOG</a> and
+					<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312720&amp;version=12338183">Detailed list</a>
+				</span>
+				<span> See <a href="downloads.html">Downloads page</a>.</span>
+				<span class="date">(2017-01-11)</span>
+			</div>
+			<div class="bs-callout bs-callout-info">
 				<b>Version 3.1.3 released!</b>
 				<div>Service release 3 for 3.1.0, provides security improvements:<br/>
 					Other fixes<br/>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97c89e97/openmeetings-server/src/site/xdoc/downloads.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/downloads.xml b/openmeetings-server/src/site/xdoc/downloads.xml
index 69375bd..fe6c816 100644
--- a/openmeetings-server/src/site/xdoc/downloads.xml
+++ b/openmeetings-server/src/site/xdoc/downloads.xml
@@ -26,8 +26,8 @@
 		<section name="Downloads">
 			<p>
 				All downloads can be verified using the Apache OpenMeetings code
-				signing <a href="https://www.apache.org/dist/openmeetings/3.1.4/KEYS">KEYS</a>, changes: <a 
-					href="https://www.apache.org/dist/openmeetings/3.1.4/CHANGELOG">CHANGELOG</a>.
+				signing <a href="https://www.apache.org/dist/openmeetings/3.1.5/KEYS">KEYS</a>, changes: <a 
+					href="https://www.apache.org/dist/openmeetings/3.1.5/CHANGELOG">CHANGELOG</a>.
 			</p>
 			<p>
 				All are available for download as source and binary.
@@ -35,21 +35,21 @@
 			
 			<subsection name="Latest Official Release">
 				<p>
-					Apache Openmeetings 3.1.4
+					Apache Openmeetings 3.1.5
 				</p>
 				<ul>
 					<li>
 						Binaries:
 						<ul>
 							<li>
-								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.zip">apache-openmeetings-3.1.4.zip</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.zip.asc">[SIG]</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.zip.sha256">[SHA256]</a>
+								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.5/bin/apache-openmeetings-3.1.5.zip">apache-openmeetings-3.1.5.zip</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.5/bin/apache-openmeetings-3.1.5.zip.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.5/bin/apache-openmeetings-3.1.5.zip.sha256">[SHA256]</a>
 							</li>
 							<li>
-								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.tar.gz">apache-openmeetings-3.1.4.tar.gz</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.tar.gz.asc">[SIG]</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.tar.gz.sha256">[SHA256]</a>
+								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.5/bin/apache-openmeetings-3.1.5.tar.gz">apache-openmeetings-3.1.5.tar.gz</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.5/bin/apache-openmeetings-3.1.5.tar.gz.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.5/bin/apache-openmeetings-3.1.5.tar.gz.sha256">[SHA256]</a>
 							</li>
 						</ul>
 					</li>
@@ -57,14 +57,14 @@
 						Sources:
 						<ul>
 							<li>
-								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.zip">apache-openmeetings-3.1.4-src.zip</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.zip.asc">[SIG]</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.zip.sha256">[SHA256]</a>
+								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.5/src/apache-openmeetings-3.1.5-src.zip">apache-openmeetings-3.1.5-src.zip</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.5/src/apache-openmeetings-3.1.5-src.zip.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.5/src/apache-openmeetings-3.1.5-src.zip.sha256">[SHA256]</a>
 							</li>
 							<li>
-								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.tar.gz">apache-openmeetings-3.1.4-src.tar.gz</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.tar.gz.asc">[SIG]</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.tar.gz.sha256">[SHA256]</a>
+								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.5/src/apache-openmeetings-3.1.5-src.tar.gz">apache-openmeetings-3.1.5-src.tar.gz</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.5/src/apache-openmeetings-3.1.5-src.tar.gz.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.5/src/apache-openmeetings-3.1.5-src.tar.gz.sha256">[SHA256]</a>
 							</li>
 						</ul>
 					</li>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97c89e97/openmeetings-server/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/index.xml b/openmeetings-server/src/site/xdoc/index.xml
index bf53550..ef15a70 100644
--- a/openmeetings-server/src/site/xdoc/index.xml
+++ b/openmeetings-server/src/site/xdoc/index.xml
@@ -69,37 +69,26 @@
 		</section>
 		<section name="News">
 			<div class="bs-callout bs-callout-danger">
-				<b>Version 3.1.4 released!</b>
-				<div>Service release 4 for 3.1.0, provides following improvements:<br/>
-					Room<br/>
+				<b>Version 3.1.5 released!</b>
+				<div>Service release 5 for 3.1.0, provides following improvements:<br/>
+					REST/SOAP<br/>
 					<ul>
-						<li>Performance improvements</li>
-						<li>WB drawing is more smooth</li>
-						<li>WB tabs are now can be renamed</li>
-						<li>Multiple files can be selected in File tree, some issues are fixed</li>
-						<li>Poll results contains poll description</li>
-						<li>User list is fixed in restricted room</li>
+						<li>Room security hash is fixed</li>
+						<li>Calendar web service is fixed</li>
 					</ul>
 					<br/>
-					Admin<br/>
-					<ul>
-						<li>Backup/Restore is fixed</li>
-						<li>Admin->Connections and Admin->Labels are fixed</li>
-					</ul>
-					<br/>
-					Other fixes in LDAP, groups, recordings, screen-sharing, calendar and installer<br/>
-					Italian and Ukrainian translations are improved
+					Other fixes in Import/Export and email templates
 					<br/>
 					<span class="bs-callout bs-callout-info">Please update to this release from any previous OpenMeetings release</span>
 				</div>
 				<br/>
 				<span>
-					47 issues are fixed please check <br/>
-					<a href="https://www.apache.org/dist/openmeetings/3.1.4/CHANGELOG">CHANGELOG</a> and
-					<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312720&amp;version=12338183">Detailed list</a>
+					8 issues are fixed please check <br/>
+					<a href="https://www.apache.org/dist/openmeetings/3.1.5/CHANGELOG">CHANGELOG</a> and
+					<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312720&amp;version=12338819">Detailed list</a>
 				</span>
 				<span> See <a href="downloads.html">Downloads page</a>.</span>
-				<span class="date">(2017-01-11)</span>
+				<span class="date">(2017-01-28)</span>
 			</div>
 			<div class="bs-callout bs-callout-info">
 				<span class="date"><a href="NewsArchive.html">You can find older news here</a></span>


[13/50] [abbrv] openmeetings git commit: no jira: white-space fixes

Posted by so...@apache.org.
no jira: white-space fixes


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

Branch: refs/heads/3.1.x
Commit: 2b3cbbd51de8a32dcf401223350a9a3c41e829fa
Parents: 4c54867
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Jan 3 07:22:46 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Jan 3 07:22:46 2017 +0000

----------------------------------------------------------------------
 .../swf/base/hibernate/hibRtmpConnection.lzx    | 268 +++++++++----------
 .../installation/ImportInitvalues.java          |   2 +-
 .../openmeetings/web/admin/users/UserForm.html  |   4 +-
 .../openmeetings/web/admin/users/UserForm.java  |   2 +-
 .../web/admin/users/UsersPanel.html             |   2 +-
 5 files changed, 139 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b3cbbd5/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx b/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
index d0b62ac..ea751fc 100644
--- a/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
+++ b/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
@@ -7,19 +7,19 @@
   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
-		  
+
+      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.
-  
+
 -->
 <library>
-	
+
 <class name="userStatus" extends="view" width="250" height="30">
 	<attribute name="statusText" type="string" />
 	<attribute name="statusColor" type="number" value="0" />
@@ -48,55 +48,55 @@
 		</when>
 	</switch>
 	<attribute name="counterror" type="number" value="0" />
-	
+
 	<attribute name="loaderVar" value="null" />
-	
+
 	<attribute name="userScope" value="hibernate" type="string" />
-	
+
 	<!-- refreshing the session regulary -->
 	<attribute name="refreshDelegate" value="null" />
-	
+
 	<!-- UserId-->
 	<attribute name="UserID" value="1" type="number" />
 	<!-- reconnect after each conferenceView -->
 	<attribute name="reconnectedRoomInstance" value="null" />
-	
+
 	<attribute name="reconnectionAction" value="false" type="boolean" />
 	<attribute name="reconnectObjRef" value="null" />
-		 
+
 	 <attribute name="userobject" value="null" />
-	 
+
 	 <!-- default will be loaded on startup -->
 	 <attribute name="userlang" value="1" type="number" />
-	 
+
 	 <!-- The default Language will be loaded on init  -->
 	 <attribute name="initlanguageLoaded" value="false" type="boolean" />
-	 
+
 	 <!-- This domain is the orgdomain used in the video-conference -->
 	 <attribute name="conferencedomain" value="public" type="string" />
-	 
+
 	 <!-- if this connection is used for testing the app
 	 see test-setup.lzx -->
 	 <attribute name="testAppLoading" value="false" type="boolean" />
-	 
-	 <!-- 
+
+	 <!--
 		the real ROOM_ID
 	 -->
 	 <attribute name="currentroomid" value="0" type="number" />
-	 
+
 	 <!--- the current Invitation-Object -->
 	 <attribute name="currentInvitation" value="null" />
-	
+
 	<!-- shows what kind of conferenceView it is at the moment
 		wether its conferenceView or audienceView -->
 	<attribute name="modus" value="" type="string" />
-	
+
 	<attribute name="showKickMessage" value="false" type="boolean"/>
 	<attribute name="showFullMessage" value="false" type="boolean"/>
-		 
+
 	<attribute name="useRTMPT" value="false" type="boolean" />
 	<attribute name="connected" value="false" type="boolean" />
-	
+
 	<method name="getProtocol">
 		if (canvas.useSSL) {
 			return "rtmps";
@@ -106,7 +106,7 @@
 		}
 		return "rtmp";
 	</method>
-	
+
 	<method name="getPort">
 		if (canvas.useSSL) {
 			return canvas.rtmpsslport;
@@ -116,26 +116,26 @@
 		}
 		return canvas.rtmpport;
 	</method>
-	
+
 	<method name="getHost">
 		return canvas.rtmphostlocal;
 	</method>
-	
+
 	<method name="getWebappRootKey">
 		return canvas.webAppRootKey;
 	</method>
-		 
-	<!-- 
-		canvas.getUrl() can not be reused since it has different protocol and port 
+
+	<!--
+		canvas.getUrl() can not be reused since it has different protocol and port
 		and potentially in cluster another host, the only thing that stays the same
 		no matter if hosted on slave or on master, is the scope, so
 		userScope always stays the same
 	 -->
 	<method name="getUrl">
-		return this.getProtocol() + '://' + this.getHost() + ':' + this.getPort() 
+		return this.getProtocol() + '://' + this.getHost() + ':' + this.getPort()
 					+ '/' + this.getWebappRootKey() + '/' + this.userScope;
 	</method>
-			 
+
 	 <!--
 		The onconnect Method is triggered several times:
 			 - When you enter a room the NetConnection will close and reconnect to the Scope of the Room
@@ -168,9 +168,9 @@
 			if (canvas.thishib.loaderVar != null) {
 				canvas.thishib.loaderVar.setProgress();
 			}
-			
+
 			//Load Session Data
-			this.getsessiondata.doCall();	
+			this.getsessiondata.doCall();
 		}
 		connected = true;
 		client.setNewBroadCastingFlag = this.setNewBroadCastingFlag;
@@ -205,18 +205,18 @@
 		client.startedPublishing = this.startedPublishing;
 		client.newPoll = this.newPoll;
 	</handler>
-	
+
 	<handler name="ondisconnect">
 		connected = false;
 	</handler>
-	
+
 	<method name="reconnectComplete">
 		if (this.reconnectionAction){
 			this.reconnectionAction = false;
 		}
 		canvas.currentContentView.sendInit.sendEvent(this);
 	</method>
-	
+
 	<handler name="onerror" >
 	<![CDATA[
 		canvas.remoteLogWrite("error status='" + this.status + "'; src='" + this.src + "'; lastCalled='" + this.lastCalled
@@ -249,7 +249,7 @@
 			if ($debug) Debug.write("this.reconnectionAction: ", this.lastCalled);
 			this.connect();
 		} else {
-			if (canvas.isRemoteUser() && (this.status == 'NetConnection.Connect.Closed' 
+			if (canvas.isRemoteUser() && (this.status == 'NetConnection.Connect.Closed'
 					|| this.status == 'NetConnection.Connect.NetworkChange'))
 			{
 				if (null != canvas.REDIRECT_URL_FOR_EXTERNAL_USERS) {
@@ -284,14 +284,14 @@
 			}
 		}
 	]]>
-	</handler>	
-	
+	</handler>
+
 	<method name="refreshSessionMeth" args="calleeObj">
 		this.refreshSession.doCall();
 	</method>
-	
+
 	<!-- This Function is just for refreshing the Session -->
-	<netRemoteCallHib name="refreshSession" funcname="userservice.refreshSession" showLoading="false" >	
+	<netRemoteCallHib name="refreshSession" funcname="userservice.refreshSession" showLoading="false" >
 		<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
 		<handler name="ondata" args="value">
 			//if ($debug) Debug.write("hibRtmpConnection/refreshSession [",value,"]");
@@ -299,7 +299,7 @@
 		</handler>
 	</netRemoteCallHib>
 
-	<netRemoteCallHib name="getsessiondata" funcname="xmlcrm.getsessiondata" >	  
+	<netRemoteCallHib name="getsessiondata" funcname="xmlcrm.getsessiondata" >
 		<handler name="ondata" args="value">
 			//The onResult-Handler will be called be the rtmpconnection
 			if ($debug) Debug.write("hibRtmpConnection/getsessiondata [",value,"]");
@@ -309,29 +309,29 @@
 				canvas.thishib.loaderVar.setProgress();
 			}
 			parent.getPublicSID.doCall();
-		</handler>  
+		</handler>
 	</netRemoteCallHib>
-	 
-	<netRemoteCallHib name="getPublicSID" funcname="getPublicSID" >	  
+
+	<netRemoteCallHib name="getPublicSID" funcname="getPublicSID" >
 		<handler name="ondata" args="value">
 			//The onResult-Handler will be called be the rtmpconnection
 			if ($debug) Debug.write("hibRtmpConnection/getPublicSID [",value,"]");
-			canvas.publicSID = value;	 
+			canvas.publicSID = value;
 			if (canvas.thishib.loaderVar != null) {
 				canvas.thishib.loaderVar.setProgress();
 			}
 			parent.getDefaultLanguage.doCall();
-		</handler>  
+		</handler>
 	</netRemoteCallHib>
-	
-	<netRemoteCallHib name="overwritePublicSID" funcname="overwritePublicSID" >	 
+
+	<netRemoteCallHib name="overwritePublicSID" funcname="overwritePublicSID" >
 		<netparam><method name="getValue"> return canvas.publicSID;</method></netparam>
 		<handler name="ondata" args="value">
 			//The onResult-Handler will be called be the rtmpconnection
 			if ($debug) Debug.write("overwritePublicSID: ",value);
-		</handler>  
-	</netRemoteCallHib>	
-	
+		</handler>
+	</netRemoteCallHib>
+
 	<method name="setDefaultUserLanguage">
 		<![CDATA[
 			if (userlang == -1 && canvas.language_id != 0) {
@@ -341,22 +341,22 @@
 			}
 		]]>
 	</method>
-	
-	<netRemoteCallHib name="setUsernameReconnect" funcname="setUsernameReconnect" remotecontext="$once{ canvas.thishib }" >   
+
+	<netRemoteCallHib name="setUsernameReconnect" funcname="setUsernameReconnect" remotecontext="$once{ canvas.thishib }" >
 		<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
 		<netparam><method name="getValue">return canvas.userId;</method></netparam>
 		<netparam><method name="getValue">return canvas.currentuser;</method></netparam>
 		<netparam><method name="getValue">return canvas.firstName;</method></netparam>
-		<netparam><method name="getValue">return canvas.lastName;</method></netparam>   
-		<netparam><method name="getValue">return canvas.picture_uri;</method></netparam>   
+		<netparam><method name="getValue">return canvas.lastName;</method></netparam>
+		<netparam><method name="getValue">return canvas.picture_uri;</method></netparam>
 		<handler name="ondata" args="value">
 			//The onResult-Handler will be called be the rtmpconnection
-			if ($debug) Debug.write("setUsernameReconnect: ",canvas.userId,value);   
+			if ($debug) Debug.write("setUsernameReconnect: ",canvas.userId,value);
 			parent.reconnectComplete();
-		</handler>  
-	</netRemoteCallHib>	
-		
-	<netRemoteCallHib name="getDefaultLanguage" funcname="languageservice.getDefaultLanguage" >	  
+		</handler>
+	</netRemoteCallHib>
+
+	<netRemoteCallHib name="getDefaultLanguage" funcname="languageservice.getDefaultLanguage" >
 		<handler name="ondata" args="value">
 			//The onResult-Handler will be called be the rtmpconnection
 			canvas.default_lang_id = value;
@@ -410,20 +410,20 @@
 					new lz.errorPopup(canvas,{error:'Invalid Hash'});
 					return;
 				}
-				
+
 				canvas.showNickNameDialog = value.showNickNameDialog;
 				if ($debug) Debug.write("secureLoginByRemote1: ",canvas.showNickNameDialog);
-				
+
 				canvas.initroomid = value.roomId;
 				canvas.becomemoderator = value.becomemoderator;
 				canvas.showAudioVideoTest = value.showAudioVideoTest;
-				
+
 				canvas.roomRecordingId = value.roomRecordingId;
-				
+
 				if (canvas.roomRecordingId == null) {
 					canvas.roomRecordingId = 0;
 				}
-				
+
 				if (canvas.showNickNameDialog) {
 					new lz.chooseNickName(canvas);
 				} else {
@@ -434,24 +434,24 @@
 		</handler>
 	</netRemoteCallHib>
 
-	<netRemoteCallHib name="loginUserByRemote" activeErrorHandler="true" 
-		funcname="xmlcrm.loginUserByRemote" >		  
+	<netRemoteCallHib name="loginUserByRemote" activeErrorHandler="true"
+		funcname="xmlcrm.loginUserByRemote" >
 		<netparam name="remoteSessionId"><method name="getValue">return canvas.remoteUserSid;</method></netparam>
 		<handler name="ondata" args="value">
 		<![CDATA[
-			
+
 			//The onResult-Handler will be called be the rtmpconnection
 			if ($debug) Debug.write("loginUserByRemote -1-: ",value);
 			if ($debug) Debug.write("loginUserByRemote -2-: ",canvas.remoteUserSid);
 			if (value<0){
-				
+
 			} else {
 				parent.getCurrentRoomClient.doCall();
 			}
 		]]>
 		</handler>
 	</netRemoteCallHib>
-	
+
 	<netRemoteCallHib name="getCurrentRoomClient" funcname="xmlcrm.getCurrentRoomClient" >
 		<netparam name="sessionId"><method name="getValue">return canvas.sessionId;</method></netparam>
 		<handler name="ondata" args="value">
@@ -461,18 +461,18 @@
 			if (value != null) {
 				canvas.currentClient = value;
 				canvas.setAttribute('currentuser', value.firstname+" "+value.lastname);
-				
+
 				//Somehow this leads to a bug in the implementation of the secure User Login
 				canvas.setAttribute('userId', value.userId);
-				
+
 				canvas.setAttribute('allowRecording', value.allowRecording);
-				
+
 				var fName = value.firstname == null ? "" : value.firstname;
 				var lName = value.lastname == null ? "" : value.lastname;
 				canvas.setAttribute('firstName', fName);
 				canvas.setAttribute('lastName', lName);
 				canvas.setAttribute('mail', value.email);
-				
+
 				if (canvas.isRemoteUser() && !fName && !lName) {
 					if ($debug) Debug.write("!!!!!!!!!!! Nickname HIB ", value.email);
 					new lz.chooseNickName(canvas);
@@ -480,11 +480,11 @@
 				hib.userobject.id = value.userId;
 				hib.userobject.firstname = fName;
 				hib.userobject.lastname = lName;
-				
+
 				canvas.setAttribute('lastLogin','');
 				canvas.setAttribute('picture_uri', value.picture_uri);
 				canvas.setAttribute('language','');
-				
+
 				if (canvas.wicketroomid > 0) {
 					canvas.initroomid = canvas.wicketroomid;
 				} else {
@@ -528,8 +528,8 @@
 		<attribute name="step" value="100" type="number" />
 		<attribute name="max" value="1607" type="number" />
 		<netparam><method name="getValue">return parent.parent.userlang;</method></netparam>
-		<netparam><method name="getValue">return parent.start;</method></netparam> 
-		<netparam><method name="getValue">return parent.step;</method></netparam> 
+		<netparam><method name="getValue">return parent.start;</method></netparam>
+		<netparam><method name="getValue">return parent.step;</method></netparam>
 		<handler name="ondata" args="value">
 			<![CDATA[
 			if($debug) Debug.write("hibRtmpConnection/userlang:[",parent.userlang,"]");
@@ -556,9 +556,9 @@
 					}
 				}
 			]]>
-		</handler>  
+		</handler>
 	</netRemoteCallHib>
-		
+
 	<method name="setUser" args="user">
 		if (!user) {
 			new lz.errorPopup(canvas,{error:"Missing User Object"});
@@ -566,7 +566,7 @@
 		hib.userobject = user;
 		canvas.userId = hib.userobject.id;
 	</method>
-	
+
 	<netRemoteCallHib name="getGeneralOptions" funcname="xmlcrm.getGeneralOptions">
 		<handler name="ondata" args="value">
 		<![CDATA[
@@ -600,15 +600,15 @@
 			}
 			if (canvas.wicketsid != null) {
 				parent.loginWicket.doCall();
-			} else { 
+			} else {
 				if (canvas.thishib.loaderVar != null) {
 					canvas.thishib.loaderVar.close();
 				}
 				//do not show loggin-PopUp for the test-Application
-				if (parent.testAppLoading){ 
+				if (parent.testAppLoading){
 					canvas.loadNextStepTestApp();
 				} else if (!!canvas.invitationHash) {
-					parent.getInvitationByHash.doCall();   
+					parent.getInvitationByHash.doCall();
 				} else if (canvas.secureRemoteUserLogin) {
 					if ($debug) Debug.write("secureLoginByRemote:: ",canvas.secureHash);
 					hib.userobject = {};
@@ -654,9 +654,9 @@
 		]]>
 		</handler>
 	</netRemoteCallHib>
-	
-	<netRemoteCallHib name="setUsernameAndSession" funcname="setUsernameAndSession" remotecontext="$once{ canvas.thishib }" >   
-		<netparam><method name="getValue"> return canvas.sessionId; </method></netparam> 
+
+	<netRemoteCallHib name="setUsernameAndSession" funcname="setUsernameAndSession" remotecontext="$once{ canvas.thishib }" >
+		<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
 		<netparam><method name="getValue">return canvas.userId;</method></netparam>
 		<netparam><method name="getValue">return canvas.currentuser;</method></netparam>
 		<netparam><method name="getValue">return canvas.firstName;</method></netparam>
@@ -669,15 +669,15 @@
 			}
 		</handler>
 	</netRemoteCallHib>
-	
+
 	<netRemoteCallHib name="testMethod" funcname="testMethod">
 		<handler name="ondata" args="value">
 			//The onResult-Handler will be called be the rtmpconnection
 			if ($debug) Debug.write("testMethod ",value);
-		</handler>  
+		</handler>
 	</netRemoteCallHib>
 
-	<!--- Notification of new User --> 
+	<!--- Notification of new User -->
 	<method name="addNewUser" args="value">
 		//The onResult-Handler will be called be the rtmpconnection
 		if ($debug) Debug.write("addNewUser: ", value);
@@ -691,8 +691,8 @@
 			}
 		}
 		canvas.setAttribute('numberofpartners',canvas.numberofpartners+1);
-	</method>	
-	
+	</method>
+
 	<netRemoteCallHib name="getCurrentModeratorList" funcname="getCurrentModeratorList">
 		<handler name="ondata" args="value">
 		<![CDATA[
@@ -734,7 +734,7 @@
 		]]>
 		</handler>
 	</netRemoteCallHib>
-	
+
 	<method name="newStream" args="value">
 		//The onResult-Handler will be called be the rtmpconnection
 		if ($debug) Debug.write("newStream: ",value);
@@ -742,7 +742,7 @@
 			return;
 		}
 		canvas.commonVideoViewContent.startStream(value);
-	</method> 
+	</method>
 
 	<method name="closeStream" args="value">
 		//The onResult-Handler will be called be the rtmpconnection
@@ -770,8 +770,8 @@
 		if ($debug) Debug.write("**** closeStream: ",value);
 		if ($debug) Debug.write(" onResult stopScreenSharingMessage : ",value.streamPublishName);
 		canvas.commonVideoViewContent.closeScreenSharing(value);
-	</method> 
-		 
+	</method>
+
 	<netRemoteCallHib name="clientregisterRoom" funcname="clientregisterRoom">
 		<handler name="ondata" args="value">
 			if ($debug) Debug.write("**** clientregisterRoom::ondata ", value);
@@ -889,8 +889,8 @@
 		this.setUserStatus(canvas._drawarea, value[0], value[1]);
 		canvas._drawarea.parent.parent.parent.sendWatchObjectByWhiteboard(value[1]);
 	]]>
-	</method> 
-	
+	</method>
+
 	<method name="loadWmlToWhiteboardById" args="value">
 	<![CDATA[
 		//The onResult-Handler will be called be the rtmpconnection
@@ -912,7 +912,7 @@
 			]]>
 		</handler>
 	</netRemoteCallHib>
-	
+
 	<netRemoteCallHib name="removeModerator" funcname="removeModerator">
 		<attribute name="publicSIDOfNewModerator" value="0" type="string" />
 		<netparam name="vars"><method name="getValue">return parent.publicSIDOfNewModerator;</method></netparam>
@@ -923,9 +923,9 @@
 			]]>
 		</handler>
 	</netRemoteCallHib>
-	
+
 	<!--
-	public synchronized Long setBroadCastingFlag(String publicSID, boolean value, boolean canVideo, Integer podId) 
+	public synchronized Long setBroadCastingFlag(String publicSID, boolean value, boolean canVideo, Integer podId)
 	 -->
 	<netRemoteCallHib name="setBroadCastingFlag" funcname="setBroadCastingFlag">
 		<attribute name="publicSIDOfNewModerator" value="0" type="string" />
@@ -944,7 +944,7 @@
 			]]>
 		</handler>
 	</netRemoteCallHib>
-	
+
 	<method name="setNewBroadCastingFlag" args="value">
 	<![CDATA[
 		//The onResult-Handler will be called be the rtmpconnection
@@ -954,7 +954,7 @@
 			canvas.commonVideoViewContent.toggleVideo(value.canVideo);
 			canvas.setAttribute("isBroadCasting", value.isBroadcasting);
 			canvas.setAttribute("canVideo", value.canVideo);
-			
+
 			if ($debug) Debug.write("Its about You ", value);
 			if (value.isBroadcasting) {
 				if (canvas.thishib.modus == "interview") {
@@ -1008,7 +1008,7 @@
 		canvas.commonVideoViewContent.updateCursorScreenSharing(value);
 	]]>
 	</method>
-	
+
 	<!--
 		Red5 Screen Sharing
 	 -->
@@ -1020,7 +1020,7 @@
 		//if ($debug) Debug.write(" onResult newScreenSharing 3 : ",canvas.streamid);
 		if ($debug) Debug.write(" onResult newScreenSharing 4 : ",value.streamPublishName);
 		if ($debug) Debug.write(" onResult newcreenSharing 5 : ",canvas.publicSID);
-		
+
 		canvas.commonVideoViewContent.newScreenSharing(value);
 	]]>
 	</method>
@@ -1113,7 +1113,7 @@
 	<![CDATA[
 		if ($debug) Debug.write("setNewModeratorByList ",value);
 		canvas.analyzeModerationList(value);
-		
+
 		//The onResult-Handler will be called be the rtmpconnection
 		canvas.currentModeratorList = value;
 		//Update Moderation Flag
@@ -1127,7 +1127,7 @@
 			<![CDATA[
 			//The onResult-Handler will be called be the rtmpconnection
 			//Debug.write("getValue : ",value);
-			
+
 			]]>
 		</handler>
 	</netRemoteCallHib>
@@ -1141,11 +1141,11 @@
 		]]>
 		</handler>
 	</netRemoteCallHib>
-	
+
 	<method name="sendVarsToMessage" args="value">
 	<![CDATA[
 		//The onResult-Handler will be called be the rtmpconnection
-		//Debug.write("sendVarsToMessage : ", value);
+		//if ($debug) Debug.write("sendVarsToMessage : ", value);
 		if (value[0]=='audioActivity'){
 			//canvas.currentModApply
 			//if ($debug) Debug.write("audioActivity Client ",value[1],value[2]);
@@ -1206,9 +1206,9 @@
 		</handler>
 	</netRemoteCallHib>
 
-	<netRemoteCallHib name="sendMessageWithClient" funcname="sendMessageWithClient" 
-			remotecontext="$once{ canvas.thishib }" >  
-		
+	<netRemoteCallHib name="sendMessageWithClient" funcname="sendMessageWithClient"
+			remotecontext="$once{ canvas.thishib }" >
+
 		<attribute name="messageObj" value="null" />
 		<method name="sendMessage" args="typeName,messageObject">
 			this.messageObj = new Object();
@@ -1216,7 +1216,7 @@
 			this.messageObj[1] = messageObject;
 			this.doCall();
 		</method>
-		
+
 		<method name="sendAdvMessage" args="typeName,messageObject,tStamp">
 			this.messageObj = new Object();
 			this.messageObj[0] = typeName;
@@ -1224,7 +1224,7 @@
 			this.messageObj[2] = tStamp;
 			this.doCall();
 		</method>
-		
+
 		<netparam name="vars"><method name="getValue">return parent.messageObj;</method></netparam>
 		<handler name="ondata" args="value">
 			//The onResult-Handler will be called be the rtmpconnection
@@ -1242,14 +1242,14 @@
 			this.disconnect();
 		} else if (value.message[0]=='copiedText'){
 			//canvas.currentModApply
-			
+
 			if ($debug) Debug.info("copiedText :: ",value.message[1]);
 			//System.setClipboard(value.message[1]);
 			//lz.Browser.setClipboard(value.message[1]);
 			//LzBrowserKernel.setClipboard (value.message[1]);
 			//import flash.System;
 			//flash.System.setClipboard(value.message[1]);
-			
+
 			new lz.copiedTextPopup(canvas,{error:value.message[1]});
 		} else if (value.message[0]=='applyforMod'){
 			//canvas.currentModApply
@@ -1352,7 +1352,7 @@
 			if ($debug) Debug.warn("sendVarsToMessageWithClient unkown message ",value);
 		}
 	]]>
-	</method>	 
+	</method>
 
 	<method name="newMessageByRoomAndDomain" args="value">
 	<![CDATA[
@@ -1390,7 +1390,7 @@
 		}
 	]]>
 	</method>
-	
+
 	<method name="sendVarsToModeratorGeneral" args="value">
 	<![CDATA[
 		//The onResult-Handler will be called be the rtmpconnection
@@ -1420,13 +1420,13 @@
 			parent.checkScreenSharing.doCall();
 		</handler>
 	</netRemoteCallHib>
-	
+
 	<method name="startedPublishing" args="value">
 		if ($debug) Debug.write("startedPublishing: ", value);
 		canvas._mymod.publishingObj = {user: value[0], url: value[1]};
 		canvas._mymod.setMessage();
 	</method>
-	
+
 	<method name="roomConnect" args="value">
 		if ($debug) Debug.write("roomConnect: ", value);
 		if (!!canvas._videocontainer) {
@@ -1434,7 +1434,7 @@
 					, '', value.formatedDate, value.userpos, value.usercolor, value);
 		}
 	</method>
-	
+
 	<method name="nickNameSet" args="value">
 		if ($debug) Debug.write("nickNameSet: ", value);
 		if (canvas.publicSID == value.publicSID) {
@@ -1451,7 +1451,7 @@
 			canvas._videocontainer._participants.updateByPublicSID(value.publicSID, value);
 		}
 	</method>
-	
+
 	<!-- Whiteboard sync Events -->
 	<method name="sendSyncFlag" args="value">
 	<![CDATA[
@@ -1461,8 +1461,8 @@
 			canvas.syncWindow = new lz.syncWin(canvas.main_content._content.inner, {labelid: 558, labeliderror: 559});
 		}
 	]]>
-	</method>	 
-	
+	</method>
+
 	<method name="sendSyncCompleteFlag" args="value">
 	<![CDATA[
 		//The onResult-Handler will be called be the rtmpconnection
@@ -1472,8 +1472,8 @@
 			canvas.syncWindow = null;
 		}
 	]]>
-	</method>  
-	
+	</method>
+
 	<!-- Whiteboard Object Sync Process -->
 	<method name="sendObjectSyncFlag" args="value">
 	<![CDATA[
@@ -1483,8 +1483,8 @@
 			canvas.syncImageWindow = new lz.syncWin(canvas.main_content._content.inner, {labeliderror: 591});
 		}
 	]]>
-	</method>	 
-	
+	</method>
+
 	<method name="sendObjectSyncCompleteFlag" args="value">
 	<![CDATA[
 		//The onResult-Handler will be called be the rtmpconnection
@@ -1494,8 +1494,8 @@
 			canvas.syncImageWindow = null;
 		}
 	]]>
-	</method>  
-	
+	</method>
+
 	<!-- Recording of Meetings -->
 	<method name="interviewStatus" args="value">
 	<![CDATA[
@@ -1503,15 +1503,15 @@
 		if ($debug) Debug.write("interviewStatus: ",value);
 		canvas._drawarea.reloadStatus();
 	]]>
-	</method>  
-	
+	</method>
+
 	<method name="clearChatContent" args="value">
 	<![CDATA[
 		//The onResult-Handler will be called be the rtmpconnection
 		canvas._chatcontent.reload();
 	]]>
-	</method> 
-	
+	</method>
+
 	<netRemoteCallHib name="setCanGiveAudio" funcname="whiteboardservice.setCanGiveAudio"
 				   remotecontext="$once{ canvas.thishib }">
 		<attribute name="publicSID" value="" type="string" />

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b3cbbd5/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 055edd6..78d0ec5 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
@@ -348,7 +348,7 @@ public class ImportInitvalues {
 				"Users entered the room via invitationHash or secureHash will be redirected to this URL on connection lost");
 		cfgDao.add(CONFIG_CALENDAR_FIRST_DAY, "0", null, "The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc.");
 		cfgDao.add(CONFIG_GOOGLE_ANALYTICS_CODE, null, null, "Code for Google Analytics");
-		
+
 		log.debug("Configurations ADDED");
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b3cbbd5/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
index 81bb941..e6c25c2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
@@ -9,7 +9,7 @@
   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
@@ -64,4 +64,4 @@
 		</fieldset>
 	</div>
 </wicket:panel>
-</html>
\ No newline at end of file
+</html>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b3cbbd5/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index 3e6ddb4..2fbe532 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -107,7 +107,7 @@ public class UserForm extends AdminBaseForm<User> {
 		super.onModelChanged();
 		generalForm.updateModelObject(getModelObject(), true);
 	}
-	
+
 	@Override
 	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
 		User u = getModelObject();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b3cbbd5/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
index 25ec8fb..d12ff6d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
@@ -9,7 +9,7 @@
   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


[15/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1467] wicketstuff, wicket-jquery-ui and openjpa are updated, hacks removed

Posted by so...@apache.org.
[OPENMEETINGS-1467] wicketstuff, wicket-jquery-ui and openjpa are updated, hacks removed


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

Branch: refs/heads/3.1.x
Commit: 5bb670d87755560e105b83a04a2932e0235b4525
Parents: c8c94d2
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sun Jan 8 05:30:46 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sun Jan 8 05:30:46 2017 +0000

----------------------------------------------------------------------
 openmeetings-db/pom.xml                         |  2 +-
 .../web/common/GeneralUserForm.java             |  3 +-
 .../web/common/KendoCultureHeaderItem.java      | 50 --------------------
 .../web/common/OmDateTimePicker.java            |  3 +-
 pom.xml                                         |  4 +-
 5 files changed, 7 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5bb670d8/openmeetings-db/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 9c96b72..38abf36 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -30,7 +30,7 @@
 	<name>Openmeetings DB</name>
 	<description>TODO</description>
 	<properties>
-		<openjpa.version>2.4.1</openjpa.version>
+		<openjpa.version>2.4.2</openjpa.version>
 		<asterisk-java.version>1.0.0-final</asterisk-java.version>
 		<commons-dbcp.version>2.1.1</commons-dbcp.version>
 		<commons-pool.version>1.6</commons-pool.version> <!-- required by OpenJPA for clustering -->

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5bb670d8/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
index da5ad39..b336c0b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
@@ -64,6 +64,7 @@ import org.wicketstuff.select2.ChoiceProvider;
 import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2MultiChoice;
 
+import com.googlecode.wicket.kendo.ui.KendoCultureHeaderItem;
 import com.googlecode.wicket.kendo.ui.form.datetime.local.AjaxDatePicker;
 
 public class GeneralUserForm extends Form<User> {
@@ -215,6 +216,6 @@ public class GeneralUserForm extends Form<User> {
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
-		response.render(KendoCultureHeaderItem.get());
+		response.render(KendoCultureHeaderItem.of(WebSession.get().getLocale()));
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5bb670d8/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/KendoCultureHeaderItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/KendoCultureHeaderItem.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/KendoCultureHeaderItem.java
deleted file mode 100644
index 1a17723..0000000
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/KendoCultureHeaderItem.java
+++ /dev/null
@@ -1,50 +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.web.common;
-
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-
-import com.googlecode.wicket.kendo.ui.KendoCulture;
-import com.googlecode.wicket.kendo.ui.resource.KendoCultureResourceReference;
-
-public class KendoCultureHeaderItem {
-	private static Set<String> CULTURES = new HashSet<>();
-
-	public static JavaScriptHeaderItem get() {
-		if (CULTURES.isEmpty()) {
-			for (KendoCulture c : KendoCulture.values()) {
-				CULTURES.add(c.toString());
-			}
-		}
-		Locale l = WebSession.get().getLocale();
-		String culture = l.toLanguageTag();
-		if (!CULTURES.contains(culture)) {
-			culture = l.getLanguage();
-			if (!CULTURES.contains(culture)) {
-				culture = Locale.ENGLISH.getLanguage();
-			}
-		}
-		return JavaScriptHeaderItem.forReference(new KendoCultureResourceReference(culture));
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5bb670d8/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java
index 6fd0ede..042f04f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java
@@ -28,6 +28,7 @@ import org.threeten.bp.LocalDateTime;
 import org.threeten.bp.LocalTime;
 
 import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.kendo.ui.KendoCultureHeaderItem;
 import com.googlecode.wicket.kendo.ui.form.datetime.local.DatePicker;
 import com.googlecode.wicket.kendo.ui.form.datetime.local.DateTimePicker;
 import com.googlecode.wicket.kendo.ui.form.datetime.local.TimePicker;
@@ -52,6 +53,6 @@ public class OmDateTimePicker extends DateTimePicker {
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
-		response.render(KendoCultureHeaderItem.get());
+		response.render(KendoCultureHeaderItem.of(WebSession.get().getLocale()));
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5bb670d8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 44bb5c2..23bc182 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,8 +41,8 @@
 		<maven.surefire.version>2.19.1</maven.surefire.version>
 		<maven-site.version>3.3</maven-site.version>
 		<wicket.version>7.6.0</wicket.version>
-		<wicketju.version>7.5.0</wicketju.version>
-		<wickets.version>7.5.0</wickets.version>
+		<wicketju.version>7.6.0</wicketju.version>
+		<wickets.version>7.6.0</wickets.version>
 		<wicketws.version>7.6.0</wicketws.version>
 		<red5-server.version>1.0.8-RELEASE</red5-server.version>
 		<red5-client.version>1.0.8-RELEASE</red5-client.version>


[37/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1540] placeholder is replaced in email

Posted by so...@apache.org.
[OPENMEETINGS-1540] placeholder is replaced in email


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

Branch: refs/heads/3.1.x
Commit: 304a4884850018a5c7f82210ffa337252299395b
Parents: aedef5c
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Jan 21 03:43:30 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Jan 21 03:43:30 2017 +0000

----------------------------------------------------------------------
 .../service/mail/template/ResetPasswordTemplate.html             | 4 ++--
 .../service/mail/template/ResetPasswordTemplate.java             | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/304a4884/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.html
----------------------------------------------------------------------
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.html b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.html
index a6d5e04..a02fbf3 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.html
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.html
@@ -9,7 +9,7 @@
   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
@@ -20,7 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
-	<b><wicket:message key="513"/></b><br />
+	<b><span wicket:id="reset-header"></span></b><br />
 	<b><wicket:message key="514"/></b><br/>
 	<a wicket:id="reset_link1"><wicket:message key="515"/></a><br/>
 	<wicket:message key="516"/><br/>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/304a4884/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java
----------------------------------------------------------------------
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java
index 4c07bab..9531f2c 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java
@@ -27,10 +27,11 @@ public class ResetPasswordTemplate extends AbstractTemplatePanel {
 
 	public ResetPasswordTemplate(String link) {
 		super(getOmSession().getLocale());
+		add(new Label("reset-header", getString("513", locale)));
 		add(new ExternalLink("reset_link1", link));
 		add(new Label("reset_link2", link));
 	}
-	
+
 	public static String getEmail(String link) {
 		return ComponentRenderer.renderComponent(new ResetPasswordTemplate(link)).toString();
 	}


[14/50] [abbrv] openmeetings git commit: no jira: white-spaces fixes, code clean-up

Posted by so...@apache.org.
no jira: white-spaces fixes, code clean-up


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

Branch: refs/heads/3.1.x
Commit: c8c94d22d42a643cf580248addab6a6c2b020ee6
Parents: 2b3cbbd
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Jan 3 13:18:24 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Jan 3 13:18:24 2017 +0000

----------------------------------------------------------------------
 .../propertypanel/drawDocumentPanelItem.lzx     | 36 +++++++++-----------
 1 file changed, 16 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c8c94d22/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
index 5fa1425..b18f9f5 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
@@ -7,38 +7,34 @@
   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.
-  
+
 -->
 <library>
-    
-	<class name="drawDocumentPanelItem" extends="blueButton" 
-		   width="26" height="26" 
-		   x_insetResource="2" y_insetResource="2"
-		   width_insetResource="22" height_insetResource="22">
-		
+	<class name="drawDocumentPanelItem" extends="blueButton" width="26" height="26"
+			x_insetResource="2" y_insetResource="2" width_insetResource="22" height_insetResource="22">
 		<attribute name="modi" value="" type="string" />
 		<attribute name="labelid" value="0" type="number" />
-		
+
 		<handler name="onclick">
-			//if ($debug) Debug.write("parent.parent.parent.parent: ",parent.parent.parent.parent);
-			if (parent.parent.parent.ignoreUpdates) {
-	            return;
-	        }
-	        parent.parent.parent.parent._drawareaMask._drawarea.setCurrentDocumentByToolBar(parent.parent.currentDocument.getValue());
-	        parent.parent.parent.parent._drawareaMask._drawarea.doDocumentAction(this.modi);
+			var docToolbar = canvas._drawarea.getDocumentToolBar();
+			//if ($debug) Debug.write("docToolbar.parent.parent: ", docToolbar.parent.parent);
+			if (docToolbar.parent.parent.ignoreUpdates) {
+				return;
+			}
+			canvas._drawarea.setCurrentDocumentByToolBar(parent.parent.currentDocument.getValue());
+			canvas._drawarea.doDocumentAction(this.modi);
 		</handler>
-		
+
 		<labelTooltip name="__labeltooltip" labelid="$once{ parent.labelid }" />
-	    
-	</class>    
+	</class>
+</library>
 
-</library>
\ No newline at end of file


[40/50] [abbrv] openmeetings git commit: [OPENMEETINGS-816] first step to sign-up test using wicket tester

Posted by so...@apache.org.
[OPENMEETINGS-816] first step to sign-up test using wicket tester


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

Branch: refs/heads/3.1.x
Commit: e910279241b83065eb35ad79e1898543bef75241
Parents: d7b6df4
Author: Maxim Solodovnik <so...@apache.org>
Authored: Mon Jan 23 15:38:29 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Mon Jan 23 15:38:29 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/test/AbstractWicketTester.java | 21 +++++++++++++++++
 .../apache/openmeetings/test/web/LoginUI.java   | 24 +++++++++++++++++---
 2 files changed, 42 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e9102792/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
index 3e05b2f..8775f82 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
@@ -22,11 +22,18 @@ import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.Serializable;
+import java.util.List;
+
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.After;
 
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior;
+
 public class AbstractWicketTester extends AbstractJUnitDefaults {
 	protected WicketTester tester;
 
@@ -53,4 +60,18 @@ public class AbstractWicketTester extends AbstractJUnitDefaults {
 			tester.destroy();
 		}
 	}
+
+	public <T extends Serializable> ButtonAjaxBehavior getButtonBehavior(String path, String name) {
+		Args.notNull(path, "path");
+		Args.notNull(name, "name");
+		@SuppressWarnings("unchecked")
+		AbstractDialog<T> dialog = (AbstractDialog<T>)tester.getComponentFromLastRenderedPage(path);
+		List<ButtonAjaxBehavior> bl = dialog.getBehaviors(ButtonAjaxBehavior.class);
+		for (ButtonAjaxBehavior bb : bl) {
+			if (name.equals(bb.getButton().getName())) {
+				return bb;
+			}
+		}
+		return null;
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e9102792/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
index 7173add..3abf7c9 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
@@ -18,16 +18,20 @@
  */
 package org.apache.openmeetings.test.web;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import org.apache.openmeetings.test.AbstractWicketTester;
-import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.openmeetings.web.pages.auth.SignInPage;
+import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter;
+import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.util.tester.FormTester;
 import org.junit.Test;
 
+import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior;
+
 public class LoginUI extends AbstractWicketTester {
 	@Test
 	public void testValidLogin() {
@@ -53,7 +57,21 @@ public class LoginUI extends AbstractWicketTester {
 		FormTester formTester = tester.newFormTester("signin:signin");
 		formTester.submit("submit");
 
-		tester.assertErrorMessages(String.format("'%s' is required.", Application.getString(114))
-				, String.format("'%s' is required.", Application.getString(115)));
+		assertEquals("There should be exactly 2 errors", 2,
+				tester.getFeedbackMessages(new ExactLevelFeedbackMessageFilter(FeedbackMessage.ERROR)).size());
+	}
+
+
+	@Test
+	public void testEmptyRegister() {
+		tester.startPage(SignInPage.class);
+		tester.assertRenderedPage(SignInPage.class);
+
+		ButtonAjaxBehavior b = getButtonBehavior("signin", "register");
+		tester.executeBehavior(b);
+		FormTester formTester = tester.newFormTester("register:form");
+		formTester.submit("submit");
+		assertEquals("There should be exactly 7 errors", 7,
+				tester.getFeedbackMessages(new ExactLevelFeedbackMessageFilter(FeedbackMessage.ERROR)).size());
 	}
 }


[24/50] [abbrv] openmeetings git commit: no jira: additional tests for calendar web service are added

Posted by so...@apache.org.
no jira: additional tests for calendar web service are added


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

Branch: refs/heads/3.1.x
Commit: 98b9cf9a7259d3399f821719a590cd6e64391df1
Parents: 1736662
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Jan 13 04:19:56 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Jan 13 04:19:56 2017 +0000

----------------------------------------------------------------------
 .../test/AbstractJUnitDefaults.java             | 61 +++++++++----------
 .../test/webservice/AbstractWebServiceTest.java |  6 +-
 .../test/webservice/TestCalendarService.java    | 62 ++++++++++++++++++++
 3 files changed, 96 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/98b9cf9a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
index 42b95a8..368bd87 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
@@ -27,10 +27,12 @@ import java.util.UUID;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
@@ -41,7 +43,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 	private static final Logger log = Red5LoggerFactory.getLogger(AbstractJUnitDefaults.class);
-	
+	public static final int ONE_HOUR = 60 * 60 * 1000;
+
 	protected static final String username = "admin";
 	protected static final String userpass = "12345";
 	private static final String orgname = "smoketest";
@@ -53,6 +56,8 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 	@Autowired
 	private UserDao userDao;
 	@Autowired
+	private GroupDao groupDao;
+	@Autowired
 	private ImportInitvalues importInitvalues;
 	@Autowired
 	protected ConfigurationDao cfgDao;
@@ -72,14 +77,22 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		}
 	}
 
-	public Appointment createAppointment() {
-		Date appointmentstart = new Date();
-		Date appointmentend = new Date();
-		appointmentend.setTime(appointmentstart.getTime() + 3600);
-		return createAppointment(appointmentstart, appointmentend);
+	public Appointment getAppointment() {
+		Date start = new Date();
+		Date end = new Date();
+		end.setTime(start.getTime() + ONE_HOUR);
+		return getAppointment(start, end);
 	}
-	
+
 	public Appointment getAppointment(Date start, Date end) {
+		return getAppointment(userDao.get(1L), start, end);
+	}
+
+	public Appointment getAppointment(User owner, Date start, Date end) {
+		return getAppointment(owner, null, start, end);
+	}
+
+	public Appointment getAppointment(User owner, Room r, Date start, Date end) {
 		assertNotNull("Can't access to appointment dao implimentation", appointmentDao);
 
 		// add new appointment
@@ -99,42 +112,24 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		ap.setIsYearly(false);
 		ap.setPasswordProtected(false);
 
-		ap.setOwner(userDao.get(1L));
+		ap.setOwner(owner);
 		ap.setConnectedEvent(false);
 
 		if (ap.getReminder() == null) {
 			ap.setReminder(Appointment.Reminder.none);
 		}
 		
-		Room r = new Room();
-		r.setType(Room.Type.conference);
-		r.setAppointment(true);
+		if (r == null) {
+			r = new Room();
+			r.setType(Room.Type.conference);
+			r.setAppointment(true);
+		}
 		ap.setRoom(r);
 		return ap;
 	}
 
-	public Appointment createAppointment(Date start, Date end) {
-		assertNotNull("Can't access to appointment dao implimentation", appointmentDao);
-
+	public Appointment createAppointment(Appointment ap) {
 		// add new appointment
-		Appointment ap = new Appointment();
-
-		ap.setTitle("appointmentName");
-		ap.setLocation("appointmentLocation");
-
-		ap.setStart(start);
-		ap.setEnd(end);
-		ap.setDescription("appointmentDescription");
-		ap.setInserted(new Date());
-		ap.setDeleted(false);
-		ap.setIsDaily(false);
-		ap.setIsWeekly(false);
-		ap.setIsMonthly(false);
-		ap.setIsYearly(false);
-		ap.setPasswordProtected(false);
-
-		ap.setOwner(userDao.get(1L));
-		ap.setConnectedEvent(false);
 		ap = appointmentDao.update(ap, null, false);
 		assertNotNull("Cann't add appointment", ap.getId());
 		return ap;
@@ -157,6 +152,8 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		u.setAddress(new Address());
 		u.getAddress().setEmail(String.format("email%s@local", uuid));
 		u.setRights(UserDao.getDefaultRights());
+		u.setTimeZoneId("Asia/Bangkok");
+		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
 		u.updatePassword(cfgDao, getRandomPass(uuid));
 		u.setLanguageId(1L);
 		return u;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/98b9cf9a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
index fa2d908..6675d59 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
@@ -45,7 +45,11 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
 	}
 
 	public static ServiceResult login() {
-		ServiceResult sr = getClient(USER_SERVICE_URL).path("/login").query("user", username).query("pass", userpass)
+		return login(username, userpass);
+	}
+
+	public static ServiceResult login(String user, String pass) {
+		ServiceResult sr = getClient(USER_SERVICE_URL).path("/login").query("user", user).query("pass", pass)
 				.get(ServiceResult.class);
 		assertEquals("Login should be successful", Type.SUCCESS.name(), sr.getType());
 		return sr;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/98b9cf9a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
new file mode 100644
index 0000000..b593307
--- /dev/null
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -0,0 +1,62 @@
+/*
+ * 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.webservice;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Date;
+import java.util.UUID;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.User;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestCalendarService extends AbstractWebServiceTest {
+	public final static String CALENDAR_SERVICE_URL = BASE_SERVICES_URL + "/calendar";
+	@Autowired
+	private RoomDao roomDao;
+
+	private void actualTest(Room r) throws Exception {
+		String uuid = UUID.randomUUID().toString();
+		User u = createUser(uuid);
+		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+		Date start = new Date();
+		Appointment a = createAppointment(getAppointment(u, r, start, new Date(start.getTime() + ONE_HOUR)));
+
+		AppointmentDTO app = getClient(CALENDAR_SERVICE_URL).path("/room/" + a.getRoom().getId()).query("sid", sr.getMessage())
+				.get(AppointmentDTO.class);
+		assertNotNull("Valid DTO should be returned", app);
+	}
+
+	@Test
+	public void testGetByAppRoom() throws Exception {
+		actualTest(null);
+	}
+
+	@Test
+	public void testGetByPublicRoom() throws Exception {
+		actualTest(roomDao.get(5L)); //default public restricted room
+	}
+}


[02/50] [abbrv] openmeetings git commit: no jira: code clean-up

Posted by so...@apache.org.
no jira: code clean-up


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

Branch: refs/heads/3.1.x
Commit: 6fc36422674878e9878958d6bacd447e6952156a
Parents: 68008ec
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Dec 22 17:46:27 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Dec 22 17:46:27 2016 +0000

----------------------------------------------------------------------
 .../swf/base/components/text/labelTooltip.lzx   |   4 +-
 .../whiteboard/fixedFileExplorerWhiteBoard.lzx  |  20 +-
 .../panels/maintoolspanel/mainToolsPanel.lzx    | 324 +++++++++----------
 .../maintoolspanel/mainToolsPanelItem.lzx       |  41 ++-
 .../panels/propertypanel/propertyPanel.lzx      |   2 +-
 5 files changed, 179 insertions(+), 212 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fc36422/openmeetings-flash/src/main/swf/base/components/text/labelTooltip.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/text/labelTooltip.lzx b/openmeetings-flash/src/main/swf/base/components/text/labelTooltip.lzx
index 31024bb..1f5d3c0 100644
--- a/openmeetings-flash/src/main/swf/base/components/text/labelTooltip.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/text/labelTooltip.lzx
@@ -34,9 +34,9 @@
     <handler name="onmouseover" reference="this.parent">
     	<![CDATA[
             this.doonmouseover();
-        ]]>        
+        ]]>
     </handler>
-        
+
     <method name="doonmouseover">
     	<![CDATA[
             this.setContent.sendEvent();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fc36422/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteBoard.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteBoard.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteBoard.lzx
index 67cf4cf..00a9095 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteBoard.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/fixedFileExplorerWhiteBoard.lzx
@@ -162,7 +162,7 @@
 		<handler name="onmousetrackover">
 			if ($debug) Debug.write("onmousetrackover");
 			canvas.currentImagesListdraw.currentDragItem.sendOverItem(this);
-			this.setAttribute("bgcolor",0x93FE92);
+			this.setAttribute("bgcolor", 0x93FE92);
 		</handler>
 
 		<handler name="onmousetrackout">
@@ -416,16 +416,16 @@
 		</method>
 
 		<method name="setSelection" args="obj">
-			if ($debug) Debug.write("setSelection ",obj);
+			if ($debug) Debug.write("setSelection ", obj);
 			parent._drawareaMask._drawarea.removeObjectBounds();
-			if (obj.setSelectionToItem){
-				if (this.objectRef!=null){
+			if (obj.setSelectionToItem) {
+				if (this.objectRef != null) {
 					this.objectRef._isselected = false;
-					this.objectRef.setAttribute('enabled',true);
+					this.objectRef.setAttribute('enabled', true);
 				}
 				this.objectRef = obj;
 				this.objectRef._isselected = true;
-				this.objectRef.setAttribute('enabled',false);
+				this.objectRef.setAttribute('enabled', false);
 			}
 			if (obj.modi=="saveobj"){
 				parent._drawareaMask._drawarea.doAction(obj.modi);
@@ -435,14 +435,14 @@
 		</method>
 
 		<method name="setSelectionWithoutEvent" args="obj">
-			if (obj.setSelectionToItem){
-				if (this.objectRef!=null){
+			if (obj.setSelectionToItem) {
+				if (this.objectRef != null) {
 					this.objectRef._isselected = false;
-					this.objectRef.setAttribute('enabled',true);
+					this.objectRef.setAttribute('enabled', true);
 				}
 				this.objectRef = obj;
 				this.objectRef._isselected = true;
-				this.objectRef.setAttribute('enabled',false);
+				this.objectRef.setAttribute('enabled', false);
 			}
 		</method>
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fc36422/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
index f975c84..07e9c89 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
@@ -9,40 +9,40 @@
   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.
-  
+
 -->
 <library>
-	
+
 <class name="verticalMenuIconBar" extends="view" y="22" x="4" clickable="true">
 	<simplelayout axis="y" spacing="2" />
 	<mainToolsPanelItem name="plain" modi="plainConfirm" labelid="69" resourceItem="plain" setSelectionToItem="false" />
 	<mainToolsPanelItem name="plainSlide" modi="plainSlide" labelid="1005" resourceItem="plainSlides" setSelectionToItem="false" />
-	
+
 	<!--
 	<mainToolsPanelItem name="drag" modi="drag" labelid="1113" resourceItem="arrow_draw_panel_tool_cursor" />
 	 -->
 
 	<mainToolsPanelItem name="saveobj" modi="saveobj" labelid="197" resourceItem="saveobj" setSelectionToItem="false" />
-	
+
 	<mainToolsHPanelSeperator>
-        <attribute name="modi" value="" type="string"/>
-    </mainToolsHPanelSeperator>
+		<attribute name="modi" value="" type="string"/>
+	</mainToolsHPanelSeperator>
 	<redoUndoToolsPanelItem name="revert" doredo="false" labelid="70" resourceItem="revert" />
 	<mainToolsHPanelSeperator>
 		<attribute name="modi" value="" type="string"/>
 	</mainToolsHPanelSeperator>
-	<mainToolsPanelItem name="hand" modi="hand" labelid="72" _isselected="true" 
+	<mainToolsPanelItem name="hand" modi="hand" labelid="72" _isselected="true"
 						resourceItem="menupointer_rsc" />
-    <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" 
-                        labelid="557" x_insetResource="1" y_insetResource="1"
-                        resourceItem="pointer_whiteboard_menu_rsc" />
+	<mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard"
+						labelid="557" x_insetResource="1" y_insetResource="1"
+						resourceItem="pointer_whiteboard_menu_rsc" />
 	<mainToolsPanelItem name="letter" modi="letter" labelid="73" resourceItem="letter" />
 	<mainToolsPanelItem name="paint" modi="paint" labelid="74" resourceItem="paint" />
 	<mainToolsPanelItem name="line" modi="line" labelid="75" resourceItem="line_rsc" />
@@ -51,62 +51,48 @@
 	<mainToolsPanelItem name="ellipse" modi="ellipse" labelid="78" resourceItem="ellipse" />
 	<mainToolsPanelItem name="drawarrow" modi="drawarrow" labelid="79" resourceItem="drawarrowicon_rsc" />
 
-    <mainToolsPanelItem name="clipart" modi="clipart" labelid="1323" >
-        
-        <handler name="oninit">
-		if (this["_bgIcon"]) {
-			this._bgIcon.setAttribute("visible", false);
-		}
-            var imageurl = canvas.getUrl() + 'public/cliparts/thumb/'
-                                           + canvas._drawarea.currentClipArtRessourceName;
-            
-            this._rscIcon.setSource(imageurl);
-        </handler>
-        
-        <!--
-        <view x="$once{ parent.x_insetResource }" y="$once{ parent.x_insetResource }" 
-              height="18" width="18" stretches="both" name="_bgIconIcon" />      
-         -->
-              
-        <view resource="sub_menu_tools_panel_rsc"
-              x="$once{ parent.width - 10 }" y="$once{ parent.height - 10 }">
-            <handler name="onclick">
-            	<![CDATA[
-                if ($debug) Debug.write("Show Sub Menu");
-                new lz.subMenuIconToolsToUpload(canvas,{
-                                x:500,
-                                y:82,
-                                refToolbar:parent
-                            });
-                ]]>
-            </handler>
-            <labelTooltip labelid="1335" />
-        </view>
-        
-    </mainToolsPanelItem>
+	<mainToolsPanelItem name="clipart" modi="clipart" labelid="1323" >
+		<handler name="oninit">
+			if (!!this["_bgIcon"]) {
+				this._bgIcon.setAttribute("visible", false);
+			}
+			var imageurl = canvas.getUrl() + 'public/cliparts/thumb/' + canvas._drawarea.currentClipArtRessourceName;
+			//if ($debug) Debug.write("!!!!!! CLIPART:: ", imageurl);
+			_rscIcon.setAttribute("src", imageurl);
+		</handler>
 
+		<view resource="sub_menu_tools_panel_rsc"
+				x="$once{ parent.width - 10 }" y="$once{ parent.height - 10 }">
+			<handler name="onclick">
+			<![CDATA[
+				if ($debug) Debug.write("Show Sub Menu");
+				new lz.subMenuIconToolsToUpload(canvas,{
+							x:500,
+							y:82,
+							refToolbar:parent
+						});
+			]]>
+			</handler>
+			<labelTooltip labelid="1335" />
+		</view>
+	</mainToolsPanelItem>
 </class>
 
 <class name="horizontalMenuIconBar" extends="view" y="22" x="4" clickable="true">
 	<simplelayout axis="x" spacing="2" />
 	<mainToolsPanelItem name="plain" modi="plainConfirm" labelid="69" resourceItem="plain" setSelectionToItem="false" />
 	<mainToolsPanelItem name="plainSlide" modi="plainSlide" labelid="1005" resourceItem="plainSlides" setSelectionToItem="false" />
-	<!--
-	<mainToolsPanelItem name="drag" modi="drag" labelid="1113" resourceItem="arrow_draw_panel_tool_cursor" />
-     -->
 	<mainToolsPanelItem name="saveobj" modi="saveobj" labelid="197" resourceItem="saveobj" setSelectionToItem="false" />
-	
+
 	<mainToolsVPanelSeperator>
-        <attribute name="modi" value="" type="string"/>
-    </mainToolsVPanelSeperator>
+		<attribute name="modi" value="" type="string"/>
+	</mainToolsVPanelSeperator>
 	<redoUndoToolsPanelItem name="revert" doredo="false" labelid="70" resourceItem="revert" />
 	<mainToolsVPanelSeperator>
-        <attribute name="modi" value="" type="string"/>
-    </mainToolsVPanelSeperator>	
-	<mainToolsPanelItem name="hand" modi="hand" labelid="72" _isselected="true" 
-						resourceItem="menupointer_rsc" />
-    <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" 
-                        labelid="557" resourceItem="pointer_whiteboard_menu_rsc" />
+		<attribute name="modi" value="" type="string"/>
+	</mainToolsVPanelSeperator>
+	<mainToolsPanelItem name="hand" modi="hand" labelid="72" _isselected="true" resourceItem="menupointer_rsc" />
+	<mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" labelid="557" resourceItem="pointer_whiteboard_menu_rsc" />
 	<mainToolsPanelItem name="letter" modi="letter" labelid="73" resourceItem="letter" />
 	<mainToolsPanelItem name="paint" modi="paint" labelid="74" resourceItem="paint" />
 	<mainToolsPanelItem name="line" modi="line" labelid="75" resourceItem="line_rsc" />
@@ -115,141 +101,125 @@
 	<mainToolsPanelItem name="ellipse" modi="ellipse" labelid="78" resourceItem="ellipse" />
 	<mainToolsPanelItem name="drawarrow" modi="drawarrow" labelid="79" resourceItem="drawarrowicon_rsc" />
 	<mainToolsPanelItem name="clipart" modi="clipart" labelid="1323" >
-        
-        <handler name="oninit">
-		if (this["_bgIcon"]) {
-			this._bgIcon.setAttribute("visible", false);
-		}
-            var imageurl = canvas.getUrl() + 'public/cliparts/thumb/'
-                                           + canvas._drawarea.currentClipArtRessourceName;
-            
-            this._rscIcon.setSource(imageurl);
-        </handler>
-        
-        <view x="$once{ parent.x_insetResource }" y="$once{ parent.x_insetResource }" 
-              height="18" width="18" stretches="both" name="_bgIconIcon" />      
-        
-        <view resource="sub_menu_tools_panel_rsc"
-              x="$once{ parent.width - 10 }" y="$once{ parent.height - 10 }">
-            <handler name="onclick">
-                if ($debug) Debug.write("Show Sub Menu");
-                new lz.subMenuIconToolsToUpload(canvas,{
-                                x:500,
-                                y:82,
-                                refToolbar:parent
-                            });
-            </handler>
-            <labelTooltip labelid="1335" />
-        </view>
-        
-    </mainToolsPanelItem>
+		<handler name="oninit">
+			if (!!this["_bgIcon"]) {
+				this._bgIcon.setAttribute("visible", false);
+			}
+			var imageurl = canvas.getUrl() + 'public/cliparts/thumb/' + canvas._drawarea.currentClipArtRessourceName;
+			//if ($debug) Debug.write("!!!!!! CLIPART:: ", imageurl);
+			_rscIcon.setAttribute("src", imageurl);
+		</handler>
+
+		<view x="$once{ parent.x_insetResource }" y="$once{ parent.x_insetResource }"
+				height="18" width="18" stretches="both" name="_bgIconIcon" />
+
+		<view resource="sub_menu_tools_panel_rsc" x="$once{ parent.width - 10 }" y="$once{ parent.height - 10 }">
+			<handler name="onclick">
+				if ($debug) Debug.write("Show Sub Menu");
+				new lz.subMenuIconToolsToUpload(canvas,{
+						x:500,
+						y:82,
+						refToolbar:parent
+					});
+			</handler>
+			<labelTooltip labelid="1335" />
+		</view>
+	</mainToolsPanelItem>
 </class>
 
+<class name="mainToolsTopPanel" extends="baseTopPanel"
+		width="448" height="33" title="" docking="true"
+		activationClassBounding="mainToolsLeftPanel"
+		activationVClassBounding="mainToolsTopPanel"
+		leftClassPanel="mainToolsLeftPanel"
+		topClassPanel="mainToolsTopPanel"
+		bottomClassPanel="mainToolsTopPanel"
+		rightClassPanel="mainToolsLeftPanel"
+		verticalClassActive="true"
+		hWidth="33" hHeight="448">
 
-<class name="mainToolsTopPanel" extends="baseTopPanel" 
-	   width="420" height="33" title="" docking="true"
-	   activationClassBounding="mainToolsLeftPanel"
-	   activationVClassBounding="mainToolsTopPanel"
-	   leftClassPanel="mainToolsLeftPanel"
-	   topClassPanel="mainToolsTopPanel"
-	   bottomClassPanel="mainToolsTopPanel"
-	   rightClassPanel="mainToolsLeftPanel"
-	   verticalClassActive="true"
-	   hWidth="33" hHeight="420">
-	
-    <method name="updateToolSelection" args="modi">
-    	<![CDATA[
-            if ($debug) Debug.write("-updateToolSelection-  ",modi);
-            
-            for (var i=0;i<this._tools.subviews.length;i++){
-                
-            	if (this._tools.subviews[i].modi == modi) {
-            		
-            		this._tools.subviews[i].setSelectionWithoutEvent();
-            		return;
-            	}
-            	
-            }
-            
-        ]]>
-    </method>
-    
+	<method name="updateToolSelection" args="modi">
+	<![CDATA[
+		if ($debug) Debug.write("-updateToolSelection-  ",modi);
+		for (var i=0;i<this._tools.subviews.length;i++){
+			if (this._tools.subviews[i].modi == modi) {
+				this._tools.subviews[i].setSelectionWithoutEvent();
+				return;
+			}
+		}
+	]]>
+	</method>
 	<horizontalMenuIconBar name="_tools" x="20" y="4" />
-</class>	
-	
-<class name="mainToolsLeftPanel" extends="baseLeftPanel" 
-	   width="33" height="420" title="" docking="true"
-	   activationClassBounding="mainToolsLeftPanel"
-	   activationVClassBounding="mainToolsTopPanel"
-	   topClassPanel="mainToolsTopPanel"
-	   bottomClassPanel="mainToolsTopPanel"
-	   leftClassPanel="mainToolsLeftPanel"
-	   rightClassPanel="mainToolsLeftPanel"
-	   verticalClassActive="false"
-	   vWidth="420" vHeight="33">
-	
-    <method name="updateToolSelection" args="modi">
-        <![CDATA[
-            if ($debug) Debug.write("-updateToolSelection-  ",modi);
-            
-            for (var i=0;i<this._tools.subviews.length;i++){
-                
-                if (this._tools.subviews[i].modi == modi) {
-                    
-                    this._tools.subviews[i].setSelectionWithoutEvent();
-                    return;
-                }
-                
-            }
-            
-        ]]>
-    </method>	
-	
+</class>
+
+<class name="mainToolsLeftPanel" extends="baseLeftPanel"
+		width="33" height="448" title="" docking="true"
+		activationClassBounding="mainToolsLeftPanel"
+		activationVClassBounding="mainToolsTopPanel"
+		topClassPanel="mainToolsTopPanel"
+		bottomClassPanel="mainToolsTopPanel"
+		leftClassPanel="mainToolsLeftPanel"
+		rightClassPanel="mainToolsLeftPanel"
+		verticalClassActive="false"
+		vWidth="448" vHeight="33">
+
+	<method name="updateToolSelection" args="modi">
+	<![CDATA[
+		if ($debug) Debug.write("-updateToolSelection-  ",modi);
+		for (var i=0;i<this._tools.subviews.length;i++){
+			if (this._tools.subviews[i].modi == modi) {
+				this._tools.subviews[i].setSelectionWithoutEvent();
+				return;
+			}
+		}
+	]]>
+	</method>
+
 	<verticalMenuIconBar name="_tools" x="3" y="20" />
 </class>
 
 <!-- ################
-    Non Moderator Tools
+	Non Moderator Tools
 -->
-
 <class name="verticalMenuIconBarPointer" extends="view" y="22" x="4" clickable="true">
-    <simplelayout axis="y" spacing="2" />
-    <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" labelid="557" 
-                        resourceItem="pointer_whiteboard_menu_rsc" />
+	<simplelayout axis="y" spacing="2" />
+	<mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" labelid="557"
+						resourceItem="pointer_whiteboard_menu_rsc" />
 </class>
 
 <class name="horizontalMenuIconBarPointer" extends="view" y="22" x="4" clickable="true">
-    <simplelayout axis="x" spacing="2" />
-    <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" labelid="557" 
-                        resourceItem="pointer_whiteboard_menu_rsc" />
+	<simplelayout axis="x" spacing="2" />
+	<mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" labelid="557"
+						resourceItem="pointer_whiteboard_menu_rsc" />
+</class>
+
+<class name="mainToolsTopPanelPointer" extends="baseTopPanel"
+		width="52" height="32" title="" docking="true"
+		activationClassBounding="mainToolsLeftPanelPointer"
+		activationVClassBounding="mainToolsTopPanelPointer"
+		leftClassPanel="mainToolsLeftPanelPointer"
+		topClassPanel="mainToolsTopPanelPointer"
+		bottomClassPanel="mainToolsTopPanelPointer"
+		rightClassPanel="mainToolsLeftPanelPointer"
+		verticalClassActive="true"
+		hWidth="32" hHeight="52">
+
+	<horizontalMenuIconBarPointer x="20" y="4" />
 </class>
 
-<class name="mainToolsTopPanelPointer" extends="baseTopPanel" 
-       width="52" height="32" title="" docking="true"
-       activationClassBounding="mainToolsLeftPanelPointer"
-       activationVClassBounding="mainToolsTopPanelPointer"
-       leftClassPanel="mainToolsLeftPanelPointer"
-       topClassPanel="mainToolsTopPanelPointer"
-       bottomClassPanel="mainToolsTopPanelPointer"
-       rightClassPanel="mainToolsLeftPanelPointer"
-       verticalClassActive="true"
-       hWidth="32" hHeight="52">
-    
-    <horizontalMenuIconBarPointer x="20" y="4" />
-</class>    
-
-<class name="mainToolsLeftPanelPointer" extends="baseLeftPanel" 
-       width="32" height="52" title="" docking="true"
-       activationClassBounding="mainToolsLeftPanelPointer"
-       activationVClassBounding="mainToolsTopPanelPointer"
-       topClassPanel="mainToolsTopPanelPointer"
-       bottomClassPanel="mainToolsTopPanelPointer"
-       leftClassPanel="mainToolsLeftPanelPointer"
-       rightClassPanel="mainToolsLeftPanelPointer"
-       verticalClassActive="false"
-       vWidth="52" vHeight="32">
-    
-    <verticalMenuIconBarPointer x="2" y="20" />
-</class>	
+<class name="mainToolsLeftPanelPointer" extends="baseLeftPanel"
+		width="32" height="52" title="" docking="true"
+		activationClassBounding="mainToolsLeftPanelPointer"
+		activationVClassBounding="mainToolsTopPanelPointer"
+		topClassPanel="mainToolsTopPanelPointer"
+		bottomClassPanel="mainToolsTopPanelPointer"
+		leftClassPanel="mainToolsLeftPanelPointer"
+		rightClassPanel="mainToolsLeftPanelPointer"
+		verticalClassActive="false"
+		vWidth="52" vHeight="32">
+
+	<verticalMenuIconBarPointer x="2" y="20" />
+</class>
 
 </library>
+

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fc36422/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanelItem.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanelItem.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanelItem.lzx
index 565c710..4614545 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanelItem.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanelItem.lzx
@@ -9,7 +9,7 @@
   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
@@ -19,24 +19,21 @@
   
 -->
 <library>
- 
-<class name="mainToolsPanelItem" extends="blueButton" 
-	   width="26" height="26">
-	
+
+<class name="mainToolsPanelItem" extends="blueButton" width="26" height="26">
 	<attribute name="modi" value="" type="string" />
 	<attribute name="labelid" value="0" type="number" />
-	
 	<attribute name="setSelectionToItem" value="true" type="boolean" />
 	<attribute name="_isselected" value="false" type="boolean" />
-	
+
 	<handler name="oninit">
 		if (this._isselected) parent.parent.parent.setSelection(this);
 	</handler>
-	
+
 	<method name="setSelectionWithoutEvent">
-        parent.parent.parent.setSelectionWithoutEvent(this);
-    </method>
-	
+		parent.parent.parent.setSelectionWithoutEvent(this);
+	</method>
+
 	<handler name="onmouseup">
 		//if ($debug) Debug.write("parent.parent.parent",parent.parent.parent);
 		parent.parent.parent.setSelection(this);
@@ -46,20 +43,20 @@
 
 <class name="redoUndoToolsPanelItem" extends="mainToolsPanelItem" setSelectionToItem="false">
 	<attribute name="doredo" value="true" type="boolean" />
-	<handler name="onclick">	  
-          if(this.doredo){
-            this.parent.parent.parent.parent._drawareaMask._drawarea.doredo();
-          } else {
-            this.parent.parent.parent.parent._drawareaMask._drawarea.undoredo();
-          }
-        </handler>
+	<handler name="onclick">
+		if (this.doredo) {
+			this.parent.parent.parent.parent._drawareaMask._drawarea.doredo();
+		} else {
+			this.parent.parent.parent.parent._drawareaMask._drawarea.undoredo();
+		}
+	</handler>
 </class>
 
 <class name="mainToolsHPanelSeperator" extends="view" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }"
-	   width="26" height="1" ></class>
-	   
+		width="26" height="1" />
+
 <class name="mainToolsVPanelSeperator" extends="view" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }"
-	   width="1" height="26" ></class>
+		width="1" height="26" />
 
-    
 </library>
+

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fc36422/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
index 047d6a4..776d7b7 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
@@ -44,7 +44,7 @@
 	</method>
 
 	<method name="loadPanelByModus" args="drawArea">
-		if ($debug) Debug.write("loadPanelByModus drawmodus: ",drawArea.drawmodus);
+		if ($debug) Debug.write("loadPanelByModus drawmodus: ", drawArea.drawmodus);
 		this.ignoreUpdates = true;
 		if (drawArea.drawmodus == 'paint') {
 			this._content.lineColorChoose.setSelectedColor(drawArea.currentlayerstroke);


[48/50] [abbrv] openmeetings git commit: no jira: code clean-up

Posted by so...@apache.org.
no jira: code clean-up


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

Branch: refs/heads/3.1.x
Commit: 29a77d3b7f55518797bb556de7780096a719bdc9
Parents: f9eef75
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Jan 26 03:01:31 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Jan 26 03:01:31 2017 +0000

----------------------------------------------------------------------
 .../core/remote/WhiteBoardService.java          |   8 +-
 .../src/main/webapp/public/theme.xml            | 437 +++++++++----------
 2 files changed, 222 insertions(+), 223 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/29a77d3b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
index bd50141..0225938 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
@@ -58,9 +58,9 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
- * 
+ *
  * @author sebastianwagner
- * 
+ *
  */
 public class WhiteBoardService implements IPendingServiceCallback {
 	private static final Logger log = Red5LoggerFactory.getLogger(WhiteBoardService.class, webAppRootKey);
@@ -178,7 +178,7 @@ public class WhiteBoardService implements IPendingServiceCallback {
 	 * change the draw status of a user, allow disallow him to draw anybody
 	 * besides the Moderator to draw on the whiteboard, only a Moderator is
 	 * allowed to trigger this function
-	 * 
+	 *
 	 * @param SID
 	 * @param publicSID
 	 * @param canDraw
@@ -324,7 +324,7 @@ public class WhiteBoardService implements IPendingServiceCallback {
 
 			syncListRoom.put(currentClient.getPublicSID(), wSyncLockObject);
 			wbListManager.setWhiteBoardSyncListByRoomid(roomId, syncListRoom);
-			
+
 			//Sync to clients
 			scopeAdapter.sendMessageToCurrentScope("sendSyncFlag", wSyncLockObject, true);
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/29a77d3b/openmeetings-web/src/main/webapp/public/theme.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/public/theme.xml b/openmeetings-web/src/main/webapp/public/theme.xml
index 6a983a4..7df469c 100644
--- a/openmeetings-web/src/main/webapp/public/theme.xml
+++ b/openmeetings-web/src/main/webapp/public/theme.xml
@@ -7,352 +7,351 @@
   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.
-  
+
 -->
-<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-    xsi:noNamespaceSchemaLocation="theme.xsd">
+<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:noNamespaceSchemaLocation="theme.xsd">
 
 	<!-- Colors -->
-
-	<color name="mainBackgroundColor" value="0xEEF0EB" 
+	<color name="mainBackgroundColor" value="0xEEF0EB"
 				description="main background color" />
 
-	<color name="basebgcolorizer" value="0xBDC0DB" 
+	<color name="basebgcolorizer" value="0xBDC0DB"
 				description="Color for background" />
-				
-	<color name="baseMousecolorizer" value="0xBDC0DB" 
+
+	<color name="baseMousecolorizer" value="0xBDC0DB"
 				description="Color Mouseover color for list items" />
-	
-	<color name="baseMouseOvercolorizer" value="0xBDC0DB" 
-				description="Color Mouseover color for list items" />	
-	
-	<color name="styleMenuBarBaseColor" value="0x000088" 
-				description="menu bar background color" />				
-	
-	<color name="mainBorderColor" value="0xCCCCCC" 
+
+	<color name="baseMouseOvercolorizer" value="0xBDC0DB"
+				description="Color Mouseover color for list items" />
+
+	<color name="styleMenuBarBaseColor" value="0x000088"
+				description="menu bar background color" />
+
+	<color name="mainBorderColor" value="0xCCCCCC"
 				description="main border color" />
-				
-	<color name="secondBorderColor" value="0xE0E0E0" 
-				description="main border color" />	
-		
-	<color name="menuBackgroundColor" value="0xEFEFEF" 
+
+	<color name="secondBorderColor" value="0xE0E0E0"
+				description="main border color" />
+
+	<color name="menuBackgroundColor" value="0xEFEFEF"
 				description="main border color" />
-				
-	<color name="menuTextColor" value="0x666666" 
+
+	<color name="menuTextColor" value="0x666666"
 				description="color of text for menus" />
-	
-	<color name="menuTextDisabledColor" value="0xBBBBBB" 
-				description="color of text for menus" />		
-	
+
+	<color name="menuTextDisabledColor" value="0xBBBBBB"
+				description="color of text for menus" />
+
 	<!-- Icons -->
-	<resource name="logo_image" 
-				description="Logo to display on Main BG Navi" 
+	<resource name="logo_image"
+				description="Logo to display on Main BG Navi"
 				license="APL"
 				src="themes/basic-theme/general/logo.png" />
-	
-	<resource name="icon_facebook_rsc_png" 
-				description="Icon for facebook button in login" 
+
+	<resource name="icon_facebook_rsc_png"
+				description="Icon for facebook button in login"
 				license="Unkown"
 				src="themes/basic-theme/auth/icon_facebook.png" />
-				
-	<resource name="warning_popup_icon_rsc" 
-				description="Toolbar Icon" 
+
+	<resource name="warning_popup_icon_rsc"
+				description="Toolbar Icon"
 				license="FamFam Icon Set"
-				src="themes/basic-theme/general/error.png" />	
-				
-	<resource name="info_text_icon_rsc" 
-				description="Info Icon" 
+				src="themes/basic-theme/general/error.png" />
+
+	<resource name="info_text_icon_rsc"
+				description="Info Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/information.png" />
-	
+
 	<!-- Save Toolbar (for example Admin section) -->
-	
-	<resource name="filesave_rsc" 
-				description="Save Icon" 
+
+	<resource name="filesave_rsc"
+				description="Save Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/disk.png" />
 
-	<resource name="edit_add_rsc" 
-				description="Save Icon" 
+	<resource name="edit_add_rsc"
+				description="Save Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/general/plus_icon.png" />
 
-	<resource name="reload_rsc" 
-				description="Save Icon" 
+	<resource name="reload_rsc"
+				description="Save Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/arrow_refresh_small.png" />
-	
-	<resource name="button_cancel_rsc" 
-				description="Save Icon" 
+
+	<resource name="button_cancel_rsc"
+				description="Save Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/general/cancel_icon.png" />
 
-	<resource name="add_rsc" 
-				description="Edit Add Icon" 
+	<resource name="add_rsc"
+				description="Edit Add Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/general/add.png" />
-				
-	<resource name="date_icon_rsc" 
-				description="Edit Add Icon" 
+
+	<resource name="date_icon_rsc"
+				description="Edit Add Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/calendar_view_week.png" />
-				
+
 	<!-- Sorted list -->
-	
-	<resource name="step_back_two_arrow" 
-				description="Step to first" 
+
+	<resource name="step_back_two_arrow"
+				description="Step to first"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/resultset_first.png" />
-				
-	<resource name="step_fwd_two_arrow" 
-				description="Step to last" 
+
+	<resource name="step_fwd_two_arrow"
+				description="Step to last"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/resultset_last.png" />
-						
-    <resource name="step_back_arrow" 
-    			description="Step one back" 
+
+	<resource name="step_back_arrow"
+				description="Step one back"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/resultset_previous.png" />
-    
-    <resource name="step_fwd_arrow" 
-    			description="Step one next" 
+
+	<resource name="step_fwd_arrow"
+				description="Step one next"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/resultset_next.png" />
-				
-    <resource name="sort_up_rsc" 
-    			description="Sort up" 
+
+	<resource name="sort_up_rsc"
+				description="Sort up"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/resultset_up.png" />
-    
-    <resource name="sort_down_rsc" 
-    			description="Sort down" 
+
+	<resource name="sort_down_rsc"
+				description="Sort down"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/resultset_down.png" />
-    
-    <!-- Chat toolbar -->
-    
-    <resource name="font_style" 
-    			description="Change font style button" 
+
+	<!-- Chat toolbar -->
+
+	<resource name="font_style"
+				description="Change font style button"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/style.png" />
-    
-    <resource name="font_bold" 
-    			description="Bold font style button" 
+
+	<resource name="font_bold"
+				description="Bold font style button"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/text_bold.png" />
-    
-    <resource name="font_italic" 
-    			description="Italic font style button" 
+
+	<resource name="font_italic"
+				description="Italic font style button"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/text_italic.png" />
-    
-    <resource name="font_underline" 
-    			description="Underline font style button" 
+
+	<resource name="font_underline"
+				description="Underline font style button"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/text_underline.png" />
-    
-    <resource name="font_color" 
-    			description="Change font color button" 
+
+	<resource name="font_color"
+				description="Change font color button"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/color_swatch.png" />
-    
-    <resource name="hyperlink" 
-    			description="Insert hyperlink button" 
+
+	<resource name="hyperlink"
+				description="Insert hyperlink button"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/world_link.png" />
-				
+
 	<!-- Whiteboard Toolbar -->
-	
-	<resource name="plain" 
-				description="Toolbar Icon" 
+
+	<resource name="plain"
+				description="Toolbar Icon"
 				license="APL author sebawagner"
 				src="themes/basic-theme/whiteboard/delete_all.png" />
-	
-	<resource name="plainSlides" 
-				description="Toolbar Icon" 
+
+	<resource name="plainSlides"
+				description="Toolbar Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/whiteboard/page_delete.png" />
-	
-	<resource name="arrow_draw_panel_tool_cursor" 
-				description="Toolbar Icon" 
+
+	<resource name="arrow_draw_panel_tool_cursor"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/whiteboard/arrow_cursor_tool.png" />
 
-	<resource name="saveobj" 
-				description="Toolbar Icon" 
+	<resource name="saveobj"
+				description="Toolbar Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/general/disk.png" />
 
-	<resource name="revert" 
-				description="Toolbar Icon" 
+	<resource name="revert"
+				description="Toolbar Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/whiteboard/arrow_rotate_anticlockwise.png" />
 
-	<resource name="next" 
-				description="Toolbar Icon" 
+	<resource name="next"
+				description="Toolbar Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/whiteboard/arrow_rotate_clockwise.png" />
 
-	<resource name="menupointer_rsc" 
-				description="Toolbar Icon" 
+	<resource name="menupointer_rsc"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/whiteboard/menupointer.png" />
-				
-	<resource name="pointer_whiteboard_menu_rsc" 
-				description="Toolbar Icon" 
+
+	<resource name="pointer_whiteboard_menu_rsc"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.png" />
-				
-	<resource name="letter" 
-				description="Toolbar Icon" 
+
+	<resource name="letter"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/whiteboard/letter.png" />
 
-	<resource name="paint" 
-				description="Toolbar Icon" 
+	<resource name="paint"
+				description="Toolbar Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/whiteboard/pencil.png" />
-	
-	<resource name="line_rsc" 
-				description="Toolbar Icon" 
+
+	<resource name="line_rsc"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/line.png" />	
-	
-	<resource name="uline_rsc" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/whiteboard/line.png" />
+
+	<resource name="uline_rsc"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/uline.png" />	
-		
-	<resource name="rectangle" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/whiteboard/uline.png" />
+
+	<resource name="rectangle"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/rectangle.png" />	
+				src="themes/basic-theme/whiteboard/rectangle.png" />
 
-	<resource name="ellipse" 
-				description="Toolbar Icon" 
+	<resource name="ellipse"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/ellipse.png" />	
-				
-	<resource name="drawarrowicon_rsc" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/whiteboard/ellipse.png" />
+
+	<resource name="drawarrowicon_rsc"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/drawarrowicon.png" />			
-		
-	<!-- whiteboard general -->		
-				
-	<resource name="bounding_box_delete_item_rsc" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/whiteboard/drawarrowicon.png" />
+
+	<!-- whiteboard general -->
+
+	<resource name="bounding_box_delete_item_rsc"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/general/cancel_icon_small.png" />	
-	
-	<resource name="bounding_box_textedit_item_rsc" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/general/cancel_icon_small.png" />
+
+	<resource name="bounding_box_textedit_item_rsc"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/text_signature.png" />				
-					
-	<!-- document Tools -->	
-	
-	<resource name="doc_next" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/whiteboard/text_signature.png" />
+
+	<!-- document Tools -->
+
+	<resource name="doc_next"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/doc_next.png" />		
-				
-	<resource name="doc_pre" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/whiteboard/doc_next.png" />
+
+	<resource name="doc_pre"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/doc_pre.png" />		
-				
-	<resource name="doc_first" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/whiteboard/doc_pre.png" />
+
+	<resource name="doc_first"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/doc_first.png" />		
-				
-	<resource name="doc_last" 
-				description="Toolbar Icon" 
+				src="themes/basic-theme/whiteboard/doc_first.png" />
+
+	<resource name="doc_last"
+				description="Toolbar Icon"
 				license="APL Author sebawagner"
-				src="themes/basic-theme/whiteboard/doc_last.png" />		
-				
-	<!-- property panel -->	
-	<resource name="colorlinechoose_rsc" 
-				description="Property bar icon line color" 
+				src="themes/basic-theme/whiteboard/doc_last.png" />
+
+	<!-- property panel -->
+	<resource name="colorlinechoose_rsc"
+				description="Property bar icon line color"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/whiteboard/pencil.png" />
-	
-	<resource name="colorfillchoose_rsc" 
-				description="Property bar icon fill color" 
+
+	<resource name="colorfillchoose_rsc"
+				description="Property bar icon fill color"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/whiteboard/paintcan.png" />
-	
-	<resource name="color_lock_rsc" 
-				description="Property bar icon color lock" 
+
+	<resource name="color_lock_rsc"
+				description="Property bar icon color lock"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/whiteboard/lock.png" />
-	
-	<resource name="color_lock_open_rsc" 
-				description="Property bar icon color lock open" 
+
+	<resource name="color_lock_open_rsc"
+				description="Property bar icon color lock open"
 				license="FamFam Icon Set"
-				src="themes/basic-theme/whiteboard/lock_open.png" />	
-				
+				src="themes/basic-theme/whiteboard/lock_open.png" />
+
 	<!-- Dashboard -->
-	
-	<resource name="icon_btn_dashboard_1" 
-				description="Info Guide Icon" 
+
+	<resource name="icon_btn_dashboard_1"
+				description="Info Guide Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/dashboard/wizzard_button_1.png" />
-				
-    <resource name="icon_btn_dashboard_2" 
-    			description="Info Guide Icon" 
+
+	<resource name="icon_btn_dashboard_2"
+				description="Info Guide Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/dashboard/wizzard_button_2.png" />
-				
-    <resource name="icon_btn_dashboard_3" 
-    			description="Info Guide Icon" 
+
+	<resource name="icon_btn_dashboard_3"
+				description="Info Guide Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/dashboard/wizzard_button_3.png" />
-				
-    <resource name="icon_btn_dashboard_4" 
-    			description="Info Guide Icon" 
+
+	<resource name="icon_btn_dashboard_4"
+				description="Info Guide Icon"
 				license="APL Author sebawagner"
 				src="themes/basic-theme/dashboard/wizzard_button_4.png" />
-	
-	<resource name="icon_btn_rss_conference" 
-    			description="RSS Tab Icon" 
+
+	<resource name="icon_btn_rss_conference"
+				description="RSS Tab Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/dashboard/feed.png" />
-	
-	<resource name="icon_btn_chat_dashboard" 
-				description="Chat Tab Icon" 
+
+	<resource name="icon_btn_chat_dashboard"
+				description="Chat Tab Icon"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/dashboard/comments.png" />
-	
-    <resource name="icon_btn_rooms_conference" 
-				description="Conference Room Tab Icon" 
+
+	<resource name="icon_btn_rooms_conference"
+				description="Conference Room Tab Icon"
 				license="APL author sebawagner"
-				src="themes/basic-theme/dashboard/conference_icon_normal.png" />	
-				
-	<!-- Conference room -->	
-	<resource name="users_tab_btn" 
-				description="Conference Room Tab User" 
+				src="themes/basic-theme/dashboard/conference_icon_normal.png" />
+
+	<!-- Conference room -->
+	<resource name="users_tab_btn"
+				description="Conference Room Tab User"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/conference/group.png" />
-		
-	<resource name="files_tab_btn" 
-				description="Conference Room Tab Files" 
+
+	<resource name="files_tab_btn"
+				description="Conference Room Tab Files"
 				license="FamFam Icon Set"
 				src="themes/basic-theme/conference/folder_explore.png" />
-	
-	<resource name="exit_btn_rsc" 
-				description="Conference Room Tab Icon" 
+
+	<resource name="exit_btn_rsc"
+				description="Conference Room Tab Icon"
 				license="APL author sebawagner"
-				src="themes/basic-theme/conference/exit_button.png" />			
-	
-</theme>
\ No newline at end of file
+				src="themes/basic-theme/conference/exit_button.png" />
+
+</theme>


[03/50] [abbrv] openmeetings git commit: no jira: eclipse warning is eliminated

Posted by so...@apache.org.
no jira: eclipse warning is eliminated


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

Branch: refs/heads/3.1.x
Commit: ee5f145ae8c80333d915dbd1ca81e18778b23291
Parents: 6fc3642
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Dec 23 03:00:45 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Dec 23 03:00:45 2016 +0000

----------------------------------------------------------------------
 openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ee5f145a/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml
index a9a5149..747b192 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/rebel.xml
@@ -9,7 +9,7 @@
   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
@@ -18,7 +18,10 @@
   under the License.
   
 -->
-<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd">
+<application
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xmlns="http://www.zeroturnaround.com"
+		xsi:schemaLocation="http://www.zeroturnaround.com https://update.zeroturnaround.com/alderaan/rebel-2_0.xsd">
 	<classpath>
 		<dir name="${project.root}/build/classes/eclipse"/>
 	</classpath>


[19/50] [abbrv] openmeetings git commit: no-jira: switched to the next development version

Posted by so...@apache.org.
no-jira: switched to the next development version


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

Branch: refs/heads/3.1.x
Commit: 6034798124628c82f9918e17529ecbaeac24bd98
Parents: cd4359a
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Jan 11 15:52:36 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Jan 11 15:52:36 2017 +0000

----------------------------------------------------------------------
 openmeetings-core/pom.xml        | 2 +-
 openmeetings-db/pom.xml          | 2 +-
 openmeetings-flash/pom.xml       | 2 +-
 openmeetings-install/pom.xml     | 2 +-
 openmeetings-screenshare/pom.xml | 2 +-
 openmeetings-server/pom.xml      | 2 +-
 openmeetings-service/pom.xml     | 2 +-
 openmeetings-util/pom.xml        | 2 +-
 openmeetings-web/pom.xml         | 2 +-
 openmeetings-webservice/pom.xml  | 2 +-
 pom.xml                          | 2 +-
 11 files changed, 11 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-core/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index d5245fe..3dd4fb7 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-core</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-db/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 38abf36..70dbb07 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-db</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-flash/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-flash/pom.xml b/openmeetings-flash/pom.xml
index be26bd5..db2130e 100644
--- a/openmeetings-flash/pom.xml
+++ b/openmeetings-flash/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-flash</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-install/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index 3e4d6e7..8b8857c 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-install</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-screenshare/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index b616f0f..dd9f9c1 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-screenshare</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-server/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index 3f41e4c..28ba220 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-server</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-service/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 274e397..8d120aa 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-service</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-util/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 15beabc..8bf84b7 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-util</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-web/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index f35da74..91fa692 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-web</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/openmeetings-webservice/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index ba8873c..e75bede 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.4-SNAPSHOT</version>
+		<version>3.1.5-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-webservice</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60347981/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 23bc182..20d1fd1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
 	</parent>
 	<groupId>org.apache.openmeetings</groupId>
 	<artifactId>openmeetings-parent</artifactId>
-	<version>3.1.4-SNAPSHOT</version>
+	<version>3.1.5-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<name>Openmeetings</name>
 	<description>OpenMeetings Maven Parent</description>


[32/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1533] code clean-up

Posted by so...@apache.org.
[OPENMEETINGS-1533] code clean-up


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

Branch: refs/heads/3.1.x
Commit: ff9b359e4b5b510ef540b76d7d563d66f7a6e9d0
Parents: cbb52b4
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Jan 20 03:23:09 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Jan 20 03:23:09 2017 +0000

----------------------------------------------------------------------
 .../test/webservice/TestCalendarService.java            | 12 ------------
 1 file changed, 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ff9b359e/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index 6c83410..c2f2c08 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -18,11 +18,8 @@
  */
 package org.apache.openmeetings.test.webservice;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import java.time.LocalDate;
-import java.time.ZoneId;
 import java.util.Date;
 import java.util.UUID;
 
@@ -34,7 +31,6 @@ import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.webservice.util.DateParamConverter;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -69,12 +65,4 @@ public class TestCalendarService extends AbstractWebServiceTest {
 	public void testGetByPublicRoom() throws Exception {
 		actualTest(roomDao.get(5L)); //default public restricted room
 	}
-
-	@Test
-	public void testDateConverter() throws Exception {
-		assertEquals("Null date should be parsed", null, DateParamConverter.get(null));
-		assertEquals("Date should be parsed"
-				, Date.from(LocalDate.of(2017, 01, 15).atStartOfDay(ZoneId.systemDefault()).toInstant())
-				, DateParamConverter.get("2017-01-15"));
-	}
 }


[27/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1531] compiler plugin version is updated

Posted by so...@apache.org.
[OPENMEETINGS-1531] compiler plugin version is updated


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

Branch: refs/heads/3.1.x
Commit: 85dc03b76ad52130c56d126ae7fda385a7c70edd
Parents: 031afb1
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Jan 17 03:47:19 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Jan 17 03:47:19 2017 +0000

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/85dc03b7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 20d1fd1..40c3205 100644
--- a/pom.xml
+++ b/pom.xml
@@ -771,7 +771,7 @@
 					<inherited>true</inherited>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-compiler-plugin</artifactId>
-					<version>3.5.1</version>
+					<version>3.6.1</version>
 					<configuration>
 						<source>1.8</source>
 						<target>1.8</target>


[33/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1533] security fixes

Posted by so...@apache.org.
[OPENMEETINGS-1533] security fixes


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

Branch: refs/heads/3.1.x
Commit: 33065826c2d03279e7dd1c31994094fb107107bb
Parents: ff9b359
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Jan 20 05:53:40 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Jan 20 05:53:40 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/db/dto/calendar/AppointmentDTO.java   |  2 +-
 .../openmeetings/webservice/CalendarWebService.java    | 13 +++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/33065826/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
index dfa256b..45c7edf 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
@@ -100,7 +100,7 @@ public class AppointmentDTO implements Serializable {
 		a.setStart(start.getTime());
 		a.setEnd(end.getTime());
 		a.setDescription(description);
-		a.setOwner(owner == null ? null : owner.get(userDao));
+		a.setOwner(owner == null ? null : userDao.get(owner.getId()));
 		a.setInserted(inserted);
 		a.setUpdated(updated);
 		a.setDeleted(deleted);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/33065826/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index 3baed72..366bbae 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -41,6 +41,7 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
@@ -72,6 +73,8 @@ public class CalendarWebService {
 	private SessiondataDao sessionDao;
 	@Autowired
 	private UserDao userDao;
+	@Autowired
+	private RoomDao roomDao;
 
 	/**
 	 * Load appointments by a start / end range for the current SID
@@ -288,8 +291,7 @@ public class CalendarWebService {
 			Long userId = sessionDao.check(sid);
 			log.debug("save userId:" + userId);
 			User u = userDao.get(userId);
-			if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
-					&& (appointment.getOwner() != null || appointment.getRoom().isPublic() || !appointment.getRoom().isAppointment()))
+			if (!AuthLevelUtil.hasWebServiceLevel(u.getRights()) && appointment.getOwner() != null)
 			{
 				//TODO maybe additional checks are required
 				log.error("USER/Room modification as SOAP");
@@ -300,6 +302,13 @@ public class CalendarWebService {
 				if (a.getOwner() == null) {
 					a.setOwner(u);
 				}
+				if (a.getRoom().getId() != null) {
+					if (a.getRoom().isAppointment()) {
+						a.getRoom().setIspublic(false);
+					} else {
+						a.setRoom(roomDao.get(a.getRoom().getId()));
+					}
+				}
 				return new AppointmentDTO(appointmentDao.update(a, u.getId()));
 			} else {
 				log.error("save : wrong user level");


[10/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1467] wicket version is updated, code clean-up

Posted by so...@apache.org.
[OPENMEETINGS-1467] wicket version is updated, code clean-up


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

Branch: refs/heads/3.1.x
Commit: 43c2e532f8d429eba58064da657bd08e49e36917
Parents: 1073ad1
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Dec 31 02:49:55 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Dec 31 02:49:55 2016 +0000

----------------------------------------------------------------------
 .../main/java/org/apache/openmeetings/web/common/MainPanel.java  | 3 +--
 pom.xml                                                          | 4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/43c2e532/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 385f238..1518a60 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
@@ -120,8 +120,7 @@ public class MainPanel extends Panel {
 							@Override
 							public void run() {
 								try {
-									//wsConnection.sendMessage(new byte[1], 0, 1); //FIXME TODO commented for now
-									wsConnection.sendMessage("ping");
+									wsConnection.sendMessage(new byte[1], 0, 1);
 								} catch (IOException e) {
 									log.error("Error while sending ping message to room", e);
 								}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/43c2e532/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 42b17c5..44bb5c2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,10 +40,10 @@
 		<maven.javadoc.version>2.10.3</maven.javadoc.version>
 		<maven.surefire.version>2.19.1</maven.surefire.version>
 		<maven-site.version>3.3</maven-site.version>
-		<wicket.version>7.5.0</wicket.version>
+		<wicket.version>7.6.0</wicket.version>
 		<wicketju.version>7.5.0</wicketju.version>
 		<wickets.version>7.5.0</wickets.version>
-		<wicketws.version>7.4.0</wicketws.version>
+		<wicketws.version>7.6.0</wicketws.version>
 		<red5-server.version>1.0.8-RELEASE</red5-server.version>
 		<red5-client.version>1.0.8-RELEASE</red5-client.version>
 		<spring.version>4.3.5.RELEASE</spring.version>


[18/50] [abbrv] openmeetings git commit: no jira: code clean-up

Posted by so...@apache.org.
no jira: code clean-up


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

Branch: refs/heads/3.1.x
Commit: cd4359ad6f7733895c291d6dcaf0e014b0626edc
Parents: 468f798
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Jan 10 16:06:54 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Jan 10 16:06:54 2017 +0000

----------------------------------------------------------------------
 openmeetings-core/pom.xml                       |  6 --
 .../test/xsd/GenerateConfigXsd.java             | 52 -------------
 .../test/xsd/GenerateWebsiteXsd.java            | 82 --------------------
 3 files changed, 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cd4359ad/openmeetings-core/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 70ee059..d5245fe 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -104,11 +104,5 @@
 			<artifactId>red5-client</artifactId>
 			<scope>test</scope>
 		</dependency>
-		<dependency>
-			<groupId>com.thaiopensource</groupId>
-			<artifactId>trang</artifactId>
-			<version>20091111</version>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cd4359ad/openmeetings-core/src/test/java/org/apache/openmeetings/test/xsd/GenerateConfigXsd.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/xsd/GenerateConfigXsd.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/xsd/GenerateConfigXsd.java
deleted file mode 100644
index cec59a2..0000000
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/xsd/GenerateConfigXsd.java
+++ /dev/null
@@ -1,52 +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.xsd;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-import com.thaiopensource.relaxng.translate.Driver;
-
-public class GenerateConfigXsd {
-	private static final Logger log = Red5LoggerFactory.getLogger(GenerateConfigXsd.class, webAppRootKey);
-	
-	public static void main(String... args) {
-		new GenerateConfigXsd();
-	}
-	
-	public GenerateConfigXsd() {
-		try {
-			
-			String[] args = { 
-				"src/main/webapp"+File.separatorChar+"openmeetings"+File.separatorChar+"public"+File.separatorChar+"config.xml",
-				"src/main/webapp"+File.separatorChar+"openmeetings"+File.separatorChar+"public"+File.separatorChar+"config.xsd"
-			};
-			
-			Driver.main(args);
-			
-		} catch (Exception err) {
-			log.error("Error", err);
-		}
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cd4359ad/openmeetings-core/src/test/java/org/apache/openmeetings/test/xsd/GenerateWebsiteXsd.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/xsd/GenerateWebsiteXsd.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/xsd/GenerateWebsiteXsd.java
deleted file mode 100644
index 1ee2a35..0000000
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/xsd/GenerateWebsiteXsd.java
+++ /dev/null
@@ -1,82 +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.xsd;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-import com.thaiopensource.relaxng.translate.Driver;
-
-public class GenerateWebsiteXsd {
-	private static final Logger log = Red5LoggerFactory.getLogger(GenerateWebsiteXsd.class, webAppRootKey);
-	private static String WEBSITE_ROOT_DIR = "xdocs";
-
-	public static void main(String... args) {
-		new GenerateWebsiteXsd();
-	}
-
-	public GenerateWebsiteXsd() {
-		try {
-
-			File curentDir = new File(WEBSITE_ROOT_DIR);
-
-			System.err.println(curentDir.getAbsolutePath());
-
-			// Get all XML Files of this Folder
-			FilenameFilter ff = new FilenameFilter() {
-				@Override
-				public boolean accept(File b, String name) {
-					File f = new File(b, name);
-					return f.getName().contains(".xml");
-				}
-			};
-
-			String[] allfiles = curentDir.list(ff);
-
-			System.err.println("allfiles LENGTH " + allfiles.length);
-
-			List<String> allfilesPlusXSD = new ArrayList<String>();
-
-			for (String fileName : allfiles) {
-				allfilesPlusXSD.add(WEBSITE_ROOT_DIR + File.separatorChar
-						+ fileName);
-			}
-
-			allfilesPlusXSD.add(WEBSITE_ROOT_DIR + File.separatorChar
-					+ "website.xsd");
-
-			for (String fileName : allfilesPlusXSD) {
-				System.err.println(fileName);
-			}
-
-			Driver.main(allfilesPlusXSD.toArray(new String[0]));
-
-		} catch (Exception err) {
-			log.error("Error", err);
-		}
-	}
-
-}


[08/50] [abbrv] openmeetings git commit: no jira: add language dialog is cleaned on open

Posted by so...@apache.org.
no jira: add language dialog is cleaned on open


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

Branch: refs/heads/3.1.x
Commit: 6e6fd3ee7d674674585ae8b675446578fb42c08a
Parents: 6c1b33a
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Dec 24 09:16:48 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Dec 24 09:16:48 2016 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/web/admin/labels/AddLanguageDialog.java | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6e6fd3ee/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
index c90a348..7657e4a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
@@ -51,7 +51,7 @@ public class AddLanguageDialog extends AbstractFormDialog<String> {
 	public AddLanguageDialog(String id, final LangPanel langPanel) {
 		super(id, Application.getString(364));
 		this.langPanel = langPanel;
-		add(form.add(feedback, iso));
+		add(form.add(feedback, iso.setOutputMarkupId(true)));
 		iso.add(new IValidator<String>() {
 			private static final long serialVersionUID = 1L;
 
@@ -91,8 +91,9 @@ public class AddLanguageDialog extends AbstractFormDialog<String> {
 
 	@Override
 	protected void onOpen(IPartialPageRequestHandler handler) {
-		super.onOpen(handler);
 		iso.setModelObject("");
+		handler.add(iso);
+		super.onOpen(handler);
 	}
 	
 	@Override


[07/50] [abbrv] openmeetings git commit: no jira: oflaDemo is filtered out

Posted by so...@apache.org.
no jira: oflaDemo is filtered out


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

Branch: refs/heads/3.1.x
Commit: 6c1b33a9a7e153da6e660c2096ba525c10d3014d
Parents: 6c10178
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Dec 23 17:42:15 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Dec 23 17:42:15 2016 +0000

----------------------------------------------------------------------
 openmeetings-server/src/main/assembly/components/all.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6c1b33a9/openmeetings-server/src/main/assembly/components/all.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/main/assembly/components/all.xml b/openmeetings-server/src/main/assembly/components/all.xml
index 5829514..a840a53 100644
--- a/openmeetings-server/src/main/assembly/components/all.xml
+++ b/openmeetings-server/src/main/assembly/components/all.xml
@@ -27,6 +27,7 @@
 				<exclude>webapps/installer/**</exclude>
 				<exclude>webapps/live/**</exclude>
 				<exclude>webapps/vod/**</exclude>
+				<exclude>webapps/oflaDemo/**</exclude>
 				<exclude>webapps/chat/**</exclude>
 				<exclude>webapps/root/demos/**</exclude>
 				<exclude>webapps/root/index.html</exclude>


[16/50] [abbrv] openmeetings git commit: no jira: Release preparation: LICENSE and CHANGELOG are updated

Posted by so...@apache.org.
no jira: Release preparation: LICENSE and CHANGELOG are updated


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

Branch: refs/heads/3.1.x
Commit: 5d3d950ede83de6e0183fe27dd1ecda03078d5f1
Parents: 5bb670d
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sun Jan 8 06:21:07 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sun Jan 8 06:21:07 2017 +0000

----------------------------------------------------------------------
 CHANGELOG |  60 +++++++++++++++++++++++++++++++++
 LICENSE   | 103 +++++++++++++++++----------------------------------------
 2 files changed, 90 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5d3d950e/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index 22f36d8..c826285 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,66 @@ Apache OpenMeetings Change Log
 See http://issues.apache.org/jira/browse/OPENMEETINGS-* (where * is the number of the issue below)
 See https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-* (where * is the number of CVE below)
 
+Release Notes - Openmeetings - Version 3.1.4
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-827] - Video play/stop event acceptable one time in all tab
+    * [OPENMEETINGS-1451] - SOAP/REST API documentation need to be improved
+    * [OPENMEETINGS-1475] - Select area is not unattached from cursor
+    * [OPENMEETINGS-1476] - Deleted records are shown under trash
+    * [OPENMEETINGS-1478] - Admin->Connections displays outdated connections
+    * [OPENMEETINGS-1479] - Dashboard Chat not disabled when dashboard.show.chat value is 0
+    * [OPENMEETINGS-1482] - Om performance issues
+    * [OPENMEETINGS-1483] - Error while installing OM on MSSQL
+    * [OPENMEETINGS-1484] - Super moderator is not moderator
+    * [OPENMEETINGS-1485] - Scroll is broken in restricted room
+    * [OPENMEETINGS-1486] - Registration dialog is broken
+    * [OPENMEETINGS-1487] - Clear text passwords shouldn't be sent via email
+    * [OPENMEETINGS-1489] - Calendar in broken in French
+    * [OPENMEETINGS-1492] - OM 3.1.3 duplication records in database
+    * [OPENMEETINGS-1494] - Calendar & Events
+    * [OPENMEETINGS-1495] - Labels in admin forms are overlapping with inputs
+    * [OPENMEETINGS-1496] - Dates from backup files are being parsed with errors
+    * [OPENMEETINGS-1499] - Backup import is crached under OS Windows
+    * [OPENMEETINGS-1500] - Image drop is broken, in case "don't ask" is selected
+    * [OPENMEETINGS-1502] - NullPointerException while checking existing LDAP user
+    * [OPENMEETINGS-1503] - WML file (saved WB) cannot be loaded - file not found
+    * [OPENMEETINGS-1504] - User with no password is being created in Web installer
+    * [OPENMEETINGS-1508] - Italian translation
+    * [OPENMEETINGS-1510] - WB drawing should be more smooth
+    * [OPENMEETINGS-1511] - LDAP user profile picture
+    * [OPENMEETINGS-1513] - The Installer Converters page should be improved
+    * [OPENMEETINGS-1514] - No show whiteboard after send invitation-meeting from Calendar
+    * [OPENMEETINGS-1517] - Close private chat is broken
+    * [OPENMEETINGS-1518] - Recorgings should not be converted to ogg/avi format
+    * [OPENMEETINGS-1521] - 'null' is shown instead of usergroup when user update and save User details
+    * [OPENMEETINGS-1523] - Inplace folder rename is not working
+    * [OPENMEETINGS-1524] - Poll description is missed in the Poll results
+    * [OPENMEETINGS-1525] - Openmeetings 3.1.3 - Problem with script red5-highperf.sh 
+
+** Improvement
+    * [OPENMEETINGS-1366] - Recommendations
+    * [OPENMEETINGS-1462] - Implementation for a delete button for the chat content on the principal chat window 
+    * [OPENMEETINGS-1467] - 3.1.4 Library versions should be updated
+    * [OPENMEETINGS-1480] - Ukrainian translation need to be improved
+    * [OPENMEETINGS-1488] - Additional functionality for groups
+    * [OPENMEETINGS-1490] - Jodconverter should be added to openmeetings project
+    * [OPENMEETINGS-1507] - Remove "application.base.url" configuration key
+    * [OPENMEETINGS-1512] - Wrong LDAP value can cause error on My Profile Page
+    * [OPENMEETINGS-1526] - Multiselect using Shift/Ctrl need to be added to file tree
+
+** New Feature
+    * [OPENMEETINGS-1427] - Re-name Witheboards tabs
+    * [OPENMEETINGS-1477] - Default chat font is too small
+    * [OPENMEETINGS-1501] - Openmeetings - deleting emails
+
+** Task
+    * [OPENMEETINGS-1515] - Fluido skin for the site should be replaced with reflow
+
+** Test
+    * [OPENMEETINGS-1516] - Users are kicked off the rooms and participant list is incomplete
+
+
 Release Notes - Openmeetings - Version 3.1.3
 ================================================================================================================
 ** Bug

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5d3d950e/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index 2c2acb5..933f1c6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -262,38 +262,17 @@ projects licensed under the Apache License 2.0:
 ======================================================================================================================
 
 red5-*.jar
-commons-daemon-1.0.15.jar
+commons-daemon-*.jar
 install-service.bat
 red5.bat
 red5.sh
-red5-highperf.sh
-red5-highperf.bat
 red5.service
 red5-debug.sh
 red5-debug.bat
 red5-shutdown.sh
 red5-shutdown.bat
 uninstall-service.bat
-conf/access.properties
-conf/catalina.policy
-conf/context.xml
-conf/ehcache.xml
-conf/jee-container.xml
-conf/keystore.jmx
-conf/logback.xml
-conf/no-jee-container.xml
-conf/password.properties
-conf/quartz.properties
-conf/realm.properties
-conf/red5-common.xml
-conf/red5-core.xml
-conf/red5.globals
-conf/red5.policy
-conf/red5.properties
-conf/red5.xml
-conf/tomcat-users.xml
-conf/truststore.jmx
-conf/web.xml
+conf/*
 webapps/red5-default.xml
 webapps/root/biglogo.png
 webapps/root/crossdomain.xml
@@ -307,13 +286,12 @@ webapps/root/WEB-INF/red5-web.properties
 webapps/root/WEB-INF/red5-web.xml
 webapps/root/WEB-INF/web.xml
 
-webapps/openmeetings/WEB-INF/lib/api-all-1.0.0-RC1.jar
+webapps/openmeetings/WEB-INF/lib/api-all-*.jar
 webapps/openmeetings/WEB-INF/lib/asterisk-java-1.0.0-final.jar
 webapps/openmeetings/WEB-INF/lib/bndlib-2.3.0.jar
 webapps/openmeetings/WEB-INF/lib/commons-*.jar
 webapps/openmeetings/WEB-INF/lib/cxf-*.jar
-webapps/openmeetings/WEB-INF/lib/derby-10.12.1.1.jar
-webapps/openmeetings/WEB-INF/lib/derbyclient-10.12.1.1.jar
+webapps/openmeetings/WEB-INF/lib/derby*.jar
 webapps/openmeetings/WEB-INF/lib/dom4j-1.6.1.jar
 webapps/openmeetings/WEB-INF/lib/geronimo-jms_1.1_spec-1.1.1.jar
 webapps/openmeetings/WEB-INF/lib/geronimo-jta_1.1_spec-1.1.1.jar
@@ -324,25 +302,29 @@ webapps/openmeetings/WEB-INF/lib/httpclient-4.5.2.jar
 webapps/openmeetings/WEB-INF/lib/httpcore-4.4.4.jar
 webapps/openmeetings/WEB-INF/lib/jettison-1.3.8.jar
 webapps/openmeetings/WEB-INF/lib/joda-time-2.9.4.jar
-webapps/openmeetings/WEB-INF/lib/jqplot4java-1.3.1.jar
-webapps/openmeetings/WEB-INF/lib/jqplot-7.4.0.jar
+webapps/openmeetings/WEB-INF/lib/jodconverter-core-3.0.1-om.jar
+webapps/openmeetings/WEB-INF/lib/jqplot4java-1.3.3.jar
+webapps/openmeetings/WEB-INF/lib/jqplot-7.6.0.jar
+webapps/openmeetings/WEB-INF/lib/json-1.3.jar
+webapps/openmeetings/WEB-INF/lib/juh-4.1.2.jar
+webapps/openmeetings/WEB-INF/lib/jurt-4.1.2.jar
 webapps/openmeetings/WEB-INF/lib/log4j-1.2.17.jar
 webapps/openmeetings/WEB-INF/lib/neethi-3.0.3.jar
-webapps/openmeetings/WEB-INF/lib/openjpa-2.4.1.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-2.4.2.jar
 webapps/openmeetings/WEB-INF/lib/org.apache.servicemix.bundles.antlr-2.7.7_5.jar
 webapps/openmeetings/WEB-INF/lib/org.apache.servicemix.bundles.dom4j-1.6.1_5.jar
 webapps/openmeetings/WEB-INF/lib/org.apache.servicemix.bundles.xpp3-1.1.4c_7.jar
 webapps/openmeetings/WEB-INF/lib/org.osgi.core-4.3.1.jar
+webapps/openmeetings/WEB-INF/lib/ridl-4.1.2.jar
 webapps/openmeetings/WEB-INF/lib/simple-xml-2.7.1.jar
 webapps/openmeetings/WEB-INF/lib/smslib-3.5.4.jar
 webapps/openmeetings/WEB-INF/lib/stax-1.2.0.jar
 webapps/openmeetings/WEB-INF/lib/stax2-api-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/wicket-*.jar
-webapps/openmeetings/WEB-INF/lib/wicketstuff-*.jar
+webapps/openmeetings/WEB-INF/lib/unoil-4.1.2.jar
+webapps/openmeetings/WEB-INF/lib/wicket*.jar
 webapps/openmeetings/WEB-INF/lib/woodstox-core-asl-4.4.1.jar
 webapps/openmeetings/WEB-INF/lib/wsdl4j-1.6.3.jar
 webapps/openmeetings/WEB-INF/lib/xbean-asm5-shaded-3.17.jar
-webapps/openmeetings/WEB-INF/lib/xercesImpl-2.11.0.jar
 webapps/openmeetings/WEB-INF/lib/xml-resolver-1.2.jar
 webapps/openmeetings/WEB-INF/lib/xmlschema-core-2.2.1.jar
 
@@ -352,30 +334,28 @@ lib/apache-mime4j-core-0.7.2.jar
 lib/apache-mime4j-dom-0.7.2.jar
 lib/boilerpipe-1.1.0.jar
 lib/commons-*.jar
+lib/cors-filter-2.5.jar
 lib/ehcache-core-2.6.11.jar
 lib/geronimo-jpa_2.0_spec-1.1.jar
 lib/gson-2.2.4.jar
 lib/httpclient-4.5.2.jar
 lib/httpcore-4.4.4.jar
 lib/isoparser-1.1.17.jar
-lib/jackson-core-2.7.1.jar
+lib/jackson-core-2.8.1.jar
+lib/java-property-utils-1.9.1.jar
 lib/jempbox-1.8.12.jar
-lib/metadata-extractor-2.8.1.jar
+lib/metadata-extractor-2.9.1.jar
 lib/mina-*.jar
-lib/ognl-3.1.2.jar
+lib/ognl-3.1.11.jar
 lib/pdfbox-*.jar
-lib/quartz-2.2.2.jar
+lib/quartz-2.2.3.jar
 lib/red5-*.jar
 lib/rome-1.5.1.jar
 lib/rome-utils-1.5.1.jar
 lib/spring-*.jar
 lib/tagsoup-1.2.1.jar
 lib/tika-*.jar
-lib/xercesImpl-2.11.0.jar
-lib/xml-apis-1.4.01.jar
 
-plugins/java-property-utils-*.jar
-plugins/cors-filter-*.jar
 plugins/tomcat-*.jar
 plugins/tomcatplugin-*.jar
 plugins/websocket-*.jar
@@ -518,10 +498,10 @@ The GlassFish code released under the CDDL shall be governed by the laws of the
 
 For SLF4J:
 
-lib/jcl-over-slf4j-1.7.21.jar
-lib/jul-to-slf4j-1.7.21.jar
-lib/log4j-over-slf4j-1.7.21.jar
-lib/slf4j-api-1.7.21.jar
+lib/jcl-over-slf4j-1.7.22.jar
+lib/jul-to-slf4j-1.7.22.jar
+lib/log4j-over-slf4j-1.7.22.jar
+lib/slf4j-api-1.7.22.jar
 
 Copyright (c) 2004-2008 QOS.ch
  All rights reserved.
@@ -1329,6 +1309,7 @@ For JDOM
 The following components are BSD Licensed 
 
 lib/xmpcore-5.1.2.jar
+lib/jmatio-1.2.jar
 
 ======================================================================================================================
 
@@ -1377,7 +1358,7 @@ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 OF THE POSSIBILITY OF SUCH DAMAGE.
 
-postgresql-9.4.1209.jre7.jar
+postgresql-9.4.1212.jre7.jar
 	Containing Project URL: http://jdbc.postgresql.org
 	
 	The PostgreSQL JDBC driver is distributed under the BSD license, same as the server. The simplest explanation of the licensing terms is that you can do whatever you want with the product and source code as long as you don't claim you wrote it or sue us. You should give it a read though, it's only half a page.
@@ -1447,7 +1428,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ======================================================================================================================
  iCal4j - License
  
-webapps/openmeetings/WEB-INF/lib/ical4j-2.0-beta1.jar
+webapps/openmeetings/WEB-INF/lib/ical4j-2.0.0.jar
  
 ======================================================================================================================
 
@@ -1487,10 +1468,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 For the components:
 
-lib/c3p0-0.9.1.1.jar
 lib/logback-classic-1.1.7.jar
 lib/logback-core-1.1.7.jar
-plugins/ecj-4.5.jar
+plugins/ecj-4.5.1.jar
 
 Eclipse Public License - v 1.0
 
@@ -1645,7 +1625,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 ======================================================================================================================
 
-For ThreeTen library: threetenbp-1.3.2.jar
+For ThreeTen library: threetenbp-1.3.3.jar
 
  * Copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos
  *
@@ -1680,29 +1660,6 @@ For ThreeTen library: threetenbp-1.3.2.jar
 
 ======================================================================================================================
 
-For Json library: json-20090211.jar
-
-Copyright (c) 2002 JSON.org
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
- The Software shall be used for Good, not Evil.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
-
-======================================================================================================================
-
 For javax.annotation-api-1.2.jar:
 	URL: http://jcp.org/en/jsr/detail?id=250
 	
@@ -2226,7 +2183,7 @@ For lib/sysout-over-slf4j-1.0.2.jar
  
  For
  lib/juniversalchardet-1.0.3.jar
- lib/javassist-3.11.0.GA.jar
+ lib/javassist-3.20.0-GA.jar
  
                            MOZILLA PUBLIC LICENSE
                                 Version 1.1


[23/50] [abbrv] openmeetings git commit: no jira: red5sip documentation is updated

Posted by so...@apache.org.
no jira: red5sip documentation is updated


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

Branch: refs/heads/3.1.x
Commit: 1736662382e799f97c5442bea64f8b21e6f845fe
Parents: c81ce36
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Jan 12 08:04:50 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Jan 12 08:04:50 2017 +0000

----------------------------------------------------------------------
 .../src/site/xdoc/red5sip-integration_3.1.xml   | 66 +++++++++-----------
 1 file changed, 30 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/17366623/openmeetings-server/src/site/xdoc/red5sip-integration_3.1.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/red5sip-integration_3.1.xml b/openmeetings-server/src/site/xdoc/red5sip-integration_3.1.xml
index d991bbb..bdc1b4d 100644
--- a/openmeetings-server/src/site/xdoc/red5sip-integration_3.1.xml
+++ b/openmeetings-server/src/site/xdoc/red5sip-integration_3.1.xml
@@ -21,7 +21,7 @@
 	</properties>
 	<body>
 		<section name="SIP-Transport Integration">
-			<p>You need Apache OpenMeetings <strong>version 3.0+</strong> to apply this guide!</p>
+			<p>You need Apache OpenMeetings <strong>version 3.1+</strong> to apply this guide!</p>
 			<p>You need Asterisk <strong>version 13+</strong> to apply this guide!</p>
 			<p>Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 12.10.</p>
 		</section>
@@ -220,7 +220,7 @@ write = all
 				</source>
 			</div><br />
 			<div>
-				Update Openmeetings with creadentials for Asterisk manager. 
+				Update OpenMeetings with credentials for Asterisk manager. 
 				Modify <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/openmeetings-applicationContext.xml</tt><br />
 				find <strong>&lt;bean id="sipDao" class="org.apache.openmeetings.db.dao.room.SipDao"&gt;</strong>
 				uncomment its parameters and set it to your custom values.
@@ -240,29 +240,25 @@ service asterisk restart
 		</section>
 
 		<section name="Setup red5sip transport">
-			<div>
-				Download red5sip from <tt>https://github.com/openmeetings/red5sip</tt>
-			</div>
-			<div>
-				<source>
+			<ul>
+				<li>Download red5sip from <tt>https://github.com/openmeetings/red5sip</tt>
+					<source>
 <![CDATA[
 git clone https://github.com/openmeetings/red5sip.git
 ]]>
-				</source>
-			</div>
-			<div>
-				Build with Apache Maven
-				<source>
+					</source>
+				</li>
+				<li>Build with Apache Maven
+					<source>
 <![CDATA[
+cd red5sip
 mvn clean package
 ]]>
-				</source>
-				All necessary files will be available in <tt>target</tt> folder, copy/move it to /opt/red5sip/
-			</div>
-			<div>
-				Insert proper values to the <tt>/opt/red5sip/settings.properties</tt>
-
-				<source>
+					</source>
+				</li>
+				<li>All necessary files will be available in <tt>target</tt> folder, copy/move it to /opt/red5sip/</li>
+				<li>Insert proper values to the <tt>/opt/red5sip/settings.properties</tt>
+					<source>
 <![CDATA[
 red5.host=127.0.0.1 # red5 server address
 om.context=openmeetings # Openmeetings context 
@@ -277,34 +273,32 @@ sip.proxy=127.0.0.1 # address of sip proxy
 rooms.forceStart=no # TBD
 rooms=1 # TBD (not in use)
 ]]>
-				</source>
-			</div>
-			<div>
-				Add red5sip to autostart:
-				<source>
+					</source>
+				</li>
+				<li>Add red5sip to autostart:
+					<source>
 <![CDATA[
 sudo cp /opt/red5sip/red5sip /etc/init.d/
 sudo chmod a+x /etc/init.d/red5sip
 sudo update-rc.d red5sip defaults
 ]]>
-				</source>
-			</div>
-			<div>
-				Start openmeetings
-				<source>
+					</source>
+				</li>
+				<li>Start openmeetings
+					<source>
 <![CDATA[
 service red5 start
 ]]>
-				</source>
-			</div>
-			<div>
-				Start red5sip
-				<source>
+					</source>
+				</li>
+				<li>Start red5sip
+					<source>
 <![CDATA[
 service red5sip start
 ]]>
-				</source>
-			</div>
+					</source>
+				</li>
+			</ul>
 		</section>
 	</body>
 </document>


[28/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1532] recording folders are imported as expected

Posted by so...@apache.org.
[OPENMEETINGS-1532] recording folders are imported as expected


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

Branch: refs/heads/3.1.x
Commit: acc5dde8274548a492ee6f96961e0fa90566c783
Parents: 85dc03b
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Jan 18 18:16:12 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Jan 18 18:16:12 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/backup/BackupImport.java       | 152 ++++++++++---------
 1 file changed, 80 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/acc5dde8/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 7ca97d3..c4f2992 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -193,7 +193,7 @@ public class BackupImport {
 	private static File unzip(InputStream is) throws IOException  {
 		File f = OmFileHelper.getNewDir(OmFileHelper.getUploadImportDir(), "import_" + CalendarPatterns.getTimeForStreamId(new Date()));
 		log.debug("##### EXTRACTING BACKUP TO: " + f);
-		
+
 		try (ZipInputStream zis = new ZipInputStream(is)) {
 			ZipEntry zipentry = null;
 			while ((zipentry = zis.getNextEntry()) != null) {
@@ -213,7 +213,7 @@ public class BackupImport {
 		}
 		return f;
 	}
-	
+
 	public void performImport(InputStream is) throws Exception {
 		usersMap.clear();
 		groupMap.clear();
@@ -240,7 +240,7 @@ public class BackupImport {
 			matcher.bind(Long.class, LongTransform.class);
 			registry.bind(Date.class, DateConverter.class);
 			registry.bind(User.class, new UserConverter(userDao, usersMap));
-			
+
 			List<Configuration> list = readList(serializer, f, "configs.xml", "configs", Configuration.class, true);
 			for (Configuration c : list) {
 				if (c.getKey() == null || c.isDeleted()) {
@@ -327,7 +327,7 @@ public class BackupImport {
 				}
 				//FIXME: OPENMEETINGS-750
 				//Convert old Backups with OmTimeZone to new schema
-				
+
 				String tz = u.getTimeZoneId();
 				if (tz == null) {
 					u.setTimeZoneId(jNameTimeZone);
@@ -335,7 +335,7 @@ public class BackupImport {
 				} else {
 					u.setForceTimeZoneCheck(false);
 				}
-				
+
 				Long userId = u.getId();
 				u.setId(null);
 				if (u.getSipUser() != null && u.getSipUser().getId() != 0) {
@@ -371,7 +371,7 @@ public class BackupImport {
 			matcher.bind(Integer.class, IntegerTransform.class);
 			registry.bind(User.class, new UserConverter(userDao, usersMap));
 			registry.bind(Room.Type.class, RoomTypeConverter.class);
-			
+
 			List<Room> list = readList(serializer, f, "rooms.xml", "rooms", Room.class);
 			for (Room r : list) {
 				Long roomId = r.getId();
@@ -399,10 +399,10 @@ public class BackupImport {
 			Registry registry = new Registry();
 			Strategy strategy = new RegistryStrategy(registry);
 			Serializer serializer = new Persister(strategy);
-	
+
 			registry.bind(Group.class, new GroupConverter(groupDao, groupMap));
 			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
-			
+
 			List<RoomGroup> list = readList(serializer, f, "rooms_organisation.xml", "room_organisations", RoomGroup.class);
 			for (RoomGroup ro : list) {
 				if (!ro.isDeleted() && ro.getRoom() != null && ro.getRoom().getId() != null && ro.getGroup() != null && ro.getGroup().getId() != null) {
@@ -421,11 +421,11 @@ public class BackupImport {
 			Registry registry = new Registry();
 			Strategy strategy = new RegistryStrategy(registry);
 			Serializer serializer = new Persister(strategy);
-	
+
 			registry.bind(User.class, new UserConverter(userDao, usersMap));
 			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
 			registry.bind(Date.class, DateConverter.class);
-			
+
 			List<ChatMessage> list = readList(serializer, f, "chat_messages.xml", "chat_messages", ChatMessage.class, true);
 			for (ChatMessage m : list) {
 				m.setId(null);
@@ -435,7 +435,7 @@ public class BackupImport {
 				chatDao.update(m);
 			}
 		}
-		
+
 		log.info("Chat messages import complete, starting appointement import");
 		/*
 		 * ##################### Import Appointements
@@ -444,12 +444,12 @@ public class BackupImport {
 			Registry registry = new Registry();
 			Strategy strategy = new RegistryStrategy(registry);
 			Serializer serializer = new Persister(strategy);
-	
+
 			registry.bind(User.class, new UserConverter(userDao, usersMap));
 			registry.bind(Appointment.Reminder.class, AppointmentReminderTypeConverter.class);
 			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
 			registry.bind(Date.class, DateConverter.class);
-			
+
 			List<Appointment> list = readList(serializer, f, "appointements.xml", "appointments", Appointment.class);
 			for (Appointment a : list) {
 				Long appId = a.getId();
@@ -475,7 +475,7 @@ public class BackupImport {
 		log.info("Appointement import complete, starting meeting members import");
 		/*
 		 * ##################### Import MeetingMembers
-		 * 
+		 *
 		 * Reminder Invitations will be NOT send!
 		 */
 		{
@@ -548,9 +548,9 @@ public class BackupImport {
 			Registry registry = new Registry();
 			Strategy strategy = new RegistryStrategy(registry);
 			Serializer serializer = new Persister(strategy);
-	
+
 			registry.bind(User.class, new UserConverter(userDao, usersMap));
-			
+
 			List<UserContact> list = readList(serializer, f, "userContacts.xml", "usercontacts", UserContact.class, true);
 			for (UserContact uc : list) {
 				Long ucId = uc.getId();
@@ -575,11 +575,11 @@ public class BackupImport {
 			Registry registry = new Registry();
 			Strategy strategy = new RegistryStrategy(registry);
 			Serializer serializer = new Persister(strategy);
-	
+
 			registry.bind(User.class, new UserConverter(userDao, usersMap));
 			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
 			registry.bind(Date.class, DateConverter.class);
-			
+
 			List<PrivateMessage> list = readList(serializer, f, "privateMessages.xml", "privatemessages", PrivateMessage.class, true);
 			boolean oldBackup = true;
 			for (PrivateMessage p : list) {
@@ -587,7 +587,6 @@ public class BackupImport {
 					oldBackup = false;
 					break;
 				}
-				
 			}
 			for (PrivateMessage p : list) {
 				p.setId(null);
@@ -605,8 +604,8 @@ public class BackupImport {
 				if (p.getOwner() != null && p.getOwner().getId() == null) {
 					p.setOwner(null);
 				}
-				if (oldBackup && p.getOwner() != null && p.getOwner().getId() != null 
-						&& p.getFrom() != null && p.getFrom().getId() != null 
+				if (oldBackup && p.getOwner() != null && p.getOwner().getId() != null
+						&& p.getFrom() != null && p.getFrom().getId() != null
 						&& p.getOwner().getId() == p.getFrom().getId())
 				{
 					p.setFolderId(SENT_FOLDER_ID);
@@ -632,6 +631,9 @@ public class BackupImport {
 				if (file.getParentId() != null && file.getParentId().longValue() <= 0L) {
 					file.setParentId(null);
 				}
+				if (Strings.isEmpty(file.getHash())) {
+					file.setHash(UUID.randomUUID().toString());
+				}
 				fileExplorerItemDao.update(file);
 			}
 		}
@@ -645,13 +647,13 @@ public class BackupImport {
 			Strategy strategy = new RegistryStrategy(registry);
 			RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions
 			Serializer serializer = new Persister(strategy, matcher);
-	
+
 			matcher.bind(Integer.class, IntegerTransform.class);
 			registry.bind(User.class, new UserConverter(userDao, usersMap));
 			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
 			registry.bind(RoomPoll.Type.class, PollTypeConverter.class);
 			registry.bind(Date.class, DateConverter.class);
-			
+
 			List<RoomPoll> list = readList(serializer, f, "roompolls.xml", "roompolls", RoomPoll.class, true);
 			for (RoomPoll rp : list) {
 				rp.setId(null);
@@ -670,7 +672,7 @@ public class BackupImport {
 				pollDao.update(rp);
 			}
 		}
-		
+
 		log.info("Poll import complete, starting copy of files and folders");
 		/*
 		 * ##################### Import real files and folders
@@ -678,14 +680,14 @@ public class BackupImport {
 		importFolders(f);
 
 		log.info("File explorer item import complete, clearing temp files");
-		
+
 		FileHelper.removeRec(f);
 	}
-	
+
 	private static <T> List<T> readList(Serializer ser, File baseDir, String fileName, String listNodeName, Class<T> clazz) throws Exception {
 		return readList(ser, baseDir, fileName, listNodeName, clazz, false);
 	}
-	
+
 	private static <T> List<T> readList(Serializer ser, File baseDir, String fileName, String listNodeName, Class<T> clazz, boolean notThow) throws Exception {
 		List<T> list = new ArrayList<>();
 		File xml = new File(baseDir, fileName);
@@ -712,7 +714,7 @@ public class BackupImport {
 		}
 		return list;
 	}
-	
+
 	private static Node getNode(Node doc, String name) {
 		if (doc != null) {
 			NodeList nl = doc.getChildNodes();
@@ -725,7 +727,7 @@ public class BackupImport {
 		}
 		return null;
 	}
-	
+
 	//FIXME (need to be removed in later versions) HACK to fix old properties
 	public List<FileExplorerItem> readFileExplorerItemList(File baseDir, String fileName, String listNodeName) throws Exception {
 		List<FileExplorerItem> list = new ArrayList<>();
@@ -739,7 +741,7 @@ public class BackupImport {
 			matcher.bind(Long.class, LongTransform.class);
 			matcher.bind(Integer.class, IntegerTransform.class);
 			registry.bind(Date.class, DateConverter.class);
-			
+
 			try (InputStream rootIs1 = new FileInputStream(xml); InputStream rootIs2 = new FileInputStream(xml);) {
 				InputNode root = NodeBuilder.read(rootIs1);
 				InputNode root1 = NodeBuilder.read(rootIs2); //HACK to handle old isFolder, isImage, isVideo, isRecording, isPresentation, isStoredWmlFile, isChart
@@ -750,33 +752,35 @@ public class BackupImport {
 					InputNode item1 = listNode1.getNext(); //HACK to handle old isFolder, isImage, isVideo, isRecording, isPresentation, isStoredWmlFile, isChart
 					while (item != null) {
 						FileExplorerItem f = ser.read(FileExplorerItem.class, item, false);
-						
+
 						boolean isFolder = false, isImage = false, isVideo = false, isPresentation = false, isStoredWmlFile = false, isChart = false;
 						//HACK to handle old isFolder, isImage, isVideo, isRecording, isPresentation, isStoredWmlFile, isChart
 						do {
-							if ("isChart".equals(item1.getName()) && "true".equals(item1.getValue())) {
+							String name = item1.getName();
+							String val = item1.getValue();
+							if ("isChart".equals(name) && "true".equals(val)) {
 								isChart = true;
 							}
-							if ("isImage".equals(item1.getName()) && "true".equals(item1.getValue())) {
+							if ("isImage".equals(name) && "true".equals(val)) {
 								isImage = true;
 							}
-							if ("isVideo".equals(item1.getName()) && "true".equals(item1.getValue())) {
+							if ("isVideo".equals(name) && "true".equals(val)) {
 								isVideo = true;
 							}
-							if ("isRecording".equals(item1.getName()) && "true".equals(item1.getValue())) {
+							if ("isRecording".equals(name) && "true".equals(val)) {
 								log.warn("Recording is stored in FileExplorer Items");
 								isVideo = true;
 							}
-							if ("isPresentation".equals(item1.getName()) && "true".equals(item1.getValue())) {
+							if ("isPresentation".equals(name) && "true".equals(val)) {
 								isPresentation = true;
 							}
-							if ("isStoredWmlFile".equals(item1.getName()) && "true".equals(item1.getValue())) {
+							if ("isStoredWmlFile".equals(name) && "true".equals(val)) {
 								isStoredWmlFile = true;
 							}
-							if ("isFolder".equals(item1.getName()) && "true".equals(item1.getValue())) {
+							if (("folder".equals(name) || "isFolder".equals(name)) && "true".equals(val)) {
 								isFolder = true;
 							}
-							item1 = listNode1.getNext(); //HACK to handle Address inside user
+							item1 = listNode1.getNext(); //HACK to handle old isFolder, isImage, isVideo, isRecording, isPresentation, isStoredWmlFile, isChart, wmlFilePath
 						} while (item1 != null && !"fileExplorerItem".equals(item1.getName()));
 						
 						if (f.getType() == null) {
@@ -817,12 +821,12 @@ public class BackupImport {
 			Strategy strategy = new RegistryStrategy(registry);
 			RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions
 			Serializer ser = new Persister(strategy, matcher);
-	
+
 			matcher.bind(Long.class, LongTransform.class);
 			matcher.bind(Integer.class, IntegerTransform.class);
 			registry.bind(Date.class, DateConverter.class);
 			registry.bind(Recording.Status.class, RecordingStatusConverter.class);
-			
+
 			try (InputStream rootIs1 = new FileInputStream(xml); InputStream rootIs2 = new FileInputStream(xml);) {
 				InputNode root = NodeBuilder.read(rootIs1);
 				InputNode root1 = NodeBuilder.read(rootIs2); //HACK to handle old isFolder
@@ -833,16 +837,18 @@ public class BackupImport {
 					InputNode item1 = listNode1.getNext(); //HACK to handle old isFolder
 					while (item != null) {
 						Recording r = ser.read(Recording.class, item, false);
-						
+
 						boolean isFolder = false;
 						//HACK to handle old isFolder
 						do {
-							if ("isFolder".equals(item1.getName()) && "true".equals(item1.getValue())) {
+							String name = item1.getName();
+							String val = item1.getValue();
+							if (("folder".equals(name) || "isFolder".equals(name)) && "true".equals(val)) {
 								isFolder = true;
 							}
 							item1 = listNode1.getNext(); //HACK to handle Address inside user
 						} while (item1 != null && !"flvrecording".equals(item1.getName()));
-						
+
 						if (r.getType() == null) {
 							r.setType(isFolder ? FileItem.Type.Folder : FileItem.Type.Recording);
 						}
@@ -858,16 +864,16 @@ public class BackupImport {
 	public List<User> readUserList(InputStream xml, String listNodeName) throws Exception {
 		return readUserList(new InputSource(xml), listNodeName);
 	}
-	
+
 	public List<User> readUserList(File baseDir, String fileName, String listNodeName) throws Exception {
 		File xml = new File(baseDir, fileName);
 		if (!xml.exists()) {
 			throw new Exception(fileName + " missing");
 		}
-		
+
 		return readUserList(new InputSource(xml.toURI().toASCIIString()), listNodeName);
 	}
-	
+
 	//FIXME (need to be removed in later versions) HACK to add external attendees previously stored in MeetingMember structure
 	private List<MeetingMember> readMeetingMemberList(File baseDir, String filename, String listNodeName) throws Exception {
 		Registry registry = new Registry();
@@ -876,15 +882,15 @@ public class BackupImport {
 
 		registry.bind(User.class, new UserConverter(userDao, usersMap));
 		registry.bind(Appointment.class, new AppointmentConverter(appointmentDao, appointmentsMap));
-		
+
 		File xml = new File(baseDir, filename);
 		if (!xml.exists()) {
 			throw new Exception(filename + " missing");
 		}
-		
+
 		DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
 		Document doc = dBuilder.parse(new InputSource(xml.toURI().toASCIIString()));
-		
+
 		StringWriter sw = new StringWriter();
 		Transformer xformer = TransformerFactory.newInstance().newTransformer();
 		xformer.transform(new DOMSource(doc), new StreamResult(sw));
@@ -908,16 +914,17 @@ public class BackupImport {
 					//HACK to handle external attendee's firstname, lastname, email
 					boolean contactValid = false;
 					do {
-						if (User.Type.contact == mm.getUser().getType() && "firstname".equals(item1.getName())) {
-							mm.getUser().setFirstname(item1.getValue());
+						String name = item1.getName();
+						String val = item1.getValue();
+						if (User.Type.contact == mm.getUser().getType() && "firstname".equals(name)) {
+							mm.getUser().setFirstname(val);
 						}
-						if (User.Type.contact == mm.getUser().getType() && "lastname".equals(item1.getName())) {
-							mm.getUser().setLastname(item1.getValue());
+						if (User.Type.contact == mm.getUser().getType() && "lastname".equals(name)) {
+							mm.getUser().setLastname(val);
 						}
-						if ("email".equals(item1.getName())) {
-							String email = item1.getValue();
+						if ("email".equals(name)) {
 							if (mm.getAppointment() != null && mm.getAppointment().getOwner() != null) {
-								mm.setUser(userDao.getContact(email, mm.getAppointment().getOwner()));
+								mm.setUser(userDao.getContact(val, mm.getAppointment().getOwner()));
 							}
 							contactValid = true;
 						}
@@ -942,7 +949,7 @@ public class BackupImport {
 		}
 		return list;
 	}
-	
+
 	//FIXME (need to be removed in later versions) HACK to fix 2 deleted nodes in users.xml and inline Address and sipData
 	private List<User> readUserList(InputSource xml, String listNodeName) throws Exception {
 		Registry registry = new Registry();
@@ -984,7 +991,7 @@ public class BackupImport {
 				}
 			}
 		}
-		
+
 		StringWriter sw = new StringWriter();
 		Transformer xformer = TransformerFactory.newInstance().newTransformer();
 		xformer.transform(new DOMSource(doc), new StreamResult(sw));
@@ -1002,7 +1009,7 @@ public class BackupImport {
 			InputNode item2 = listNode2.getNext(); //HACK to handle old om_time_zone, level_id, status
 			while (item != null) {
 				User u = ser.read(User.class, item, false);
-				
+
 				boolean needToSkip1 = true;
 				//HACK to handle Address inside user
 				if (u.getAddress() == null) {
@@ -1017,18 +1024,19 @@ public class BackupImport {
 				}
 				String levelId = null, status = null, stateId = null;
 				do {
-					if (u.getTimeZoneId() == null && "omTimeZone".equals(item2.getName())) {
-						String jName = item2.getValue();
-						u.setTimeZoneId(jName == null ? null : tzUtil.getTimeZone(jName).getID());
+					String name = item2.getName();
+					String val = item2.getValue();
+					if (u.getTimeZoneId() == null && "omTimeZone".equals(name)) {
+						u.setTimeZoneId(val == null ? null : tzUtil.getTimeZone(val).getID());
 					}
-					if ("level_id".equals(item2.getName())) {
-						levelId = item2.getValue();
+					if ("level_id".equals(name)) {
+						levelId = val;
 					}
-					if ("status".equals(item2.getName())) {
-						status = item2.getValue();
+					if ("status".equals(name)) {
+						status = val;
 					}
-					if ("state_id".equals(item2.getName())) {
-						stateId = item2.getValue();
+					if ("state_id".equals(name)) {
+						stateId = val;
 					}
 					item2 = listNode2.getNext(); //HACK to handle old om_time_zone, level_id, status
 				} while (item2 != null && !"user".equals(item2.getName()));
@@ -1076,7 +1084,7 @@ public class BackupImport {
 		}
 		return list;
 	}
-	
+
 	private static Long getProfileId(File f) {
 		String n = f.getName();
 		if (n.indexOf(profilesPrefix) > -1) {
@@ -1084,7 +1092,7 @@ public class BackupImport {
 		}
 		return null;
 	}
-	
+
 	private void importFolders(File importBaseDir) throws IOException {
 		// Now check the room files and import them
 		File roomFilesFolder = new File(importBaseDir, "roomFiles");
@@ -1179,7 +1187,7 @@ public class BackupImport {
 		}
 		return newId;
 	}
-	
+
 	private static String getCountry(String countryId) {
 		if (countries.isEmpty()) {
 			try (InputStream is = BackupImport.class.getResourceAsStream("countries.properties")) {


[29/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1533] appointment can be created using calendar web service

Posted by so...@apache.org.
[OPENMEETINGS-1533] appointment can be created using calendar web service


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

Branch: refs/heads/3.1.x
Commit: 86e69e362695da3095551bea4fdc14a9c77fc70f
Parents: acc5dde
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Jan 19 05:41:22 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Jan 19 05:41:22 2017 +0000

----------------------------------------------------------------------
 .../db/dto/calendar/AppointmentDTO.java         | 57 +++++++++++++++++-
 .../db/dto/calendar/MeetingMemberDTO.java       | 17 +++++-
 .../openmeetings/db/dto/room/RoomDTO.java       | 13 ++--
 .../openmeetings/db/dto/room/RoomStatus.java    |  1 -
 .../openmeetings/db/dto/user/UserDTO.java       | 40 +++++++++++--
 .../openmeetings/util/CalendarPatterns.java     | 16 ++---
 .../apache/openmeetings/web/app/WebSession.java | 38 ++++++------
 .../webservice/CalendarWebService.java          | 62 ++++++++++++--------
 8 files changed, 180 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/86e69e36/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
index bcd04c8..a485a2f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
@@ -18,7 +18,10 @@
  */
 package org.apache.openmeetings.db.dto.calendar;
 
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT;
+
 import java.io.Serializable;
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -36,6 +39,8 @@ import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -118,7 +123,7 @@ public class AppointmentDTO implements Serializable {
 		a.setReminderEmailSend(reminderEmailSend);
 		return a;
 	}
-	
+
 	public Long getId() {
 		return id;
 	}
@@ -278,4 +283,54 @@ public class AppointmentDTO implements Serializable {
 	public void setPassword(String password) {
 		this.password = password;
 	}
+
+	private static Date optDate(JSONObject o, String prop) throws ParseException {
+		return ISO8601_FORMAT.parse(o.optString(prop));
+	}
+
+	private static Calendar optCal(AppointmentDTO a, JSONObject o, String prop) throws ParseException {
+		Calendar c = Calendar.getInstance(TimeZone.getTimeZone(a.owner.getTimeZoneId()));
+		c.setTime(ISO8601_FORMAT.parse(o.optString(prop)));
+		return c;
+	}
+
+	public static AppointmentDTO fromString(String s) throws ParseException {
+		JSONObject o = new JSONObject(s);
+		AppointmentDTO a = new AppointmentDTO();
+		a.id = o.optLong("id");
+		a.title = o.optString("title");
+		a.location = o.optString("location");
+		a.owner = UserDTO.get(o.optJSONObject("owner"));
+		a.start = optCal(a, o, "start");
+		a.end = optCal(a, o, "end");
+		a.description = o.optString("description");
+		a.inserted = optDate(o, "inserted");
+		a.updated = optDate(o, "updated");
+		a.deleted = o.optBoolean("inserted");
+		a.reminder = Reminder.valueOf(o.optString("reminder"));
+		a.room = RoomDTO.get(o.optJSONObject("room"));
+		a.icalId = o.optString("icalId");
+		JSONArray mm = o.optJSONArray("meetingMembers");
+		if (mm != null) {
+			for (int i = 0; i < mm.length(); ++i) {
+				a.meetingMembers.add(MeetingMemberDTO.get(mm.getJSONObject(i)));
+			}
+		}
+		a.languageId = o.optLong("languageId");
+		a.password = o.optString("password");
+		a.passwordProtected = o.optBoolean("passwordProtected");
+		a.connectedEvent = o.optBoolean("connectedEvent");
+		a.reminderEmailSend = o.optBoolean("reminderEmailSend");
+		return a;
+	}
+
+	@Override
+	public String toString() {
+		return new JSONObject(this)
+			.put("start", ISO8601_FORMAT.format(start))
+			.put("end", ISO8601_FORMAT.format(end))
+			.put("inserted", ISO8601_FORMAT.format(inserted))
+			.put("updated", ISO8601_FORMAT.format(updated))
+			.toString();
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/86e69e36/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index c090ca2..44022cb 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.wicket.ajax.json.JSONObject;
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -34,7 +35,7 @@ public class MeetingMemberDTO implements Serializable {
 	private static final long serialVersionUID = 1L;
 	private Long id;
 	private UserDTO user;
-	
+
 	public MeetingMemberDTO() {}
 
 	public MeetingMemberDTO(MeetingMember mm) {
@@ -48,7 +49,7 @@ public class MeetingMemberDTO implements Serializable {
 		mm.setUser(user.get(userDao));
 		return mm;
 	}
-	
+
 	public Long getId() {
 		return id;
 	}
@@ -64,4 +65,16 @@ public class MeetingMemberDTO implements Serializable {
 	public void setUser(UserDTO user) {
 		this.user = user;
 	}
+
+	public static MeetingMemberDTO get(JSONObject o) {
+		MeetingMemberDTO m = new MeetingMemberDTO();
+		m.id = o.optLong("id");
+		m.user = UserDTO.get(o.optJSONObject("user"));
+		return m;
+	}
+
+	@Override
+	public String toString() {
+		return new JSONObject(this).toString();
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/86e69e36/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
index a1a7ae1..3020a25 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -63,7 +63,7 @@ public class RoomDTO implements Serializable {
 	private boolean whiteboardHidden;
 
 	public RoomDTO() {}
-	
+
 	public RoomDTO(Room r) {
 		id = r.getId();
 		name = r.getName();
@@ -122,7 +122,7 @@ public class RoomDTO implements Serializable {
 		r.setHideWhiteboard(whiteboardHidden);
 		return r;
 	}
-	
+
 	public Long getId() {
 		return id;
 	}
@@ -340,9 +340,12 @@ public class RoomDTO implements Serializable {
 		}
 		return rList;
 	}
-	
+
 	public static RoomDTO fromString(String s) {
-		JSONObject o = new JSONObject(s);
+		return get(new JSONObject(s));
+	}
+
+	public static RoomDTO get(JSONObject o) {
 		RoomDTO r = new RoomDTO();
 		r.id = optLong(o, "id");
 		r.name = o.optString("name");
@@ -372,7 +375,7 @@ public class RoomDTO implements Serializable {
 		r.whiteboardHidden = o.optBoolean("whiteboardHidden", false);
 		return r;
 	}
-	
+
 	@Override
 	public String toString() {
 		return new JSONObject(this).toString();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/86e69e36/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
index f02a005..0c08b38 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
@@ -23,7 +23,6 @@ import java.util.List;
 import org.apache.openmeetings.db.entity.room.Client;
 
 public class RoomStatus {
-	
 	List<Client> clientList;
 	BrowserStatus browserStatus;
 	boolean roomFull = false;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/86e69e36/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
index f07d701..3e9fc20 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
@@ -20,6 +20,7 @@ package org.apache.openmeetings.db.dto.user;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -30,6 +31,8 @@ import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
 
 @XmlRootElement
 public class UserDTO implements Serializable {
@@ -39,9 +42,9 @@ public class UserDTO implements Serializable {
 	private String password;
 	private String firstname;
 	private String lastname;
-	private Set<Right> rights;
+	private Set<Right> rights = new HashSet<>();
 	private Long languageId;
-	private Address address;
+	private Address address = new Address();
 	private String timeZoneId;
 	private String externalId;
 	private String externalType;
@@ -62,7 +65,7 @@ public class UserDTO implements Serializable {
 		externalId = u.getExternalId();
 		externalType = u.getExternalType();
 	}
-	
+
 	public User get(UserDao userDao) {
 		User u = id == null ? new User() : userDao.get(id);
 		u.setFirstname(firstname);
@@ -76,7 +79,7 @@ public class UserDTO implements Serializable {
 		u.setType(type);
 		return u;
 	}
-	
+
 	public static List<UserDTO> list(List<User> l) {
 		List<UserDTO> uList = new ArrayList<>();
 		if (l != null) {
@@ -86,7 +89,7 @@ public class UserDTO implements Serializable {
 		}
 		return uList;
 	}
-	
+
 	public Long getId() {
 		return id;
 	}
@@ -182,4 +185,31 @@ public class UserDTO implements Serializable {
 	public void setExternalType(String externalType) {
 		this.externalType = externalType;
 	}
+
+	public static UserDTO get(JSONObject o) {
+		UserDTO u = new UserDTO();
+		u.id = o.optLong("id");
+		u.login = o.optString("login");
+		u.password = o.optString("password");
+		u.firstname = o.optString("firstname");
+		u.lastname = o.optString("lastname");
+		JSONArray rr = o.optJSONArray("rights");
+		if (rr !=  null) {
+			for (int i = 0; i < rr.length(); ++i) {
+				u.rights.add(Right.valueOf(rr.getString(i)));
+			}
+		}
+		u.languageId = o.optLong("languageId");
+		JSONObject a = o.optJSONObject("address");
+		if (a != null) {
+			u.address.setId(a.optLong("id"));
+			u.address.setCountry(a.optString("country"));
+			u.address.setEmail(a.optString("email"));
+		}
+		u.timeZoneId = o.optString("timeZoneId");
+		u.externalId = o.optString("externalId");
+		u.externalType = o.optString("externalType");
+		u.type = Type.valueOf(o.optString("type"));
+		return u;
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/86e69e36/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
index c9682d3..e74020d 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
@@ -35,13 +35,15 @@ import org.slf4j.Logger;
 public class CalendarPatterns {
 	private static final Logger log = Red5LoggerFactory.getLogger(CalendarPatterns.class, webAppRootKey);
 
-	public static FastDateFormat dateFormat__ddMMyyyyHHmmss = FastDateFormat.getInstance("dd.MM.yyyy HH:mm:ss");
-	public static FastDateFormat dateFormat__ddMMyyyy = FastDateFormat.getInstance("dd.MM.yyyy");
-	public static FastDateFormat dateFormat__ddMMyyyyBySeparator = FastDateFormat.getInstance("dd-MM-yyyy");
-	public static FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
-	public static FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
-	public static String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
-	public static FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
+	public static final FastDateFormat dateFormat__ddMMyyyyHHmmss = FastDateFormat.getInstance("dd.MM.yyyy HH:mm:ss");
+	public static final FastDateFormat dateFormat__ddMMyyyy = FastDateFormat.getInstance("dd.MM.yyyy");
+	public static final FastDateFormat dateFormat__ddMMyyyyBySeparator = FastDateFormat.getInstance("dd-MM-yyyy");
+	public static final FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
+	public static final FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
+	public static final String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
+	public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
+	public static final FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
+	public static final FastDateFormat ISO8601_FORMAT = FastDateFormat.getInstance(ISO8601_FORMAT_STRING);
 
 	public static String getDateByMiliSeconds(Date t) {
 		return dateFormat__yyyyMMddHHmmss.format(t);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/86e69e36/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 c8c3389..dd7d2c0 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
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.app;
 
 import static java.text.DateFormat.SHORT;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT_STRING;
 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;
@@ -91,7 +92,6 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = getLogger(WebSession.class, webAppRootKey);
 	public static final int MILLIS_IN_MINUTE = 60000;
-	public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
 	public static final List<String> AVAILABLE_TIMEZONES = Arrays.asList(TimeZone.getAvailableIDs());
 	public static final Set<String> AVAILABLE_TIMEZONE_SET = new LinkedHashSet<String>(AVAILABLE_TIMEZONES);
 	public static final String WICKET_ROOM_ID = "wicketroomid";
@@ -315,7 +315,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		setLocale(getLocale(u));
 		sdf = FastDateFormat.getDateTimeInstance(SHORT, SHORT, getLocale());
 	}
-	
+
 	public boolean signIn(String login, String password, Type type, Long domainId) {
 		try {
 			User u = null;
@@ -344,7 +344,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		}
 		return false;
 	}
-	
+
 	public boolean signIn(User u) {
 		Sessiondata sessData = getBean(SessiondataDao.class).create();
 		SID = sessData.getSessionId();
@@ -354,20 +354,20 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		setUser(u, null);
 		return true;
 	}
-	
+
 	public Long getLoginError() {
 		return loginError;
 	}
-	
+
 	public static WebSession get() {
 		return (WebSession)AbstractAuthenticatedWebSession.get();
 	}
-	
+
 	@Override
 	public void setLanguage(long languageId) {
 		this.languageId = languageId;
 	}
-	
+
 	public static long getLanguage() {
 		checkIsInvalid();
 		WebSession session = get();
@@ -380,7 +380,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		}
 		return session.languageId;
 	}
-	
+
 	public String getValidatedSid() {
 		SessiondataDao sessionDao = getBean(SessiondataDao.class);
 		Long _userId = sessionDao.check(SID);
@@ -398,7 +398,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		}
 		return SID;
 	}
-	
+
 	public static String getSid() {
 		return get().getValidatedSid();
 	}
@@ -439,20 +439,20 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 	public static FastDateFormat getIsoDateFormat() {
 		return get().ISO8601FORMAT;
 	}
-	
+
 	public static FastDateFormat getDateFormat() {
 		return get().sdf;
 	}
-	
+
 	public static Set<Right> getRights() {
 		checkIsInvalid();
 		return get().rights;
 	}
-	
+
 	public static void setKickedByAdmin(boolean kicked) {
 		get().kickedByAdmin = kicked;
 	}
-	
+
 	public boolean isKickedByAdmin() {
 		return kickedByAdmin;
 	}
@@ -465,7 +465,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		this.area = area;
 	}
 
-	
+
 	public static Dashboard getDashboard() {
 		Dashboard d = get().dashboard;
 		if (d == null) {
@@ -474,7 +474,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		}
 		return d;
 	}
-	
+
 	public Locale getBrowserLocale(){
 		return browserLocale;
 	}
@@ -507,12 +507,12 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		}
 		return _zone == null ? null : _zone.getID();
 	}
-	
+
 	public static TimeZone getClientTimeZone() {
 		String tzCode = get().getClientTZCode();
 		return tzCode == null ? null : TimeZone.getTimeZone(tzCode);
 	}
-	
+
 	private void initDashboard() {
 		DashboardContext dashboardContext = getDashboardContext();
 		dashboard = (UserDashboard)dashboardContext.getDashboardPersister().load();
@@ -590,12 +590,12 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 	public long getOmLanguage() {
 		return getLanguage();
 	}
-	
+
 	private static void checkIsInvalid() {
 		if (isInvaldSession(get().getId())) {
 			setKickedByAdmin(true);
 			removeInvalidSession(get().getId());
-			org.apache.wicket.Session session = (org.apache.wicket.Session)get();
+			org.apache.wicket.Session session = get();
 			session.invalidate();
 			Application.get().restartResponseAtSignInPage();
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/86e69e36/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index d358763..3baed72 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -26,9 +26,11 @@ import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
+import javax.jws.WebMethod;
 import javax.jws.WebParam;
 import javax.jws.WebService;
 import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
@@ -43,6 +45,7 @@ import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
@@ -52,9 +55,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * CalendarService contains methods to create, edit delete calendar meetings
- * 
+ *
  * @author sebawagner
- * 
+ *
  */
 @WebService(serviceName="org.apache.openmeetings.webservice.CalendarWebService", targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
@@ -72,14 +75,14 @@ public class CalendarWebService {
 
 	/**
 	 * Load appointments by a start / end range for the current SID
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param start
 	 *            start time
 	 * @param end
 	 *            end time
-	 *            
+	 *
 	 * @return - list of appointments in range
 	 * @throws {@link ServiceException} in case of any error
 	 */
@@ -108,7 +111,7 @@ public class CalendarWebService {
 
 	/**
 	 * Load appointments by a start / end range for the userId
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param userid
@@ -117,7 +120,7 @@ public class CalendarWebService {
 	 *            start time
 	 * @param end
 	 *            end time
-	 *            
+	 *
 	 * @return - list of appointments in range
 	 * @throws {@link ServiceException} in case of any error
 	 */
@@ -148,7 +151,7 @@ public class CalendarWebService {
 
 	/**
 	 * Get the next Calendar event for the current user of the SID
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @return - next Calendar event
@@ -175,12 +178,12 @@ public class CalendarWebService {
 
 	/**
 	 * Get the next Calendar event for userId
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param userid
 	 *            the userId the calendar events should be loaded
-	 *            
+	 *
 	 * @return - next Calendar event
 	 * @throws {@link ServiceException} in case of any error
 	 */
@@ -204,9 +207,9 @@ public class CalendarWebService {
 	}
 
 	/**
-	 * 
+	 *
 	 * Load a calendar event by its room id
-	 * 
+	 *
 	 * @param sid
 	 * @param roomid
 	 * @return - calendar event by its room id
@@ -236,12 +239,12 @@ public class CalendarWebService {
 
 	/**
 	 * Search a calendar event for the current SID
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param title
 	 *            the search string
-	 *            
+	 *
 	 * @return - calendar event list
 	 * @throws {@link ServiceException} in case of any error
 	 */
@@ -265,28 +268,39 @@ public class CalendarWebService {
 
 	/**
 	 * Save an appointment
-	 * 
+	 *
 	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param appointment
-	 *            calendar event 
-	 *            
+	 *            calendar event
+	 *
 	 * @return - appointment saved
 	 * @throws {@link ServiceException} in case of any error
 	 */
+	@WebMethod
 	@POST
 	@Path("/") //TODO FIXME update is also here for now
-	public AppointmentDTO save(@QueryParam("sid") @WebParam(name="sid") String sid, @QueryParam("appointment") @WebParam(name="appointment") AppointmentDTO appointment) throws ServiceException {
+	public AppointmentDTO save(@QueryParam("sid") @WebParam(name="sid") String sid, @FormParam("appointment") @WebParam(name="appointment") AppointmentDTO appointment) throws ServiceException {
 		//Seems to be create
 		log.debug("save SID:" + sid);
 
 		try {
 			Long userId = sessionDao.check(sid);
 			log.debug("save userId:" + userId);
-
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+			User u = userDao.get(userId);
+			if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
+					&& (appointment.getOwner() != null || appointment.getRoom().isPublic() || !appointment.getRoom().isAppointment()))
+			{
+				//TODO maybe additional checks are required
+				log.error("USER/Room modification as SOAP");
+				throw new ServiceException("Insufficient permissions"); //TODO code -26
+			}
+			if (AuthLevelUtil.hasUserLevel(u.getRights())) {
 				Appointment a = appointment.get(userDao, appointmentDao);
-				return new AppointmentDTO(appointmentDao.update(a, userId));
+				if (a.getOwner() == null) {
+					a.setOwner(u);
+				}
+				return new AppointmentDTO(appointmentDao.update(a, u.getId()));
 			} else {
 				log.error("save : wrong user level");
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -298,16 +312,16 @@ public class CalendarWebService {
 			throw new ServiceException(err.getMessage());
 		}
 	}
-	
+
 	/**
-	 * 
+	 *
 	 * delete a calendar event
-	 * 
+	 *
 	 * If the given SID is from an Administrator or Web-Service user, the user
 	 * can delete any appointment.<br/>
 	 * If the SID is assigned to a simple user, he can only delete appointments
 	 * where he is also the owner/creator of the appointment
-	 * 
+	 *
 	 * @param sid
 	 *            an authenticated SID
 	 * @param id


[38/50] [abbrv] openmeetings git commit: [OPENMEETINGS-816] loginUI wicket test is fixed

Posted by so...@apache.org.
[OPENMEETINGS-816] loginUI wicket test is fixed


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

Branch: refs/heads/3.1.x
Commit: 10a84c370794272bc79e60212534ce0398cf7ed6
Parents: 304a488
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sun Jan 22 16:48:27 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sun Jan 22 16:48:27 2017 +0000

----------------------------------------------------------------------
 .../test/selenium/AbstractTestDefaults.java     | 17 ++++---
 .../openmeetings/test/selenium/TestSignUp.java  | 50 +++++++++-----------
 .../apache/openmeetings/test/web/LoginUI.java   | 45 ++++++++++--------
 3 files changed, 57 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/10a84c37/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
index 1454122..d5ba8cb 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
@@ -34,12 +34,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 @Category(SeleniumTests.class)
 public abstract class AbstractTestDefaults extends AbstractSpringTest {
-	
 	@Autowired
 	private LabelDao labelDao;
 
 	public WebDriver driver = null;
-	
+
 	private String BASE_URL = "http://localhost:5080/openmeetings";
 	private String username = "swagner";
 	private String userpass = "qweqwe";
@@ -67,11 +66,11 @@ public abstract class AbstractTestDefaults extends AbstractSpringTest {
 	public String getEmail() {
 		return email;
 	}
-	
+
 	public Long getLanguageId() {
 		return 1L;
 	}
-	
+
 	public String getLocale() {
 		return locale;
 	}
@@ -80,14 +79,14 @@ public abstract class AbstractTestDefaults extends AbstractSpringTest {
 	// Eclipse, the browser will not shut down after the test so you can start
 	// to diagnose the test issue
 	public boolean doTearDownAfterTest = false;
-	
+
 	public String getString(long id) {
 		return labelDao.getString(id, getLanguageId());
 	}
 
 	/**
 	 * Make method overwrite possible to have custom behavior in tests
-	 * 
+	 *
 	 * @return
 	 */
 	public boolean getDoTearDownAfterTest() {
@@ -104,7 +103,7 @@ public abstract class AbstractTestDefaults extends AbstractSpringTest {
 	/**
 	 * This test is a basic test to verify the default loader mechanism works
 	 * it is not intend to be a part of any sub test
-	 * 
+	 *
 	 * @throws Exception
 	 */
 	//@Test
@@ -131,9 +130,9 @@ public abstract class AbstractTestDefaults extends AbstractSpringTest {
 	}
 
 	/**
-	 * Throws exception in case that test fails, so it is important to not catch 
+	 * Throws exception in case that test fails, so it is important to not catch
 	 * that exception but really let the test fail!
-	 * 
+	 *
 	 * @throws Exception
 	 */
 	protected void testIsInstalledAndDoInstallation() throws Exception {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/10a84c37/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/TestSignUp.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/TestSignUp.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/TestSignUp.java
index 0a0a5d5..9da9a71 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/TestSignUp.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/TestSignUp.java
@@ -27,9 +27,8 @@ import org.openqa.selenium.WebElement;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
 
 public class TestSignUp extends AbstractTestDefaults {
-	
 	String pass = "pass";
-	
+
 	@Override
 	public boolean getDoTearDownAfterTest() {
 		return false;
@@ -37,97 +36,94 @@ public class TestSignUp extends AbstractTestDefaults {
 
 	@Test
 	public void testSignUp() throws Exception {
-		
 		try {
 			driver.get(getBASE_URL());
-			
+
 			String currentRandomCounter = "" + ((new Date().getTime())/1000);
 			String userName = "seba" + currentRandomCounter;
 			String email = "hans." + currentRandomCounter + "@openmeetings.apache.org";
-			
+
 			super.testIsInstalledAndDoInstallation();
-			
+
 			WebElement signUpButton = SeleniumUtils.findElement(driver,
 					"//button[span[contains(text(), '" + getString(123) + "')]]", true, true);
 			signUpButton.click();
-			
+
 			// ##################################
 			// Test validation message for passwords to be identical
 			// ##################################
 			doSignUp("Hans","Muster", userName, "pw", "pw2", email);
-			
+
 			//Find Error label-id 232 "Please enter two identical passwords"
 			SeleniumUtils.findElement(driver, "//span[@class='feedbackPanelERROR'][contains(text(), '" + getString(232) + "')]", true, true);
-			
-			
+
 			// ##################################
 			// Sign up with user and sign in
 			// ##################################
 			doSignUp("Hans","Muster", userName, pass, pass, email);
-			
-			
+
 			//Check for popup with success message and email to check
 			//Labelid 674
 			SeleniumUtils.findElement(driver, "//span[contains(text(), '" + getString(674) + "')]", true, true);
-			
+
 			//click button to close popup
 			WebElement signUpSucessPopUpOkButton = SeleniumUtils.findElement(driver,
 					"//button[span[contains(text(), '" + DialogButtons.OK.toString() + "')]]", true, true);
 			signUpSucessPopUpOkButton.click();
-			
+
 			//Login with user
 			SeleniumUtils.inputText(driver, "login", userName);
 			SeleniumUtils.inputText(driver, "pass", pass);
-	
+
 			//click labelid 112 "Sign In"
 			WebElement signInButton = SeleniumUtils.findElement(driver,
 					"//button[span[contains(text(), '" + getString(112) + "')]]", true, true);
 			signInButton.click();
-	
+
 			// check for some text in dashbaord, labelid 281, "Help and support"
 			SeleniumUtils.elementExists(driver,
 					"//h3[contains(text(), '" + getString(281) + "')]", true);
-			
+
 			//sign out
 			WebElement signOutLink = SeleniumUtils.findElement(driver,
 					"//a[contains(text(), '" + getString(310) + "')]", true, true);
 			signOutLink.click();
-			
+
 			Alert alert = driver.switchTo().alert();
 			alert.accept();
-			
+
 			// ##################################
 			// Sign up with same user and email and check duplicate messages
 			// ##################################
-			
+
 			signUpButton = SeleniumUtils.findElement(driver,
 					"//button[span[contains(text(), '" + getString(123) + "')]]", true, true);
 			signUpButton.click();
-			
+
 			doSignUp("Hans","Muster", userName, pass, pass, email);
-			
+
 			//Find Error label-id 105, The username is already used
 			SeleniumUtils.findElement(driver, "//span[@class='feedbackPanelERROR'][contains(text(), '" + getString(105) + "')]", true, true);
-			
+
 			//Find Error label-id 1000, This email is already used by another user.
 			SeleniumUtils.findElement(driver, "//span[@class='feedbackPanelERROR'][contains(text(), '" + getString(1000) + "')]", true, true);
 		} catch (Exception e) {
 			SeleniumUtils.makeScreenShot(this.getClass().getSimpleName(), e,
 					driver);
 			throw e;
-		}	
+		}
 	}
-	
+
 	private void doSignUp(String firstName, String lastName, String login, String password,
 					String confirmPassword, String email) throws Exception {
-		
+
 		SeleniumUtils.inputText(driver, "firstName", firstName);
 		SeleniumUtils.inputText(driver, "lastName", lastName);
 		SeleniumUtils.inputText(driver, "//input[@name='login']", login);
 		SeleniumUtils.inputText(driver, "password", password);
 		SeleniumUtils.inputText(driver, "confirmPassword", confirmPassword);
 		SeleniumUtils.inputText(driver, "email", email);
-		
+
 		WebElement submitButton = SeleniumUtils.findElement(driver,
 				"//button[span[contains(text(), 'Register')]]", true, true);
 		submitButton.click();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/10a84c37/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
index 51324cf..7173add 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
@@ -18,35 +18,42 @@
  */
 package org.apache.openmeetings.test.web;
 
+import static org.junit.Assert.assertTrue;
+
 import org.apache.openmeetings.test.AbstractWicketTester;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.openmeetings.web.pages.auth.SignInPage;
 import org.apache.wicket.util.tester.FormTester;
+import org.junit.Test;
 
 public class LoginUI extends AbstractWicketTester {
-
-        //@Test Needs to much memory to start this test, and there is nothing useful here inside other then some basic
-        //proof of concept (basically the concept failed)
-	public void testLoginUi() {
-		
+	@Test
+	public void testValidLogin() {
 		tester.startPage(MainPage.class);
-		
 		tester.assertRenderedPage(SignInPage.class);
-		
+
 		FormTester formTester = tester.newFormTester("signin:signin");
 		formTester.setValue("login", username);
 		formTester.setValue("pass", userpass);
-		
-		//How to reference specific buttons in Wicket jQuery UI ?!
-		
-		formTester.submit();
-		
-		System.err.println("getLastRenderedPage: "+ tester.getLastRenderedPage().getMarkup().toString());
-		
-		//will fail
-		//tester.assertComponent("dashboard", DashboardPanel.class);
-		
+		formTester.submit("submit");
+
+		tester.assertNoErrorMessage();
+		tester.assertRenderedPage(MainPage.class);
+		WebSession ws = (WebSession)tester.getSession();
+		assertTrue("Login should be successful", ws.isSignedIn());
 	}
-	
-}
 
+	@Test
+	public void testEmptyLogin() {
+		tester.startPage(SignInPage.class);
+		tester.assertRenderedPage(SignInPage.class);
+
+		FormTester formTester = tester.newFormTester("signin:signin");
+		formTester.submit("submit");
+
+		tester.assertErrorMessages(String.format("'%s' is required.", Application.getString(114))
+				, String.format("'%s' is required.", Application.getString(115)));
+	}
+}


[21/50] [abbrv] openmeetings git commit: no-jira: documentation is updated with new release details

Posted by so...@apache.org.
no-jira: documentation is updated with new release details


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

Branch: refs/heads/3.1.x
Commit: a57e4a6f9a3bcdf7babfbdda2aa2331b8c4c3e9d
Parents: c8c2a94
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Jan 12 03:13:04 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Jan 12 03:13:04 2017 +0000

----------------------------------------------------------------------
 .../src/site/xdoc/NewsArchive.xml               | 24 ++++++++++++++
 .../src/site/xdoc/ReleaseGuide.xml              | 12 +++++--
 openmeetings-server/src/site/xdoc/index.xml     | 33 +++++++++++++-------
 3 files changed, 54 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a57e4a6f/openmeetings-server/src/site/xdoc/NewsArchive.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/NewsArchive.xml b/openmeetings-server/src/site/xdoc/NewsArchive.xml
index 36f2f34..2220e65 100644
--- a/openmeetings-server/src/site/xdoc/NewsArchive.xml
+++ b/openmeetings-server/src/site/xdoc/NewsArchive.xml
@@ -22,6 +22,30 @@
 	<body>
 		<section name="News">
 			<div class="bs-callout bs-callout-info">
+				<b>Version 3.1.3 released!</b>
+				<div>Service release 3 for 3.1.0, provides security improvements:<br/>
+					Other fixes<br/>
+					<ul>
+						<li>Both native and tunneled RTMPS works as expected</li>
+						<li>Other fixes in localization, backup/restore, screen-sharing, invitations etc.</li>
+					</ul>
+					<br/>
+					<span class="bs-callout bs-callout-danger">
+						NOTE java8 is required starting from this version<br/>
+					</span>
+					<br/>
+					<span class="bs-callout bs-callout-info">Please update to this release from any previous OpenMeetings release</span>
+				</div>
+				<br/>
+				<span>
+					21 issues are fixed please check <br/>
+					<a href="https://www.apache.org/dist/openmeetings/3.1.3/CHANGELOG">CHANGELOG</a> and
+					<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312720&amp;version=12337950">Detailed list</a>
+				</span>
+				<span> See <a href="downloads.html">Downloads page</a>.</span>
+				<span class="date">(2016-09-27)</span>
+			</div>
+			<div class="bs-callout bs-callout-info">
 				<b>Version 3.1.2 released!</b>
 				<div>Service release 2 for 3.1.0 contains following improvements and bug fixes:<br/>
 					<br/>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a57e4a6f/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
index c0753bf..4015a08 100644
--- a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
+++ b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
@@ -105,6 +105,12 @@
 						are up to date and refer to the right version.
 					</li>
 					<li>
+						Update following files in OM documentation:<br/>
+						<tt>openmeetings-server/src/site/xdoc/index.xml</tt><br/>
+						<tt>openmeetings-server/src/site/xdoc/NewsArchive.xml</tt><br/>
+						<tt>openmeetings-server/src/site/xdoc/downloads.xml</tt><br/>
+					</li>
+					<li>
 						Create a TAG of the SVN tree that you would like to release<br/>
 						Example:
 				
@@ -178,7 +184,7 @@ mvn deploy -Pdeploy,rc
 					Send an email to the developer mailing list with the subject line:<br />
 					[VOTE] Apache OpenMeetings x.xx release<br />
 					An example for such an email:
-					<a href="http://s.apache.org/vote-2.1.0RC1">example Vote email</a>
+					<a href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev/201701.mbox/%3CCAJmbs8jZ7EiXoeBbG4ynvg30FPx2nAOJMypE2Qp-v-c63ayO9A%40mail.gmail.com%3E">example Vote email</a>
 					<a href="http://s.apache.org/vote-2.0.0RC4">example Vote email (Incubator)</a>
 					<br />
 					Forward (Not CC) this Vote email to: private@openmeetings.apache.org<br />
@@ -187,7 +193,7 @@ mvn deploy -Pdeploy,rc
 					[RESULT][VOTE] Apache OpenMeetings x.xx release<br />
 					An example for such an email:
 					<a
-						href="http://mail-archives.apache.org/mod_mbox/incubator-openmeetings-dev/201207.mbox/%3CCACeMiA-ibo6fGCbnLjJX9H5H2kFGDVJRMfxPyMtzWzCWNi%2BpOg%40mail.gmail.com%3E">example Result email</a>
+						href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev/201701.mbox/%3CCAJmbs8gyvHuarzdVma%2BF6ap7RHBhhVciZp5Oi5JogQdLR6o0NA%40mail.gmail.com%3E">example Result email</a>
 					<br />
 					Forward (Not CC) this RESULT VOTE email to: private@openmeetings.apache.org<br />
 					<br />
@@ -214,7 +220,7 @@ mvn clean install -Prc,release
 					<li>Go to <a href="https://securesigning.websecurity.symantec.com/csportal/">https://securesigning.websecurity.symantec.com/csportal/</a></li>
 					<li>Select "Signing Sets"</li>
 					<li>Select "Add signing set"</li>
-					<li>Enter "Signing set name" (must include "Apache Openmeetings" and version) for ex. "Apache Openmeetings 3.1.0-RELEASE"</li>
+					<li>Enter "Signing set name" (must include "Apache OpenMeetings" and version) for ex. "Apache OpenMeetings 3.1.0-RELEASE"</li>
 					<li>Enter "Version" for ex. "3.1.0-RELEASE"</li>
 					<li>Select "Java Signing Sha256" as "Signing service"</li>
 					<li>Select "Upload files" and add all <b>jar</b> files from <tt>target/jnlp</tt></li>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a57e4a6f/openmeetings-server/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/index.xml b/openmeetings-server/src/site/xdoc/index.xml
index 1854253..bf53550 100644
--- a/openmeetings-server/src/site/xdoc/index.xml
+++ b/openmeetings-server/src/site/xdoc/index.xml
@@ -69,28 +69,37 @@
 		</section>
 		<section name="News">
 			<div class="bs-callout bs-callout-danger">
-				<b>Version 3.1.3 released!</b>
-				<div>Service release 3 for 3.1.0, provides security improvements:<br/>
-					Other fixes<br/>
+				<b>Version 3.1.4 released!</b>
+				<div>Service release 4 for 3.1.0, provides following improvements:<br/>
+					Room<br/>
 					<ul>
-						<li>Both native and tunneled RTMPS works as expected</li>
-						<li>Other fixes in localization, backup/restore, screen-sharing, invitations etc.</li>
+						<li>Performance improvements</li>
+						<li>WB drawing is more smooth</li>
+						<li>WB tabs are now can be renamed</li>
+						<li>Multiple files can be selected in File tree, some issues are fixed</li>
+						<li>Poll results contains poll description</li>
+						<li>User list is fixed in restricted room</li>
 					</ul>
 					<br/>
-					<span class="bs-callout bs-callout-danger">
-						NOTE java8 is required starting from this version<br/>
-					</span>
+					Admin<br/>
+					<ul>
+						<li>Backup/Restore is fixed</li>
+						<li>Admin->Connections and Admin->Labels are fixed</li>
+					</ul>
+					<br/>
+					Other fixes in LDAP, groups, recordings, screen-sharing, calendar and installer<br/>
+					Italian and Ukrainian translations are improved
 					<br/>
 					<span class="bs-callout bs-callout-info">Please update to this release from any previous OpenMeetings release</span>
 				</div>
 				<br/>
 				<span>
-					21 issues are fixed please check <br/>
-					<a href="https://www.apache.org/dist/openmeetings/3.1.3/CHANGELOG">CHANGELOG</a> and
-					<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312720&amp;version=12337950">Detailed list</a>
+					47 issues are fixed please check <br/>
+					<a href="https://www.apache.org/dist/openmeetings/3.1.4/CHANGELOG">CHANGELOG</a> and
+					<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312720&amp;version=12338183">Detailed list</a>
 				</span>
 				<span> See <a href="downloads.html">Downloads page</a>.</span>
-				<span class="date">(2016-09-27)</span>
+				<span class="date">(2017-01-11)</span>
 			</div>
 			<div class="bs-callout bs-callout-info">
 				<span class="date"><a href="NewsArchive.html">You can find older news here</a></span>


[46/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1541] invitations for users with no TZ works

Posted by so...@apache.org.
[OPENMEETINGS-1541] invitations for users with no TZ works


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

Branch: refs/heads/3.1.x
Commit: ff80251a2b3cfaed21627276cec9966e753d65a0
Parents: 34a2982
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Jan 25 14:55:08 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Jan 25 14:55:08 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/db/dao/room/InvitationDao.java    | 17 ++++++++++++++---
 .../db/dto/calendar/MeetingMemberDTO.java          |  4 ++++
 .../webservice/CalendarWebService.java             |  1 +
 3 files changed, 19 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ff80251a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
index 875e39f..b5b4e8e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
@@ -23,6 +23,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.util.Date;
 import java.util.List;
+import java.util.TimeZone;
 
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
@@ -31,6 +32,7 @@ import javax.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.util.CalendarHelper;
+import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.transaction.annotation.Transactional;
@@ -84,9 +86,18 @@ public class InvitationDao {
 					}
 					break;
 				case Period:
-					LocalDateTime now = ZonedDateTime.now(getZoneId(i.getInvitee().getTimeZoneId())).toLocalDateTime();
-					LocalDateTime from = CalendarHelper.getDateTime(i.getValidFrom(), i.getInvitee().getTimeZoneId());
-					LocalDateTime to = CalendarHelper.getDateTime(i.getValidTo(), i.getInvitee().getTimeZoneId());
+					String tzId = i.getInvitee().getTimeZoneId();
+					if (Strings.isEmpty(tzId) && i.getAppointment() != null) {
+						log.warn("User with NO timezone found: {}", i.getInvitee().getId());
+						tzId = i.getAppointment().getOwner().getTimeZoneId();
+					}
+					if (Strings.isEmpty(tzId)) {
+						log.warn("Unable to obtain valid timezone, setting SYSTEM TZ");
+						tzId = TimeZone.getDefault().getID();
+					}
+					LocalDateTime now = ZonedDateTime.now(getZoneId(tzId)).toLocalDateTime();
+					LocalDateTime from = CalendarHelper.getDateTime(i.getValidFrom(), tzId);
+					LocalDateTime to = CalendarHelper.getDateTime(i.getValidTo(), tzId);
 					i.setAllowEntry(now.isAfter(from) && now.isBefore(to));
 					break;
 				case Endless:

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ff80251a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index 5c11df5..2fcfeb0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -31,6 +31,7 @@ import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.ajax.json.JSONObject;
+import org.apache.wicket.util.string.Strings;
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -72,6 +73,9 @@ public class MeetingMemberDTO implements Serializable {
 				u.setExternalId(null);
 				u.setExternalType(null);
 			}
+			if (Strings.isEmpty(u.getTimeZoneId())) {
+				u.setTimeZoneId(owner.getTimeZoneId());
+			}
 			mm.setUser(u);
 		}
 		return mm;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ff80251a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index c7be451..dca4ee5 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -301,6 +301,7 @@ public class CalendarWebService {
 				log.error("USER/Room modification as SOAP");
 				throw new ServiceException("Insufficient permissions"); //TODO code -26
 			}
+			//TODO check if objects passed with IDs are correct
 			if (AuthLevelUtil.hasUserLevel(u.getRights())) {
 				Appointment a = appointment.get(userDao, appointmentDao, u);
 				if (a.getRoom().getId() != null) {


[20/50] [abbrv] openmeetings git commit: no-jira: downloads page is updated

Posted by so...@apache.org.
no-jira: downloads page is updated


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

Branch: refs/heads/3.1.x
Commit: c8c2a94f40a7effe27b171613d11fd12e2401bae
Parents: 6034798
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Jan 11 16:32:13 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Jan 11 16:32:13 2017 +0000

----------------------------------------------------------------------
 openmeetings-server/src/site/xdoc/downloads.xml | 30 ++++++++++----------
 1 file changed, 15 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c8c2a94f/openmeetings-server/src/site/xdoc/downloads.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/downloads.xml b/openmeetings-server/src/site/xdoc/downloads.xml
index 6ca1963..69375bd 100644
--- a/openmeetings-server/src/site/xdoc/downloads.xml
+++ b/openmeetings-server/src/site/xdoc/downloads.xml
@@ -26,8 +26,8 @@
 		<section name="Downloads">
 			<p>
 				All downloads can be verified using the Apache OpenMeetings code
-				signing <a href="https://www.apache.org/dist/openmeetings/3.1.3/KEYS">KEYS</a>, changes: <a 
-					href="https://www.apache.org/dist/openmeetings/3.1.3/CHANGELOG">CHANGELOG</a>.
+				signing <a href="https://www.apache.org/dist/openmeetings/3.1.4/KEYS">KEYS</a>, changes: <a 
+					href="https://www.apache.org/dist/openmeetings/3.1.4/CHANGELOG">CHANGELOG</a>.
 			</p>
 			<p>
 				All are available for download as source and binary.
@@ -35,21 +35,21 @@
 			
 			<subsection name="Latest Official Release">
 				<p>
-					Apache Openmeetings 3.1.3
+					Apache Openmeetings 3.1.4
 				</p>
 				<ul>
 					<li>
 						Binaries:
 						<ul>
 							<li>
-								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.3/bin/apache-openmeetings-3.1.3.zip">apache-openmeetings-3.1.3.zip</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.3/bin/apache-openmeetings-3.1.3.zip.asc">[SIG]</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.3/bin/apache-openmeetings-3.1.3.zip.sha256">[SHA256]</a>
+								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.zip">apache-openmeetings-3.1.4.zip</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.zip.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.zip.sha256">[SHA256]</a>
 							</li>
 							<li>
-								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.3/bin/apache-openmeetings-3.1.3.tar.gz">apache-openmeetings-3.1.3.tar.gz</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.3/bin/apache-openmeetings-3.1.3.tar.gz.asc">[SIG]</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.3/bin/apache-openmeetings-3.1.3.tar.gz.sha256">[SHA256]</a>
+								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.tar.gz">apache-openmeetings-3.1.4.tar.gz</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.tar.gz.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.4/bin/apache-openmeetings-3.1.4.tar.gz.sha256">[SHA256]</a>
 							</li>
 						</ul>
 					</li>
@@ -57,14 +57,14 @@
 						Sources:
 						<ul>
 							<li>
-								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.3/src/apache-openmeetings-3.1.3-src.zip">apache-openmeetings-3.1.3-src.zip</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.3/src/apache-openmeetings-3.1.3-src.zip.asc">[SIG]</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.3/src/apache-openmeetings-3.1.3-src.zip.sha256">[SHA256]</a>
+								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.zip">apache-openmeetings-3.1.4-src.zip</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.zip.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.zip.sha256">[SHA256]</a>
 							</li>
 							<li>
-								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.3/src/apache-openmeetings-3.1.3-src.tar.gz">apache-openmeetings-3.1.3-src.tar.gz</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.3/src/apache-openmeetings-3.1.3-src.tar.gz.asc">[SIG]</a>
-								<a href="http://www.apache.org/dist/openmeetings/3.1.3/src/apache-openmeetings-3.1.3-src.tar.gz.sha256">[SHA256]</a>
+								<a href="http://www.apache.org/dyn/closer.lua/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.tar.gz">apache-openmeetings-3.1.4-src.tar.gz</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.tar.gz.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.1.4/src/apache-openmeetings-3.1.4-src.tar.gz.sha256">[SHA256]</a>
 							</li>
 						</ul>
 					</li>


[26/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1530] security hash is fixed

Posted by so...@apache.org.
[OPENMEETINGS-1530] security hash is fixed


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

Branch: refs/heads/3.1.x
Commit: 031afb183bc00759688052d1e0b014300c47a367
Parents: 7567ff1
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Jan 17 03:42:22 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Jan 17 03:42:22 2017 +0000

----------------------------------------------------------------------
 .../src/main/java/org/apache/openmeetings/web/app/WebSession.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/031afb18/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 29504b9..c8c3389 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
@@ -296,7 +296,7 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		userId = u.getId();
 		if (rights == null || rights.isEmpty()) {
 			Set<Right> r = new HashSet<>(u.getRights());
-			if (!AuthLevelUtil.hasAdminLevel(r)) {
+			if (u.getGroupUsers() != null && !AuthLevelUtil.hasAdminLevel(r)) {
 				for (GroupUser gu : u.getGroupUsers()) {
 					if (gu.isModerator()) {
 						r.add(Right.GroupAdmin);


[09/50] [abbrv] openmeetings git commit: no jira: GroupChoiceProvider is extracted to be separate class

Posted by so...@apache.org.
no jira: GroupChoiceProvider is extracted to be separate class


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

Branch: refs/heads/3.1.x
Commit: 1073ad1e2d98e1f677b5a8ea9bb75c8c3ae7aa3a
Parents: 6e6fd3e
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Dec 24 15:58:32 2016 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Dec 24 15:58:32 2016 +0000

----------------------------------------------------------------------
 .../web/common/GroupChoiceProvider.java         | 79 ++++++++++++++++++++
 .../web/room/menu/RoomInvitationForm.java       | 52 +------------
 2 files changed, 81 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1073ad1e/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
new file mode 100644
index 0000000..d83b6f3
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.GroupUser;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.Strings;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+
+public class GroupChoiceProvider extends ChoiceProvider<Group> {
+	private static final long serialVersionUID = 1L;
+
+	@Override
+	public void query(String term, int page, Response<Group> response) {
+		if (WebSession.getRights().contains(User.Right.Admin)) {
+			List<Group> groups = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
+			for (Group g : groups) {
+				if (Strings.isEmpty(term) || g.getName().toLowerCase().contains(term.toLowerCase())) {
+					response.add(g);
+				}
+			}
+		} else {
+			User u = getBean(UserDao.class).get(getUserId());
+			for (GroupUser ou : u.getGroupUsers()) {
+				if (Strings.isEmpty(term) || ou.getGroup().getName().toLowerCase().contains(term.toLowerCase())) {
+					response.add(ou.getGroup());
+				}
+			}
+		}
+	}
+
+	@Override
+	public Collection<Group> toChoices(Collection<String> ids) {
+		Collection<Group> c = new ArrayList<>();
+		for (String id : ids) {
+			c.add(getBean(GroupDao.class).get(Long.valueOf(id)));
+		}
+		return c;
+	}
+
+	@Override
+	public String getDisplayValue(Group choice) {
+		return choice.getName();
+	}
+
+	@Override
+	public String getIdValue(Group choice) {
+		Long id = choice.getId();
+		return id == null ? null : "" + id;
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1073ad1e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
index f5a919a..6866d0d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
@@ -21,25 +21,20 @@ package org.apache.openmeetings.web.room.menu;
 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;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.service.room.InvitationManager;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.GroupChoiceProvider;
 import org.apache.openmeetings.web.common.InvitationForm;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
@@ -53,8 +48,6 @@ import org.apache.wicket.model.util.CollectionModel;
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.wicketstuff.select2.ChoiceProvider;
-import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2MultiChoice;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
@@ -67,48 +60,7 @@ public class RoomInvitationForm extends InvitationForm {
 	private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer");
 	final Select2MultiChoice<Group> groups = new Select2MultiChoice<Group>("groups"
 			, new CollectionModel<Group>(new ArrayList<Group>())
-			, new ChoiceProvider<Group>() {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void query(String term, int page, Response<Group> response) {
-					if (WebSession.getRights().contains(User.Right.Admin)) {
-						List<Group> groups = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
-						for (Group g : groups) {
-							if (Strings.isEmpty(term) || g.getName().toLowerCase().contains(term.toLowerCase())) {
-								response.add(g);
-							}
-						}
-					} else {
-						User u = getBean(UserDao.class).get(getUserId());
-						for (GroupUser ou : u.getGroupUsers()) {
-							if (Strings.isEmpty(term) || ou.getGroup().getName().toLowerCase().contains(term.toLowerCase())) {
-								response.add(ou.getGroup());
-							}
-						}
-					}
-				}
-
-				@Override
-				public Collection<Group> toChoices(Collection<String> ids) {
-					Collection<Group> c = new ArrayList<>();
-					for (String id : ids) {
-						c.add(getBean(GroupDao.class).get(Long.valueOf(id)));
-					}
-					return c;
-				}
-
-				@Override
-				public String getDisplayValue(Group choice) {
-					return choice.getName();
-				}
-
-				@Override
-				public String getIdValue(Group choice) {
-					Long id = choice.getId();
-					return id == null ? null : "" + id;
-				}
-			});
+			, new GroupChoiceProvider());
 	final WebMarkupContainer sipContainer = new WebMarkupContainer("sip-container");
 
 	enum InviteeType {


[17/50] [abbrv] openmeetings git commit: no jira: Release preparation: README is updated

Posted by so...@apache.org.
no jira: Release preparation: README is updated


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

Branch: refs/heads/3.1.x
Commit: 468f79850d5ee47e8db45bc7e7464eb119732f5f
Parents: 5d3d950
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sun Jan 8 07:28:55 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sun Jan 8 07:28:55 2017 +0000

----------------------------------------------------------------------
 README | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/468f7985/README
----------------------------------------------------------------------
diff --git a/README b/README
index c58b397..35469cf 100644
--- a/README
+++ b/README
@@ -8,6 +8,28 @@ Apache OpenMeetings provides video conferencing, instant messaging, white board,
 collaborative document editing and other groupware tools using API functions of 
 the Red5 Streaming Server for Remoting and Streaming. 
 
+Release Notes 3.1.4
+=============
+see CHANGELOG file for detailed log
+
+Service release 4 for 3.1.0, provides following improvements:
+
+Room:
+* Performance improvements
+* WB drawing is more smooth
+* WB tabs are now can be renamed
+* Multiple files can be selected in File tree, some issues are fixed
+* Poll results contains poll description
+* User list is fixed in restricted room
+
+Admin:
+* Backup/Restore is fixed
+* Admin->Connections and Admin->Labels are fixed
+
+Other fixes in LDAP, groups, recordings, screen-sharing, calendar and installer
+Italian and Ukrainian translations are improved
+
+
 Release Notes 3.1.3
 =============
 see CHANGELOG file for detailed log


[45/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1541] more calendar hash fixes; user is not deleted on MM/invitation deletion

Posted by so...@apache.org.
[OPENMEETINGS-1541] more calendar hash fixes; user is not deleted on MM/invitation deletion


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

Branch: refs/heads/3.1.x
Commit: 34a29823289ead122f17ba363857b9c1e68c0afc
Parents: 91b6d9c
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Jan 25 12:02:26 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Jan 25 12:02:26 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/db/dao/room/InvitationDao.java | 11 +--
 .../db/dto/calendar/MeetingMemberDTO.java       |  9 +-
 .../db/entity/calendar/MeetingMember.java       |  2 +-
 .../openmeetings/db/entity/room/Invitation.java | 30 +++----
 .../openmeetings/web/app/Application.java       |  2 +-
 .../calendar/TestAppointmentAddAppointment.java |  2 +-
 .../test/webservice/TestCalendarService.java    | 93 +++++++++++++++-----
 .../util/AppointmentParamConverter.java         | 10 ++-
 8 files changed, 111 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/34a29823/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
index 1c4c854..875e39f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
@@ -40,10 +40,10 @@ import org.threeten.bp.ZonedDateTime;
 @Transactional
 public class InvitationDao {
 	private static final Logger log = Red5LoggerFactory.getLogger(InvitationDao.class, webAppRootKey);
-	
+
 	@PersistenceContext
 	private EntityManager em;
-	
+
 	public Invitation update(Invitation invitation) {
 		if (invitation.getId() == null) {
 			invitation.setInserted(new Date());
@@ -54,24 +54,21 @@ public class InvitationDao {
 		}
 		return invitation;
 	}
-	
+
 	public Invitation get(Long invId) {
 		try {
-			
 			TypedQuery<Invitation> query = em.createNamedQuery("getInvitationbyId", Invitation.class);
 			query.setParameter("id", invId);
-			
 			try {
 				return query.getSingleResult();
 			} catch (NoResultException ex) {
 			}
-
 		} catch (Exception e) {
 			log.error("get : ", e);
 		}
 		return null;
 	}
-	
+
 	public Invitation getByHash(String hash, boolean hidePass, boolean markUsed) {
 		List<Invitation> list = em.createNamedQuery("getInvitationByHashCode", Invitation.class)
 				.setParameter("hashCode", hash).getResultList();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/34a29823/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index 5a84803..5c11df5 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -100,8 +100,15 @@ public class MeetingMemberDTO implements Serializable {
 		return m;
 	}
 
+	public static JSONObject json(MeetingMemberDTO mm) {
+		JSONObject m = new JSONObject();
+		m.put("id", mm.getId());
+		m.put("user", UserDTO.json(mm.getUser()));
+		return m;
+	}
+
 	@Override
 	public String toString() {
-		return new JSONObject(this).toString();
+		return json(this).toString();
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/34a29823/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
index 634b931..c8b22a1 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
@@ -59,7 +59,7 @@ public class MeetingMember implements IDataProviderEntity {
 	@Element(name = "meetingMemberId", data = true)
 	private Long id;
 
-	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
 	@JoinColumn(name = "user_id", nullable = true)
 	@ForeignKey(enabled = true)
 	@Element(name = "userid", data = true, required = false)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/34a29823/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
index 4bdb766..4a81523 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
@@ -57,17 +57,17 @@ public class Invitation implements IDataProviderEntity {
 		, Update
 		, Cancel
 	}
-	
+
 	public enum Valid {
 		OneTime
 		, Period
 		, Endless;
-		
+
 		public static Valid fromInt(int valid) {
 			return valid == 1 ? Endless : (valid == 2 ? Period : OneTime);
 		}
 	}
-	
+
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
 	@Column(name = "id")
@@ -77,13 +77,13 @@ public class Invitation implements IDataProviderEntity {
 	@JoinColumn(name = "invited_by", nullable = true)
 	@ForeignKey(enabled = true)
 	private User invitedBy;
-	
+
 	@Column(name = "inserted")
 	private Date inserted;
-	
+
 	@Column(name = "updated")
 	private Date updated;
-	
+
 	@Column(name = "deleted", nullable = false)
 	private boolean deleted;
 
@@ -101,7 +101,7 @@ public class Invitation implements IDataProviderEntity {
 	@Column(name = "hash")
 	private String hash;
 
-	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
 	@JoinColumn(name = "invitee_id", nullable = true)
 	@ForeignKey(enabled = true)
 	private User invitee;
@@ -117,16 +117,16 @@ public class Invitation implements IDataProviderEntity {
 	@Column(name = "valid")
 	@Enumerated(EnumType.STRING)
 	private Valid valid = Valid.Period;
-	
+
 	@Column(name = "valid_from")
 	private Date validFrom;
-	
+
 	@Column(name = "valid_to")
 	private Date validTo;
-	
+
 	@Column(name = "was_used", nullable = false)
 	private boolean used;
-	
+
 	@ManyToOne(fetch = FetchType.EAGER)
 	@JoinColumn(name = "appointment_id", nullable = true)
 	@ForeignKey(enabled = true)
@@ -135,9 +135,9 @@ public class Invitation implements IDataProviderEntity {
 	//variable used in Flash
 	@Transient
 	private boolean allowEntry = true;
-	
+
 	public Invitation() {}
-	
+
 	public Invitation(Invitation i) {
 		id = i.id;
 		invitedBy = i.invitedBy;
@@ -156,7 +156,7 @@ public class Invitation implements IDataProviderEntity {
 		used = i.used;
 		appointment = i.appointment;
 	}
-	
+
 	@Override
 	public Long getId() {
 		return id;
@@ -286,7 +286,7 @@ public class Invitation implements IDataProviderEntity {
 	public void setValid(Valid valid) {
 		this.valid = valid;
 	}
-	
+
 	public boolean isAllowEntry() {
 		return allowEntry;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/34a29823/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index d328a17..6daf821 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -440,7 +440,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 			if (r.isAppointment() && i.getInvitedBy().getId().equals(u.getId())) {
 				link = getRoomUrlFragment(r.getId()).getLink();
 			} else {
-				boolean allowed = u.getType() != Type.contact;
+				boolean allowed = Type.contact != u.getType() && Type.external != u.getType();
 				if (allowed) {
 					allowed = getBean(MainService.class).isRoomAllowedToUser(r, u);
 				}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/34a29823/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
index 3f29d85..612aac4 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
@@ -56,7 +56,7 @@ public class TestAppointmentAddAppointment extends AbstractWicketTester {
 	@Autowired
 	private UserDao userDao;
 
-	private void setTime(Appointment a) {
+	private static void setTime(Appointment a) {
 		a.setStart(Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()));
 		a.setEnd(Date.from(LocalDateTime.now().plusHours(1).atZone(ZoneId.systemDefault()).toInstant()));
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/34a29823/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index 32d7d51..4f682ec 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -19,21 +19,29 @@
 package org.apache.openmeetings.test.webservice;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.UUID;
 
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.Response;
 
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 import org.apache.openmeetings.db.dto.calendar.MeetingMemberDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
@@ -49,6 +57,12 @@ public class TestCalendarService extends AbstractWebServiceTest {
 	private GroupDao groupDao;
 	@Autowired
 	private RoomDao roomDao;
+	@Autowired
+	private MeetingMemberDao mmDao;
+	@Autowired
+	private InvitationDao invitationDao;
+	@Autowired
+	private UserDao userDao;
 
 	private void actualTest(Room r) throws Exception {
 		String uuid = UUID.randomUUID().toString();
@@ -78,10 +92,10 @@ public class TestCalendarService extends AbstractWebServiceTest {
 	private static JSONObject createAppointment() {
 		return new JSONObject()
 			.put("title", "test")
-			.put("start", "2017-01-20T20:30:03+0300")
-			.put("end", "2017-01-20T21:30:03+0300")
+			.put("start", "2025-01-20T20:30:03+0300")
+			.put("end", "2025-01-20T21:30:03+0300")
 			.put("description", "\u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u0422\u0435\u0441\u0442")
-			.put("reminder", "none")
+			.put("reminder", "email")
 			.put("room", new JSONObject()
 					.put("name", "test24")
 					.put("comment", "appointment test room")
@@ -112,19 +126,24 @@ public class TestCalendarService extends AbstractWebServiceTest {
 			.put("reminderEmailSend", false);
 	}
 
-	@Test
-	public void testCreate() throws Exception {
-		JSONObject o = createAppointment();
-
+	private String loginNewUser() throws Exception {
 		String uuid = UUID.randomUUID().toString();
 		User u = getUser(uuid);
 		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
 		u = createUser(u);
 		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+		return sr.getMessage();
+	}
+
+	@Test
+	public void testCreate() throws Exception {
+		JSONObject o = createAppointment();
+
+		String sid = loginNewUser();
 
 		Response resp = getClient(CALENDAR_SERVICE_URL)
 				.path("/")
-				.query("sid", sr.getMessage())
+				.query("sid", sid)
 				.form(new Form().param("appointment", o.toString()));
 
 		assertNotNull("Valid AppointmentDTO should be returned", resp);
@@ -170,31 +189,24 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		assertNotNull("DTO id should be valid", dto.getId());
 	}
 
-	@Test
-	public void testCreateWithMm() throws Exception {
+	private static AppointmentDTO createEventWithGuests(String sid) throws Exception {
 		JSONObject o = createAppointment()
 				.put("meetingMembers", new JSONArray()
 						.put(new JSONObject().put("user", new JSONObject()
 								.put("firstname", "John 1")
 								.put("lastname", "Doe")
-								.put("address", new JSONObject().put("email", "jhon1@doe.email"))
+								.put("address", new JSONObject().put("email", "john1@doe.email"))
 								))
 						.put(new JSONObject().put("user", new JSONObject()
 								.put("firstname", "John 2")
 								.put("lastname", "Doe")
-								.put("address", new JSONObject().put("email", "jhon2@doe.email"))
+								.put("address", new JSONObject().put("email", "john2@doe.email"))
 								))
 						);
 
-		String uuid = UUID.randomUUID().toString();
-		User u = getUser(uuid);
-		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
-		u = createUser(u);
-		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
-
 		Response resp = getClient(CALENDAR_SERVICE_URL)
 				.path("/")
-				.query("sid", sr.getMessage())
+				.query("sid", sid)
 				.form(new Form().param("appointment", o.toString()));
 
 		assertNotNull("Valid AppointmentDTO should be returned", resp);
@@ -207,15 +219,23 @@ public class TestCalendarService extends AbstractWebServiceTest {
 			assertNotNull("Email should be valid", mm.getUser().getAddress().getEmail());
 		}
 
+		return dto;
+	}
+
+	@Test
+	public void testCreateWithGuests() throws Exception {
+		String sid = loginNewUser();
+		AppointmentDTO dto = createEventWithGuests(sid);
+
 		//try to change MM list
 		JSONObject o1 = AppointmentParamConverter.json(dto)
 				.put("meetingMembers", new JSONArray()
 						.put(new JSONObject().put("user", new JSONObject()
 								.put("id", 1))));
 
-		resp = getClient(CALENDAR_SERVICE_URL)
+		Response resp = getClient(CALENDAR_SERVICE_URL)
 				.path("/")
-				.query("sid", sr.getMessage())
+				.query("sid", sid)
 				.form(new Form().param("appointment", o1.toString()));
 
 		assertNotNull("Valid AppointmentDTO should be returned", resp);
@@ -225,4 +245,35 @@ public class TestCalendarService extends AbstractWebServiceTest {
 		assertNotNull("DTO id should be valid", dto.getId());
 		assertEquals("DTO should have 1 attendees", 1, dto.getMeetingMembers().size());
 	}
+
+	@Test
+	public void testCreateWithGuestsCleanOne() throws Exception {
+		String sid = loginNewUser();
+		AppointmentDTO dto = createEventWithGuests(sid);
+		List<MeetingMemberDTO> initialList = new ArrayList<>(dto.getMeetingMembers());
+		MeetingMember mm = mmDao.get(initialList.get(initialList.size() - 1).getId());
+		Long mmId = mm.getId(), mmUserId = mm.getUser().getId();
+		String hash = mm.getInvitation().getHash();
+		dto.getMeetingMembers().remove(initialList.size() - 1);
+
+		//try to change MM list
+		JSONObject o = AppointmentParamConverter.json(dto);
+		Response resp = getClient(CALENDAR_SERVICE_URL)
+				.path("/")
+				.query("sid", sid)
+				.form(new Form().param("appointment", o.toString()));
+
+		assertNotNull("Valid AppointmentDTO should be returned", resp);
+		assertEquals("Call should be successful", Response.Status.OK.getStatusCode(), resp.getStatus());
+		dto = resp.readEntity(AppointmentDTO.class);
+		assertNotNull("Valid DTO should be returned", dto);
+		assertNotNull("DTO id should be valid", dto.getId());
+		assertEquals("DTO should have 1 attendees", 1, dto.getMeetingMembers().size());
+
+		assertNull("Meeting member should deleted", mmDao.get(mmId));
+		assertNull("Invitation should deleted", invitationDao.getByHash(hash, true, false));
+		User uc = userDao.get(mmUserId);
+		assertNotNull("Meeting member user should not be deleted", uc);
+		assertFalse("Meeting member user should not be deleted", uc.isDeleted());
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/34a29823/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
index 123e69c..72b62bf 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
@@ -69,7 +69,7 @@ public class AppointmentParamConverter implements ParamConverter<AppointmentDTO>
 
 	public static JSONObject json(AppointmentDTO val) {
 		Date i = val.getInserted(), u = val.getUpdated();
-		return new JSONObject(val)
+		JSONObject o = new JSONObject(val)
 				.put("owner", UserDTO.json(val.getOwner()))
 				.put("room", RoomDTO.json(val.getRoom()))
 				.put("reminder", val.getReminder() == null ? null : val.getReminder().name())
@@ -77,6 +77,14 @@ public class AppointmentParamConverter implements ParamConverter<AppointmentDTO>
 				.put("end", ISO8601_FULL_FORMAT.format(val.getEnd()))
 				.put("inserted", i == null ? null : ISO8601_FULL_FORMAT.format(i))
 				.put("updated", u == null ? null : ISO8601_FULL_FORMAT.format(u));
+		if (val.getMeetingMembers() != null) {
+			JSONArray rr = new JSONArray();
+			for(MeetingMemberDTO mm : val.getMeetingMembers()) {
+				rr.put(MeetingMemberDTO.json(mm));
+			}
+			o.put("meetingMembers", rr);
+		}
+		return o;
 	}
 
 	@Override


[36/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1533] appointment with meeting-meetingmembers saved via service

Posted by so...@apache.org.
[OPENMEETINGS-1533] appointment with meeting-meetingmembers saved via service


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

Branch: refs/heads/3.1.x
Commit: aedef5cc19d514d0a142b15ca4ec2bac2514cdf8
Parents: 4893ba8
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Jan 20 16:45:00 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Jan 20 16:45:00 2017 +0000

----------------------------------------------------------------------
 .../db/dto/calendar/MeetingMemberDTO.java       |   9 +-
 .../openmeetings/db/dto/room/RoomDTO.java       |   4 +
 .../openmeetings/db/dto/user/UserDTO.java       |  13 +-
 .../openmeetings/test/AbstractWicketTester.java |   7 +-
 .../test/webservice/TestCalendarService.java    | 156 +++++++++++++++++++
 .../test/webservice/TestUserService.java        |  27 ++++
 .../webservice/CalendarWebService.java          |   4 +-
 .../util/AppointmentParamConverter.java         |  24 ++-
 8 files changed, 230 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/aedef5cc/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index 210e012..5e0268a 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.ajax.json.JSONObject;
 
 @XmlRootElement
@@ -46,7 +47,13 @@ public class MeetingMemberDTO implements Serializable {
 	public MeetingMember get(UserDao userDao) {
 		MeetingMember mm = new MeetingMember();
 		mm.setId(id);
-		mm.setUser(user.get(userDao));
+		if (user.getId() != null) {
+			mm.setUser(userDao.get(user.getId()));
+		} else {
+			mm.setUser(user.get(userDao));
+			mm.getUser().setType(User.Type.contact);
+			mm.getUser().getRights().clear();
+		}
 		return mm;
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/aedef5cc/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
index 4dbd193..2a9ec7d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -379,6 +379,10 @@ public class RoomDTO implements Serializable {
 		return r;
 	}
 
+	public static JSONObject json(RoomDTO r) {
+		return new JSONObject(r).put("type", r.getType().name());
+	}
+
 	@Override
 	public String toString() {
 		return new JSONObject(this).toString();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/aedef5cc/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
index 2a14996..ddb1f34 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
@@ -213,7 +213,18 @@ public class UserDTO implements Serializable {
 		u.timeZoneId = o.optString("timeZoneId");
 		u.externalId = o.optString("externalId");
 		u.externalType = o.optString("externalType");
-		u.type = Type.valueOf(o.optString("type"));
+		String t = o.optString("type", null);
+		u.type = t == null ? null : Type.valueOf(t);
 		return u;
 	}
+
+	public static JSONObject json(UserDTO u) {
+		JSONObject o = new JSONObject(u)
+				.put("type", u.getType().name());
+		JSONArray rr = new JSONArray();
+		for (Right r : u.getRights()) {
+			rr.put(r.name());
+		}
+		return o.put("rights", rr);
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/aedef5cc/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
index 30e9d8e..3e05b2f 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
@@ -28,9 +28,8 @@ import org.apache.wicket.util.tester.WicketTester;
 import org.junit.After;
 
 public class AbstractWicketTester extends AbstractJUnitDefaults {
-
 	protected WicketTester tester;
-	 	
+
 	@Override
 	public void setUp() throws Exception {
 		super.setUp();
@@ -46,11 +45,11 @@ public class AbstractWicketTester extends AbstractJUnitDefaults {
 		}
 		assertTrue("Web session is not signed in for user: " + (login != null ? login : username), WebSession.get().isSignedIn());
 	}
-	
+
 	@After
 	public void tearDown() {
 		if (tester != null) {
-			//can be null in case exception on initialization 
+			//can be null in case exception on initialization
 			tester.destroy();
 		}
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/aedef5cc/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index c2f2c08..c64e16a 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -18,11 +18,16 @@
  */
 package org.apache.openmeetings.test.webservice;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 
 import java.util.Date;
 import java.util.UUID;
 
+import javax.ws.rs.core.Form;
+import javax.ws.rs.core.Response;
+
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
@@ -31,6 +36,9 @@ import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.webservice.util.AppointmentParamConverter;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -65,4 +73,152 @@ public class TestCalendarService extends AbstractWebServiceTest {
 	public void testGetByPublicRoom() throws Exception {
 		actualTest(roomDao.get(5L)); //default public restricted room
 	}
+
+	private static JSONObject createAppointment() {
+		return new JSONObject()
+			.put("title", "test")
+			.put("start", "2017-01-20T20:30:03+0300")
+			.put("end", "2017-01-20T21:30:03+0300")
+			.put("description", "\u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u0422\u0435\u0441\u0442")
+			.put("reminder", "none")
+			.put("room", new JSONObject()
+					.put("name", "test24")
+					.put("comment", "appointment test room")
+					.put("type", "conference")
+					.put("numberOfPartizipants", 15)
+					.put("appointment", true)
+					.put("isPublic", false)
+					.put("demo", false)
+					.put("closed", false)
+					.put("externalId", 10)
+					.put("externalType", "HuntingLabCMS")
+					.put("redirectUrl", "")
+					.put("moderated", true)
+					.put("allowUserQuestions", true)
+					.put("allowRecording", false)
+					.put("waitForRecording", false)
+					.put("audioOnly", true)
+					.put("topBarHidden", false)
+					.put("chatHidden", false)
+					.put("activitiesHidden", false)
+					.put("filesExplorerHidden", false)
+					.put("actionsMenuHidden", false)
+					.put("screenSharingHidden", false)
+					.put("whiteboardHidden", false))
+			.put("languageId", 9)
+			.put("passwordProtected", false)
+			.put("connectedEvent", false)
+			.put("reminderEmailSend", false);
+	}
+
+	@Test
+	public void testCreate() throws Exception {
+		JSONObject o = createAppointment();
+
+		String uuid = UUID.randomUUID().toString();
+		User u = getUser(uuid);
+		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+		u = createUser(u);
+		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+		Response resp = getClient(CALENDAR_SERVICE_URL)
+				.path("/")
+				.query("sid", sr.getMessage())
+				.form(new Form().param("appointment", o.toString()));
+
+		assertNotNull("Valid AppointmentDTO should be returned", resp);
+		assertEquals("Call should be successful", Response.Status.OK.getStatusCode(), resp.getStatus());
+		AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+		assertNotNull("Valid DTO should be returned", dto);
+		assertNotNull("DTO id should be valid", dto.getId());
+	}
+
+	@Test
+	public void testDelete() {
+		ServiceResult sr = login();
+		Response resp = getClient(CALENDAR_SERVICE_URL)
+				.path("/" + Long.MAX_VALUE) //non-existent ID
+				.query("sid", sr.getMessage())
+				.delete();
+
+		assertNotEquals("Call should NOT be successful", Response.Status.OK.getStatusCode(), resp.getStatus());
+	}
+
+	@Test
+	public void testCreateWithOmMm() throws Exception {
+		JSONObject o = createAppointment()
+				.put("meetingMembers", new JSONArray()
+						.put(new JSONObject().put("user", new JSONObject()
+								.put("id", 1))));
+
+		String uuid = UUID.randomUUID().toString();
+		User u = getUser(uuid);
+		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+		u = createUser(u);
+		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+		Response resp = getClient(CALENDAR_SERVICE_URL)
+				.path("/")
+				.query("sid", sr.getMessage())
+				.form(new Form().param("appointment", o.toString()));
+
+		assertNotNull("Valid AppointmentDTO should be returned", resp);
+		assertEquals("Call should be successful", Response.Status.OK.getStatusCode(), resp.getStatus());
+		AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+		assertNotNull("Valid DTO should be returned", dto);
+		assertNotNull("DTO id should be valid", dto.getId());
+	}
+
+	@Test
+	public void testCreateWithMm() throws Exception {
+		JSONObject o = createAppointment()
+				.put("meetingMembers", new JSONArray()
+						.put(new JSONObject().put("user", new JSONObject()
+								.put("firstname", "Jhon 1")
+								.put("lastname", "Doe")
+								.put("Address", new JSONObject().put("email", "jhon1@doe.email"))
+								))
+						.put(new JSONObject().put("user", new JSONObject()
+								.put("firstname", "Jhon 2")
+								.put("lastname", "Doe")
+								.put("Address", new JSONObject().put("email", "jhon2@doe.email"))
+								))
+						);
+
+		String uuid = UUID.randomUUID().toString();
+		User u = getUser(uuid);
+		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+		u = createUser(u);
+		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+		Response resp = getClient(CALENDAR_SERVICE_URL)
+				.path("/")
+				.query("sid", sr.getMessage())
+				.form(new Form().param("appointment", o.toString()));
+
+		assertNotNull("Valid AppointmentDTO should be returned", resp);
+		assertEquals("Call should be successful", Response.Status.OK.getStatusCode(), resp.getStatus());
+		AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+		assertNotNull("Valid DTO should be returned", dto);
+		assertNotNull("DTO id should be valid", dto.getId());
+		assertEquals("DTO should have 2 attendees", 2, dto.getMeetingMembers().size());
+
+		//try to change MM list
+		JSONObject o1 = AppointmentParamConverter.json(dto)
+				.put("meetingMembers", new JSONArray()
+						.put(new JSONObject().put("user", new JSONObject()
+								.put("id", 1))));
+
+		resp = getClient(CALENDAR_SERVICE_URL)
+				.path("/")
+				.query("sid", sr.getMessage())
+				.form(new Form().param("appointment", o1.toString()));
+
+		assertNotNull("Valid AppointmentDTO should be returned", resp);
+		assertEquals("Call should be successful", Response.Status.OK.getStatusCode(), resp.getStatus());
+		dto = resp.readEntity(AppointmentDTO.class);
+		assertNotNull("Valid DTO should be returned", dto);
+		assertNotNull("DTO id should be valid", dto.getId());
+		assertEquals("DTO should have 1 attendees", 1, dto.getMeetingMembers().size());
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/aedef5cc/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
index ebb6625..d5ac453 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
@@ -18,8 +18,10 @@
  */
 package org.apache.openmeetings.test.webservice;
 
+import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.Response;
@@ -28,9 +30,22 @@ import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.room.RoomOptionsDTO;
 import org.apache.openmeetings.db.dto.user.ExternalUserDTO;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.After;
 import org.junit.Test;
 
 public class TestUserService extends AbstractWebServiceTest {
+	protected WicketTester tester;
+
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+		tester = getWicketTester();
+		assertNotNull("Web session should not be null", WebSession.get());
+	}
+
 	@Test
 	public void loginTest() {
 		ServiceResult r = login();
@@ -58,5 +73,17 @@ public class TestUserService extends AbstractWebServiceTest {
 		assertEquals("Call should be successful", Response.Status.OK.getStatusCode(), resp.getStatus());
 		ServiceResult r1 = resp.readEntity(ServiceResult.class);
 		assertEquals("OM Call should be successful", r1.getType(), Type.SUCCESS.name());
+
+		WebSession ws = WebSession.get();
+		ws.checkHashes(StringValue.valueOf(r1.getMessage()), StringValue.valueOf(""));
+		assertTrue("Login via secure hash should be successful", ws.isSignedIn());
+	}
+
+	@After
+	public void tearDown() {
+		if (tester != null) {
+			//can be null in case exception on initialization
+			tester.destroy();
+		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/aedef5cc/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index 30ee4bc..9959eff 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -293,7 +293,9 @@ public class CalendarWebService {
 			Long userId = sessionDao.check(sid);
 			log.debug("save userId:" + userId);
 			User u = userDao.get(userId);
-			if (!AuthLevelUtil.hasWebServiceLevel(u.getRights()) && appointment.getOwner() != null)
+			if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
+					&& appointment.getOwner() != null
+					&& !appointment.getOwner().getId().equals(u.getId()))
 			{
 				//TODO maybe additional checks are required
 				log.error("USER/Room modification as SOAP");

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/aedef5cc/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
index 1a3e4a1..f81760d 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
@@ -20,6 +20,8 @@ package org.apache.openmeetings.webservice.util;
 
 import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
 
+import java.util.Date;
+
 import javax.ws.rs.ext.ParamConverter;
 
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
@@ -47,7 +49,8 @@ public class AppointmentParamConverter implements ParamConverter<AppointmentDTO>
 		a.setInserted(DateParamConverter.get(o.optString("inserted")));
 		a.setUpdated(DateParamConverter.get(o.optString("updated")));
 		a.setDeleted(o.optBoolean("inserted"));
-		a.setReminder(Reminder.valueOf(o.optString("reminder")));
+		String r = o.optString("reminder", null);
+		a.setReminder(r == null ? null : Reminder.valueOf(r));
 		a.setRoom(RoomDTO.get(o.optJSONObject("room")));
 		a.setIcalId(o.optString("icalId"));
 		JSONArray mm = o.optJSONArray("meetingMembers");
@@ -64,13 +67,20 @@ public class AppointmentParamConverter implements ParamConverter<AppointmentDTO>
 		return a;
 	}
 
-	@Override
-	public String toString(AppointmentDTO val) {
-		return new JSONObject(this)
+	public static JSONObject json(AppointmentDTO val) {
+		Date i = val.getInserted(), u = val.getUpdated();
+		return new JSONObject(val)
+				.put("owner", UserDTO.json(val.getOwner()))
+				.put("room", RoomDTO.json(val.getRoom()))
+				.put("reminder", val.getReminder() == null ? null : val.getReminder().name())
 				.put("start", ISO8601_FULL_FORMAT.format(val.getStart()))
 				.put("end", ISO8601_FULL_FORMAT.format(val.getEnd()))
-				.put("inserted", ISO8601_FULL_FORMAT.format(val.getInserted()))
-				.put("updated", ISO8601_FULL_FORMAT.format(val.getUpdated()))
-				.toString();
+				.put("inserted", i == null ? null : ISO8601_FULL_FORMAT.format(i))
+				.put("updated", u == null ? null : ISO8601_FULL_FORMAT.format(u));
+	}
+
+	@Override
+	public String toString(AppointmentDTO val) {
+		return json(val).toString();
 	}
 }


[35/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1539] return type of delete method is changed

Posted by so...@apache.org.
[OPENMEETINGS-1539] return type of delete method is changed


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

Branch: refs/heads/3.1.x
Commit: 4893ba895856e126f0ab2b2480f4de86837243b8
Parents: a11ef00
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Jan 20 12:40:36 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Jan 20 12:40:36 2017 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/webservice/CalendarWebService.java   | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4893ba89/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index 366bbae..30ee4bc 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -44,6 +44,8 @@ import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.user.User;
@@ -335,11 +337,13 @@ public class CalendarWebService {
 	 *            an authenticated SID
 	 * @param id
 	 *            the id to delete
+	 * @return {@link ServiceResult} of type SUCCESS
+	 *
 	 * @throws {@link ServiceException} in case of any error
 	 */
 	@DELETE
 	@Path("/{id}")
-	public void delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
+	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
 		try {
 			Long userId = sessionDao.check(sid);
 			Set<Right> rights = userDao.getRights(userId);
@@ -356,6 +360,8 @@ public class CalendarWebService {
 				throw new ServiceException("Not allowed to preform that action, Authenticate the SID first");
 			}
 			appointmentDao.delete(a, userId);
+
+			return new ServiceResult(id, "Deleted", Type.SUCCESS);
 		} catch (ServiceException err) {
 			throw err;
 		} catch (Exception err) {


[12/50] [abbrv] openmeetings git commit: no jira: typo is fixed

Posted by so...@apache.org.
no jira: typo is fixed


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

Branch: refs/heads/3.1.x
Commit: 4c54867fef50bbb2392ecf31b89300e16e55ae04
Parents: 83f14f0
Author: Maxim Solodovnik <so...@apache.org>
Authored: Mon Jan 2 17:34:44 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Mon Jan 2 17:34:44 2017 +0000

----------------------------------------------------------------------
 CHANGELOG | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4c54867f/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index 93ab737..22f36d8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,7 +3,7 @@ Apache OpenMeetings Change Log
 See http://issues.apache.org/jira/browse/OPENMEETINGS-* (where * is the number of the issue below)
 See https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-* (where * is the number of CVE below)
 
-Release Notes - Openmeetings - Version 3.1.2
+Release Notes - Openmeetings - Version 3.1.3
 ================================================================================================================
 ** Bug
     * [OPENMEETINGS-508] - Network testing page is not localized


[50/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1553] mobile client seems to work as expected

Posted by so...@apache.org.
[OPENMEETINGS-1553] mobile client seems to work as expected


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

Branch: refs/heads/3.1.x
Commit: be2fbf424601237dd009fb3162714972a754c73a
Parents: 74bd549
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Feb 21 05:40:05 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Feb 21 05:40:05 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/core/remote/MobileService.java | 59 ++++++++++----------
 1 file changed, 29 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/be2fbf42/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 edf0eac..9297933 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
@@ -18,18 +18,17 @@
  */
 package org.apache.openmeetings.core.remote;
 
+import static org.apache.openmeetings.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_OAUTH_REGISTER_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SOAP_REGISTER_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.apache.openmeetings.util.LocaleHelper.getCountryName;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -82,27 +81,27 @@ public class MobileService {
 	private static void add(Map<String, Object> m, String key, Object v) {
 		m.put(key, v == null ? "" : v);
 	}
-	
+
 	public Map<String, Object> checkServer() {
-		Map<String, Object> result = new Hashtable<>();
+		Map<String, Object> result = new HashMap<>();
 		result.put("allowSelfRegister",  "1".equals(cfgDao.getConfValue(CONFIG_FRONTEND_REGISTER_KEY, String.class, "0")));
 		result.put("allowSoapRegister",  "1".equals(cfgDao.getConfValue(CONFIG_SOAP_REGISTER_KEY, String.class, "0")));
 		result.put("allowOauthRegister",  "1".equals(cfgDao.getConfValue(CONFIG_OAUTH_REGISTER_KEY, String.class, "0")));
 		return result;
 	}
-	
+
 	public Map<String, String> getStates() {
-		Map<String, String> result = new Hashtable<>();
+		Map<String, String> result = new HashMap<>();
 		for (String code : Locale.getISOCountries()) {
 			result.put(code, getCountryName(code));
 		}
 		return result;
 	}
-	
+
 	public String[] getTimezones() {
 		return TimeZone.getAvailableIDs();
 	}
-	
+
 	public Map<String, Object> loginGoogle(Map<String, String> umap) {
 		Map<String, Object> result = getResult();
 		try {
@@ -115,7 +114,7 @@ public class MobileService {
 		}
 		return result;
 	}
-	
+
 	public Map<String, Object> registerUser(Map<String, String> umap) {
 		Map<String, Object> result = getResult();
 		try {
@@ -134,7 +133,7 @@ public class MobileService {
 				String tzId = umap.get("tzId");
 				String country = umap.get("stateId");
 				Long langId = Long.valueOf(umap.get("langId"));
-				
+
 				//FIXME TODO unify with Register dialog
 				String hash = UUID.randomUUID().toString();
 
@@ -167,7 +166,7 @@ public class MobileService {
 		}
 		return result;
 	}
-	
+
 	public Map<String, Object> loginUser(String login, String password) {
 		Map<String, Object> result = getResult();
 		try {
@@ -180,13 +179,13 @@ public class MobileService {
 		}
 		return result;
 	}
-	
+
 	private static Map<String, Object> getResult() {
-		Map<String, Object> result = new Hashtable<>();
+		Map<String, Object> result = new HashMap<>();
 		result.put("status", -1);
 		return result;
 	}
-	
+
 	private Map<String, Object> login(User u, Map<String, Object> result) {
 		if (u != null) {
 			Sessiondata sd = sessionDao.create();
@@ -212,7 +211,7 @@ public class MobileService {
 					c.setLastname(u.getLastname());
 					c.setMobile(true);
 					sessionManager.updateClientByStreamId(streamId, c, false, null);
-	
+
 					add(result, "sid", sd.getSessionId());
 					add(result, "publicSid", c.getPublicSID());
 					add(result, "status", 0);
@@ -227,16 +226,16 @@ public class MobileService {
 		}
 		return result;
 	}
-	
+
 	public List<Map<String, Object>> getVideoStreams() {
-		List<Map<String, Object>> result = new ArrayList<Map<String,Object>>();
+		List<Map<String, Object>> result = new ArrayList<>();
 		// Notify all clients of the same scope (room)
 		IConnection current = Red5.getConnectionLocal();
 		for (IConnection conn : current.getScope().getClientConnections()) {
 			if (conn != null && conn instanceof IServiceCapableConnection) {
 				Client c = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
 				if (!Strings.isEmpty(c.getAvsettings()) && !c.isScreenClient()) {
-					Map<String, Object> map = new Hashtable<String, Object>();
+					Map<String, Object> map = new HashMap<>();
 					add(map, "streamId", c.getStreamid());
 					add(map, "broadCastId", c.getBroadCastID());
 					add(map, "userId", c.getUserId());
@@ -257,7 +256,7 @@ public class MobileService {
 	}
 
 	private void addRoom(String type, String org, boolean first, List<Map<String, Object>> result, Room r) {
-		Map<String, Object> room = new Hashtable<String, Object>();
+		Map<String, Object> room = new HashMap<>();
 		room.put("id", r.getId());
 		room.put("name", r.getName());
 		room.put("type", type);
@@ -271,22 +270,22 @@ public class MobileService {
 		room.put("audioOnly", r.isAudioOnly());
 		result.add(room);
 	}
-	
+
 	public List<Map<String, Object>> getRooms() {
-		List<Map<String, Object>> result = new ArrayList<Map<String,Object>>();
+		List<Map<String, Object>> result = new ArrayList<>();
 		// FIXME duplicated code
 		IConnection current = Red5.getConnectionLocal();
 		Client c = sessionManager.getClientByStreamId(current.getClient().getId(), null);
 		User u = userDao.get(c.getUserId());
 		//my rooms
-		List<Room> myl = new ArrayList<Room>();
+		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
 		for (GroupUser ou : u.getGroupUsers()) {
 			Group org = ou.getGroup();
@@ -296,16 +295,16 @@ public class MobileService {
 				first = false;
 			}
 		}
-		
+
 		//public rooms
 		for (Room r : roomDao.getPublicRooms()) {
 			addRoom("public", null, false, result, r);
 		}
 		return result;
 	}
-	
+
 	public Map<String, Object> roomConnect(String SID, Long userId) {
-		Map<String, Object> result = new Hashtable<String, Object>();
+		Map<String, Object> result = new HashMap<>();
 		User u = userDao.get(userId);
 		Client c = scopeAdapter.setUsernameReconnect(SID, userId, u.getLogin(), u.getFirstname(), u.getLastname(), u.getPictureuri());
 		 //TODO check if we need anything here
@@ -328,16 +327,16 @@ public class MobileService {
 		IConnection current = Red5.getConnectionLocal();
 		Client c = sessionManager.getClientByStreamId(current.getClient().getId(), null);
 		c.setAvsettings(avMode);
-		c.setVWidth(Integer.parseInt(width));
-		c.setVHeight(Integer.parseInt(height));
+		c.setVWidth(Double.valueOf(width).intValue());
+		c.setVHeight(Double.valueOf(height).intValue());
 		if (interviewPodId > 0) {
 			c.setInterviewPodId(interviewPodId);
 		}
 		sessionManager.updateClientByStreamId(c.getStreamid(), c, false, null);
-		HashMap<String, Object> hsm = new HashMap<String, Object>();
+		Map<String, Object> hsm = new HashMap<>();
 		hsm.put("client", c);
 		hsm.put("message", new String[]{"avsettings", "0", avMode});
-		Map<String, Object> result = new Hashtable<String, Object>();
+		Map<String, Object> result = new HashMap<>();
 		if (!"n".equals(avMode)) {
 			result.put("broadcastId", scopeAdapter.getBroadCastId());
 		}


[25/50] [abbrv] openmeetings git commit: no-jira: failing tests are fixed

Posted by so...@apache.org.
no-jira: failing tests are fixed


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

Branch: refs/heads/3.1.x
Commit: 7567ff17fdb1a526f697c6571b481c04cba22cb2
Parents: 98b9cf9
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Jan 13 05:31:19 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Jan 13 05:31:19 2017 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/test/AbstractJUnitDefaults.java   | 10 ++++------
 .../openmeetings/test/webservice/TestCalendarService.java |  8 +++++++-
 2 files changed, 11 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7567ff17/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
index 368bd87..4bfa5b7 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
@@ -27,12 +27,10 @@ import java.util.UUID;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.Address;
-import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
@@ -56,8 +54,6 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 	@Autowired
 	private UserDao userDao;
 	@Autowired
-	private GroupDao groupDao;
-	@Autowired
 	private ImportInitvalues importInitvalues;
 	@Autowired
 	protected ConfigurationDao cfgDao;
@@ -153,7 +149,6 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 		u.getAddress().setEmail(String.format("email%s@local", uuid));
 		u.setRights(UserDao.getDefaultRights());
 		u.setTimeZoneId("Asia/Bangkok");
-		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
 		u.updatePassword(cfgDao, getRandomPass(uuid));
 		u.setLanguageId(1L);
 		return u;
@@ -164,7 +159,10 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
 	}
 
 	public User createUser(String uuid) throws Exception {
-		User u = getUser(uuid);
+		return createUser(getUser(uuid));
+	}
+
+	public User createUser(User u) throws Exception {
 		u = userDao.update(u, null);
 		assertNotNull("Can't add user", u);
 		return u;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7567ff17/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index b593307..c2f2c08 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -24,10 +24,12 @@ import java.util.Date;
 import java.util.UUID;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,11 +37,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 public class TestCalendarService extends AbstractWebServiceTest {
 	public final static String CALENDAR_SERVICE_URL = BASE_SERVICES_URL + "/calendar";
 	@Autowired
+	private GroupDao groupDao;
+	@Autowired
 	private RoomDao roomDao;
 
 	private void actualTest(Room r) throws Exception {
 		String uuid = UUID.randomUUID().toString();
-		User u = createUser(uuid);
+		User u = getUser(uuid);
+		u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+		u = createUser(u);
 		ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
 
 		Date start = new Date();