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 2015/08/05 14:22:28 UTC

svn commit: r1694198 - in /openmeetings/branches/3.0.x: WebContent/src/base/ WebContent/src/base/hibernate/ WebContent/src/modules/conference/conference/ WebContent/src/modules/conference/flexibleConferenceRoom/ WebContent/src/modules/conference/flexib...

Author: solomax
Date: Wed Aug  5 12:22:28 2015
New Revision: 1694198

URL: http://svn.apache.org/r1694198
Log:
[OPENMEETINGS-1100] partially fixed (need more work in conference room)

Added:
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/micro_small_add.png   (with props)
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/micro_small_no.png   (with props)
Removed:
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.fla
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.fla
Modified:
    openmeetings/branches/3.0.x/WebContent/src/base/hibernate/hibRtmpConnection.lzx
    openmeetings/branches/3.0.x/WebContent/src/base/mainAttributes.lzx
    openmeetings/branches/3.0.x/WebContent/src/base/mainMethods.lzx
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/conference/conferenceMenubar.lzx
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/activityList.lzx
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/library.lzx
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/moderationMiniIconsEventUserList.lzx
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.png
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.png
    openmeetings/branches/3.0.x/WebContent/src/modules/conference/restricted/moderationMiniIconRestricted.lzx
    openmeetings/branches/3.0.x/WebContent/swf10/commonVideoViewContentSWF10.lzx
    openmeetings/branches/3.0.x/WebContent/swf10/video/baseVideoObject.lzx
    openmeetings/branches/3.0.x/WebContent/swf10/video/editRecordStreamSWF10.lzx
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Client.java
    openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.properties.xml
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application_ru.properties.xml

Modified: openmeetings/branches/3.0.x/WebContent/src/base/hibernate/hibRtmpConnection.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/base/hibernate/hibRtmpConnection.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/base/hibernate/hibRtmpConnection.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/base/hibernate/hibRtmpConnection.lzx Wed Aug  5 12:22:28 2015
@@ -602,7 +602,7 @@
     <netRemoteCallHib name="getLanguageByIdAndMax" funcname="languageservice.getLanguageByIdAndMax" >
         <attribute name="start" value="0" type="number" />
         <attribute name="step" value="100" type="number" />
-        <attribute name="max" value="1600" type="number" />
+        <attribute name="max" value="1605" 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> 
@@ -925,14 +925,15 @@
                     
 					if (this.parent.modus == "conference") {
 						if ($debug) Debug.write("############## showDevicePopUp");
+						canvas.sendViaLocalConnection(canvas.vid_lc_name, "toggleVideo", [true]);
 						canvas._videocontainer._videoviewcontent.showDevicePopUp(false);
 					}
                     canvas._drawarea.onopenWhiteBoard.sendEvent();
                     
-                    if ($debug) Debug.write("roomType_id ",canvas.currentRoomObject);
+                    if ($debug) Debug.write("room ",canvas.currentRoomObject);
                     if ($debug) Debug.write("roomType_id ",canvas.currentRoomObject.roomtype.roomtypes_id);
                     
-                    if (canvas.currentRoomObject.roomtype.roomtypes_id!=3) {
+                    if (canvas.currentRoomObject.roomtype.roomtypes_id != 3) {
                         //We do not show this warning when the roomtype is 3 (restricted)
                         if (canvas.currentRoomObj.isModeratedRoom) {
                             if (value.length == 0 && !messageAlreadyThrown){
@@ -1166,15 +1167,17 @@
         </netRemoteCallHib>
         
         <!--
-        public synchronized Long setBroadCastingFlag(String publicSID, boolean value) 
+        public synchronized Long setBroadCastingFlag(String publicSID, boolean value, boolean canVideo, Integer podId) 
          -->
         <netRemoteCallHib name="setBroadCastingFlag" funcname="setBroadCastingFlag">
             <attribute name="publicSIDOfNewModerator" value="0" type="string" />
             <attribute name="isAllowedToBroadCastAV" value="false" type="boolean" />
+            <attribute name="canVideo" value="false" type="boolean" />
             <attribute name="avsettings" value="av" type="string" />
             <attribute name="interviewPodId" value="0" type="number" />
             <netparam><method name="getValue">return parent.publicSIDOfNewModerator;</method></netparam>
             <netparam><method name="getValue">return parent.isAllowedToBroadCastAV;</method></netparam>
+            <netparam><method name="getValue">return parent.canVideo;</method></netparam>
             <netparam><method name="getValue">return parent.interviewPodId;</method></netparam>
             <handler name="ondata" args="value">
                 <![CDATA[
@@ -1189,20 +1192,20 @@
             <handler name="ondata" args="value">
                 <![CDATA[
                     //The onResult-Handler will be called be the rtmpconnection
-                    //if ($debug) Debug.write(" onResult setNewBroadCastingFlag : ",value);   
+                    if ($debug) Debug.write(" onResult setNewBroadCastingFlag : ",value);
+                    canvas._videocontainer._participants.getUserListItemByPublicSID(value.publicSID).setAttribute("refObj", value);   
                     if (canvas.publicSID == value.publicSID) {
-                        if ($debug) Debug.write("Its about You ",value);
+						canvas.sendViaLocalConnection(canvas.vid_lc_name, "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") {
                                canvas._drawarea.newInterviewStarting(value);
                             } else {
                             	canvas._videocontainer._videoviewcontent.showDevicePopUp(false);
                             }
-                            
-                            canvas.setAttribute("isBroadCasting",true);
-                        } else {
-                            canvas.setAttribute("isBroadCasting",false);
                         }
                     } 
                     canvas.setAttribute("lastBroadCastingUser",value);

Modified: openmeetings/branches/3.0.x/WebContent/src/base/mainAttributes.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/base/mainAttributes.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/base/mainAttributes.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/base/mainAttributes.lzx Wed Aug  5 12:22:28 2015
@@ -380,6 +380,7 @@ and some more references to temp-objects
 <attribute name="lastBroadCastingUser" value="null" />
 
 <attribute name="isBroadCasting" value="false" type="boolean" />
+<attribute name="canVideo" value="false" type="boolean" />
 
 <attribute name="currentContentView" value="null" />
 

Modified: openmeetings/branches/3.0.x/WebContent/src/base/mainMethods.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/base/mainMethods.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/base/mainMethods.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/base/mainMethods.lzx Wed Aug  5 12:22:28 2015
@@ -61,6 +61,26 @@
     	</handler>
     </confmenucommand>
     
+    <baseconfmenucommand id="cmd_applyforA" tipLabelId="1602">
+    	<handler name="onselect" args="tSel">
+    		if (!this.enabled) {
+    			return;
+    		}
+    		if ($debug) Debug.write("cmd_applyforA onselect",canvas.ismoderator,tSel);
+    		if (canvas.ismoderator) {
+				//Do directly send confirmation to share Audio/Video to SELF! so that all users get
+				//the notification and the broadcasting Bit is set for this User
+				canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
+				canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+				canvas.thishib.setBroadCastingFlag.canVideo = false;
+				canvas.thishib.setBroadCastingFlag.doCall();
+			} else {
+				//Apply for Right to Share Audio/Video
+				var tDate = new Date();
+				canvas.thishib.sendMessageWithClient.sendMessage("applyForA",tDate.getTime());
+			}
+    	</handler>
+    </baseconfmenucommand>
     <baseconfmenucommand id="cmd_applyforAV" tipLabelId="1482">
     	<handler name="onselect" args="tSel">
     		if (!this.enabled) {
@@ -72,6 +92,7 @@
 				//the notification and the broadcasting Bit is set for this User
 				canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
 				canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+				canvas.thishib.setBroadCastingFlag.canVideo = true;
 				canvas.thishib.setBroadCastingFlag.doCall();
 			} else {
 				//Apply for Right to Share Audio/Video

Modified: openmeetings/branches/3.0.x/WebContent/src/modules/conference/conference/conferenceMenubar.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/conference/conferenceMenubar.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/modules/conference/conference/conferenceMenubar.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/modules/conference/conference/conferenceMenubar.lzx Wed Aug  5 12:22:28 2015
@@ -216,37 +216,32 @@
 		<view name="_content" x="1" y="1" 
 			layout="axis:y;spacing:1" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" >
 			
-			<conferencDropDownMenuItem labelid="213" command="cmd_invitation" 
+			<conferencDropDownMenuItem labelid="213" command="cmd_invitation"
 						enabled="${ canvas.timeZonesLoaded &amp;&amp; canvas.ismoderator }" />
 			<horizontalDropDownSpacer />
 			<conferencDropDownMenuItem labelid="239" command="cmd_shareDesktop" 
-						enabled="${ classroot.btnRef.classroot.viewType != 'interview' &amp;&amp; canvas.ismoderator }" />			
+						enabled="${ classroot.btnRef.classroot.viewType != 'interview' &amp;&amp; canvas.ismoderator }" />
 			<horizontalDropDownSpacer />
-			<conferencDropDownMenuItem labelid="784" command="cmd_applyforMod"
-						enabled="${ !canvas.ismoderator }" />	
+			<conferencDropDownMenuItem labelid="784" command="cmd_applyforMod" enabled="${ !canvas.ismoderator }" />
 			<horizontalDropDownSpacer />
-			<conferencDropDownMenuItem labelid="785" command="cmd_applyforWhiteBoard"
-						enabled="${ !canvas.ismoderator }" />	
+			<conferencDropDownMenuItem labelid="785" command="cmd_applyforWhiteBoard" enabled="${ !canvas.ismoderator }" />
 			<horizontalDropDownSpacer />
-			<conferencDropDownMenuItem labelid="786" command="cmd_applyforAV"
-						enabled="${ !canvas.ismoderator }" />				
+			<conferencDropDownMenuItem labelid="1601" command="cmd_applyforA" enabled="${ !canvas.ismoderator }" />
 			<horizontalDropDownSpacer />
-			<conferencDropDownMenuItem labelid="24" command="cmd_createPoll" 
-						enabled="${ canvas.ismoderator }" />
-			<horizontalDropDownSpacer />			
-			<conferencDropDownMenuItem labelid="37" command="cmd_pollResults" 
-						enabled="true" />
+			<conferencDropDownMenuItem labelid="786" command="cmd_applyforAV" enabled="${ !canvas.ismoderator }" />
 			<horizontalDropDownSpacer />
-			<conferencDropDownMenuItem labelid="42" command="cmd_checkPollVoted" 
-						 enabled="${ canvas.user_id != -1 }" />
+			<conferencDropDownMenuItem labelid="24" command="cmd_createPoll" enabled="${ canvas.ismoderator }" />
+			<horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="37" command="cmd_pollResults" enabled="true" />
+			<horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="42" command="cmd_checkPollVoted" enabled="${ canvas.user_id != -1 }" />
 			<horizontalDropDownSpacer
 						 visible="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObject.sipEnabled }" />
             <conferencDropDownMenuItem labelid="1447" command="cmd_showSipDialer" 
             			 visible="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObject.sipEnabled }"
             			 enabled="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObject.sipEnabled }"/>
             <horizontalDropDownSpacer />
-			<conferencDropDownMenuItem labelid="1126" command="cmd_editWhiteboardDefault" 
-						 enabled="true"/>
+			<conferencDropDownMenuItem labelid="1126" command="cmd_editWhiteboardDefault" enabled="true"/>
 			<!-- Save Whiteboard as Image menues are commented for now
             <horizontalDropDownSpacer />
 			<conferencDropDownMenuItem labelid="560" command="cmd_exportFileSVG" enabled="true"/>

Modified: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/activityList.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/activityList.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/activityList.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/activityList.lzx Wed Aug  5 12:22:28 2015
@@ -117,6 +117,7 @@
     
     <method name="applyObject">
         canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = this.rcl.publicSID;
+        canvas.thishib.setBroadCastingFlag.canVideo = true;
         canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
         canvas.thishib.setBroadCastingFlag.avsettings = "av";
         canvas.thishib.setBroadCastingFlag.doCall(); 
@@ -179,13 +180,14 @@
     
     <method name="applyObject">
         canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = this.rcl.publicSID;
+        canvas.thishib.setBroadCastingFlag.canVideo = false;
         canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
         canvas.thishib.setBroadCastingFlag.avsettings = "a";
         canvas.thishib.setBroadCastingFlag.doCall(); 
         this.sendClearMessage(true);
-    </method>   
+    </method>
     
-    <view resource="allow_audio_only_rsc" x="2" y="2" />
+    <view resource="a_allow_rsc" x="2" y="2" />
     
     <labelText text="$once{ parent.message }" multiline="true" x="20"
                width="$once{ parent.width - 40 }"/>
@@ -474,11 +476,11 @@
         <![CDATA[
             if (rcl.publicSID == canvas.publicSID) {
                 var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
-                           canvas.getLabelName(1080) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+                           canvas.getLabelName(1603) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
             } else {
                 var txt = rcl.firstname + " " + rcl.lastname + " " +
                                    "[" + rcl.username + "] " +
-                                   canvas.getLabelName(1080) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+                                   canvas.getLabelName(1603) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
             }
                            
             new lz.activityListRestrictedRoomA(this._list._list,{

Modified: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/library.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/library.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/library.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/library.lzx Wed Aug  5 12:22:28 2015
@@ -38,6 +38,10 @@
     <resource name="remote_deny_rsc" src="resources/mouse_delete.png" />
 	
 	<!-- FamFam Icon Set -->
+	<resource name="a_allow_rsc" src="resources/micro_small_add.png" />
+	<!-- FamFam Icon Set -->
+	<resource name="a_deny_rsc" src="resources/micro_small_no.png" />
+	<!-- FamFam Icon Set -->
 	<resource name="av_allow_rsc" src="resources/audio_and_video.png" />
 	<!-- FamFam Icon Set -->
 	<resource name="av_deny_rsc" src="resources/audio_and_video_no.png" />

Modified: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/moderationMiniIconsEventUserList.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/moderationMiniIconsEventUserList.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/moderationMiniIconsEventUserList.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/moderationMiniIconsEventUserList.lzx Wed Aug  5 12:22:28 2015
@@ -29,6 +29,7 @@
     </handler>	
     
     <method name="updateIcons">
+    <![CDATA[
         if (canvas.ismoderator) {
             this._isMod.setAttribute("visibility","visible");
             this._isModAddbutton.setAttribute("visibility","hidden");
@@ -103,16 +104,13 @@
         if ($debug) Debug.write("+ STATUS ICONS + ",this.showAvIcons,canvas.isBroadCasting);
         
         if (this.showAvIcons) {
-	        if (canvas.isBroadCasting) {
-	            this._allowDevice.setAttribute("visibility","hidden");
-	            this._denyDevice.setAttribute("visibility","visible");
-	        } else {
-	            this._allowDevice.setAttribute("visibility","visible");
-	            this._denyDevice.setAttribute("visibility","hidden");
-	        }
+            this._allowDevice.setAttribute("visible", !canvas.isBroadCasting || !canvas.canVideo);
+            this._denyDevice.setAttribute("visible", canvas.isBroadCasting && canvas.canVideo);
+
+            this._allowAudio.setAttribute("visible", !canvas.isBroadCasting);
+            this._denyAudio.setAttribute("visible", canvas.isBroadCasting);
         }
         
-        
         if (canvas.micMuted) {
             this._muteDevice.setAttribute("visibility","hidden");
             this._unMuteDevice.setAttribute("visibility","visible");
@@ -120,9 +118,8 @@
             this._muteDevice.setAttribute("visibility","visible");
             this._unMuteDevice.setAttribute("visibility","hidden");
         }
-        
-        
-    </method>
+	]]>
+	</method>
     
     <simplelayout axis="x" spacing="2" />
 
@@ -220,7 +217,39 @@
     </miniIconsNew>      
           
     
-    <miniIconsNew name="_allowDevice" x="80" width="40" height="16" opacity="0.5" 
+    <miniIconsNew name="_allowAudio" x="80" width="16" height="16" 
+            visible="$once{ parent.showAvIcons }" innerResource="a_allow_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("NOTHING: ",canvas.publicSID);
+            if (canvas.ismoderator) {
+                //Do directly send confirmation to share Audio/Video to SELF! so that all users get
+                //the notification and the broadcasting Bit is set for this User
+                canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
+                canvas.thishib.setBroadCastingFlag.canVideo = false;
+                canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+                canvas.thishib.setBroadCastingFlag.doCall(); 
+            } else {
+                //Apply for Right to Share Audio/Video
+                var tDate = new Date();
+                canvas.thishib.sendMessageWithClient.sendMessage("applyForA",tDate.getTime());
+            }
+        </handler>
+        <labelTooltip labelid="1606" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_denyAudio" x="80" width="16" height="16" opacity="0.5"
+            visible="$once{ parent.showAvIcons }" innerResource="a_deny_rsc" showhandcursor="false">
+        <handler name="onclick">
+            if ($debug) Debug.write("DENY: ",canvas.publicSID);
+            //Nothing happens here
+            canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
+            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = false;
+            canvas.thishib.setBroadCastingFlag.doCall(); 
+        </handler>
+        <labelTooltip name="_text" labelid="1607" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_allowDevice" x="100" width="16" height="16" 
             visible="$once{ parent.showAvIcons }" innerResource="av_allow_rsc" showhandcursor="true">
         <handler name="onclick">
             if ($debug) Debug.write("NOTHING: ",canvas.publicSID);
@@ -228,6 +257,7 @@
                 //Do directly send confirmation to share Audio/Video to SELF! so that all users get
                 //the notification and the broadcasting Bit is set for this User
                 canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
+                canvas.thishib.setBroadCastingFlag.canVideo = true;
                 canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
                 canvas.thishib.setBroadCastingFlag.doCall(); 
             } else {
@@ -239,13 +269,14 @@
         <labelTooltip labelid="687" />
     </miniIconsNew>
     
-    <miniIconsNew name="_denyDevice" x="80" width="40" height="16" 
-            visible="$once{ parent.showAvIcons }" innerResource="av_allow_rsc" showhandcursor="false">
+    <miniIconsNew name="_denyDevice" x="100" width="16" height="16" opacity="0.5"
+            visible="$once{ parent.showAvIcons }" innerResource="av_deny_rsc" showhandcursor="false">
         <handler name="onclick">
             if ($debug) Debug.write("DENY: ",canvas.publicSID);
             //Nothing happens here
             canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
-            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = false;
+                canvas.thishib.setBroadCastingFlag.canVideo = false;
+                canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
             canvas.thishib.setBroadCastingFlag.doCall(); 
         </handler>
         <labelTooltip name="_text" labelid="690" />

Modified: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.png
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.png?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
Binary files - no diff available.

Modified: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.png
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.png?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
Binary files - no diff available.

Added: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/micro_small_add.png
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/micro_small_add.png?rev=1694198&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/micro_small_add.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/micro_small_no.png
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/micro_small_no.png?rev=1694198&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openmeetings/branches/3.0.x/WebContent/src/modules/conference/flexibleConferenceRoom/resources/micro_small_no.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: openmeetings/branches/3.0.x/WebContent/src/modules/conference/restricted/moderationMiniIconRestricted.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/src/modules/conference/restricted/moderationMiniIconRestricted.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/src/modules/conference/restricted/moderationMiniIconRestricted.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/src/modules/conference/restricted/moderationMiniIconRestricted.lzx Wed Aug  5 12:22:28 2015
@@ -117,12 +117,12 @@
             }
 		}
 		
-		if (refObj != null && refObj.isBroadcasting) {
-			this._allowDevice.setAttribute("visibility","hidden");
-			this._denyDevice.setAttribute("visibility","visible");
-		} else {
-			this._allowDevice.setAttribute("visibility","visible");
-            this._denyDevice.setAttribute("visibility","hidden");
+		if (refObj != null) {
+			this._allowDevice.setAttribute("visible", !refObj.isBroadcasting || !refObj.canVideo);
+			this._denyDevice.setAttribute("visible", refObj.isBroadcasting && refObj.canVideo);
+
+			this._allowAudio.setAttribute("visible", !refObj.isBroadcasting);
+			this._denyAudio.setAttribute("visible", refObj.isBroadcasting);
 		}
 		
 		if ($debug) Debug.write("Set micMuted ", (refObj != null && refObj.micMuted));
@@ -279,21 +279,42 @@
         <labelTooltip labelid="1078" />
     </miniIcons>        
     
-    <miniIcons name="_allowDevice" x="80" width="40" height="16" resource="av_allow_rsc" opacity="0.5" showhandcursor="true">
+    <miniIcons name="_allowAudio" x="80" width="16" height="16" resource="a_allow_rsc" showhandcursor="true">
         <handler name="onclick">
             if ($debug) Debug.write("ALLOW: ",parent.parent.parent.refObj.publicSID);
             canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = parent.parent.parent.refObj.publicSID;
+            canvas.thishib.setBroadCastingFlag.canVideo = false;
+            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+            canvas.thishib.setBroadCastingFlag.doCall(); 
+        </handler>
+        <labelTooltip labelid="1604" />
+    </miniIcons>
+    <miniIcons name="_denyAudio" x="80" width="16" height="16" resource="a_deny_rsc" opacity="0.5" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("ALLOW: ",parent.parent.parent.refObj.publicSID);
+            canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = parent.parent.parent.refObj.publicSID;
+            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = false;
+            canvas.thishib.setBroadCastingFlag.doCall(); 
+        </handler>
+        <labelTooltip labelid="1605" />
+    </miniIcons>
+    <miniIcons name="_allowDevice" x="100" width="16" height="16" resource="av_allow_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("ALLOW: ",parent.parent.parent.refObj.publicSID);
+            canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = parent.parent.parent.refObj.publicSID;
+            canvas.thishib.setBroadCastingFlag.canVideo = true;
             canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
             canvas.thishib.setBroadCastingFlag.doCall(); 
         </handler>
         <labelTooltip labelid="683" />
     </miniIcons>
     
-    <miniIcons name="_denyDevice" x="80" width="40" height="16" resource="av_deny_rsc" showhandcursor="true">
+    <miniIcons name="_denyDevice" x="100" width="16" height="16" resource="av_deny_rsc" opacity="0.5" showhandcursor="true">
         <handler name="onclick">
             if ($debug) Debug.write("ALLOW: ",parent.parent.parent.refObj.publicSID);
             canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = parent.parent.parent.refObj.publicSID;
-            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = false;
+            canvas.thishib.setBroadCastingFlag.canVideo = false;
+            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
             canvas.thishib.setBroadCastingFlag.doCall(); 
         </handler>
         <labelTooltip labelid="684" />

Modified: openmeetings/branches/3.0.x/WebContent/swf10/commonVideoViewContentSWF10.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/swf10/commonVideoViewContentSWF10.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/swf10/commonVideoViewContentSWF10.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/swf10/commonVideoViewContentSWF10.lzx Wed Aug  5 12:22:28 2015
@@ -43,6 +43,7 @@
             var client = {};
             client.t = this;
 
+            client.toggleVideo = this.toggleVideo;
             client.createEditRecordStream = this.createEditRecordStream;
             client.createVideoObject = this.createVideoObject;
             client.createVideo = this.createVideo;
@@ -80,6 +81,11 @@
         ]]>
     </handler>
     
+	<method name="toggleVideo" args="value">
+		if($debug) Debug.info("toggleVideo ", value);
+		canvas.userobject.canVideo = value;
+	</method>
+    
 	<method name="createEditRecordStream" args="syncUpdate,isInterview,interviewPodId">
 		if($debug) Debug.info("createEditRecordStream,",syncUpdate,isInterview,interviewPodId);
 		if (canvas.inner.editRecordStream != null)

Modified: openmeetings/branches/3.0.x/WebContent/swf10/video/baseVideoObject.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/swf10/video/baseVideoObject.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/swf10/video/baseVideoObject.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/swf10/video/baseVideoObject.lzx Wed Aug  5 12:22:28 2015
@@ -440,8 +440,7 @@
 					var volume = parent.parent.getStreamVolume();
 
 					var sliderHeight = 120;
-					var sliderX =
-					this.getAttributeRelative('x',canvas) - 2;
+					var sliderX = this.getAttributeRelative('x',canvas) - 2;
 					var pick = new lz.VolumeSlider(canvas, {
 							height:sliderHeight,
 							x:sliderX,

Modified: openmeetings/branches/3.0.x/WebContent/swf10/video/editRecordStreamSWF10.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/WebContent/swf10/video/editRecordStreamSWF10.lzx?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/WebContent/swf10/video/editRecordStreamSWF10.lzx (original)
+++ openmeetings/branches/3.0.x/WebContent/swf10/video/editRecordStreamSWF10.lzx Wed Aug  5 12:22:28 2015
@@ -454,6 +454,10 @@
 			}
 			this.parent.availableCamsLabel.setAttribute("visible", camVisible);
 			this.parent.availableCams.setAttribute("visible", camVisible);
+			this.parent._btnStartRecording.setAttribute("visible", camVisible || micVisible);
+			this.parent._video.setAttribute("visible", camVisible);
+			this.parent._play.setAttribute("visible", camVisible || micVisible);
+			this.parent._level_meter.setAttribute("visible", micVisible);
 			this.parent.availableMicsLabel.setAttribute("visible", micVisible);
 			this.parent.availableMics.setAttribute("visible", micVisible);
 			this.parent.infoTextNoAV.setAttribute("visible", textVisible);
@@ -518,7 +522,7 @@
 		selectListItem(availableMics, foundStoredMic, mics.length > 0);
 
 		// settings
-		var addCams = !canvas.currentRoomObject.isAudioOnly && cameras.length > 0;
+		var addCams = canvas.userobject.canVideo && !canvas.currentRoomObject.isAudioOnly && cameras.length > 0;
 		var addMics = mics.length > 0;
 		if (addCams && addMics) {
 			availableSettings.addItem(canvas.getLabelName(448), "av");

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Client.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Client.java?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Client.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Client.java Wed Aug  5 12:22:28 2015
@@ -63,7 +63,7 @@ import org.apache.openmeetings.util.Cale
 })
 @Table(name = "client")
 public class Client implements IDataProviderEntity, Serializable {
-	private static final long serialVersionUID = -5980636447877077730L;
+	private static final long serialVersionUID = 1L;
 	
 	@Id
 	@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -159,7 +159,10 @@ public class Client implements IDataProv
 	 */
 	@Column(name = "can_giveaudio")
 	private Boolean canGiveAudio = false;
-	
+
+	@Column(name = "can_video")
+	private boolean canVideo = false;
+
 	/**
 	 * @see Client#getConnectedSince()
 	 */
@@ -827,6 +830,14 @@ public class Client implements IDataProv
 		this.canGiveAudio = canGiveAudio;
 	}
 
+	public boolean getCanVideo() {
+		return canVideo;
+	}
+
+	public void setCanVideo(boolean canVideo) {
+		this.canVideo = canVideo;
+	}
+
 	public boolean isAllowRecording() {
 		return allowRecording;
 	}

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java Wed Aug  5 12:22:28 2015
@@ -864,7 +864,7 @@ public class ScopeApplicationAdapter ext
 		return -1L;
 	}
 
-	public Long setBroadCastingFlag(String publicSID, boolean value, Integer interviewPodId) {
+	public Long setBroadCastingFlag(String publicSID, boolean value, boolean canVideo, Integer interviewPodId) {
 		try {
 			log.debug("-----------  setBroadCastingFlag: " + publicSID);
 
@@ -875,6 +875,7 @@ public class ScopeApplicationAdapter ext
 			}
 
 			currentClient.setIsBroadcasting(value);
+			currentClient.setCanVideo(value && canVideo); //set to false in case NOT broadcasting
 			currentClient.setInterviewPodId(interviewPodId);
 
 			// Put the mod-flag to true for this client

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.properties.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.properties.xml?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.properties.xml (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.properties.xml Wed Aug  5 12:22:28 2015
@@ -1620,6 +1620,13 @@
   <entry key="1598">Security</entry>
   <entry key="1599">Access denied. You have no rights to enter this room.</entry>
   <entry key="1600">Re-convert</entry>
+  <entry key="1601">Apply for audio access</entry>
+  <entry key="1602">Ask moderator to share your micro</entry>
+  <entry key="1603">would like to share his audio</entry>
+  <entry key="1604">Allow this user to publish their audio</entry>
+  <entry key="1605">Remove audio of this user</entry>
+  <entry key="1606">I would like to share my audio</entry>
+  <entry key="1607">You are allowed to share your audio</entry>
 	<entry key="install.wizard.install.header">Installation</entry>
 	<entry key="install.wizard.welcome.panel"><![CDATA[
 	<ol>

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application_ru.properties.xml?rev=1694198&r1=1694197&r2=1694198&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application_ru.properties.xml (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application_ru.properties.xml Wed Aug  5 12:22:28 2015
@@ -1620,6 +1620,13 @@
   <entry key="1598">Безопасность</entry>
   <entry key="1599">Доступ запрещён. У вас нет прав для входа в эту комнату.</entry>
   <entry key="1600">Пересоздать</entry>
+  <entry key="1601">Подать заявку на доступ к микрофону</entry>
+  <entry key="1602">Запросить разрешение модератора на доступ к микрофону</entry>
+  <entry key="1603">желает сделать своё Аудио общим. Для того, чтобы разрешить или запретить участникам делать Аудио общим, используйте иконки статуса рядом с именами в списке участников.</entry>
+  <entry key="1604">Разрешить этому пользователю публиковать своё Аудио</entry>
+  <entry key="1605">Удалить Аудио этого пользователя</entry>
+  <entry key="1606">Я хочу сделать моё Аудио общим</entry>
+  <entry key="1607">Вам разрешено сделать ваше Аудио общим</entry>
 	<entry key="install.wizard.install.header">Установка</entry>
 	<entry key="install.wizard.welcome.panel"><![CDATA[
 	<ol>