Merge branch 'master' into sharedNotes0.8
This commit is contained in:
commit
ff493885c9
@ -221,7 +221,7 @@ public String getJoinURL(String username, String meetingID, String record, Strin
|
||||
//
|
||||
//Create a meeting and return a URL to join it as moderator
|
||||
//
|
||||
public String getJoinURLXML(String username, String meetingID, String welcome, String xml_param) {
|
||||
public String getJoinURLXML(String username, String meetingID, String welcome, String xml) {
|
||||
String base_url_create = BigBlueButtonURL + "api/create?";
|
||||
String base_url_join = BigBlueButtonURL + "api/join?";
|
||||
|
||||
@ -234,6 +234,11 @@ public String getJoinURLXML(String username, String meetingID, String welcome, S
|
||||
welcome_param = "&welcome=" + urlEncode(welcome);
|
||||
}
|
||||
|
||||
String xml_param = "";
|
||||
if ((xml != null) && !xml.equals("")) {
|
||||
xml_param = xml;
|
||||
}
|
||||
|
||||
String create_parameters = "name=" + urlEncode(meetingID)
|
||||
+ "&meetingID=" + urlEncode(meetingID) + welcome_param
|
||||
+ "&attendeePW=ap&moderatorPW=mp&voiceBridge=" + voiceBridge;
|
||||
@ -242,10 +247,10 @@ public String getJoinURLXML(String username, String meetingID, String welcome, S
|
||||
|
||||
try {
|
||||
// Attempt to create a meeting using meetingID
|
||||
String xml = postURL(base_url_create + create_parameters
|
||||
String params = postURL(base_url_create + create_parameters
|
||||
+ "&checksum="
|
||||
+ checksum("create" + create_parameters + salt), xml_param);
|
||||
doc = parseXml(xml);
|
||||
doc = parseXml(params);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -85,8 +85,8 @@ if (request.getParameterMap().isEmpty()) {
|
||||
//
|
||||
|
||||
String url = BigBlueButtonURL.replace("bigbluebutton/","demo/");
|
||||
String preUploadPDF = "<?xml version='1.0' encoding='UTF-8'?><modules><module name='presentation'><document url='"+url+"pdfs/sample.pdf'/></module></modules>";
|
||||
String joinURL = getJoinURL(request.getParameter("username"), "Demo Meeting", "false", null, null, preUploadPDF);
|
||||
// String preUploadPDF = "<?xml version='1.0' encoding='UTF-8'?><modules><module name='presentation'><document url='"+url+"pdfs/sample.pdf'/></module></modules>";
|
||||
String joinURL = getJoinURL(request.getParameter("username"), "Demo Meeting", "false", null, null, null);
|
||||
|
||||
if (joinURL.startsWith("http://")) {
|
||||
%>
|
||||
|
@ -106,9 +106,9 @@ Author: Fred Dixon <ffdixon@bigbluebutton.org>
|
||||
// String joinURL = getJoinURL(username, meetingID, "Welcome to " + meetingID );
|
||||
// Update: added record parameter, default false
|
||||
String url = BigBlueButtonURL.replace("bigbluebutton/","demo/");
|
||||
String preUploadPDF = "<?xml version='1.0' encoding='UTF-8'?><modules><module name='presentation'><document url='"+url+"pdfs/sample.pdf'/></module></modules>";
|
||||
// String preUploadPDF = "<?xml version='1.0' encoding='UTF-8'?><modules><module name='presentation'><document url='"+url+"pdfs/sample.pdf'/></module></modules>";
|
||||
// String joinURL = getJoinURL(username, meetingID, "false", "<br>Welcome to course: %%CONFNAME%%.<br>", null, preUploadPDF );
|
||||
String joinURL = getJoinURL(username, meetingID, "false", null, null, preUploadPDF );
|
||||
String joinURL = getJoinURL(username, meetingID, "false", null, null, null );
|
||||
|
||||
if (joinURL.startsWith("http://")) {
|
||||
%>
|
||||
|
@ -70,10 +70,10 @@
|
||||
while (itr.hasNext()) {
|
||||
FileItem item = (FileItem) itr.next();
|
||||
String xml = null;
|
||||
String url = BigBlueButtonURL.replace("bigbluebutton/","demo/");
|
||||
String preUploadPDF = "<?xml version='1.0' encoding='UTF-8'?><modules><module name='presentation'><document url='"+url+"pdfs/sample.pdf'/></module></modules>";
|
||||
// String url = BigBlueButtonURL.replace("bigbluebutton/","demo/");
|
||||
// String preUploadPDF = "<?xml version='1.0' encoding='UTF-8'?><modules><module name='presentation'><document url='"+url+"pdfs/sample.pdf'/></module></modules>";
|
||||
|
||||
xml = preUploadPDF;
|
||||
// xml = preUploadPDF;
|
||||
if (item.isFormField())
|
||||
{
|
||||
String name = item.getFieldName();
|
||||
|
@ -1,4 +1,4 @@
|
||||
<img src="/bigbluebutton/images/bbb_banner.jpg" /><br>
|
||||
<img src="images/bbb_banner.jpg" /><br>
|
||||
<a href="demo1.jsp">Join</a> |
|
||||
<a href="demo2.jsp">Join Selected</a> |
|
||||
<a href="demo3.jsp">Join Password</a>
|
||||
|
BIN
bbb-api-demo/src/main/webapp/images/bbb_banner.jpg
Normal file
BIN
bbb-api-demo/src/main/webapp/images/bbb_banner.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
@ -27,7 +27,7 @@
|
||||
</bean>
|
||||
|
||||
<bean id="web.handler" class="org.bigbluebutton.app.video.VideoApplication">
|
||||
<property name="recordVideoStream" value="true"/>
|
||||
<property name="recordVideoStream" value="false"/>
|
||||
<property name="eventRecordingService" ref="redisRecorder"/>
|
||||
</bean>
|
||||
|
||||
|
@ -1,22 +1,3 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 2009 by Xuggle Incorporated. All rights reserved.
|
||||
*
|
||||
* This file is part of Xuggler.
|
||||
*
|
||||
* You can redistribute Xuggler and/or modify it under the terms of the GNU
|
||||
* Affero General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* Xuggler is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
|
||||
* License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Xuggler. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package org.red5.app.sip;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -63,29 +44,23 @@ public class AudioStream implements IBroadcastStream, IProvider, IPipeConnection
|
||||
public AudioStream(String name) {
|
||||
publishedStreamName = name;
|
||||
livePipe = null;
|
||||
log.trace("name: {}", name);
|
||||
|
||||
streamCodecInfo = new StreamCodecInfo();
|
||||
creationTime = null;
|
||||
}
|
||||
|
||||
public IProvider getProvider() {
|
||||
log.trace("getProvider()");
|
||||
return this;
|
||||
}
|
||||
|
||||
public Notify getMetaData() {
|
||||
System.out.println("**** GETTING METADATA ******");
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getPublishedName() {
|
||||
log.trace("getPublishedName()");
|
||||
return publishedStreamName;
|
||||
}
|
||||
|
||||
public String getSaveFilename() {
|
||||
log.trace("getSaveFilename()");
|
||||
throw new Error("unimplemented method");
|
||||
}
|
||||
|
||||
@ -95,7 +70,6 @@ public class AudioStream implements IBroadcastStream, IProvider, IPipeConnection
|
||||
}
|
||||
|
||||
public Collection<IStreamListener> getStreamListeners() {
|
||||
// log.trace("getStreamListeners()");
|
||||
return streamListeners;
|
||||
}
|
||||
|
||||
@ -104,14 +78,11 @@ public class AudioStream implements IBroadcastStream, IProvider, IPipeConnection
|
||||
streamListeners.remove(listener);
|
||||
}
|
||||
|
||||
public void saveAs(String filePath, boolean isAppend) throws IOException,
|
||||
ResourceNotFoundException, ResourceExistException {
|
||||
log.trace("saveAs(filepath:{}, isAppend:{})", filePath, isAppend);
|
||||
public void saveAs(String filePath, boolean isAppend) throws IOException, ResourceNotFoundException, ResourceExistException {
|
||||
throw new Error("unimplemented method");
|
||||
}
|
||||
|
||||
public void setPublishedName(String name) {
|
||||
log.trace("setPublishedName(name:{})", name);
|
||||
publishedStreamName = name;
|
||||
}
|
||||
|
||||
@ -120,13 +91,10 @@ public class AudioStream implements IBroadcastStream, IProvider, IPipeConnection
|
||||
}
|
||||
|
||||
public IStreamCodecInfo getCodecInfo() {
|
||||
// log.trace("getCodecInfo()");
|
||||
// we don't support this right now.
|
||||
return streamCodecInfo;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
log.trace("getName(): {}", publishedStreamName);
|
||||
// for now, just return the published name
|
||||
return publishedStreamName;
|
||||
}
|
||||
@ -159,9 +127,7 @@ public class AudioStream implements IBroadcastStream, IProvider, IPipeConnection
|
||||
case PipeConnectionEvent.PROVIDER_CONNECT_PUSH:
|
||||
log.trace("PipeConnectionEvent.PROVIDER_CONNECT_PUSH");
|
||||
System.out.println("PipeConnectionEvent.PROVIDER_CONNECT_PUSH");
|
||||
if (event.getProvider() == this
|
||||
&& (event.getParamMap() == null
|
||||
|| !event.getParamMap().containsKey("record"))) {
|
||||
if (event.getProvider() == this && (event.getParamMap() == null || !event.getParamMap().containsKey("record"))) {
|
||||
log.trace("Creating a live pipe");
|
||||
System.out.println("Creating a live pipe");
|
||||
this.livePipe = (IPipe) event.getSource();
|
||||
@ -169,24 +135,19 @@ public class AudioStream implements IBroadcastStream, IProvider, IPipeConnection
|
||||
break;
|
||||
case PipeConnectionEvent.PROVIDER_DISCONNECT:
|
||||
log.trace("PipeConnectionEvent.PROVIDER_DISCONNECT");
|
||||
System.out.println("PipeConnectionEvent.PROVIDER_DISCONNECT");
|
||||
if (this.livePipe == event.getSource()) {
|
||||
log.trace("PipeConnectionEvent.PROVIDER_DISCONNECT - this.mLivePipe = null;");
|
||||
System.out.println("PipeConnectionEvent.PROVIDER_DISCONNECT - this.mLivePipe = null;");
|
||||
this.livePipe = null;
|
||||
}
|
||||
break;
|
||||
case PipeConnectionEvent.CONSUMER_CONNECT_PUSH:
|
||||
log.trace("PipeConnectionEvent.CONSUMER_CONNECT_PUSH");
|
||||
System.out.println("PipeConnectionEvent.CONSUMER_CONNECT_PUSH");
|
||||
break;
|
||||
case PipeConnectionEvent.CONSUMER_DISCONNECT:
|
||||
log.trace("PipeConnectionEvent.CONSUMER_DISCONNECT");
|
||||
System.out.println("PipeConnectionEvent.CONSUMER_DISCONNECT");
|
||||
break;
|
||||
default:
|
||||
log.trace("PipeConnectionEvent default");
|
||||
System.out.println("PipeConnectionEvent default");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# The address of your FreeSWITCH/asterisk server
|
||||
sip.server.host=192.168.0.166
|
||||
sip.server.host=127.0.0.1
|
||||
sip.server.port=5070
|
||||
sip.server.username=bbbuser
|
||||
sip.server.password=secret
|
||||
|
@ -77,15 +77,15 @@ public class ConversionUpdatesMessageListener {
|
||||
conversionUpdatesProcessor.process(message);
|
||||
}
|
||||
else if(messageKey.equalsIgnoreCase(PAGE_COUNT_EXCEEDED_KEY)){
|
||||
String numberOfPages = (String) mapMessage.get("numberOfPages");
|
||||
String maxNumberPages = (String) mapMessage.get("maxNumberPages");
|
||||
Integer numberOfPages = new Integer((String) mapMessage.get("numberOfPages"));
|
||||
Integer maxNumberPages = new Integer((String) mapMessage.get("maxNumberPages"));
|
||||
message.put("numberOfPages", numberOfPages);
|
||||
message.put("maxNumberPages", maxNumberPages);
|
||||
conversionUpdatesProcessor.process(message);
|
||||
}
|
||||
else if(messageKey.equalsIgnoreCase(GENERATED_SLIDE_KEY)){
|
||||
String numberOfPages = (String) mapMessage.get("numberOfPages");
|
||||
String pagesCompleted = (String) mapMessage.get("pagesCompleted");
|
||||
Integer numberOfPages = new Integer((String)mapMessage.get("numberOfPages"));
|
||||
Integer pagesCompleted = new Integer((String)mapMessage.get("pagesCompleted"));
|
||||
message.put("numberOfPages", numberOfPages);
|
||||
message.put("pagesCompleted", pagesCompleted);
|
||||
|
||||
|
@ -21,7 +21,6 @@
|
||||
*/
|
||||
package org.bigbluebutton.conference.service.whiteboard;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.red5.compatibility.flex.messaging.io.ArrayCollection;
|
||||
|
||||
@ -30,23 +29,22 @@ public class Shape {
|
||||
private String type;
|
||||
private int thickness;
|
||||
private int color;
|
||||
private double parentWidth;
|
||||
private double parentHeight;
|
||||
private String id;
|
||||
private String status;
|
||||
|
||||
private double[] shape;
|
||||
|
||||
public static final String PENCIL = "pencil";
|
||||
public static final String RECTANGLE = "rectangle";
|
||||
public static final String ELLIPSE = "ellipse";
|
||||
|
||||
public Shape(double[] shape, String type, int color, int thickness, double parentWidth, double parentHeight){
|
||||
public Shape(double[] shape, String type, int color, int thickness, String id, String status){
|
||||
this.shape = shape;
|
||||
this.type = type;
|
||||
this.color = color;
|
||||
this.thickness = thickness;
|
||||
this.parentWidth = parentWidth;
|
||||
this.parentHeight = parentHeight;
|
||||
|
||||
if(this.type.equalsIgnoreCase(PENCIL)) this.shape = optimizeFreeHand();
|
||||
this.id = id;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public ArrayCollection<Object> toList(){
|
||||
@ -55,75 +53,22 @@ public class Shape {
|
||||
sendableList.add(type);
|
||||
sendableList.add(color);
|
||||
sendableList.add(thickness);
|
||||
sendableList.add(parentWidth);
|
||||
sendableList.add(parentHeight);
|
||||
sendableList.add(id);
|
||||
sendableList.add(status);
|
||||
return sendableList;
|
||||
}
|
||||
|
||||
public Object[] toObjectArray(){
|
||||
Object[] objects = new Object[6];
|
||||
Object[] objects = new Object[10];
|
||||
objects[0] = shape;
|
||||
objects[1] = type;
|
||||
objects[2] = color;
|
||||
objects[3] = thickness;
|
||||
objects[4] = parentWidth;
|
||||
objects[5] = parentHeight;
|
||||
objects[4] = id;
|
||||
objects[5] = status;
|
||||
return objects;
|
||||
}
|
||||
|
||||
private double[] optimizeFreeHand(){
|
||||
if (shape.length < 10) return shape; //Don't do any optimization for very small shapes
|
||||
|
||||
ArrayList<Double> newShape = new ArrayList<Double>();
|
||||
|
||||
double x1 = shape[0];
|
||||
double y1 = shape[1];
|
||||
newShape.add(x1);
|
||||
newShape.add(y1);
|
||||
double stableSlope = 0;
|
||||
double newSlope;
|
||||
double lastStableX = x1;
|
||||
double lastStableY = y1;
|
||||
boolean lineStable = false;
|
||||
|
||||
for (int i=2; i<shape.length; i= i+2){
|
||||
double x2 = shape[i];
|
||||
double y2 = shape[i+1];
|
||||
|
||||
newSlope = (y2 - y1)/(x2 - x1);
|
||||
if (slopeDifference(stableSlope, newSlope) < 5){
|
||||
lastStableX = x2;
|
||||
lastStableY = y2;
|
||||
lineStable = true;
|
||||
} else{
|
||||
stableSlope = newSlope;
|
||||
if (lineStable){
|
||||
lineStable = false;
|
||||
newShape.add(lastStableX);
|
||||
newShape.add(lastStableY);
|
||||
}
|
||||
x1 = x2;
|
||||
y1 = y2;
|
||||
newShape.add(x1);
|
||||
newShape.add(y1);
|
||||
}
|
||||
}
|
||||
newShape.add(shape[shape.length - 2]);
|
||||
newShape.add(shape[shape.length - 1]);
|
||||
|
||||
double[] returnArray = new double[newShape.size()];
|
||||
for (int j= 0; j<newShape.size(); j++){
|
||||
returnArray[j] = newShape.get(j);
|
||||
}
|
||||
|
||||
return returnArray;
|
||||
}
|
||||
|
||||
private double slopeDifference(double oldSlope, double newSlope){
|
||||
double differenceInRad = Math.atan(oldSlope) - Math.atan(newSlope);
|
||||
return Math.abs(Math.toDegrees(differenceInRad));
|
||||
}
|
||||
|
||||
public String getShape(){
|
||||
String dataToString = "";
|
||||
for (int i=0; i<shape.length - 1; i++){
|
||||
|
@ -86,8 +86,8 @@ public class WhiteboardApplication extends MultiThreadedApplicationAdapter imple
|
||||
return roomManager.getRoom(getLocalScope().getName()).isWhiteboardEnabled();
|
||||
}
|
||||
|
||||
public void sendShape(double[] shape, String type, int color, int thickness, double parentWidth, double parentHeight){
|
||||
Shape newShape = new Shape(shape, type, color, thickness, parentWidth, parentHeight);
|
||||
public void sendShape(double[] shape, String type, int color, int thickness, String id, String status){
|
||||
Shape newShape = new Shape(shape, type, color, thickness, id, status);
|
||||
roomManager.getRoom(getLocalScope().getName()).addShape(newShape);
|
||||
ISharedObject drawSO = getSharedObject(getLocalScope(), WHITEBOARD_SHARED_OBJECT);
|
||||
List<Object> arguments = newShape.toList();
|
||||
|
@ -38,9 +38,9 @@ public class WhiteboardService {
|
||||
this.application = a;
|
||||
}
|
||||
|
||||
public void sendShape(double[] shape, String type, int color, int thickness, double parentWidth, double parentHeight){
|
||||
public void sendShape(double[] shape, String type, int color, int thickness, String id, String status){
|
||||
log.info("WhiteboardApplication - Sending share");
|
||||
application.sendShape(shape, type, color, thickness, parentWidth, parentHeight);
|
||||
application.sendShape(shape, type, color, thickness, id, status);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -359,7 +359,25 @@
|
||||
description="Compiling the BBB without copying config.xml">
|
||||
</target>
|
||||
|
||||
<target name="copy-resource-files">
|
||||
<target name="copy-config-if-needed">
|
||||
<if>
|
||||
<available file="${BASE_DIR}/src/conf/config.xml"/>
|
||||
<else>
|
||||
<copy file="/var/www/bigbluebutton/client/conf/config.xml" todir="${BASE_DIR}/src/conf" />
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="copy-join-mock-if-needed">
|
||||
<if>
|
||||
<available file="${BASE_DIR}/src/conf/join-mock.xml"/>
|
||||
<else>
|
||||
<copy file="${RESOURCES_DIR}/dev/join-mock.xml" todir="${BASE_DIR}/src/conf" />
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="copy-resource-files" >
|
||||
<copy todir="${OUTPUT_DIR}/swfobject/" >
|
||||
<fileset dir="${PROD_RESOURCES_DIR}/swfobject" />
|
||||
</copy>
|
||||
@ -388,14 +406,6 @@
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="check-config-xml">
|
||||
<available file="/var/www/bigbluebutton/client/conf/config.xml" property="config-xml.present"/>
|
||||
</target>
|
||||
|
||||
<target name="copy-config-xml" depends="check-config-xml" if="config-xml.present">
|
||||
<echo message="Updating config.xml from /var/www/bigbluebutton/client/conf/config.xml" />
|
||||
<copy file="/var/www/bigbluebutton/client/conf/config.xml" todir="${OUTPUT_DIR}/conf" />
|
||||
</target>
|
||||
|
||||
<target name="generate-html-wrapper">
|
||||
<html-wrapper
|
||||
|
@ -39,29 +39,6 @@ server {
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
# Handle request to bbb-web running within Tomcat. This is for
|
||||
# the BBB-API and Presentation.
|
||||
location /bigbluebutton {
|
||||
proxy_pass http://127.0.0.1:8080;
|
||||
proxy_redirect default;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
# Allow 30M uploaded presentation document.
|
||||
client_max_body_size 30m;
|
||||
client_body_buffer_size 128k;
|
||||
|
||||
proxy_connect_timeout 90;
|
||||
proxy_send_timeout 90;
|
||||
proxy_read_timeout 90;
|
||||
|
||||
proxy_buffer_size 4k;
|
||||
proxy_buffers 4 32k;
|
||||
proxy_busy_buffers_size 64k;
|
||||
proxy_temp_file_write_size 64k;
|
||||
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
# BigBlueButton landing page.
|
||||
location / {
|
||||
root /var/www/bigbluebutton-default;
|
||||
@ -69,20 +46,6 @@ server {
|
||||
expires 1m;
|
||||
}
|
||||
|
||||
# BigBlueButton.html is here so we can expire it every 1 minute to
|
||||
# prevent caching.
|
||||
location /client/BigBlueButton.html {
|
||||
root /var/www/bigbluebutton;
|
||||
index index.html index.htm;
|
||||
expires 1m;
|
||||
}
|
||||
|
||||
# BigBlueButton Flash client.
|
||||
location /client {
|
||||
root /var/www/bigbluebutton;
|
||||
index index.html index.htm;
|
||||
}
|
||||
|
||||
# Include specific rules for record and playback
|
||||
include /etc/bigbluebutton/nginx/*.nginx;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = الإتصال بالمخدم
|
||||
bbb.mainshell.statusProgress.loading = تحميل {0} وحدات
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = للأسف ، لا يمكن الإتصال بالمخدم حالياً
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - لمزيد من المعلومات يمكنك زيارة الرابط التالي http://www.bigbluebutton.org/.\n<br /> تم التعريب من قبل محمد أشرم
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - لمزيد من المعلومات يمكنك زيارة الرابط التالي http://www.bigbluebutton.org/.\n<br /> تم التعريب من قبل محمد أشرم
|
||||
bbb.mainshell.logBtn.toolTip = فتح نافذة الدخول
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Reset Layout
|
||||
bbb.oldlocalewindow.reminder1 = قد تكون ملفات الترجمة لـ BigBlueButton قديمة
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = إضغط لرفع اليد.
|
||||
bbb.viewers.presentBtn.label = Switch Presenter
|
||||
bbb.viewers.kickUserBtn.toolTip = Kick User
|
||||
bbb.presentation.title = Presentation
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Upload a document for presentation.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Upload a document for presentation.
|
||||
bbb.presentation.backBtn.toolTip = الشريحة السابقة
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Xahis edirik gozləyin {0} modul yuklənir:
|
||||
bbb.mainshell.statusProgress.loading = {0}(yuklənib)
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Xahis edirik biz serverin test muddəti ərzində gozləyəsiz.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Loq pəncərəsini aç
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Pəncərəni yenilə
|
||||
bbb.oldlocalewindow.reminder1 = Ola bilər ki sizdə video konfransın köhnə versiyası var.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Göstəricini tıklayın.
|
||||
bbb.viewers.presentBtn.label = Prezentatoru dəyiş
|
||||
bbb.viewers.kickUserBtn.toolTip = İstifadəçini çıxart.
|
||||
bbb.presentation.title = Prezentasiya
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Prezentasiya üçün sənədi yükləyin.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Prezentasiya üçün sənədi yükləyin.
|
||||
bbb.presentation.backBtn.toolTip = Əvvəlki slayd.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Свързване със сървърът
|
||||
bbb.mainshell.statusProgress.loading = Зареждане на {0} модул/а
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Съжалявам, не мога да се свържа със сървърът.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - За повече информация вижте http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - За повече информация вижте http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Отвори Дневник Прозорецът
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Презареди Изгледа
|
||||
bbb.oldlocalewindow.reminder1 = Вие може да имате стар превод на BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Натисни за да вдигнеш ръ
|
||||
bbb.viewers.presentBtn.label = Смени Презентаторът
|
||||
bbb.viewers.kickUserBtn.toolTip = Изхвърли потребител
|
||||
bbb.presentation.title = Презентация
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Зареди документ за презентация.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Зареди документ за презентация.
|
||||
bbb.presentation.backBtn.toolTip = Предишна страница.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = সার্ভারের সাথে সংযোগ করা হচ্চ্ছ
|
||||
bbb.mainshell.statusProgress.loading = {0} মডিউলগুলো লোড করা হচ্চ্ছে
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = দুঃখিত, সার্ভারের সাথে সংযোগ করা সম্ভব হচ্চ্ছে না।
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - আরও বেশি তথ্যের জন্য দেখুন http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - আরও বেশি তথ্যের জন্য দেখুন http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = লগ উইন্ডোটি খুলুন
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = লেআউট রিসেট করুন
|
||||
bbb.oldlocalewindow.reminder1 = আপনার BigBlueButton-এর একটি পুরনো ভাষা অনুবাদ থাকতে পারে।
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = হাত উত্তোলন করতে
|
||||
bbb.viewers.presentBtn.label = উপস্হাপক পরিবর্তন
|
||||
bbb.viewers.kickUserBtn.toolTip = ব্যবহারকারীকে বহিষ্কার করুন
|
||||
bbb.presentation.title = উপস্হাপন
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = উপস্হাপনের জন্য একটি ডকুমেন্ট আপলোড করুন।
|
||||
bbb.presentation.uploadPresBtn.toolTip = উপস্হাপনের জন্য একটি ডকুমেন্ট আপলোড করুন।
|
||||
bbb.presentation.backBtn.toolTip = পূর্ববর্তী স্লাইড।
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Připojuji se k serveru
|
||||
bbb.mainshell.statusProgress.loading = Nahrávám {0} modulů
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Omlouváme se, k serveru se nelze připojit.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - Více informací na jdete na stránkách http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - Více informací na jdete na stránkách http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Otevřít okno logu
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Původní nastavení vzhledu
|
||||
bbb.oldlocalewindow.reminder1 = Máte starý jazykový překlad BigBlueButtonu.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klikněte pro zvednutí ruky.
|
||||
bbb.viewers.presentBtn.label = Přepnout prezentujícího
|
||||
bbb.viewers.kickUserBtn.toolTip = Kliknutím odpojíte uživatele.
|
||||
bbb.presentation.title = Prezentace
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Nahrát dokument pro prezentaci.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Nahrát dokument pro prezentaci.
|
||||
bbb.presentation.backBtn.toolTip = Předchozí snímek.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Tilslutter til serveren
|
||||
bbb.mainshell.statusProgress.loading = Henter {0} moduler
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Vi kan desværre ikke oprette forbindelse til serveren.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - For flere informationer, gå til http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - For flere informationer, gå til http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Åbn log-vinduet
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Nulstil layout
|
||||
bbb.oldlocalewindow.reminder1 = Du har måske en gammel oversættelser af BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klik for at hæve hånden.
|
||||
bbb.viewers.presentBtn.label = Skift præsentator
|
||||
bbb.viewers.kickUserBtn.toolTip = Spark bruger ud
|
||||
bbb.presentation.title = Præsentation
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Upload et dokument til præsentation.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Upload et dokument til præsentation.
|
||||
bbb.presentation.backBtn.toolTip = Forrige slide.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Baue Verbindung zum Server auf
|
||||
bbb.mainshell.statusProgress.loading = Lade {0} Module
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Verbindung zum Server konnte nicht hergestellt werden.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton Version {0} - Weitere Informationen unter http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton Version {0} - Weitere Informationen unter http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Protokoll Fenster öffnen
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Anordnung wiederherstellen
|
||||
bbb.oldlocalewindow.reminder1 = Die installierte Sprachversion ist möglicherweise veraltet.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klicken um die Hand zu heben.
|
||||
bbb.viewers.presentBtn.label = Presentator wechseln
|
||||
bbb.viewers.kickUserBtn.toolTip = Benutzer ausschließen
|
||||
bbb.presentation.title = Präsentation
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Ein Dokument zur Präsentation hinzufügen.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Ein Dokument zur Präsentation hinzufügen.
|
||||
bbb.presentation.backBtn.toolTip = Vorherige Folie
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Σύνδεση στον διακομιστή
|
||||
bbb.mainshell.statusProgress.loading = Φόρτωση {0} αρθρωμάτων
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Λυπούμαστε, αλλά δεν μπορούμε να συνδεθούμε στο διακομιστή
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - Γιά περισσότερες πληροφορίες συνδεθείτε εδώ: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - Γιά περισσότερες πληροφορίες συνδεθείτε εδώ: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Άνοιξε Παράθυρο Σύνδεσης
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Επαναφορά διάταξης
|
||||
bbb.oldlocalewindow.reminder1 = Μπορεί να έχετε παλαιότερη μετάφραση του BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Πατήστε για να σηκώσετε
|
||||
bbb.viewers.presentBtn.label = Αλλαγή εισηγητή
|
||||
bbb.viewers.kickUserBtn.toolTip = Αποπομπή χρήστη
|
||||
bbb.presentation.title = Παρουσίαση
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Μεταφορτώστε ένα έγγραφο για παρουσίαση
|
||||
bbb.presentation.uploadPresBtn.toolTip = Μεταφορτώστε ένα έγγραφο για παρουσίαση
|
||||
bbb.presentation.backBtn.toolTip = Προηγούμενη διαφάνεια
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Connecting to the server
|
||||
bbb.mainshell.statusProgress.loading = Loading {0} modules
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Sorry, we cannot connect to the server.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Open Log Window
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Reset Layout
|
||||
bbb.oldlocalewindow.reminder1 = You may have an old language translations of BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Click to raise hand.
|
||||
bbb.viewers.presentBtn.label = Switch Presenter
|
||||
bbb.viewers.kickUserBtn.toolTip = Kick User
|
||||
bbb.presentation.title = Presentation
|
||||
bbb.presentation.fitToWidth.toolTip = Fit to width
|
||||
bbb.presentation.fitToPage.toolTip = Fit to page
|
||||
bbb.presentation.uploadPresBtn = Upload a document for presentation.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Upload a document for presentation.
|
||||
bbb.presentation.backBtn.toolTip = Previous slide.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Conectando con el servidor
|
||||
bbb.mainshell.statusProgress.loading = Cargando {0} módulos
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Lo sentimos, no pudimos conectar con el servidor.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton versión {0} - Para más información diríjase a: http://www.bigbluebutton.org/
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton versión {0} - Para más información diríjase a: http://www.bigbluebutton.org/
|
||||
bbb.mainshell.logBtn.toolTip = Abrir ventana de histórico
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Reiniciar posición de ventanas
|
||||
bbb.oldlocalewindow.reminder1 = Puede que tenga una traducción obsoleta de BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Pulse para levantar la mano.
|
||||
bbb.viewers.presentBtn.label = Cambiar Presentador
|
||||
bbb.viewers.kickUserBtn.toolTip = Expulsar usuario
|
||||
bbb.presentation.title = Presentación
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Cargar documento para presentar.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Cargar documento para presentar.
|
||||
bbb.presentation.backBtn.toolTip = Diapositiva anterior.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Conectando al servidor
|
||||
bbb.mainshell.statusProgress.loading = Cargando {0} módulos
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Lo sentimos, no se puede conectar al servidor.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton versión {0} - Para mas información vea http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton versión {0} - Para mas información vea http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Abrir la ventana de Registro (Log)
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Restaurar el diseño
|
||||
bbb.oldlocalewindow.reminder1 = Usted tiene una traducción antigua de lenguaje para Bigbluebutton
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Click para pedir la palabra.
|
||||
bbb.viewers.presentBtn.label = Cambiar Expositor
|
||||
bbb.viewers.kickUserBtn.toolTip = Expulsar Usuario
|
||||
bbb.presentation.title = Presentación
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Subir un documento para su presentación.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Subir un documento para su presentación.
|
||||
bbb.presentation.backBtn.toolTip = Diapositiva anterior.
|
||||
|
171
bigbluebutton-client/locale/et_EE/bbbResources.properties
Normal file
171
bigbluebutton-client/locale/et_EE/bbbResources.properties
Normal file
@ -0,0 +1,171 @@
|
||||
bbb.pageTitle =
|
||||
bbb.mainshell.locale.version =
|
||||
bbb.mainshell.statusProgress.connecting =
|
||||
bbb.mainshell.statusProgress.loading =
|
||||
bbb.mainshell.statusProgress.cannotConnectServer =
|
||||
bbb.mainshell.copyrightLabel2 =
|
||||
bbb.mainshell.logBtn.toolTip =
|
||||
bbb.mainshell.resetLayoutBtn.toolTip =
|
||||
bbb.oldlocalewindow.reminder1 =
|
||||
bbb.oldlocalewindow.reminder2 =
|
||||
bbb.oldlocalewindow.windowTitle =
|
||||
bbb.micSettings.playSound =
|
||||
bbb.micSettings.hearFromHeadset =
|
||||
bbb.micSettings.speakIntoMic =
|
||||
bbb.micSettings.changeMic =
|
||||
bbb.micSettings.join =
|
||||
bbb.micSettings.cancel =
|
||||
bbb.mainToolbar.helpBtn =
|
||||
bbb.mainToolbar.logoutBtn =
|
||||
bbb.mainToolbar.logoutBtn.toolTip =
|
||||
bbb.mainToolbar.settingsBtn =
|
||||
bbb.mainToolbar.settingsBtn.toolTip =
|
||||
bbb.viewers.title =
|
||||
bbb.viewers.viewersGrid.nameItemRenderer =
|
||||
bbb.viewers.viewersGrid.nameItemRenderer.nameLabel.toolTip =
|
||||
bbb.viewers.viewersGrid.roleItemRenderer =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.raiseHand.toolTip =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.streamIcon.toolTip =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.presIcon.toolTip =
|
||||
bbb.viewers.presentBtn.toolTip =
|
||||
bbb.viewers.raiseHandBtn.toolTip =
|
||||
bbb.viewers.presentBtn.label =
|
||||
bbb.viewers.kickUserBtn.toolTip =
|
||||
bbb.presentation.title =
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn =
|
||||
bbb.presentation.uploadPresBtn.toolTip =
|
||||
bbb.presentation.backBtn.toolTip =
|
||||
bbb.presentation.slideNumLbl.toolTip =
|
||||
bbb.presentation.forwardBtn.toolTip =
|
||||
bbb.presentation.resetZoomBtn.toolTip =
|
||||
bbb.presentation.presenterNameLbl =
|
||||
bbb.presentation.clickToUpload =
|
||||
bbb.presentation.maxUploadFileExceededAlert =
|
||||
bbb.presentation.uploadcomplete =
|
||||
bbb.presentation.uploaded =
|
||||
bbb.presentation.document.supported =
|
||||
bbb.presentation.document.converted =
|
||||
bbb.presentation.error.document.convert.failed =
|
||||
bbb.presentation.error.io =
|
||||
bbb.presentation.error.security =
|
||||
bbb.presentation.error.convert.format =
|
||||
bbb.presentation.error.convert.notsupported =
|
||||
bbb.presentation.error.convert.nbpage =
|
||||
bbb.presentation.error.convert.maxnbpagereach =
|
||||
bbb.presentation.error.convert.swf =
|
||||
bbb.presentation.converted =
|
||||
bbb.presentation.ok =
|
||||
bbb.presentation.uploadwindow.presentationfile =
|
||||
bbb.presentation.uploadwindow.pdf =
|
||||
bbb.presentation.uploadwindow.word =
|
||||
bbb.presentation.uploadwindow.excel =
|
||||
bbb.presentation.uploadwindow.powerpoint =
|
||||
bbb.presentation.uploadwindow.image =
|
||||
bbb.presentation.uploadwindow.closeLabel =
|
||||
bbb.fileupload.title =
|
||||
bbb.fileupload.fileLbl =
|
||||
bbb.fileupload.selectBtn.toolTip =
|
||||
bbb.fileupload.uploadBtn =
|
||||
bbb.fileupload.uploadBtn.toolTip =
|
||||
bbb.fileupload.presentationNamesLbl =
|
||||
bbb.fileupload.deleteBtn.toolTip =
|
||||
bbb.fileupload.showBtn =
|
||||
bbb.fileupload.showBtn.toolTip =
|
||||
bbb.fileupload.okCancelBtn =
|
||||
bbb.fileupload.genThumbText =
|
||||
bbb.fileupload.progBarLbl =
|
||||
bbb.chat.title =
|
||||
bbb.chat.cmpColorPicker.toolTip =
|
||||
bbb.chat.sendBtn =
|
||||
bbb.chat.sendBtn.toolTip =
|
||||
bbb.chat.publicChatUsername =
|
||||
bbb.chat.publicMsgAwaiting =
|
||||
bbb.chat.publicMsgAwaiting2 =
|
||||
bbb.chat.privateMsgAwaiting =
|
||||
bbb.chat.privateMsgAwaiting2 =
|
||||
bbb.chat.privateChatSelect =
|
||||
bbb.chat.chatOptions =
|
||||
bbb.chat.fontSize =
|
||||
bbb.listeners.title =
|
||||
bbb.listeners.pushToTalk.toolTip =
|
||||
bbb.listeners.pushToMute.toolTip =
|
||||
bbb.listeners.talk =
|
||||
bbb.listeners.mute =
|
||||
bbb.listeners.muteAllBtn.toolTip =
|
||||
bbb.listeners.unmuteAllBtn.toolTip =
|
||||
bbb.listeners.ejectTooltip =
|
||||
bbb.listenerItem.nameLbl.toolTip =
|
||||
bbb.listenerItem.talkImg.toolTip =
|
||||
bbb.listenerItem.lockImg.toolTip =
|
||||
bbb.listenerItem.muteUnmute.toolTip =
|
||||
bbb.publishVideo.title =
|
||||
bbb.publishVideo.startPublishBtn.toolTip =
|
||||
bbb.video.publish.close.tooltip =
|
||||
bbb.video.publish.close.label =
|
||||
bbb.video.keepAspectBtn.tooltip =
|
||||
bbb.video.fitVideoBtn.tooltip =
|
||||
bbb.video.originalSizeBtn.tooltip =
|
||||
bbb.video.publish.hint.noCamera =
|
||||
bbb.video.publish.hint.cantOpenCamera =
|
||||
bbb.video.publish.hint.waitingApproval =
|
||||
bbb.video.publish.hint.videoPreview =
|
||||
bbb.video.publish.hint.openingCamera =
|
||||
bbb.video.publish.hint.cameraDenied =
|
||||
bbb.video.publish.hint.cameraIsBeingUsed =
|
||||
bbb.video.publish.hint.publishing =
|
||||
bbb.desktopPublish.title =
|
||||
bbb.desktopPublish.fullscreen.tooltip =
|
||||
bbb.desktopPublish.fullscreen.label =
|
||||
bbb.desktopPublish.region.tooltip =
|
||||
bbb.desktopPublish.region.label =
|
||||
bbb.desktopPublish.stop.tooltip =
|
||||
bbb.desktopPublish.stop.label =
|
||||
bbb.desktopPublish.maximizeRestoreBtn.toolTip =
|
||||
bbb.desktopPublish.closeBtn.toolTip =
|
||||
bbb.desktopPublish.minimizeBtn.toolTip =
|
||||
bbb.desktopView.title =
|
||||
bbb.desktopView.fitToWindow =
|
||||
bbb.desktopView.actualSize =
|
||||
bbb.toolbar.phone.toolTip =
|
||||
bbb.toolbar.deskshare.toolTip =
|
||||
bbb.toolbar.video.toolTip =
|
||||
bbb.highlighter.toolbar.pencil =
|
||||
bbb.highlighter.toolbar.ellipse =
|
||||
bbb.highlighter.toolbar.rectangle =
|
||||
bbb.highlighter.toolbar.clear =
|
||||
bbb.highlighter.toolbar.undo =
|
||||
bbb.highlighter.toolbar.color =
|
||||
bbb.highlighter.toolbar.thickness =
|
||||
bbb.highlighter.button.toolTipShow =
|
||||
bbb.highlighter.button.toolTipHide =
|
||||
bbb.logout.appshutdown =
|
||||
bbb.logout.asyncerror =
|
||||
bbb.logout.connectionclosed =
|
||||
bbb.logout.connectionfailed =
|
||||
bbb.logout.rejected =
|
||||
bbb.logout.invalidapp =
|
||||
bbb.logout.unknown =
|
||||
bbb.logout.usercommand =
|
||||
bbb.settings.deskshare.instructions =
|
||||
bbb.settings.deskshare.start =
|
||||
bbb.settings.voice.volume =
|
||||
bbb.settings.voice.adjust =
|
||||
bbb.settings.java.label =
|
||||
bbb.settings.java.text =
|
||||
bbb.settings.java.command =
|
||||
bbb.settings.flash.label =
|
||||
bbb.settings.flash.text =
|
||||
bbb.settings.flash.command =
|
||||
bbb.settings.isight.label =
|
||||
bbb.settings.isight.text =
|
||||
bbb.settings.isight.command =
|
||||
bbb.settings.warning.label =
|
||||
bbb.settings.warning.close =
|
||||
bbb.settings.noissues =
|
||||
bbb.settings.instructions =
|
||||
bbb.videodock.title =
|
||||
bbb.zzzzz.yyyy =
|
||||
=
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Zerbitzariarekin konektatzen
|
||||
bbb.mainshell.statusProgress.loading = {0} modulu kargatzen
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Barkatu, ezin dugu zerbitzariarekin konektatu
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - Informazio gehiagorako, begiratu http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - Informazio gehiagorako, begiratu http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Zabaldu agerraldien leihoa
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Berrabiarazi diseinua
|
||||
bbb.oldlocalewindow.reminder1 = Agian BigBlueButton-en hizkuntza-itzulpen zaharra izango duzu
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Sakatu eskua altxatzeko.
|
||||
bbb.viewers.presentBtn.label = Aldatu aurkezlea
|
||||
bbb.viewers.kickUserBtn.toolTip = Kanporatu erabiltzailea
|
||||
bbb.presentation.title = Aurkezpena
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Igo dokumentu bat aurkezteko
|
||||
bbb.presentation.uploadPresBtn.toolTip = Igo dokumentu bat aurkezteko
|
||||
bbb.presentation.backBtn.toolTip = Aurreko diapositiba
|
||||
@ -88,10 +90,10 @@ bbb.chat.privateChatSelect = Aukeratu lagun bat harekin txatean pribatuan aritze
|
||||
bbb.chat.chatOptions = Txataren aukerak
|
||||
bbb.chat.fontSize = Letra-tamaina
|
||||
bbb.listeners.title = Entzuleak {0} {1}
|
||||
bbb.listeners.pushToTalk.toolTip =
|
||||
bbb.listeners.pushToTalk.toolTip = Klik egin hitz egiteko
|
||||
bbb.listeners.pushToMute.toolTip =
|
||||
bbb.listeners.talk =
|
||||
bbb.listeners.mute =
|
||||
bbb.listeners.talk = Hitz egin
|
||||
bbb.listeners.mute = Mutua
|
||||
bbb.listeners.muteAllBtn.toolTip = Mututu guztiak
|
||||
bbb.listeners.unmuteAllBtn.toolTip = Hitza eman guztiei
|
||||
bbb.listeners.ejectTooltip = Kanporatu erabiltzailea
|
||||
@ -106,14 +108,14 @@ bbb.video.publish.close.label = Itxi
|
||||
bbb.video.keepAspectBtn.tooltip = Eutsi leihoaren itxurari
|
||||
bbb.video.fitVideoBtn.tooltip = Bideo moldean\nDoitu bideoa
|
||||
bbb.video.originalSizeBtn.tooltip = Jatorrizko tamaina
|
||||
bbb.video.publish.hint.noCamera =
|
||||
bbb.video.publish.hint.cantOpenCamera =
|
||||
bbb.video.publish.hint.waitingApproval =
|
||||
bbb.video.publish.hint.noCamera = Kamara ez dago eskuragarri
|
||||
bbb.video.publish.hint.cantOpenCamera = Ezin da zure kamara zabaldu
|
||||
bbb.video.publish.hint.waitingApproval = Onartzeko zain
|
||||
bbb.video.publish.hint.videoPreview =
|
||||
bbb.video.publish.hint.openingCamera =
|
||||
bbb.video.publish.hint.cameraDenied =
|
||||
bbb.video.publish.hint.openingCamera = Kamara zabaltzen...
|
||||
bbb.video.publish.hint.cameraDenied = Kamararako sarbidea ukatuta
|
||||
bbb.video.publish.hint.cameraIsBeingUsed =
|
||||
bbb.video.publish.hint.publishing =
|
||||
bbb.video.publish.hint.publishing = Argitaratzen...
|
||||
bbb.desktopPublish.title = Mahaigaina partekatzen: aurkezlearen aurrebista
|
||||
bbb.desktopPublish.fullscreen.tooltip = Partekatu zure pantaila osoa
|
||||
bbb.desktopPublish.fullscreen.label = Pantaila osoa
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = بیگ بُلو باتِن
|
||||
bbb.mainshell.locale.version = 0.8 - بتا2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = در حال اتصال به سرور
|
||||
bbb.mainshell.statusProgress.loading = در حال بارگزاری {0} ماژول
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = متاسفانه، امکان اتصال به سرور وجود ندارد.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = مشاهده ی پنجره ی ثبت وقایع
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = بازگشت به طرح بندی پیش فرض
|
||||
bbb.oldlocalewindow.reminder1 = ممکن است ترجمه ی مربوط به زبان بیگ بلو باتن شما قدیمی باشد.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = جهت اجازه گرفتن کلیک کنی
|
||||
bbb.viewers.presentBtn.label = تغییر شخص ارائه دهنده
|
||||
bbb.viewers.kickUserBtn.toolTip = اخراج کاربر
|
||||
bbb.presentation.title = ارائه
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = بارگزاري یک سند جهت ارائه.
|
||||
bbb.presentation.uploadPresBtn.toolTip = بارگزاري یک سند جهت ارائه.
|
||||
bbb.presentation.backBtn.toolTip = اسلاید قبلی.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Yhdistetään palvelimeen
|
||||
bbb.mainshell.statusProgress.loading = Ladataan {0} moduuleita
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Anteeksi, emme voi yhdistää palvelimeen.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - Lisätietoja: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - Lisätietoja: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Avaa loki-ikkuna
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Resetoi asettelu
|
||||
bbb.oldlocalewindow.reminder1 = Sinulla voi olla vanha kielikäännös BigBlueButtonista.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klikkaa nostaaksesi kättä.
|
||||
bbb.viewers.presentBtn.label = Vaihda esittelijää.
|
||||
bbb.viewers.kickUserBtn.toolTip = Potkaise käyttäjä
|
||||
bbb.presentation.title = Esitys
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Lähetä dokumentti esitykseen.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Lähetä dokumentti esitykseen.
|
||||
bbb.presentation.backBtn.toolTip = Edellinen sivu.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = Big Blue Button
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting =
|
||||
bbb.mainshell.statusProgress.loading = Chargement:
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Désolé, impossible d'établir une connexion au serveur.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2009, BigBlueButton version {0} - Pour plus d'information, visitez http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton version {0} - Pour plus d'information, visitez http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Ouvrir la fenêtre de log
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Disposition par défaut
|
||||
bbb.oldlocalewindow.reminder1 = You may have an old language translations of BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Cliquez-ici pour lever la main et demander la
|
||||
bbb.viewers.presentBtn.label = Changer de présentateur
|
||||
bbb.viewers.kickUserBtn.toolTip = Cliquer pour éjecter ce participant.
|
||||
bbb.presentation.title = Présentation
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Envoyez un document à présenter
|
||||
bbb.presentation.uploadPresBtn.toolTip = Envoyez un document à présenter
|
||||
bbb.presentation.backBtn.toolTip = Slide précédent.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Connexion au serveur
|
||||
bbb.mainshell.statusProgress.loading = Chargement de {0} modules
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Désolé, impossible de se connecter au serveur
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton version {0} - Pour plus d'information, visitez http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton version {0} - Pour plus d'information, visitez http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Ouvrir la fenêtre de log
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Disposition par défaut
|
||||
bbb.oldlocalewindow.reminder1 = La traduction française de BigBlueButton utilisée est probablement trop ancienne.
|
||||
@ -23,16 +23,18 @@ bbb.mainToolbar.settingsBtn.toolTip = Ouvrir les paramètres
|
||||
bbb.viewers.title = Utilisateurs {0} {1}
|
||||
bbb.viewers.viewersGrid.nameItemRenderer = Nom
|
||||
bbb.viewers.viewersGrid.nameItemRenderer.nameLabel.toolTip = Vous êtes identifié(e) avec ce nom.
|
||||
bbb.viewers.viewersGrid.roleItemRenderer = Accès
|
||||
bbb.viewers.viewersGrid.roleItemRenderer = Rôle
|
||||
bbb.viewers.viewersGrid.statusItemRenderer = Statut
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.raiseHand.toolTip = Main levé pour {0}
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.streamIcon.toolTip = Double-cliquez pour voir sa Webcam.
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.streamIcon.toolTip = Cliquez pour voir la caméra.
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.presIcon.toolTip = Présentateur
|
||||
bbb.viewers.presentBtn.toolTip = Sélectionnez un participant et cliquez ici pour qu'il devienne présentateur.
|
||||
bbb.viewers.raiseHandBtn.toolTip = Cliquez ici pour lever la main et demander la parole.
|
||||
bbb.viewers.presentBtn.label = Nouveau présentateur
|
||||
bbb.viewers.kickUserBtn.toolTip = Expulser l'utilisateur
|
||||
bbb.presentation.title = Présentation
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Envoyer un document à présenter
|
||||
bbb.presentation.uploadPresBtn.toolTip = Envoyer un document à présenter
|
||||
bbb.presentation.backBtn.toolTip = Page précédente
|
||||
|
171
bigbluebutton-client/locale/he_IL/bbbResources.properties
Normal file
171
bigbluebutton-client/locale/he_IL/bbbResources.properties
Normal file
@ -0,0 +1,171 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = מתחבר לשרת
|
||||
bbb.mainshell.statusProgress.loading = טוען {0} מודולים
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = לצערנו לא הצלחנו להתחבר לשרת
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - למידע נוסף: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = פתח חלון רשם\n
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = אפס תבנית
|
||||
bbb.oldlocalewindow.reminder1 =
|
||||
bbb.oldlocalewindow.reminder2 =
|
||||
bbb.oldlocalewindow.windowTitle =
|
||||
bbb.micSettings.playSound =
|
||||
bbb.micSettings.hearFromHeadset =
|
||||
bbb.micSettings.speakIntoMic =
|
||||
bbb.micSettings.changeMic =
|
||||
bbb.micSettings.join =
|
||||
bbb.micSettings.cancel =
|
||||
bbb.mainToolbar.helpBtn =
|
||||
bbb.mainToolbar.logoutBtn =
|
||||
bbb.mainToolbar.logoutBtn.toolTip =
|
||||
bbb.mainToolbar.settingsBtn =
|
||||
bbb.mainToolbar.settingsBtn.toolTip =
|
||||
bbb.viewers.title =
|
||||
bbb.viewers.viewersGrid.nameItemRenderer =
|
||||
bbb.viewers.viewersGrid.nameItemRenderer.nameLabel.toolTip =
|
||||
bbb.viewers.viewersGrid.roleItemRenderer =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.raiseHand.toolTip =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.streamIcon.toolTip =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.presIcon.toolTip =
|
||||
bbb.viewers.presentBtn.toolTip =
|
||||
bbb.viewers.raiseHandBtn.toolTip =
|
||||
bbb.viewers.presentBtn.label =
|
||||
bbb.viewers.kickUserBtn.toolTip =
|
||||
bbb.presentation.title =
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn =
|
||||
bbb.presentation.uploadPresBtn.toolTip =
|
||||
bbb.presentation.backBtn.toolTip =
|
||||
bbb.presentation.slideNumLbl.toolTip =
|
||||
bbb.presentation.forwardBtn.toolTip =
|
||||
bbb.presentation.resetZoomBtn.toolTip =
|
||||
bbb.presentation.presenterNameLbl =
|
||||
bbb.presentation.clickToUpload =
|
||||
bbb.presentation.maxUploadFileExceededAlert =
|
||||
bbb.presentation.uploadcomplete =
|
||||
bbb.presentation.uploaded =
|
||||
bbb.presentation.document.supported =
|
||||
bbb.presentation.document.converted =
|
||||
bbb.presentation.error.document.convert.failed =
|
||||
bbb.presentation.error.io =
|
||||
bbb.presentation.error.security =
|
||||
bbb.presentation.error.convert.format =
|
||||
bbb.presentation.error.convert.notsupported =
|
||||
bbb.presentation.error.convert.nbpage =
|
||||
bbb.presentation.error.convert.maxnbpagereach =
|
||||
bbb.presentation.error.convert.swf =
|
||||
bbb.presentation.converted =
|
||||
bbb.presentation.ok =
|
||||
bbb.presentation.uploadwindow.presentationfile =
|
||||
bbb.presentation.uploadwindow.pdf =
|
||||
bbb.presentation.uploadwindow.word =
|
||||
bbb.presentation.uploadwindow.excel =
|
||||
bbb.presentation.uploadwindow.powerpoint =
|
||||
bbb.presentation.uploadwindow.image =
|
||||
bbb.presentation.uploadwindow.closeLabel =
|
||||
bbb.fileupload.title =
|
||||
bbb.fileupload.fileLbl =
|
||||
bbb.fileupload.selectBtn.toolTip =
|
||||
bbb.fileupload.uploadBtn =
|
||||
bbb.fileupload.uploadBtn.toolTip =
|
||||
bbb.fileupload.presentationNamesLbl =
|
||||
bbb.fileupload.deleteBtn.toolTip =
|
||||
bbb.fileupload.showBtn =
|
||||
bbb.fileupload.showBtn.toolTip =
|
||||
bbb.fileupload.okCancelBtn =
|
||||
bbb.fileupload.genThumbText =
|
||||
bbb.fileupload.progBarLbl =
|
||||
bbb.chat.title =
|
||||
bbb.chat.cmpColorPicker.toolTip =
|
||||
bbb.chat.sendBtn =
|
||||
bbb.chat.sendBtn.toolTip =
|
||||
bbb.chat.publicChatUsername =
|
||||
bbb.chat.publicMsgAwaiting =
|
||||
bbb.chat.publicMsgAwaiting2 =
|
||||
bbb.chat.privateMsgAwaiting =
|
||||
bbb.chat.privateMsgAwaiting2 =
|
||||
bbb.chat.privateChatSelect =
|
||||
bbb.chat.chatOptions =
|
||||
bbb.chat.fontSize =
|
||||
bbb.listeners.title =
|
||||
bbb.listeners.pushToTalk.toolTip =
|
||||
bbb.listeners.pushToMute.toolTip =
|
||||
bbb.listeners.talk =
|
||||
bbb.listeners.mute =
|
||||
bbb.listeners.muteAllBtn.toolTip =
|
||||
bbb.listeners.unmuteAllBtn.toolTip =
|
||||
bbb.listeners.ejectTooltip =
|
||||
bbb.listenerItem.nameLbl.toolTip =
|
||||
bbb.listenerItem.talkImg.toolTip =
|
||||
bbb.listenerItem.lockImg.toolTip =
|
||||
bbb.listenerItem.muteUnmute.toolTip =
|
||||
bbb.publishVideo.title =
|
||||
bbb.publishVideo.startPublishBtn.toolTip =
|
||||
bbb.video.publish.close.tooltip =
|
||||
bbb.video.publish.close.label =
|
||||
bbb.video.keepAspectBtn.tooltip =
|
||||
bbb.video.fitVideoBtn.tooltip =
|
||||
bbb.video.originalSizeBtn.tooltip =
|
||||
bbb.video.publish.hint.noCamera =
|
||||
bbb.video.publish.hint.cantOpenCamera =
|
||||
bbb.video.publish.hint.waitingApproval =
|
||||
bbb.video.publish.hint.videoPreview =
|
||||
bbb.video.publish.hint.openingCamera =
|
||||
bbb.video.publish.hint.cameraDenied =
|
||||
bbb.video.publish.hint.cameraIsBeingUsed =
|
||||
bbb.video.publish.hint.publishing =
|
||||
bbb.desktopPublish.title =
|
||||
bbb.desktopPublish.fullscreen.tooltip =
|
||||
bbb.desktopPublish.fullscreen.label =
|
||||
bbb.desktopPublish.region.tooltip =
|
||||
bbb.desktopPublish.region.label =
|
||||
bbb.desktopPublish.stop.tooltip =
|
||||
bbb.desktopPublish.stop.label =
|
||||
bbb.desktopPublish.maximizeRestoreBtn.toolTip =
|
||||
bbb.desktopPublish.closeBtn.toolTip =
|
||||
bbb.desktopPublish.minimizeBtn.toolTip =
|
||||
bbb.desktopView.title =
|
||||
bbb.desktopView.fitToWindow =
|
||||
bbb.desktopView.actualSize =
|
||||
bbb.toolbar.phone.toolTip =
|
||||
bbb.toolbar.deskshare.toolTip =
|
||||
bbb.toolbar.video.toolTip =
|
||||
bbb.highlighter.toolbar.pencil =
|
||||
bbb.highlighter.toolbar.ellipse =
|
||||
bbb.highlighter.toolbar.rectangle =
|
||||
bbb.highlighter.toolbar.clear =
|
||||
bbb.highlighter.toolbar.undo =
|
||||
bbb.highlighter.toolbar.color =
|
||||
bbb.highlighter.toolbar.thickness =
|
||||
bbb.highlighter.button.toolTipShow =
|
||||
bbb.highlighter.button.toolTipHide =
|
||||
bbb.logout.appshutdown =
|
||||
bbb.logout.asyncerror =
|
||||
bbb.logout.connectionclosed =
|
||||
bbb.logout.connectionfailed =
|
||||
bbb.logout.rejected =
|
||||
bbb.logout.invalidapp =
|
||||
bbb.logout.unknown =
|
||||
bbb.logout.usercommand =
|
||||
bbb.settings.deskshare.instructions =
|
||||
bbb.settings.deskshare.start =
|
||||
bbb.settings.voice.volume =
|
||||
bbb.settings.voice.adjust =
|
||||
bbb.settings.java.label =
|
||||
bbb.settings.java.text =
|
||||
bbb.settings.java.command =
|
||||
bbb.settings.flash.label =
|
||||
bbb.settings.flash.text =
|
||||
bbb.settings.flash.command =
|
||||
bbb.settings.isight.label =
|
||||
bbb.settings.isight.text =
|
||||
bbb.settings.isight.command =
|
||||
bbb.settings.warning.label =
|
||||
bbb.settings.warning.close =
|
||||
bbb.settings.noissues =
|
||||
bbb.settings.instructions =
|
||||
bbb.videodock.title =
|
||||
bbb.zzzzz.yyyy =
|
||||
=
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Povezuje se sa serverom
|
||||
bbb.mainshell.statusProgress.loading = Podiže {0} modula
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Nažalost nije moguće uspostaviti vezu sa serverom.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, CallPal by BigBlueButton - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, CallPal by BigBlueButton - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Otvori log prozor
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Resetuj izgled
|
||||
bbb.oldlocalewindow.reminder1 = Moguce imate staru verziju prevoda.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klikni da dignete ruku.
|
||||
bbb.viewers.presentBtn.label = Promeni prezentatora
|
||||
bbb.viewers.kickUserBtn.toolTip = Izbaci korisnika
|
||||
bbb.presentation.title = Prezentacija
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Prebaci dokument za prezentaciju.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Prebaci dokument za prezentaciju.
|
||||
bbb.presentation.backBtn.toolTip = Prethodni slajd.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Csatlakozás a szerverhez
|
||||
bbb.mainshell.statusProgress.loading = {0} module töltése
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Sajnos a szerverhez nem sikerült csatlakozni
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - További információk a http://www.bigbluebutton.org/ oldalon.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - További információk a http://www.bigbluebutton.org/ oldalon.
|
||||
bbb.mainshell.logBtn.toolTip = Naplózási ablak mengnyitása
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Kinézet visszaállítása
|
||||
bbb.oldlocalewindow.reminder1 = Valószínű régi BigBlueButton fordítsa van.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Kattints a jelentkezéshez
|
||||
bbb.viewers.presentBtn.label = Előadó cseréje
|
||||
bbb.viewers.kickUserBtn.toolTip = Felhasználó eltávolítása
|
||||
bbb.presentation.title = Előadás
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Fájl feltöltése az előadáshoz
|
||||
bbb.presentation.uploadPresBtn.toolTip = Fájl feltöltése az előadáshoz
|
||||
bbb.presentation.backBtn.toolTip = Előző dia
|
||||
|
@ -1,19 +1,19 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Sedang membuat hubungan ke server
|
||||
bbb.mainshell.statusProgress.loading = Loading {0} modules
|
||||
bbb.mainshell.statusProgress.loading = Memuat {0} modul
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Maaf, tidak dapat terhubung ke server.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - Untuk informasi lebih lanjut, kunjungi http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - Untuk informasi lebih lanjut, kunjungi http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Buka Jendela Log
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Atur Ulang Tampilan
|
||||
bbb.oldlocalewindow.reminder1 = Penerjamah bahasa dari BigBlueButton anda mungkin sudah lawas
|
||||
bbb.oldlocalewindow.reminder2 = Harap bersihkan cache peramban anda kemudian coba lagi.
|
||||
bbb.oldlocalewindow.windowTitle = Peringatan: Penerjemahan bahasa lawas
|
||||
bbb.micSettings.playSound =
|
||||
bbb.micSettings.hearFromHeadset =
|
||||
bbb.micSettings.speakIntoMic =
|
||||
bbb.micSettings.changeMic =
|
||||
bbb.micSettings.join =
|
||||
bbb.micSettings.playSound = Putar suara untuk percobaan
|
||||
bbb.micSettings.hearFromHeadset = Anda seharusnya mendengar suara dari headset, bukan dari pengeras suara komputer.
|
||||
bbb.micSettings.speakIntoMic = Anda seharusnya melihat batangan yang bergerak seiring anda berbicara pada headset.
|
||||
bbb.micSettings.changeMic = Ganti Mikrofon
|
||||
bbb.micSettings.join = Gabung Suara
|
||||
bbb.micSettings.cancel = Batal
|
||||
bbb.mainToolbar.helpBtn = Bantuan
|
||||
bbb.mainToolbar.logoutBtn = Keluar
|
||||
@ -31,8 +31,10 @@ bbb.viewers.viewersGrid.statusItemRenderer.presIcon.toolTip = Presenter
|
||||
bbb.viewers.presentBtn.toolTip = Pilih siapa yang akan jadi presentasi.
|
||||
bbb.viewers.raiseHandBtn.toolTip = Klik untuk mengangkat tangan.
|
||||
bbb.viewers.presentBtn.label = Jadikan Presenter
|
||||
bbb.viewers.kickUserBtn.toolTip = Kick User
|
||||
bbb.viewers.kickUserBtn.toolTip = Usir Pengguna
|
||||
bbb.presentation.title = Presentasi
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Unggah sebuah dokumen untuk presentasi.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Unggah sebuah dokumen untuk presentasi.
|
||||
bbb.presentation.backBtn.toolTip = Slide Sebelumnya
|
||||
@ -56,7 +58,7 @@ bbb.presentation.error.convert.maxnbpagereach = Error: Dokumen yang diunggah mem
|
||||
bbb.presentation.error.convert.swf = Error saat mengkonversi file unggahan. Silahkan hubungi Administrator.
|
||||
bbb.presentation.converted = Berhasil dikonversi
|
||||
bbb.presentation.ok = OK
|
||||
bbb.presentation.uploadwindow.presentationfile = Data Presentasi
|
||||
bbb.presentation.uploadwindow.presentationfile = Berkas Presentasi
|
||||
bbb.presentation.uploadwindow.pdf = PDF
|
||||
bbb.presentation.uploadwindow.word = WORD
|
||||
bbb.presentation.uploadwindow.excel = EXCEL
|
||||
@ -64,8 +66,8 @@ bbb.presentation.uploadwindow.powerpoint = POWERPOINT
|
||||
bbb.presentation.uploadwindow.image = Citra
|
||||
bbb.presentation.uploadwindow.closeLabel = Klik OK untuk menutup jendela
|
||||
bbb.fileupload.title = Unggah Presentasi
|
||||
bbb.fileupload.fileLbl = File:
|
||||
bbb.fileupload.selectBtn.toolTip = Melihat-lihat file
|
||||
bbb.fileupload.fileLbl = Berkas:
|
||||
bbb.fileupload.selectBtn.toolTip = Cari berkas
|
||||
bbb.fileupload.uploadBtn = Unggah
|
||||
bbb.fileupload.uploadBtn.toolTip = Unggah file
|
||||
bbb.fileupload.presentationNamesLbl = Unggah Presentasi:
|
||||
@ -88,32 +90,32 @@ bbb.chat.privateChatSelect = Pilih seseorang untuk obrolan pribadi
|
||||
bbb.chat.chatOptions = Opsi Obrolan
|
||||
bbb.chat.fontSize = Ukuran Huruf
|
||||
bbb.listeners.title = Pendengar{0} {1}
|
||||
bbb.listeners.pushToTalk.toolTip =
|
||||
bbb.listeners.pushToMute.toolTip =
|
||||
bbb.listeners.talk =
|
||||
bbb.listeners.mute =
|
||||
bbb.listeners.muteAllBtn.toolTip = Diam semua
|
||||
bbb.listeners.unmuteAllBtn.toolTip = Bersuara
|
||||
bbb.listeners.ejectTooltip = Kick User
|
||||
bbb.listeners.pushToTalk.toolTip = Klik untuk bicara
|
||||
bbb.listeners.pushToMute.toolTip = Klik untuk membisukan diri anda sendiri
|
||||
bbb.listeners.talk = Bicara
|
||||
bbb.listeners.mute = Bisu
|
||||
bbb.listeners.muteAllBtn.toolTip = Diamkan semua
|
||||
bbb.listeners.unmuteAllBtn.toolTip = Suarakan semua
|
||||
bbb.listeners.ejectTooltip = Usir Pengguna
|
||||
bbb.listenerItem.nameLbl.toolTip = Pilih pengguna ini dan klik tombol untuk mengaktifkan atau menonaktifkan suara.
|
||||
bbb.listenerItem.talkImg.toolTip = Berbicara
|
||||
bbb.listenerItem.talkImg.toolTip = Sedang bicara
|
||||
bbb.listenerItem.lockImg.toolTip = Klik untuk mengaktifkan atau menonaktifkan suara
|
||||
bbb.listenerItem.muteUnmute.toolTip = Menonaktifkan atau mengaktifkan suara pendengar ini
|
||||
bbb.publishVideo.title = Bagikan Video Anda
|
||||
bbb.publishVideo.title = Bagikan Kamera Anda
|
||||
bbb.publishVideo.startPublishBtn.toolTip = Mulai Berbagi
|
||||
bbb.video.publish.close.tooltip = Berhenti membagikan Video Anda
|
||||
bbb.video.publish.close.tooltip = Berhenti membagikan kamera anda
|
||||
bbb.video.publish.close.label = Tutup
|
||||
bbb.video.keepAspectBtn.tooltip =
|
||||
bbb.video.fitVideoBtn.tooltip =
|
||||
bbb.video.originalSizeBtn.tooltip =
|
||||
bbb.video.publish.hint.noCamera =
|
||||
bbb.video.publish.hint.cantOpenCamera =
|
||||
bbb.video.publish.hint.waitingApproval =
|
||||
bbb.video.publish.hint.videoPreview =
|
||||
bbb.video.publish.hint.openingCamera =
|
||||
bbb.video.publish.hint.cameraDenied =
|
||||
bbb.video.publish.hint.cameraIsBeingUsed =
|
||||
bbb.video.publish.hint.publishing =
|
||||
bbb.video.keepAspectBtn.tooltip = Jaga aspek jendela
|
||||
bbb.video.fitVideoBtn.tooltip = Paskan video
|
||||
bbb.video.originalSizeBtn.tooltip = Ukuran asli
|
||||
bbb.video.publish.hint.noCamera = Tidak ada kamera tersedia
|
||||
bbb.video.publish.hint.cantOpenCamera = Tidak dapat membuka kamera anda
|
||||
bbb.video.publish.hint.waitingApproval = Menunggu persetujuan
|
||||
bbb.video.publish.hint.videoPreview = Pratinjau video
|
||||
bbb.video.publish.hint.openingCamera = Sedang membuka kamera...
|
||||
bbb.video.publish.hint.cameraDenied = Akses kamera ditolak
|
||||
bbb.video.publish.hint.cameraIsBeingUsed = Kamera anda sedang digunakan oleh aplikasi lain
|
||||
bbb.video.publish.hint.publishing = Mempublikasikan...
|
||||
bbb.desktopPublish.title = Berbagi Desktop: Pratinjau Presenter
|
||||
bbb.desktopPublish.fullscreen.tooltip = Bagikan seluruh layar anda
|
||||
bbb.desktopPublish.fullscreen.label = Layar Penuh
|
||||
@ -147,13 +149,13 @@ bbb.logout.rejected = Hubungan ke server ditolak
|
||||
bbb.logout.invalidapp = Aplikasi red5 belum terpasang
|
||||
bbb.logout.unknown = Klien anda telah kehilangan hubungan ke server.
|
||||
bbb.logout.usercommand = Anda telah keluar dari konferensi
|
||||
bbb.settings.deskshare.instructions =
|
||||
bbb.settings.deskshare.instructions = Klik Ijinkan pada jendela pop up untuk memeriksa jika berbagi desktop berjalan sebagaimana mestinya.
|
||||
bbb.settings.deskshare.start = Periksa fitur Berbagi Desktop.
|
||||
bbb.settings.voice.volume = Aktifitas Mikrofon
|
||||
bbb.settings.voice.adjust = Atur Suara
|
||||
bbb.settings.java.label = Versi Java bermasalah
|
||||
bbb.settings.java.text = Anda memiliki Java {0} yang terpasang, tapi anda membutuhkan paling tidak bersi {1} untuk dapat menggunakan fitur berbagi desktop. Klik pada tombol di bawah untuk memasang versi Java JRE terbaru.
|
||||
bbb.settings.java.command = Pasang Java yang terbaru
|
||||
bbb.settings.java.text = Anda memiliki Java {0} yang terpasang, tapi anda membutuhkan paling tidak versi {1} untuk dapat menggunakan fitur berbagi desktop. Klik pada tombol di bawah untuk memasang versi Java JRE terbaru.
|
||||
bbb.settings.java.command = Pasang Java terbaru
|
||||
bbb.settings.flash.label = Kesalahan pada versi Flash
|
||||
bbb.settings.flash.text = Anda sudah memiliki Flash {0} yang terpasang, tapi anda membutuhkan paling tidak versi {1} untuk dapat menjalankan BigBlueButton dengan baik. Klik tombol di bawah untuk memasang versi Adobe Flash terbaru.
|
||||
bbb.settings.flash.command = Pasang Flash yang terbaru
|
||||
@ -162,8 +164,8 @@ bbb.settings.isight.text = Jika anda punya masalah dengan iSight kamera, mungkin
|
||||
bbb.settings.isight.command = Pasang Flash 10.2.RC2
|
||||
bbb.settings.warning.label = Peringatan
|
||||
bbb.settings.warning.close = Tutup peringatan ini
|
||||
bbb.settings.noissues = Tidak ada masalah terkemuka yang terdeteksi.
|
||||
bbb.settings.instructions = Terima konfirmasi Flash yang meminta izin atas kamera anda. Jika anda bisa melihat dan mendengar diri anda sendiri berarti peramban anda sudah diatur dengan benar. Masalah yang potensial lainnya ditampilkan di bawah. Klik untuk menemukan solusi yang mungkin dari masing-masing masalah.
|
||||
bbb.videodock.title =
|
||||
bbb.settings.noissues = Tidak ada masalah mencolok yang terdeteksi.
|
||||
bbb.settings.instructions = Terima konfirmasi Flash yang meminta izin atas kamera anda. Jika anda bisa melihat dan mendengar diri anda sendiri berarti peramban anda sudah diatur dengan benar. Masalah yang potensial lainnya ditampilkan di bawah. Klik untuk menemukan kemungkinan solusi dari masing-masing masalah.
|
||||
bbb.videodock.title = Dok video
|
||||
bbb.zzzzz.yyyy =
|
||||
=
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Connessione al server in corso
|
||||
bbb.mainshell.statusProgress.loading = Caricamento:
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Errore di connessione.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton versione {0} - Per maggiori informazioni visita http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton versione {0} - Per maggiori informazioni visita http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Apri finestra Log
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Reimposta Layout
|
||||
bbb.oldlocalewindow.reminder1 = Potresti avere una localizzazione obsoleta.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Clicca per alzare la mano.
|
||||
bbb.viewers.presentBtn.label = Scambia presentatore
|
||||
bbb.viewers.kickUserBtn.toolTip = Clicca per espellere.
|
||||
bbb.presentation.title = Presentazione
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Carica un documento per la presentazione.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Carica un documento per la presentazione.
|
||||
bbb.presentation.backBtn.toolTip = Slide precedente.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = サーバーへ接続しています。
|
||||
bbb.mainshell.statusProgress.loading = 読み込み中・・・ {0} モジュール が読み込まれました。
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = 申し訳ありません。サーバーに接続できません。
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - 詳細につきましては、http://www.bigbluebutton.org/をご覧ください。
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - 詳細につきましては、http://www.bigbluebutton.org/をご覧ください。
|
||||
bbb.mainshell.logBtn.toolTip = ログウィンドウを開く
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = レイアウトを元に戻す
|
||||
bbb.oldlocalewindow.reminder1 = BigBlueButtonの古い言語翻訳を使用しているようです。
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = クリックして挙手。
|
||||
bbb.viewers.presentBtn.label = プレゼンターをスイッチ
|
||||
bbb.viewers.kickUserBtn.toolTip = このユーザのマイクを停止します
|
||||
bbb.presentation.title = プレゼンテーション
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = 資料をアップロードします。
|
||||
bbb.presentation.uploadPresBtn.toolTip = 資料をアップロードします。
|
||||
bbb.presentation.backBtn.toolTip = 前のスライド
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = 서버 접속중 # Connecting to the server
|
||||
bbb.mainshell.statusProgress.loading = 모듈 {0} 로딩중
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = 서버에 접속하지 못했습니다. # Sorry, we cannot connect to the server.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - 자세한 정보는 사이트에서 확인하세요. http://www.bigbluebutton.org/. # (c) 2011, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - 자세한 정보는 사이트에서 확인하세요. http://www.bigbluebutton.org/. # (c) 2011, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = 기록 보기 # Open Log Window
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = 화면 재설정 # Reset Layout
|
||||
bbb.oldlocalewindow.reminder1 = 이전 언어팩 설치되어 있습니다.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = 클릭하시면 손들기 모양이 표시됩
|
||||
bbb.viewers.presentBtn.label = 발표자변경 # Switch Presenter
|
||||
bbb.viewers.kickUserBtn.toolTip = 강퇴 # Kick User
|
||||
bbb.presentation.title = 프리젠테이션 # Presentation
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = 프리젠테이션 자료 올리기 # Upload a document for presentation.
|
||||
bbb.presentation.uploadPresBtn.toolTip = 프리젠테이션 자료 올리기 # Upload a document for presentation.
|
||||
bbb.presentation.backBtn.toolTip = 이전 슬라이드
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting =
|
||||
bbb.mainshell.statusProgress.loading = ?k?limas:
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Atsiprašome, n?ra galimyb?s prisijungti prie serverio.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton versija {0} - Daugiau informacijos tinklalapyje http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton versija {0} - Daugiau informacijos tinklalapyje http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Atverti ?vyki? lang?
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Atstatyti langus ? pradin? pad?t?
|
||||
bbb.oldlocalewindow.reminder1 = You may have an old language translations of BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Pakelti rank?.
|
||||
bbb.viewers.presentBtn.label =
|
||||
bbb.viewers.kickUserBtn.toolTip = Išjungti bals?
|
||||
bbb.presentation.title = Prezentacija
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = ?kelti dokument? prezentacijai.
|
||||
bbb.presentation.uploadPresBtn.toolTip = ?kelti dokument? prezentacijai.
|
||||
bbb.presentation.backBtn.toolTip = Buv?s puslapis.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Pievienojas serverim
|
||||
bbb.mainshell.statusProgress.loading = IelÄdÄ“ {0} moduļus
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Atvainojiet, pieslÄ“gties serverim neizdevÄs.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Atvērt logus
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = AtiestatÄ«t izkÄrtojumu
|
||||
bbb.oldlocalewindow.reminder1 = Iespējams, ka tulkojums ir novecojis.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Spiest lai paceltu roku.
|
||||
bbb.viewers.presentBtn.label = PÄrslÄ“gt demonstrÄ“tÄju
|
||||
bbb.viewers.kickUserBtn.toolTip = Izsviest lietotÄju
|
||||
bbb.presentation.title = PrezentÄcija
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = AugÅ¡upielÄdÄ“t prezentÄciju.
|
||||
bbb.presentation.uploadPresBtn.toolTip = AugÅ¡upielÄdÄ“t prezentÄciju.
|
||||
bbb.presentation.backBtn.toolTip = Iepriekšējais slaids.
|
||||
|
@ -1,5 +1,5 @@
|
||||
bbb.pageTitle = ТомЦэнхэрТовчлуур
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Сервер луу холбогдож байна.
|
||||
bbb.mainshell.statusProgress.loading = Нийт {0} Модуль байна
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Уучилаарай, бид сервер лүү холбогдож чадсангүй
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Энд дараад гараа өргөнө
|
||||
bbb.viewers.presentBtn.label = Танилцуулагчыг солих
|
||||
bbb.viewers.kickUserBtn.toolTip = Хэрэглэгчийг хөөх
|
||||
bbb.presentation.title = Танилцуулга файл
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Танилцуулагчын бичиг баримтыг илгээх
|
||||
bbb.presentation.uploadPresBtn.toolTip = Танилцуулагчын бичиг баримтыг илгээх
|
||||
bbb.presentation.backBtn.toolTip = Өмнөх хуудас
|
||||
|
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip =
|
||||
bbb.viewers.presentBtn.label =
|
||||
bbb.viewers.kickUserBtn.toolTip =
|
||||
bbb.presentation.title =
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn =
|
||||
bbb.presentation.uploadPresBtn.toolTip =
|
||||
bbb.presentation.backBtn.toolTip =
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Verbinding aan het maken met de server
|
||||
bbb.mainshell.statusProgress.loading = Laden:
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = We kunnen geen verbinding maken met de server.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton versie {0} - Voor meer informatie ga naar http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton versie {0} - Voor meer informatie ga naar http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Open log scherm
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Herstel de scherm-indeling
|
||||
bbb.oldlocalewindow.reminder1 = U hebt misschien een verouderde vertaling van bigbluebutton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klik om uw hand op te steken.
|
||||
bbb.viewers.presentBtn.label = Wijzig voorzitter
|
||||
bbb.viewers.kickUserBtn.toolTip = Klik om deze gebruiker uit de kamer te verwijderen
|
||||
bbb.presentation.title = Presentatie
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Verzend een document om te presenteren.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Verzend een document om te presenteren.
|
||||
bbb.presentation.backBtn.toolTip = Vorige pagina.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Kobler opp til serveren
|
||||
bbb.mainshell.statusProgress.loading = Laster {0} moduler
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Beklager, vi kan ikke koble til serveren
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - Mer informasjon finnes hos http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - Mer informasjon finnes hos http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Åpne loggvindu
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Nullstill oppsett
|
||||
bbb.oldlocalewindow.reminder1 = Du har kanskje en gammel språkfil
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klikk for håndsopprekking
|
||||
bbb.viewers.presentBtn.label = Velg ny presenterer
|
||||
bbb.viewers.kickUserBtn.toolTip = Send ut bruker
|
||||
bbb.presentation.title = Presentasjon
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Last opp dokument til presentasjon.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Last opp dokument til presentasjon.
|
||||
bbb.presentation.backBtn.toolTip = Forrige lysark.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Łączenie z serwerem
|
||||
bbb.mainshell.statusProgress.loading = Proszę czekać, ładowanie {0} modułów w toku:
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Przepraszamy, brak możliwości podłączenia do serwera.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - Więcej informacji pod adresem http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - Więcej informacji pod adresem http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Otwórz okno dziennika
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Resetuj układ
|
||||
bbb.oldlocalewindow.reminder1 = Możliwe, iż masz stare tłumaczenie dla BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Kliknij, aby podnieść rękę.
|
||||
bbb.viewers.presentBtn.label = Ustaw prezentera
|
||||
bbb.viewers.kickUserBtn.toolTip = Usuń użytkownika
|
||||
bbb.presentation.title = Prezentacja
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Wgraj dokument do prezentacji.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Wgraj dokument do prezentacji.
|
||||
bbb.presentation.backBtn.toolTip = Poprzedni slajd.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Conectando no servidor
|
||||
bbb.mainshell.statusProgress.loading = Carregando {0} módulos
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Desculpe, não foi possível conectar no servidor.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton compilação {0} - Para mais informações, acesse http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton compilação {0} - Para mais informações, acesse http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Abrir Janela de Registro
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Restaurar layout
|
||||
bbb.oldlocalewindow.reminder1 = Você pode ter uma tradução antiga do idioma do BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Clique aqui para levantar a mão e pedir a pa
|
||||
bbb.viewers.presentBtn.label = Mudar Apresentador
|
||||
bbb.viewers.kickUserBtn.toolTip = Expulsar usuário.
|
||||
bbb.presentation.title = Apresentação
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Enviar um documento para apresentação.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Enviar um documento para apresentação.
|
||||
bbb.presentation.backBtn.toolTip = Slide anterior.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Ligando ao Servidor
|
||||
bbb.mainshell.statusProgress.loading = Carregando {0} modulos
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Desculpe, não foi possível estabelecer ligação ao servidor.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2009, BigBlueButton versão {0} - Para mais informações, veja http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton versão {0} - Para mais informações, veja http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Abrir janela de registo
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Restaurar layout
|
||||
bbb.oldlocalewindow.reminder1 = You may have an old language translations of BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Clique aqui para levantar a mão
|
||||
bbb.viewers.presentBtn.label = Trocar Apresentador
|
||||
bbb.viewers.kickUserBtn.toolTip = Clique aqui para expulsar utilizador.
|
||||
bbb.presentation.title = Apresentação
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Enviar um documento para apresentação.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Enviar um documento para apresentação.
|
||||
bbb.presentation.backBtn.toolTip = Slide anterior.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Se conectează la server
|
||||
bbb.mainshell.statusProgress.loading = Încărcare:
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Nu s-a putut realiza conexiunea cu serverul.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton versiunea {0} - Pentru mai multe informaţii, accesaţi http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton versiunea {0} - Pentru mai multe informaţii, accesaţi http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Afişaţi Jurnalul
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Reiniţializare Pagină
|
||||
bbb.oldlocalewindow.reminder1 = S-ar putea să aveţi traduceri vechi a BigBlueButton
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Cereţi cuvântul.
|
||||
bbb.viewers.presentBtn.label = Schimbă Prezentatorul
|
||||
bbb.viewers.kickUserBtn.toolTip = Daţi clic pentru a exclude participantul.
|
||||
bbb.presentation.title = Prezentare
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Încărcaţi un document în prezentare.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Încărcaţi un document în prezentare.
|
||||
bbb.presentation.backBtn.toolTip = Slide-ul anterior.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = Конференции BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Идёт подключение к серверу
|
||||
bbb.mainshell.statusProgress.loading = Идёт загрузка {0} модулей
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = К сожалению, мы не можем подключиться к серверу.
|
||||
bbb.mainshell.copyrightLabel2 = © 2011, BigBlueButton, версия {0}, дополнительная информация на сайте: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = © 2012, BigBlueButton, версия {0}, дополнительная информация на сайте: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Открыть окно журнала
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Сбросить расположение окон
|
||||
bbb.oldlocalewindow.reminder1 = Возможно, у вас устаревшая версия перевода BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Попросить слова
|
||||
bbb.viewers.presentBtn.label = Переключить ведущего
|
||||
bbb.viewers.kickUserBtn.toolTip = Исключить из конференции
|
||||
bbb.presentation.title = Презентация
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Загрузить документ для показа.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Загрузить документ для показа.
|
||||
bbb.presentation.backBtn.toolTip = Предыдущий слайд.
|
||||
|
171
bigbluebutton-client/locale/si_LK/bbbResources.properties
Normal file
171
bigbluebutton-client/locale/si_LK/bbbResources.properties
Normal file
@ -0,0 +1,171 @@
|
||||
bbb.pageTitle =
|
||||
bbb.mainshell.locale.version =
|
||||
bbb.mainshell.statusProgress.connecting =
|
||||
bbb.mainshell.statusProgress.loading =
|
||||
bbb.mainshell.statusProgress.cannotConnectServer =
|
||||
bbb.mainshell.copyrightLabel2 =
|
||||
bbb.mainshell.logBtn.toolTip =
|
||||
bbb.mainshell.resetLayoutBtn.toolTip =
|
||||
bbb.oldlocalewindow.reminder1 =
|
||||
bbb.oldlocalewindow.reminder2 =
|
||||
bbb.oldlocalewindow.windowTitle =
|
||||
bbb.micSettings.playSound =
|
||||
bbb.micSettings.hearFromHeadset =
|
||||
bbb.micSettings.speakIntoMic =
|
||||
bbb.micSettings.changeMic =
|
||||
bbb.micSettings.join =
|
||||
bbb.micSettings.cancel =
|
||||
bbb.mainToolbar.helpBtn =
|
||||
bbb.mainToolbar.logoutBtn =
|
||||
bbb.mainToolbar.logoutBtn.toolTip =
|
||||
bbb.mainToolbar.settingsBtn =
|
||||
bbb.mainToolbar.settingsBtn.toolTip =
|
||||
bbb.viewers.title =
|
||||
bbb.viewers.viewersGrid.nameItemRenderer =
|
||||
bbb.viewers.viewersGrid.nameItemRenderer.nameLabel.toolTip =
|
||||
bbb.viewers.viewersGrid.roleItemRenderer =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.raiseHand.toolTip =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.streamIcon.toolTip =
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.presIcon.toolTip =
|
||||
bbb.viewers.presentBtn.toolTip =
|
||||
bbb.viewers.raiseHandBtn.toolTip =
|
||||
bbb.viewers.presentBtn.label =
|
||||
bbb.viewers.kickUserBtn.toolTip =
|
||||
bbb.presentation.title =
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn =
|
||||
bbb.presentation.uploadPresBtn.toolTip =
|
||||
bbb.presentation.backBtn.toolTip =
|
||||
bbb.presentation.slideNumLbl.toolTip =
|
||||
bbb.presentation.forwardBtn.toolTip =
|
||||
bbb.presentation.resetZoomBtn.toolTip =
|
||||
bbb.presentation.presenterNameLbl =
|
||||
bbb.presentation.clickToUpload =
|
||||
bbb.presentation.maxUploadFileExceededAlert =
|
||||
bbb.presentation.uploadcomplete =
|
||||
bbb.presentation.uploaded =
|
||||
bbb.presentation.document.supported =
|
||||
bbb.presentation.document.converted =
|
||||
bbb.presentation.error.document.convert.failed =
|
||||
bbb.presentation.error.io =
|
||||
bbb.presentation.error.security =
|
||||
bbb.presentation.error.convert.format =
|
||||
bbb.presentation.error.convert.notsupported =
|
||||
bbb.presentation.error.convert.nbpage =
|
||||
bbb.presentation.error.convert.maxnbpagereach =
|
||||
bbb.presentation.error.convert.swf =
|
||||
bbb.presentation.converted =
|
||||
bbb.presentation.ok =
|
||||
bbb.presentation.uploadwindow.presentationfile =
|
||||
bbb.presentation.uploadwindow.pdf =
|
||||
bbb.presentation.uploadwindow.word =
|
||||
bbb.presentation.uploadwindow.excel =
|
||||
bbb.presentation.uploadwindow.powerpoint =
|
||||
bbb.presentation.uploadwindow.image =
|
||||
bbb.presentation.uploadwindow.closeLabel =
|
||||
bbb.fileupload.title =
|
||||
bbb.fileupload.fileLbl =
|
||||
bbb.fileupload.selectBtn.toolTip =
|
||||
bbb.fileupload.uploadBtn =
|
||||
bbb.fileupload.uploadBtn.toolTip =
|
||||
bbb.fileupload.presentationNamesLbl =
|
||||
bbb.fileupload.deleteBtn.toolTip =
|
||||
bbb.fileupload.showBtn =
|
||||
bbb.fileupload.showBtn.toolTip =
|
||||
bbb.fileupload.okCancelBtn =
|
||||
bbb.fileupload.genThumbText =
|
||||
bbb.fileupload.progBarLbl =
|
||||
bbb.chat.title =
|
||||
bbb.chat.cmpColorPicker.toolTip =
|
||||
bbb.chat.sendBtn =
|
||||
bbb.chat.sendBtn.toolTip =
|
||||
bbb.chat.publicChatUsername =
|
||||
bbb.chat.publicMsgAwaiting =
|
||||
bbb.chat.publicMsgAwaiting2 =
|
||||
bbb.chat.privateMsgAwaiting =
|
||||
bbb.chat.privateMsgAwaiting2 =
|
||||
bbb.chat.privateChatSelect =
|
||||
bbb.chat.chatOptions =
|
||||
bbb.chat.fontSize =
|
||||
bbb.listeners.title =
|
||||
bbb.listeners.pushToTalk.toolTip =
|
||||
bbb.listeners.pushToMute.toolTip =
|
||||
bbb.listeners.talk =
|
||||
bbb.listeners.mute =
|
||||
bbb.listeners.muteAllBtn.toolTip =
|
||||
bbb.listeners.unmuteAllBtn.toolTip =
|
||||
bbb.listeners.ejectTooltip =
|
||||
bbb.listenerItem.nameLbl.toolTip =
|
||||
bbb.listenerItem.talkImg.toolTip =
|
||||
bbb.listenerItem.lockImg.toolTip =
|
||||
bbb.listenerItem.muteUnmute.toolTip =
|
||||
bbb.publishVideo.title =
|
||||
bbb.publishVideo.startPublishBtn.toolTip =
|
||||
bbb.video.publish.close.tooltip =
|
||||
bbb.video.publish.close.label =
|
||||
bbb.video.keepAspectBtn.tooltip =
|
||||
bbb.video.fitVideoBtn.tooltip =
|
||||
bbb.video.originalSizeBtn.tooltip =
|
||||
bbb.video.publish.hint.noCamera =
|
||||
bbb.video.publish.hint.cantOpenCamera =
|
||||
bbb.video.publish.hint.waitingApproval =
|
||||
bbb.video.publish.hint.videoPreview =
|
||||
bbb.video.publish.hint.openingCamera =
|
||||
bbb.video.publish.hint.cameraDenied =
|
||||
bbb.video.publish.hint.cameraIsBeingUsed =
|
||||
bbb.video.publish.hint.publishing =
|
||||
bbb.desktopPublish.title =
|
||||
bbb.desktopPublish.fullscreen.tooltip =
|
||||
bbb.desktopPublish.fullscreen.label =
|
||||
bbb.desktopPublish.region.tooltip =
|
||||
bbb.desktopPublish.region.label =
|
||||
bbb.desktopPublish.stop.tooltip =
|
||||
bbb.desktopPublish.stop.label =
|
||||
bbb.desktopPublish.maximizeRestoreBtn.toolTip =
|
||||
bbb.desktopPublish.closeBtn.toolTip =
|
||||
bbb.desktopPublish.minimizeBtn.toolTip =
|
||||
bbb.desktopView.title =
|
||||
bbb.desktopView.fitToWindow =
|
||||
bbb.desktopView.actualSize =
|
||||
bbb.toolbar.phone.toolTip =
|
||||
bbb.toolbar.deskshare.toolTip =
|
||||
bbb.toolbar.video.toolTip =
|
||||
bbb.highlighter.toolbar.pencil =
|
||||
bbb.highlighter.toolbar.ellipse =
|
||||
bbb.highlighter.toolbar.rectangle =
|
||||
bbb.highlighter.toolbar.clear =
|
||||
bbb.highlighter.toolbar.undo =
|
||||
bbb.highlighter.toolbar.color =
|
||||
bbb.highlighter.toolbar.thickness =
|
||||
bbb.highlighter.button.toolTipShow =
|
||||
bbb.highlighter.button.toolTipHide =
|
||||
bbb.logout.appshutdown =
|
||||
bbb.logout.asyncerror =
|
||||
bbb.logout.connectionclosed =
|
||||
bbb.logout.connectionfailed =
|
||||
bbb.logout.rejected =
|
||||
bbb.logout.invalidapp =
|
||||
bbb.logout.unknown =
|
||||
bbb.logout.usercommand =
|
||||
bbb.settings.deskshare.instructions =
|
||||
bbb.settings.deskshare.start =
|
||||
bbb.settings.voice.volume =
|
||||
bbb.settings.voice.adjust =
|
||||
bbb.settings.java.label =
|
||||
bbb.settings.java.text =
|
||||
bbb.settings.java.command =
|
||||
bbb.settings.flash.label =
|
||||
bbb.settings.flash.text =
|
||||
bbb.settings.flash.command =
|
||||
bbb.settings.isight.label =
|
||||
bbb.settings.isight.text =
|
||||
bbb.settings.isight.command =
|
||||
bbb.settings.warning.label =
|
||||
bbb.settings.warning.close =
|
||||
bbb.settings.noissues =
|
||||
bbb.settings.instructions =
|
||||
bbb.videodock.title =
|
||||
bbb.zzzzz.yyyy =
|
||||
=
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Pripája sa ku serveru
|
||||
bbb.mainshell.statusProgress.loading = Nahráva {0} modulov
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Ľutujeme, nepodarilo sa pripojiť k serveru.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton revízia {0} - Pre viac informácii navštívte http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton revízia {0} - Pre viac informácii navštívte http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Otvoriť okno záznamov
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Resetovať rozmiestnenie
|
||||
bbb.oldlocalewindow.reminder1 = Je možné že máte starý preklad BigBlueButton-u.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Kliknite pre Zdvihnutie ruky.
|
||||
bbb.viewers.presentBtn.label = Vymeniť Moderátora.
|
||||
bbb.viewers.kickUserBtn.toolTip = Vyhodiť užívateľa
|
||||
bbb.presentation.title = Prezentácia
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Nahrať dokument pre prezetáciu.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Tu môžete nahrať dokument, ktorý chcete pripojiť ku prezentácii.
|
||||
bbb.presentation.backBtn.toolTip = Predchádzajúca roleta.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Povezujem se s strežnikom
|
||||
bbb.mainshell.statusProgress.loading = Nalaganje {0} modulov
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Oprostite, ne moremo se povezati s strežnikom.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton različica {0} - Za več informacij obiščite http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton različica {0} - Za več informacij obiščite http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Odpri beležno okno
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Ponastavite razporeditev
|
||||
bbb.oldlocalewindow.reminder1 = Mogoče imate stare prevode BigBlueButton-a.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Kliknite za dvig roke.
|
||||
bbb.viewers.presentBtn.label = Zamenjajte moderatorja
|
||||
bbb.viewers.kickUserBtn.toolTip = Kick User
|
||||
bbb.presentation.title = Predstavitev
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Naložite dokument za predstavitev.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Naložite dokument za predstavitev.
|
||||
bbb.presentation.backBtn.toolTip = Prejšnji diapozitiv.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Povezuje se sa serverom
|
||||
bbb.mainshell.statusProgress.loading = Podiže {0} modula
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Nažalost nije moguće uspostaviti vezu sa serverom.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, CallPal by BigBlueButton - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton - For more information see http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Otvori log prozor
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Resetuj izgled
|
||||
bbb.oldlocalewindow.reminder1 = Moguće imate staru verziju prevoda.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klikni da dignete ruku.
|
||||
bbb.viewers.presentBtn.label = Promeni prezentatora
|
||||
bbb.viewers.kickUserBtn.toolTip = Izbaci korisnika
|
||||
bbb.presentation.title = Prezentacija
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Prebaci dokument za prezentaciju.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Prebaci dokument za prezentaciju.
|
||||
bbb.presentation.backBtn.toolTip = Prethodni slajd.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Успостављање везу са сервером
|
||||
bbb.mainshell.statusProgress.loading = Покреће {0} компонената
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Извините, не можемо да успоставимо везу са сервером
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton верзија {0} - за више информација погледајте http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton верзија {0} - за више информација погледајте http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Отвори лог прозор
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Ресетуј распоред
|
||||
bbb.oldlocalewindow.reminder1 = Могуће је да имате стари превод BigBlueButton-а.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Притисни да подигнеш рук
|
||||
bbb.viewers.presentBtn.label = Промените предавача
|
||||
bbb.viewers.kickUserBtn.toolTip = Избаците учесника
|
||||
bbb.presentation.title = Презентација
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Пребаци документ за презентацију.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Пребаци документ за презентацију.
|
||||
bbb.presentation.backBtn.toolTip = Претходни слајд
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting =
|
||||
bbb.mainshell.statusProgress.loading = H
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Tyv
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton build {0} - bes
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - bes
|
||||
bbb.mainshell.logBtn.toolTip =
|
||||
bbb.mainshell.resetLayoutBtn.toolTip =
|
||||
bbb.oldlocalewindow.reminder1 = Du kan ha en
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Klicka f
|
||||
bbb.viewers.presentBtn.label = Byt presentat
|
||||
bbb.viewers.kickUserBtn.toolTip = Klicka f
|
||||
bbb.presentation.title = Presentation
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Ladda upp ett dokument f
|
||||
bbb.presentation.uploadPresBtn.toolTip = Ladda upp ett dokument f
|
||||
bbb.presentation.backBtn.toolTip = F
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = กำลังเชื่อมต่อเครื่องแม่ข่าย
|
||||
bbb.mainshell.statusProgress.loading = กำลังโหลด {0} โมดูล
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = ขออภัยเราไม่สามารถติดต่อเครื่องแม่ข่ายได้ในขณะนี้
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton build {0} - ข้อมูลเพิ่มเติมไปที่ http://www.bigbluebutton.org
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton build {0} - ข้อมูลเพิ่มเติมไปที่ http://www.bigbluebutton.org
|
||||
bbb.mainshell.logBtn.toolTip = เปิดการทำงาน
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = จัดตั้งเค้าโครงใหม่
|
||||
bbb.oldlocalewindow.reminder1 = คุณอาจจะมีการแปลภาษาเก่าของ BigBlueButton
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = คลิกเพื่อยกมือ
|
||||
bbb.viewers.presentBtn.label = เปลื่ยนผู้นำเสนอ
|
||||
bbb.viewers.kickUserBtn.toolTip = กำจัดผู้ใช้งาน
|
||||
bbb.presentation.title = การนำเสนอ
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = อัปโหลดเอกสารเพื่อการนำเสนอ
|
||||
bbb.presentation.uploadPresBtn.toolTip = อัปโหลดเอกสารเพื่อการนำเสนอ
|
||||
bbb.presentation.backBtn.toolTip = ภาพสไลด์ก่อนหน้านี้
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Sunucuya bağlanıyor
|
||||
bbb.mainshell.statusProgress.loading = {0} bileşen yükleniyor
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Üzgünüz, sunucuya bağlanamıyoruz.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton sürüm {0} -- Daha fazla bilgi için http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton sürüm {0} -- Daha fazla bilgi için http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Sistem Kayıtlarını Aç
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Yerleşimi sıfırla
|
||||
bbb.oldlocalewindow.reminder1 = BigBlueButton dil çeviriniz eski olabilir.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = El kaldırmak için tıklayın.
|
||||
bbb.viewers.presentBtn.label = Konuşmacıyı Değiştir
|
||||
bbb.viewers.kickUserBtn.toolTip = Kullanıcıyı At
|
||||
bbb.presentation.title = Sunum
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Sunum için bir doküman yükleyin.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Sunum için bir doküman yükleyin.
|
||||
bbb.presentation.backBtn.toolTip = Önceki slayt.
|
||||
@ -88,10 +90,10 @@ bbb.chat.privateChatSelect = Özel görüşme yapacağınız kişiyi seçin
|
||||
bbb.chat.chatOptions = Sohbet Seçenekleri
|
||||
bbb.chat.fontSize = Font Büyüklüğü
|
||||
bbb.listeners.title = Dinleyicler{0} {1}
|
||||
bbb.listeners.pushToTalk.toolTip =
|
||||
bbb.listeners.pushToMute.toolTip =
|
||||
bbb.listeners.talk =
|
||||
bbb.listeners.mute =
|
||||
bbb.listeners.pushToTalk.toolTip = Konuşmak için tıklayın
|
||||
bbb.listeners.pushToMute.toolTip = Kendinizi sessiz yapmak için tıklayın
|
||||
bbb.listeners.talk = Konuşun
|
||||
bbb.listeners.mute = Sessiz yap
|
||||
bbb.listeners.muteAllBtn.toolTip = Tümünü sessiz yap.
|
||||
bbb.listeners.unmuteAllBtn.toolTip = Tümünü sesli yap.
|
||||
bbb.listeners.ejectTooltip = Kullanıcıyı At
|
||||
@ -106,14 +108,14 @@ bbb.video.publish.close.label = Kapat
|
||||
bbb.video.keepAspectBtn.tooltip = Pencere boyutunu koru
|
||||
bbb.video.fitVideoBtn.tooltip = Video'yu sığdır
|
||||
bbb.video.originalSizeBtn.tooltip = Orjinal boyut
|
||||
bbb.video.publish.hint.noCamera =
|
||||
bbb.video.publish.hint.cantOpenCamera =
|
||||
bbb.video.publish.hint.waitingApproval =
|
||||
bbb.video.publish.hint.videoPreview =
|
||||
bbb.video.publish.hint.openingCamera =
|
||||
bbb.video.publish.hint.cameraDenied =
|
||||
bbb.video.publish.hint.cameraIsBeingUsed =
|
||||
bbb.video.publish.hint.publishing =
|
||||
bbb.video.publish.hint.noCamera = Kamera bulunamadı
|
||||
bbb.video.publish.hint.cantOpenCamera = Kameranız başlatılamıyor
|
||||
bbb.video.publish.hint.waitingApproval = Onay bekleniyor
|
||||
bbb.video.publish.hint.videoPreview = Video önizleme
|
||||
bbb.video.publish.hint.openingCamera = Kamera başlatılıyor
|
||||
bbb.video.publish.hint.cameraDenied = Kamera erişimi reddedildi
|
||||
bbb.video.publish.hint.cameraIsBeingUsed = Kameranız başka bir uygulama tarafından kullanılıyor
|
||||
bbb.video.publish.hint.publishing = Yayınlanıyor
|
||||
bbb.desktopPublish.title = Masaüstü Paylaşımı: Konuşmacı Önizlemesi
|
||||
bbb.desktopPublish.fullscreen.tooltip = Ekranınızın tamamını paylaşın
|
||||
bbb.desktopPublish.fullscreen.label = Tam Ekran
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = Конференції BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Під'єднуюсь до сервера
|
||||
bbb.mainshell.statusProgress.loading = Завантажується {0} модулів
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Співчуваємо, ми не змогли з'єднатися з сервером.
|
||||
bbb.mainshell.copyrightLabel2 = © 2011, BigBlueButton версія {0}, додаткова інформація на сайті: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = © 2012, BigBlueButton версія {0}, додаткова інформація на сайті: http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Відкрити вікно журналу
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Скинути розташування вікон
|
||||
bbb.oldlocalewindow.reminder1 = Можливо, що у вас застаріла версія перекладу BigBlueButton.
|
||||
@ -13,7 +13,7 @@ bbb.micSettings.playSound = Відтворити тестовий звук
|
||||
bbb.micSettings.hearFromHeadset = Ви маєте чути звук з гарнітури, а не з динаміків комп'ютера.
|
||||
bbb.micSettings.speakIntoMic = Коли ви говорите у мікрофон, то повинні побачити, як рухаються поділки.
|
||||
bbb.micSettings.changeMic = Змінити мікрофон
|
||||
bbb.micSettings.join = Реєстрація в аудіо трансляції
|
||||
bbb.micSettings.join = Приєднатися до аудіо конференції
|
||||
bbb.micSettings.cancel = Скасувати
|
||||
bbb.mainToolbar.helpBtn = Допомога
|
||||
bbb.mainToolbar.logoutBtn = Вийти
|
||||
@ -25,14 +25,16 @@ bbb.viewers.viewersGrid.nameItemRenderer = Ім'я
|
||||
bbb.viewers.viewersGrid.nameItemRenderer.nameLabel.toolTip = Ви увійшли під цим іменем.
|
||||
bbb.viewers.viewersGrid.roleItemRenderer = Роль
|
||||
bbb.viewers.viewersGrid.statusItemRenderer = Статус
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.raiseHand.toolTip = {0} просить надати слово.
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.raiseHand.toolTip = Рука піднята в {0}
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.streamIcon.toolTip = Клацніть для перегляду
|
||||
bbb.viewers.viewersGrid.statusItemRenderer.presIcon.toolTip = Ведучий
|
||||
bbb.viewers.presentBtn.toolTip = Призначити учасника ведучим.
|
||||
bbb.viewers.raiseHandBtn.toolTip = Просити надати слово
|
||||
bbb.viewers.raiseHandBtn.toolTip = Просити надати слово.
|
||||
bbb.viewers.presentBtn.label = Перемкнути ведучого
|
||||
bbb.viewers.kickUserBtn.toolTip = Видалити з конференції
|
||||
bbb.presentation.title = Презентація
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Завантажити документ для показу.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Завантажити документ для показу.
|
||||
bbb.presentation.backBtn.toolTip = Попередній слайд.
|
||||
@ -96,7 +98,7 @@ bbb.listeners.muteAllBtn.toolTip = Вимкнути всі мікрофони
|
||||
bbb.listeners.unmuteAllBtn.toolTip = Увімкнути всі мікрофони
|
||||
bbb.listeners.ejectTooltip = Видалити учасника
|
||||
bbb.listenerItem.nameLbl.toolTip = Виберіть цього учасника і клацніть, щоби вимкнути або увімкнути його мікрофон.
|
||||
bbb.listenerItem.talkImg.toolTip = Розмова
|
||||
bbb.listenerItem.talkImg.toolTip = Розмовляє
|
||||
bbb.listenerItem.lockImg.toolTip = Клацніть, щоби залишити вимкненим або увімкненим
|
||||
bbb.listenerItem.muteUnmute.toolTip = Вимкнути/увімкнути мікрофон
|
||||
bbb.publishVideo.title = Розпочати відеотрансляцію
|
||||
@ -164,6 +166,6 @@ bbb.settings.warning.label = Попередження
|
||||
bbb.settings.warning.close = Закрити це попередження
|
||||
bbb.settings.noissues = Невирішених питань не виявлено.
|
||||
bbb.settings.instructions = Прийняти Flash-запит про надання дозволу веб-камері. Якщо ви бачите і чуєте себе, то це означає, що ваш браузер був правильно налаштований. Інші варіанти наведені нижче. Пошукайте там можливі рішення.
|
||||
bbb.videodock.title = Відео Док
|
||||
bbb.videodock.title = Відеотрансляції
|
||||
bbb.zzzzz.yyyy =
|
||||
=
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = Đào tạo từ xa
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = Kết nối tới máy chủ
|
||||
bbb.mainshell.statusProgress.loading = Đang nạp {0} mô đun
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = Xin lỗi, không thể kết nối tới máy chủ.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2011, BigBlueButton phiên bản {0} - Thông tin chi tiết xem tại http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton phiên bản {0} - Thông tin chi tiết xem tại http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = Mở cửa sổ Nhật ký
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = Đặt lại Bố cục
|
||||
bbb.oldlocalewindow.reminder1 = Có thể bạn đang dùng bản dịch cũ của BigBlueButton.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = Nhấn để xin phát biểu.
|
||||
bbb.viewers.presentBtn.label = Chuyển người Trình bày
|
||||
bbb.viewers.kickUserBtn.toolTip = Nhấn để mời ra ngoài.
|
||||
bbb.presentation.title = Trình bày
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = Tải lên một tệp tài liệu để trình diễn.
|
||||
bbb.presentation.uploadPresBtn.toolTip = Tải lên một tệp tài liệu để trình diễn.
|
||||
bbb.presentation.backBtn.toolTip = Trang trước.
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = 正在连接到服务器
|
||||
bbb.mainshell.statusProgress.loading = 载入 {0} 模块
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = 抱歉,无法连接到服务器.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton 版本 {0} - 请登陆官方网站查看详情 http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton 版本 {0} - 请登陆官方网站查看详情 http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = 打开日志
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = 重置布局
|
||||
bbb.oldlocalewindow.reminder1 = 您可能正在使用旧版的BigBlueButton界面翻译.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = 举手
|
||||
bbb.viewers.presentBtn.label = 切换演讲人
|
||||
bbb.viewers.kickUserBtn.toolTip = 踢出用户
|
||||
bbb.presentation.title = 幻灯片演示
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = 上传演示文件
|
||||
bbb.presentation.uploadPresBtn.toolTip = 上传演示文件
|
||||
bbb.presentation.backBtn.toolTip = 上一页
|
||||
|
@ -1,9 +1,9 @@
|
||||
bbb.pageTitle = BigBlueButton
|
||||
bbb.mainshell.locale.version = 0.8-beta2
|
||||
bbb.mainshell.locale.version = 0.8-beta4
|
||||
bbb.mainshell.statusProgress.connecting = 正在連接到伺服器
|
||||
bbb.mainshell.statusProgress.loading = 載入 {0} 模組
|
||||
bbb.mainshell.statusProgress.cannotConnectServer = 抱歉,無法連接到伺服器.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2010, BigBlueButton 版本 {0} - 請登入官方網站查看詳細資料 http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.copyrightLabel2 = (c) 2012, BigBlueButton 版本 {0} - 請登入官方網站查看詳細資料 http://www.bigbluebutton.org/.
|
||||
bbb.mainshell.logBtn.toolTip = 打開日誌
|
||||
bbb.mainshell.resetLayoutBtn.toolTip = 重新設定版面
|
||||
bbb.oldlocalewindow.reminder1 = 您可能正在使用舊版的BigBlueButton語言翻譯.
|
||||
@ -33,6 +33,8 @@ bbb.viewers.raiseHandBtn.toolTip = 舉手
|
||||
bbb.viewers.presentBtn.label = 切换主講者
|
||||
bbb.viewers.kickUserBtn.toolTip = 踢出用户
|
||||
bbb.presentation.title = 投影片演示
|
||||
bbb.presentation.fitToWidth.toolTip =
|
||||
bbb.presentation.fitToPage.toolTip =
|
||||
bbb.presentation.uploadPresBtn = 上傳投影片檔案
|
||||
bbb.presentation.uploadPresBtn.toolTip = 上傳投影片檔案
|
||||
bbb.presentation.backBtn.toolTip = 上一頁
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" ?>
|
||||
<config>
|
||||
<localeversion suppressWarning="false">0.8-beta2</localeversion>
|
||||
<localeversion suppressWarning="false">0.8-beta4</localeversion>
|
||||
<version>VERSION</version>
|
||||
<help url="http://HOST/help.html"/>
|
||||
<porttest host="HOST" application="video"/>
|
||||
@ -51,23 +51,23 @@
|
||||
|
||||
<module name="VideoconfModule" url="VideoconfModule.swf?v=VERSION"
|
||||
uri="rtmp://HOST/video"
|
||||
dependsOn="ViewersModule"
|
||||
videoQuality="70"
|
||||
presenterShareOnly="false"
|
||||
resolutions="320x240,640x480,1280x720"
|
||||
autoStart="false"
|
||||
showButton="true"
|
||||
showCloseButton="true"
|
||||
publishWindowVisible="true"
|
||||
viewerWindowMaxed="false"
|
||||
viewerWindowLocation="top"
|
||||
camKeyFrameInterval="5"
|
||||
camModeFps="15"
|
||||
camQualityBandwidth="0"
|
||||
camQualityPicture="50"
|
||||
enableH264="false"
|
||||
h264Level="2.1"
|
||||
h264Profile="main"
|
||||
dependson = "ViewersModule"
|
||||
videoQuality = "100"
|
||||
presenterShareOnly = "false"
|
||||
resolutions = "320x240,640x480,1280x720"
|
||||
autoStart = "false"
|
||||
showButton = "true"
|
||||
showCloseButton = "true"
|
||||
publishWindowVisible = "true"
|
||||
viewerWindowMaxed = "false"
|
||||
viewerWindowLocation = "top"
|
||||
camKeyFrameInterval = "30"
|
||||
camModeFps = "10"
|
||||
camQualityBandwidth = "0"
|
||||
camQualityPicture = "90"
|
||||
enableH264 = "false"
|
||||
h264Level = "2.1"
|
||||
h264Profile = "main"
|
||||
/>
|
||||
|
||||
<module name="WhiteboardModule" url="WhiteboardModule.swf?v=VERSION"
|
||||
|
@ -30,8 +30,8 @@ package org.bigbluebutton.common
|
||||
function removeRawChild(child:DisplayObject):void;
|
||||
function doesContain(child:DisplayObject):Boolean;
|
||||
function acceptOverlayCanvas(overlay:IBbbCanvas):void;
|
||||
function moveCanvas(x:int, y:int):void;
|
||||
function zoomCanvas(width:int, height:int):void;
|
||||
function moveCanvas(x:Number, y:Number):void;
|
||||
function zoomCanvas(width:Number, height:Number):void;
|
||||
function showCanvas(show:Boolean):void;
|
||||
}
|
||||
}
|
@ -21,6 +21,12 @@ package org.bigbluebutton.common
|
||||
[Bindable]
|
||||
public class Images
|
||||
{
|
||||
[Embed(source="assets/images/fit-to-page.png")]
|
||||
public var fitToPage:Class;
|
||||
|
||||
[Embed(source="assets/images/fit-to-width.png")]
|
||||
public var fitToWidth:Class;
|
||||
|
||||
[Embed(source="assets/images/green-circle.png")]
|
||||
public var greenCircle:Class;
|
||||
|
||||
|
BIN
bigbluebutton-client/src/org/bigbluebutton/common/assets/images/fit-to-page.png
Executable file
BIN
bigbluebutton-client/src/org/bigbluebutton/common/assets/images/fit-to-page.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 440 B |
BIN
bigbluebutton-client/src/org/bigbluebutton/common/assets/images/fit-to-width.png
Executable file
BIN
bigbluebutton-client/src/org/bigbluebutton/common/assets/images/fit-to-width.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 485 B |
@ -97,7 +97,7 @@
|
||||
*/
|
||||
if (!scrollBarWorkaround) {
|
||||
scrollBarWorkaround = true;
|
||||
var blankStr:String = " \n";
|
||||
var blankStr:String = " ";
|
||||
var shimMsg:ChatMessage = new ChatMessage();
|
||||
shimMsg.lastSenderId = blankStr;
|
||||
shimMsg.senderId = blankStr;
|
||||
@ -111,15 +111,17 @@
|
||||
shimMsg.translatedColor = 0xCECECE;
|
||||
shimMsg.senderTime = blankStr;
|
||||
shimMsg.time = blankStr;
|
||||
shimMsg.lastTime = blankStr;
|
||||
shimMsg.lastTime = blankStr + "\n";
|
||||
|
||||
// Add to blank lines to force the last message to be displayed.
|
||||
messages.addItem(shimMsg);
|
||||
messages.addItem(shimMsg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the REAL message before the shim message above.
|
||||
*/
|
||||
messages.addItemAt(msg, messages.length - 1);
|
||||
messages.addItemAt(msg, messages.length - 2);
|
||||
|
||||
/**
|
||||
* Trigger to force the scrollbar to show the last message.
|
||||
@ -136,7 +138,6 @@
|
||||
chatMessagesList.invalidateSize();
|
||||
chatMessagesList.invalidateDisplayList();
|
||||
chatMessagesList.scrollToIndex(messages.length);
|
||||
chatMessagesList.verticalScrollPosition = chatMessagesList.maxVerticalScrollPosition;
|
||||
chatMessagesList.validateDisplayList();
|
||||
chatMessagesList.validateNow();
|
||||
}
|
||||
|
@ -18,15 +18,12 @@
|
||||
*/
|
||||
package org.bigbluebutton.modules.present.business {
|
||||
import com.asfusion.mate.events.Dispatcher;
|
||||
|
||||
import flash.events.AsyncErrorEvent;
|
||||
import flash.events.NetStatusEvent;
|
||||
import flash.events.SyncEvent;
|
||||
import flash.net.NetConnection;
|
||||
import flash.net.Responder;
|
||||
import flash.net.SharedObject;
|
||||
|
||||
import mx.controls.Alert;
|
||||
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.core.managers.UserManager;
|
||||
import org.bigbluebutton.main.events.BBBEvent;
|
||||
@ -101,13 +98,13 @@ package org.bigbluebutton.modules.present.business {
|
||||
|
||||
private function join() : void {
|
||||
_presentationSO = SharedObject.getRemote(SHAREDOBJECT, url, false);
|
||||
_presentationSO.client = this;
|
||||
_presentationSO.addEventListener(SyncEvent.SYNC, syncHandler);
|
||||
_presentationSO.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
|
||||
_presentationSO.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
|
||||
_presentationSO.client = this;
|
||||
_presentationSO.connect(nc);
|
||||
LogUtil.debug(NAME + ": PresentationModule is connected to Shared object");
|
||||
notifyConnectionStatusListener(true);
|
||||
getPresentationInfo();
|
||||
|
||||
}
|
||||
|
||||
private function leave():void {
|
||||
@ -219,6 +216,11 @@ package org.bigbluebutton.modules.present.business {
|
||||
widthRatio,
|
||||
heightRatio
|
||||
); //_netConnection.call
|
||||
|
||||
presenterViewedRegionX = xOffset;
|
||||
presenterViewedRegionY = yOffset;
|
||||
presenterViewedRegionW = widthRatio;
|
||||
presenterViewedRegionH = heightRatio;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -236,6 +238,42 @@ package org.bigbluebutton.modules.present.business {
|
||||
dispatcher.dispatchEvent(e);
|
||||
}
|
||||
|
||||
/***
|
||||
* A hack for the viewer to sync with the presenter. Have the viewer query the presenter for it's x,y,width and height info.
|
||||
*/
|
||||
private var presenterViewedRegionX:Number = 0;
|
||||
private var presenterViewedRegionY:Number = 0;
|
||||
private var presenterViewedRegionW:Number = 100;
|
||||
private var presenterViewedRegionH:Number = 100;
|
||||
|
||||
private function queryPresenterForSlideInfo():void {
|
||||
LogUtil.debug("Query for slide info");
|
||||
_presentationSO.send("whatIsTheSlideInfo", UserManager.getInstance().getConference().getMyUserId());
|
||||
}
|
||||
|
||||
public function whatIsTheSlideInfo(userid:Number):void {
|
||||
LogUtil.debug("Rx Query for slide info");
|
||||
if (UserManager.getInstance().getConference().amIPresenter()) {
|
||||
LogUtil.debug("User Query for slide info");
|
||||
_presentationSO.send("whatIsTheSlideInfoReply", userid, presenterViewedRegionX, presenterViewedRegionY, presenterViewedRegionW, presenterViewedRegionH);
|
||||
}
|
||||
}
|
||||
|
||||
public function whatIsTheSlideInfoReply(userId:Number, xOffset:Number, yOffset:Number, widthRatio:Number, heightRatio:Number):void{
|
||||
LogUtil.debug("Rx whatIsTheSlideInfoReply");
|
||||
if (UserManager.getInstance().getConference().amIThisUser(userId)) {
|
||||
LogUtil.debug("Got reply for Query for slide info");
|
||||
var e:MoveEvent = new MoveEvent(MoveEvent.CUR_SLIDE_SETTING);
|
||||
e.xOffset = xOffset;
|
||||
e.yOffset = yOffset;
|
||||
e.slideToCanvasWidthRatio = widthRatio;
|
||||
e.slideToCanvasHeightRatio = heightRatio;
|
||||
dispatcher.dispatchEvent(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sends an event out for the clients to maximize the presentation module
|
||||
*
|
||||
@ -312,20 +350,14 @@ package org.bigbluebutton.modules.present.business {
|
||||
dispatcher.dispatchEvent(new MadePresenterEvent(MadePresenterEvent.SWITCH_TO_VIEWER_MODE));
|
||||
}
|
||||
|
||||
if (result.presentation.sharing) {
|
||||
currentSlide = Number(result.presentation.slide);
|
||||
LogUtil.debug("The presenter has shared slides and showing slide " + currentSlide);
|
||||
var shareEvent:UploadEvent = new UploadEvent(UploadEvent.PRESENTATION_READY);
|
||||
shareEvent.presentationName = String(result.presentation.currentPresentation);
|
||||
dispatcher.dispatchEvent(shareEvent);
|
||||
}
|
||||
if (result.presentation.xOffset) {
|
||||
LogUtil.debug("Sending presenters slide settings");
|
||||
var e:MoveEvent = new MoveEvent(MoveEvent.MOVE);
|
||||
e.xOffset = result.presentation.xOffset;
|
||||
e.yOffset = result.presentation.yOffset;
|
||||
e.slideToCanvasWidthRatio = result.presentation.widthRatio;
|
||||
e.slideToCanvasHeightRatio = result.presentation.heightRatio;
|
||||
var e:MoveEvent = new MoveEvent(MoveEvent.CUR_SLIDE_SETTING);
|
||||
e.xOffset = Number(result.presentation.xOffset);
|
||||
e.yOffset = Number(result.presentation.yOffset);
|
||||
e.slideToCanvasWidthRatio = Number(result.presentation.widthRatio);
|
||||
e.slideToCanvasHeightRatio = Number(result.presentation.heightRatio);
|
||||
LogUtil.debug("****presenter settings [" + e.xOffset + "," + e.yOffset + "," + e.slideToCanvasWidthRatio + "," + e.slideToCanvasHeightRatio + "]");
|
||||
dispatcher.dispatchEvent(e);
|
||||
}
|
||||
if (result.presentations) {
|
||||
@ -338,6 +370,14 @@ package org.bigbluebutton.modules.present.business {
|
||||
|
||||
// Force switching the presenter.
|
||||
triggerSwitchPresenter();
|
||||
|
||||
if (result.presentation.sharing) {
|
||||
currentSlide = Number(result.presentation.slide);
|
||||
LogUtil.debug("The presenter has shared slides and showing slide " + currentSlide);
|
||||
var shareEvent:UploadEvent = new UploadEvent(UploadEvent.PRESENTATION_READY);
|
||||
shareEvent.presentationName = String(result.presentation.currentPresentation);
|
||||
dispatcher.dispatchEvent(shareEvent);
|
||||
}
|
||||
},
|
||||
// status - On error occurred
|
||||
function(status:Object):void {
|
||||
@ -559,12 +599,22 @@ package org.bigbluebutton.modules.present.business {
|
||||
}
|
||||
}
|
||||
|
||||
private function syncHandler(event:SyncEvent):void {
|
||||
// var statusCode:String = event.info.code;
|
||||
LogUtil.debug("!!!!! Presentation sync handler - " + event.changeList.length );
|
||||
notifyConnectionStatusListener(true);
|
||||
getPresentationInfo();
|
||||
queryPresenterForSlideInfo();
|
||||
}
|
||||
|
||||
private function netStatusHandler (event:NetStatusEvent):void {
|
||||
var statusCode:String = event.info.code;
|
||||
|
||||
LogUtil.debug("!!!!! Presentation status handler - " + event.info.code );
|
||||
switch (statusCode) {
|
||||
case "NetConnection.Connect.Success":
|
||||
LogUtil.debug(NAME + ":Connection Success");
|
||||
notifyConnectionStatusListener(true);
|
||||
getPresentationInfo();
|
||||
break;
|
||||
case "NetConnection.Connect.Failed":
|
||||
addError("PresentSO connection failed");
|
||||
|
@ -23,8 +23,8 @@ package org.bigbluebutton.modules.present.events
|
||||
public class DisplaySlideEvent extends Event
|
||||
{
|
||||
public static const DISPLAY_SLIDE_EVENT:String = "DISPLAY_SLIDE_EVENT";
|
||||
public var slideWidth:int = 0;
|
||||
public var slideHeight:int = 0;
|
||||
public var slideWidth:Number = 0;
|
||||
public var slideHeight:Number = 0;
|
||||
|
||||
public function DisplaySlideEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true)
|
||||
{
|
||||
|
@ -22,7 +22,8 @@ package org.bigbluebutton.modules.present.events
|
||||
|
||||
public class MoveEvent extends Event
|
||||
{
|
||||
public static const MOVE:String = "MOVE";
|
||||
public static const MOVE:String = "MOVE_SLIDE";
|
||||
public static const CUR_SLIDE_SETTING:String = "CUR_SLIDE_SETTING";
|
||||
|
||||
public var xOffset:Number;
|
||||
public var yOffset:Number;
|
||||
|
@ -18,6 +18,7 @@
|
||||
*/
|
||||
package org.bigbluebutton.modules.present.events
|
||||
{
|
||||
import org.bigbluebutton.modules.present.managers.Slide;
|
||||
import flash.events.Event;
|
||||
import flash.utils.ByteArray;
|
||||
|
||||
@ -28,6 +29,7 @@ package org.bigbluebutton.modules.present.events
|
||||
|
||||
public var slideNumber:Number;
|
||||
public var slide:ByteArray;
|
||||
public var page:Slide;
|
||||
|
||||
public function SlideEvent(type:String)
|
||||
{
|
||||
|
@ -23,11 +23,12 @@ package org.bigbluebutton.modules.present.events
|
||||
public class WindowResizedEvent extends Event
|
||||
{
|
||||
public static const PRESENTATION_WINDOW_RESIZED_EVENT:String = "PRESENTATION_WINDOW_RESIZED_EVENT";
|
||||
public var width:int = 450;
|
||||
public var height:int = 450;
|
||||
public var width:Number = 450;
|
||||
public var height:Number = 450;
|
||||
public var fitToPage:Boolean = true;
|
||||
|
||||
public var old_width:int = 450;
|
||||
public var old_height:int = 450;
|
||||
public var old_width:Number = 450;
|
||||
public var old_height:Number = 450;
|
||||
|
||||
public function WindowResizedEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true)
|
||||
{
|
||||
|
@ -45,8 +45,7 @@ package org.bigbluebutton.modules.present.managers
|
||||
//format: presentationNames = [{label:"00"}, {label:"11"}, {label:"22"} ];
|
||||
[Bindable] public var presentationNames:Array = new Array();
|
||||
|
||||
public function PresentManager()
|
||||
{
|
||||
public function PresentManager() {
|
||||
globalDispatcher = new Dispatcher();
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,9 @@ package org.bigbluebutton.modules.present.managers
|
||||
import flash.net.URLLoaderDataFormat;
|
||||
import flash.net.URLRequest;
|
||||
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
|
||||
[Bindable]
|
||||
public class Slide
|
||||
{
|
||||
private var _loader:URLLoader;
|
||||
@ -32,6 +35,8 @@ package org.bigbluebutton.modules.present.managers
|
||||
private var _slideNum:Number;
|
||||
private var _thumbUri:String;
|
||||
|
||||
|
||||
|
||||
public function Slide(slideNum:Number, slideUri:String, thumbUri:String)
|
||||
{
|
||||
_slideNum = slideNum;
|
||||
@ -66,5 +71,6 @@ package org.bigbluebutton.modules.present.managers
|
||||
return _slideNum;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -51,6 +51,7 @@ package org.bigbluebutton.modules.present.managers
|
||||
var e:SlideEvent = new SlideEvent(SlideEvent.SLIDE_LOADED);
|
||||
e.slide = slide;
|
||||
e.slideNumber = slideNum;
|
||||
e.page = slides[slideNum];
|
||||
dispatcher.dispatchEvent(e);
|
||||
}
|
||||
}
|
||||
|
@ -52,8 +52,8 @@
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{PresentModuleEvent.START_MODULE}" >
|
||||
<MethodInvoker generator="{PresentProxy}" method="connect" arguments="{event}" />
|
||||
<MethodInvoker generator="{PresentManager}" method="handleStartModuleEvent" arguments="{event}"/>
|
||||
<MethodInvoker generator="{PresentProxy}" method="connect" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{PresentModuleEvent.STOP_MODULE}" >
|
||||
|
@ -47,15 +47,12 @@
|
||||
<![CDATA[
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import com.asfusion.mate.events.Dispatcher;
|
||||
|
||||
import mx.collections.*;
|
||||
import mx.events.FlexEvent;
|
||||
import mx.events.ValidationResultEvent;
|
||||
import mx.managers.PopUpManager;
|
||||
import mx.utils.*;
|
||||
import mx.validators.*;
|
||||
|
||||
|
||||
import org.bigbluebutton.common.Images;
|
||||
import org.bigbluebutton.modules.present.events.RemovePresentationEvent;
|
||||
import org.bigbluebutton.modules.present.events.UploadEvent;
|
||||
@ -180,7 +177,7 @@
|
||||
progBarLbl.visible = true;
|
||||
progressBar.visible = true;
|
||||
|
||||
okCancelBtn.visible = false;
|
||||
okCancelBtn.visible = true;
|
||||
selectBtn.enabled = false;
|
||||
uploadBtn.enabled = false;
|
||||
fileTxtInput.enabled = false;
|
||||
@ -190,7 +187,6 @@
|
||||
deleteBtn.visible = false;
|
||||
showBtn.visible = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private function uploadProgressUpdate(e:UploadEvent):void{
|
||||
@ -203,8 +199,8 @@
|
||||
}
|
||||
|
||||
private function uploadComplete(e:UploadEvent):void{
|
||||
progressLbl.text = ResourceUtil.getInstance().getString('bbb.presentation.uploadcomplete')
|
||||
progressBar.label = ResourceUtil.getInstance().getString('bbb.presentation.uploadwindow.uploadsuccessful');
|
||||
progressLbl.text = ResourceUtil.getInstance().getString('bbb.presentation.uploadcomplete');
|
||||
progressBar.label = ResourceUtil.getInstance().getString('bbb.presentation.uploadcomplete');
|
||||
progressBar.setProgress(0, 100);
|
||||
progressBar.validateNow();
|
||||
progressLbl.validateNow();
|
||||
@ -221,7 +217,7 @@
|
||||
}
|
||||
|
||||
private function handleOfficeDocumentConversionSuccess(e:UploadEvent):void {
|
||||
progressLbl.text = ResourceUtil.getInstance().getString('bbb.presentation.document.converted')
|
||||
progressLbl.text = ResourceUtil.getInstance().getString('bbb.presentation.document.converted');
|
||||
progressBar.label = ResourceUtil.getInstance().getString('bbb.presentation.document.converted');
|
||||
progressBar.setProgress(0, 100);
|
||||
progressBar.validateNow();
|
||||
@ -230,7 +226,7 @@
|
||||
|
||||
private function handleSupportedDocument(e:UploadEvent):void {
|
||||
LogUtil.debug("handleSupportedDocument");
|
||||
progressLbl.text = ResourceUtil.getInstance().getString('bbb.presentation.document.supported')
|
||||
progressLbl.text = ResourceUtil.getInstance().getString('bbb.presentation.document.supported');
|
||||
progressBar.label = ResourceUtil.getInstance().getString('bbb.presentation.document.supported');
|
||||
progressBar.setProgress(0, 100);
|
||||
progressBar.validateNow();
|
||||
@ -323,7 +319,7 @@
|
||||
enabled="false" icon="{bulletGoIcon}" x="466" y="9"/>
|
||||
|
||||
<mx:Label id="progBarLbl" text="{ResourceUtil.getInstance().getString('bbb.fileupload.progBarLbl')}" x="21" y="75" visible="false"/>
|
||||
<mx:ProgressBar id="progressBar" mode="manual" label="" labelPlacement="center" width="460" y="75" x="87" visible="false"/>
|
||||
<mx:ProgressBar id="progressBar" mode="manual" label="{ResourceUtil.getInstance().getString('bbb.fileupload.progBarLbl')}" labelPlacement="center" width="460" y="75" x="87" visible="false"/>
|
||||
|
||||
<mx:Label id="presentationNamesLb" text="{ResourceUtil.getInstance().getString('bbb.fileupload.presentationNamesLbl')}" x="50" y="40"/>
|
||||
<mx:ComboBox id="presentationNamesCombobox" width="365" x="50" y="66" dataProvider="{presentationNamesAC}"/>
|
||||
|
@ -0,0 +1,18 @@
|
||||
package org.bigbluebutton.modules.present.ui.views
|
||||
{
|
||||
public class PresentOptions
|
||||
{
|
||||
[Bindable]
|
||||
public var showWindowControls:Boolean = true;
|
||||
|
||||
public function PresentOptions()
|
||||
{
|
||||
var vxml:XML = BBB.getConfigForModule("PresentationModule");
|
||||
if (vxml != null) {
|
||||
if (vxml.@showWindowControls != undefined) {
|
||||
showWindowControls = (vxml.@showWindowControls.toString().toUpperCase() == "TRUE") ? true : false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -28,16 +28,17 @@
|
||||
xmlns:containers="flexlib.containers.*"
|
||||
xmlns:mate="http://mate.asfusion.com/"
|
||||
paddingBottom="0" paddingTop="0" paddingLeft="0" paddingRight="0"
|
||||
showCloseButton="false"
|
||||
showCloseButton="false" layout="absolute"
|
||||
verticalScrollPolicy="off"
|
||||
horizontalScrollPolicy="off"
|
||||
showControls="true"
|
||||
showControls="true" resize="maximizeHandler()"
|
||||
backgroundColor="#efefef"
|
||||
implements="org.bigbluebutton.common.IBbbModuleWindow"
|
||||
creationComplete="onCreationComplete()"
|
||||
width="{DEFAULT_WINDOW_WIDTH}" height="{DEFAULT_WINDOW_HEIGHT}"
|
||||
x="{DEFAULT_X_POSITION}" y="{DEFAULT_Y_POSITION}"
|
||||
title="{currentPresentation}" keyUp="onKeyUp(event)"
|
||||
resize="maximizeHandler()" xmlns:views="org.bigbluebutton.modules.present.ui.views.*">
|
||||
xmlns:views="org.bigbluebutton.modules.present.ui.views.*">
|
||||
|
||||
<mate:Dispatcher id="globalDispatcher" />
|
||||
<mate:Listener type="{MadePresenterEvent.SWITCH_TO_PRESENTER_MODE}" method="becomePresenter" />
|
||||
@ -54,10 +55,8 @@
|
||||
<mx:Script>
|
||||
<![CDATA[
|
||||
import flash.geom.Point;
|
||||
|
||||
import flexlib.containers.DockableToolBar;
|
||||
import flexlib.mdi.events.MDIWindowEvent;
|
||||
|
||||
import mx.binding.utils.BindingUtils;
|
||||
import mx.collections.ArrayCollection;
|
||||
import mx.containers.TitleWindow;
|
||||
@ -68,9 +67,9 @@
|
||||
import mx.events.ResizeEvent;
|
||||
import mx.managers.PopUpManager;
|
||||
import mx.rpc.events.*;
|
||||
|
||||
import org.bigbluebutton.common.IBbbCanvas;
|
||||
import org.bigbluebutton.common.Images;
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.common.events.LocaleChangeEvent;
|
||||
import org.bigbluebutton.main.events.MadePresenterEvent;
|
||||
import org.bigbluebutton.main.views.MainCanvas;
|
||||
@ -92,7 +91,6 @@
|
||||
import org.bigbluebutton.util.i18n.ResourceUtil;
|
||||
|
||||
public static const TITLE:String = "Presentation";
|
||||
// private var presenterName:String = "";
|
||||
private static const NEXT_BUTTON:String = "Next";
|
||||
private static const PREVIOUS_BUTTON:String = "Previous";
|
||||
private static const GOTO_PAGE_BUTTON:String = "Go to Page..."
|
||||
@ -103,26 +101,29 @@
|
||||
[Bindable] private var forwardIcon:Class = images.forward;
|
||||
[Bindable] private var backwardIcon:Class = images.backward;
|
||||
[Bindable] private var magnifierIcon:Class = images.magnifier;
|
||||
[Bindable] public var fitToWidthIcon:Class = images.magnifier;
|
||||
[Bindable] public var fitToWidthIcon:Class = images.fitToWidth;
|
||||
[Bindable] public var fitToPageIcon:Class = images.fitToPage;
|
||||
|
||||
[Bindable] private var thumbY:Number;
|
||||
public var uploadWindow:FileUploadWindow = null;
|
||||
private var slideManager:SlideManager = new SlideManager();
|
||||
private var pageDialog:GotoPageDialog;
|
||||
|
||||
[Bindable] private var DEFAULT_X_POSITION:int = 237;
|
||||
[Bindable] private var DEFAULT_Y_POSITION:int = 0;
|
||||
[Bindable] private var DEFAULT_X_POSITION:Number = 237;
|
||||
[Bindable] private var DEFAULT_Y_POSITION:Number = 0;
|
||||
|
||||
[Bindable] private var CONTROL_BAR_HEIGHT:int = 45;
|
||||
private static const TOP_WINDOW_BORDER:int = 30;
|
||||
private static const WIDTH_PADDING:int = 5;
|
||||
[Bindable] private var CONTROL_BAR_HEIGHT:Number = 45;
|
||||
private static const TOP_WINDOW_BORDER:Number = 30;
|
||||
private static const WIDTH_PADDING:Number = 6;
|
||||
|
||||
[Bindable] private var DEFAULT_WINDOW_WIDTH:int = 510;
|
||||
[Bindable] private var DEFAULT_WINDOW_HEIGHT:int = 451;
|
||||
[Bindable] private var DEFAULT_WINDOW_WIDTH:Number = 510;
|
||||
[Bindable] private var DEFAULT_WINDOW_HEIGHT:Number = 451;
|
||||
[Bindable] private var viewportW:Number = 451;
|
||||
[Bindable] private var viewportH:Number = 451;
|
||||
|
||||
// Init to the size of the window.
|
||||
private var currentSlideWidth:int = DEFAULT_WINDOW_WIDTH;
|
||||
private var currentSlideHeight:int = DEFAULT_WINDOW_HEIGHT;
|
||||
private var currentSlideWidth:Number = DEFAULT_WINDOW_WIDTH;
|
||||
private var currentSlideHeight:Number = DEFAULT_WINDOW_HEIGHT;
|
||||
|
||||
private var mouseDown:Boolean = false;
|
||||
[Bindable] private var isPresenter:Boolean = false;
|
||||
@ -132,33 +133,17 @@
|
||||
private var externalButtons:ArrayCollection = new ArrayCollection();
|
||||
|
||||
private function maximizeHandler():void {
|
||||
// LogUtil.debug("Max handler");
|
||||
// When the window is maximized, we want to resize the slide maintaining the aspect ratio.
|
||||
fitSlideToWindowMaintainingAspectRatio();
|
||||
|
||||
this.y = 0;
|
||||
if (this.maximized) {
|
||||
callLater(restore);
|
||||
var timer:Timer = new Timer(500, 1);
|
||||
timer.addEventListener(TimerEvent.TIMER, adjustPosition);
|
||||
timer.start();
|
||||
}
|
||||
stage.focus = this; //Remove focus from the maximize button in case the user presses the space bar, the window doesn't get maximized again.
|
||||
|
||||
}
|
||||
|
||||
private function adjustPosition(t:TimerEvent):void{
|
||||
if ((DEFAULT_X_POSITION + this.width) > this.parent.width) {
|
||||
// Adjust presentation window so that it doesn't go over the side of the browser window
|
||||
this.x = this.parent.width - this.width;
|
||||
} else {
|
||||
// Move window so that it won't overlap with Participant's window.
|
||||
this.x = ((Capabilities.screenResolutionX / 20) * 3) + 10;
|
||||
}
|
||||
//Remove focus from the maximize button in case the user presses the space bar, the window doesn't get maximized again.
|
||||
stage.focus = this;
|
||||
}
|
||||
|
||||
private function onCreationComplete():void{
|
||||
thumbY = this.height - 160;
|
||||
addEventListener(MDIWindowEvent.RESIZE_END, onResizeEndEvent);
|
||||
|
||||
this.addEventListener(MDIWindowEvent.RESIZE_END, onResizeEndEvent);
|
||||
slideView.addEventListener(ListEvent.ITEM_ROLL_OVER, onItemRollOver);
|
||||
}
|
||||
|
||||
@ -167,58 +152,33 @@
|
||||
}
|
||||
|
||||
private function onResizeEndEvent(event:MDIWindowEvent):void {
|
||||
if (event.window == this) {
|
||||
// LogUtil.debug("onResizeEndEvent");
|
||||
fitSlideToWindowMaintainingAspectRatio();
|
||||
}
|
||||
}
|
||||
|
||||
[Bindable] private var fitToPage:Boolean = true;
|
||||
|
||||
private function fitSlideToWindowMaintainingAspectRatio():void {
|
||||
if (this.minimized) return;
|
||||
|
||||
// Initialize to snap to take the width of the window as the size of the slide.
|
||||
var slideWidth:int = this.width;
|
||||
var slideHeight:int = this.height;
|
||||
|
||||
// If the height is smaller than the width, we use the height as the
|
||||
// base to determine the size of the slide.
|
||||
if (this.height < this.width) {
|
||||
slideHeight = this.height - CONTROL_BAR_HEIGHT - TOP_WINDOW_BORDER;
|
||||
slideWidth = ((currentSlideWidth * slideHeight)/currentSlideHeight);
|
||||
} else {
|
||||
slideWidth = this.width - WIDTH_PADDING;
|
||||
slideHeight = ((currentSlideHeight * slideWidth)/currentSlideWidth);
|
||||
}
|
||||
|
||||
this.width = slideWidth + WIDTH_PADDING;
|
||||
this.height = slideHeight + CONTROL_BAR_HEIGHT + TOP_WINDOW_BORDER;
|
||||
|
||||
// Test if the height and width are bigger than it's parent. If so, resize
|
||||
// to make it fit inside so that the controls will still be visible.
|
||||
if (this.height > this.parent.height) {
|
||||
this.height = this.parent.height;
|
||||
slideHeight = this.height - CONTROL_BAR_HEIGHT - TOP_WINDOW_BORDER;
|
||||
slideWidth = ((currentSlideWidth * slideHeight)/currentSlideHeight);
|
||||
}
|
||||
|
||||
if (this.width > this.parent.width) {
|
||||
this.width = this.parent.width;
|
||||
slideWidth = this.width - WIDTH_PADDING;
|
||||
slideHeight = ((currentSlideHeight * slideWidth)/currentSlideWidth);
|
||||
}
|
||||
sendWindowResizedEvent(slideWidth, slideHeight);
|
||||
// Send the available space to display the slide.
|
||||
sendWindowResizedEvent((this.width - WIDTH_PADDING), (this.height - CONTROL_BAR_HEIGHT - TOP_WINDOW_BORDER));
|
||||
}
|
||||
|
||||
/*
|
||||
* Notify the slide container telling it the available dimensions to display the slide.
|
||||
*/
|
||||
private function sendWindowResizedEvent(slideWidth:int, slideHeight:int):void {
|
||||
private function sendWindowResizedEvent(parentWidth:Number, parentHeight:Number):void {
|
||||
var dispatcher:Dispatcher = new Dispatcher();
|
||||
var dispEvent:WindowResizedEvent = new WindowResizedEvent(WindowResizedEvent.PRESENTATION_WINDOW_RESIZED_EVENT);
|
||||
dispEvent.width = slideWidth;
|
||||
dispEvent.height = slideHeight;
|
||||
dispEvent.width = parentWidth;
|
||||
dispEvent.height = parentHeight;
|
||||
dispEvent.fitToPage = fitToPage;
|
||||
dispEvent.old_width = this.slideView.width;
|
||||
dispEvent.old_height = this.slideView.height;
|
||||
dispatcher.dispatchEvent(dispEvent);
|
||||
|
||||
slideView.onParentResized(parentWidth, parentHeight);
|
||||
}
|
||||
|
||||
private function handleDisplaySlideEvent(event:DisplaySlideEvent):void {
|
||||
@ -256,16 +216,8 @@
|
||||
displaySlideNumber(slideView.selectedSlide + 1);
|
||||
}
|
||||
|
||||
private function showThumbsXXX():void {
|
||||
if (isPresenter){
|
||||
//readjust the position of the thumbnails in case the window was resized
|
||||
//Note: this is necessary because the MDIWindow does not let you listen to the resize() event!
|
||||
thumbY = this.height - 150;
|
||||
}
|
||||
}
|
||||
|
||||
private function onSliderZoom():void {
|
||||
dispatchResizeEvent(zoomSlider.value);
|
||||
slideView.onZoomSlide(zoomSlider.value);
|
||||
}
|
||||
|
||||
private function dispatchResizeEvent(newSize:int):void {
|
||||
@ -276,7 +228,7 @@
|
||||
|
||||
private function onResetZoom():void {
|
||||
zoomSlider.value = 100;
|
||||
dispatchResizeEvent(zoomSlider.value);
|
||||
slideView.onZoomSlide(zoomSlider.value);
|
||||
}
|
||||
|
||||
private function handleSlideResizedEvent(e:SlideResizedEvent):void{
|
||||
@ -304,22 +256,11 @@
|
||||
if (presentationLoaded) {
|
||||
displaySlideNumber(slideView.selectedSlide + 1);
|
||||
displaySlideNavigationControls(isPresenter);
|
||||
showUploadPresentationLabel(false);
|
||||
} else {
|
||||
if (isPresenter)
|
||||
showUploadPresentationLabel(true);
|
||||
else
|
||||
showUploadPresentationLabel(false);
|
||||
}
|
||||
|
||||
setPresentersName(presentersName);
|
||||
notifyComponentsOfPresenterChange(isPresenter, presentersName);
|
||||
}
|
||||
|
||||
private function setPresentersName(name:String):void {
|
||||
// if (name != null) presenterName = name;
|
||||
}
|
||||
|
||||
private function handlePresentationLoadedEvent(e:PresentationEvent):void {
|
||||
if (e.presentationName == currentPresentation) return;
|
||||
currentPresentation = e.presentationName;
|
||||
@ -328,8 +269,6 @@
|
||||
slideView.visible = true;
|
||||
|
||||
if (slideManager != null) slideManager.clear();
|
||||
|
||||
showUploadPresentationLabel(false);
|
||||
displaySlideNumber(slideView.selectedSlide + 1);
|
||||
if (isPresenter) {
|
||||
displaySlideNavigationControls(true);
|
||||
@ -338,16 +277,15 @@
|
||||
dispatchEvent(new SlideEvent(SlideEvent.LOAD_CURRENT_SLIDE));
|
||||
}
|
||||
onResetZoom();
|
||||
reinitWindowToDefaultSize();
|
||||
//this.setFocus();
|
||||
}
|
||||
|
||||
private function displaySlideNavigationControls(show:Boolean):void {
|
||||
backButton.visible = show;
|
||||
forwardButton.visible = show;
|
||||
zoomSlider.visible = show;
|
||||
btnResetZoom.visible = show;
|
||||
btnSlideNum.visible = show;
|
||||
btnFitToWidth.visible = show;
|
||||
btnFitToPage.visible = show;
|
||||
setButtonsVisibility(show);
|
||||
}
|
||||
|
||||
@ -447,28 +385,9 @@
|
||||
slideView.selectedSlide = 0;
|
||||
btnSlideNum.label = "";
|
||||
displaySlideNavigationControls(false);
|
||||
showUploadPresentationLabel(false);
|
||||
|
||||
// Change the title of the window.
|
||||
currentPresentation = ResourceUtil.getInstance().getString('bbb.presentation.title');
|
||||
reinitWindowToDefaultSize();
|
||||
}
|
||||
|
||||
private function reinitWindowToDefaultSize():void {
|
||||
if ((this.width < DEFAULT_WINDOW_WIDTH) || (this.height < DEFAULT_WINDOW_HEIGHT)) {
|
||||
currentSlideWidth = DEFAULT_WINDOW_WIDTH;
|
||||
currentSlideHeight = DEFAULT_WINDOW_HEIGHT;
|
||||
this.width = DEFAULT_WINDOW_WIDTH;
|
||||
this.height = DEFAULT_WINDOW_HEIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
private function showUploadPresentationLabel(show:Boolean):void {
|
||||
if (!show) {
|
||||
currentState = "";
|
||||
} else {
|
||||
currentState = "dispUploadPresLabel";
|
||||
}
|
||||
}
|
||||
|
||||
private function gotoPreviousSlide():void {
|
||||
@ -492,8 +411,10 @@
|
||||
}
|
||||
|
||||
private function addOverlayCanvas(e:AddOverlayCanvasEvent):void{
|
||||
slideView.acceptOverlayCanvas(e.canvas);
|
||||
LogUtil.debug("OVERLAYING WHITEBOARD CANVAS");
|
||||
e.canvas.acceptOverlayCanvas(slideView);
|
||||
slideView.acceptOverlayCanvas(e.canvas);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -510,7 +431,7 @@
|
||||
* Sets the visibility of buttons added throught the Presentation API
|
||||
*/
|
||||
private function setButtonsVisibility(visible:Boolean):void{
|
||||
for (var i:int = 0; i<externalButtons.length; i++){
|
||||
for (var i:int = 0; i < externalButtons.length; i++){
|
||||
(externalButtons.getItemAt(i) as IPresentationButton).setButtonVisibility(visible);
|
||||
}
|
||||
}
|
||||
@ -538,10 +459,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
public function getSlideView():SlideView{
|
||||
return this.slideView;
|
||||
}
|
||||
|
||||
override protected function resourcesChanged():void{
|
||||
super.resourcesChanged();
|
||||
if ((slideView != null) && (!slideView.visible)) this.title = ResourceUtil.getInstance().getString('bbb.presentation.title');
|
||||
@ -551,25 +468,20 @@
|
||||
resourcesChanged();
|
||||
}
|
||||
|
||||
private function onFitToPage(ftp:Boolean):void {
|
||||
fitToPage = ftp;
|
||||
slideView.switchToFitToPage(fitToPage);
|
||||
fitSlideToWindowMaintainingAspectRatio();
|
||||
}
|
||||
|
||||
]]>
|
||||
</mx:Script>
|
||||
|
||||
<pres:states>
|
||||
<!--http://stackoverflow.com/questions/369120/why-does-mxstates-have-trouble-being-resolved-to-a-component-implementation-->
|
||||
<mx:State name="dispUploadPresLabel">
|
||||
<mx:AddChild relativeTo="{spacer1}" position="before">
|
||||
<mx:Label id="uploadPresentationLabel" visible="true" width="100%"
|
||||
text="{ResourceUtil.getInstance().getString('bbb.presentation.clickToUpload')}"/>
|
||||
</mx:AddChild>
|
||||
</mx:State>
|
||||
</pres:states>
|
||||
|
||||
<mx:Fade id="thumbFadeIn" alphaFrom="1" alphaTo="0" duration="100" />
|
||||
<mx:Fade id="thumbFadeOut" alphaFrom="0" alphaTo="1" duration="100" />
|
||||
|
||||
<views:SlideView id="slideView" width="100%" height="100%" visible="false" mouseDown="mouseDown = true"
|
||||
<views:SlideView id="slideView" width="100%" height="100%" visible="false" mouseDown="mouseDown = true" backgroundColor="#efefef"
|
||||
mouseUp="mouseDown = false" verticalScrollPolicy="off" horizontalScrollPolicy="off" />
|
||||
|
||||
<mx:ApplicationControlBar id="presCtrlBar" width="100%" height="{CONTROL_BAR_HEIGHT}">
|
||||
<mx:Button id="uploadPres" icon="{uploadIcon}" visible="false" width="20" height="20"
|
||||
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.uploadPresBtn.toolTip')}"
|
||||
@ -582,14 +494,17 @@
|
||||
<mx:Button id="forwardButton" icon="{forwardIcon}" visible="false" width="30" height="20"
|
||||
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.forwardBtn.toolTip')}" click="gotoNextSlide()"/>
|
||||
<mx:Spacer width="10%" id="spacer2"/>
|
||||
<mx:HSlider id="zoomSlider" visible="false"
|
||||
minimum="100" maximum="400" value="100" dataTipPlacement="top" labels="['100%','400%']"
|
||||
<mx:HSlider id="zoomSlider" visible="false" value="{slideView.zoomPercentage}"
|
||||
minimum="100" maximum="400" dataTipPlacement="top" labels="['100%','400%']"
|
||||
useHandCursor="true" snapInterval="5" allowTrackClick="true" liveDragging="true"
|
||||
dataTipFormatFunction="removeDecimalFromDataTip" change="onSliderZoom()" width="100"/>
|
||||
<mx:Spacer width="50%" id="spacer3"/>
|
||||
<!--containers:Docker id="toolbarDocker" height="100%" width="250" visible="{isPresenter}" /-->
|
||||
<mx:Button id="btnResetZoom" icon="{magnifierIcon}" visible="false" width="20" height="20"
|
||||
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.resetZoomBtn.toolTip')}" click="onResetZoom()"/>
|
||||
<mx:Button id="btnFitToWidth" icon="{fitToWidthIcon}" visible="false" width="20" height="20"
|
||||
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.fitToWidth.toolTip')}"
|
||||
click="onFitToPage(false)"/>
|
||||
<mx:Button id="btnFitToPage" icon="{fitToPageIcon}" visible="false" width="20" height="20"
|
||||
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.fitToPage.toolTip')}"
|
||||
click="onFitToPage(true)"/>
|
||||
<mx:Spacer width="5" id="spacer4"/>
|
||||
</mx:ApplicationControlBar>
|
||||
</pres:MDIWindow>
|
||||
|
@ -23,20 +23,21 @@
|
||||
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
|
||||
xmlns:mate="http://mate.asfusion.com/"
|
||||
xmlns:local="*"
|
||||
width="100%" height="100%"
|
||||
creationComplete="onCreationComplete()" verticalScrollPolicy="off" horizontalScrollPolicy="off"
|
||||
width="{slideModel.viewportW}" height="{slideModel.viewportH}"
|
||||
x="{slideModel.viewportX}" y="{slideModel.viewportY}"
|
||||
creationComplete="onCreationComplete()"
|
||||
verticalScrollPolicy="off"
|
||||
horizontalScrollPolicy="off"
|
||||
rollOut="hideCursor()"
|
||||
xmlns:views="org.bigbluebutton.modules.present.views.*"
|
||||
implements="org.bigbluebutton.common.IBbbCanvas">
|
||||
|
||||
<mate:Listener type="{ZoomEvent.ZOOM}" method="handleZoomEvent" />
|
||||
<mate:Listener type="{MoveEvent.CUR_SLIDE_SETTING}" method="handleCurSlideSettingEvent" />
|
||||
<mate:Listener type="{MoveEvent.MOVE}" method="handleMoveEvent" />
|
||||
<mate:Listener type="{SlideEvent.SLIDE_LOADED}" method="handleSlideLoadedEvent" />
|
||||
<mate:Listener type="{MadePresenterEvent.SWITCH_TO_PRESENTER_MODE}" method="handleSwitchToPresenterEvent" />
|
||||
<mate:Listener type="{MadePresenterEvent.SWITCH_TO_VIEWER_MODE}" method="handleSwitchToViewerEvent" />
|
||||
<mate:Listener type="{CursorEvent.UPDATE_CURSOR}" method="handleUpdateCursorEvent" />
|
||||
<mate:Listener type="{WindowResizedEvent.PRESENTATION_WINDOW_RESIZED_EVENT}" method="handleWindowResizeEvent"/>
|
||||
<mate:Listener type="{PresenterCommands.RESIZE}" method="handleSlideResizeEvent"/>
|
||||
|
||||
<mx:Script>
|
||||
<![CDATA[
|
||||
@ -52,6 +53,8 @@
|
||||
import mx.events.ListEvent;
|
||||
|
||||
import org.bigbluebutton.common.IBbbCanvas;
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.core.managers.UserManager;
|
||||
import org.bigbluebutton.main.events.MadePresenterEvent;
|
||||
import org.bigbluebutton.modules.present.events.CursorEvent;
|
||||
import org.bigbluebutton.modules.present.events.DisplaySlideEvent;
|
||||
@ -62,18 +65,14 @@
|
||||
import org.bigbluebutton.modules.present.events.UploadEvent;
|
||||
import org.bigbluebutton.modules.present.events.WindowResizedEvent;
|
||||
import org.bigbluebutton.modules.present.events.ZoomEvent;
|
||||
import org.bigbluebutton.modules.present.managers.Slide;
|
||||
import org.bigbluebutton.modules.present.ui.views.models.SlideCalcUtil;
|
||||
import org.bigbluebutton.modules.present.ui.views.models.SlideViewModel;
|
||||
|
||||
public var zoomPercentage:int = 100;
|
||||
[Bindable] public var zoomPercentage:Number = 100;
|
||||
public static const ZOOM_STEP:int = 5;
|
||||
public static const THUMBNAILS_CLOSED:String = "ThumbnailsClosed";
|
||||
|
||||
/**
|
||||
* Variables that holds the presenter's locations of the
|
||||
* loader so we can move the participant's slides in the
|
||||
* same scale to maintain sync on the presenter's cursor.
|
||||
*/
|
||||
private var presentersLoaderXOffsetFromCanvas:Number = 0;
|
||||
private var presentersLoaderYOffsetFromCanvas:Number = 0;
|
||||
|
||||
/**
|
||||
* Variables that stores the presenter's ratio between
|
||||
@ -81,30 +80,24 @@
|
||||
* same scale as the presenter so that the cursor syncs
|
||||
* properly.
|
||||
*/
|
||||
private var presentersLoaderCanvasWidthRatio:Number = 1;
|
||||
private var presentersLoaderCanvasHeightRatio:Number = 1;
|
||||
|
||||
private var canvasMouseXOnMouseDown:int;
|
||||
private var canvasMouseYOnMouseDown:int;
|
||||
private var loaderXOnMouseDown:int;
|
||||
private var loaderYOnMouseDown:int;
|
||||
private var presenterViewedRegionX:Number = 0;
|
||||
private var presenterViewedRegionY:Number = 0;
|
||||
private var presenterViewedRegionW:Number = 100;
|
||||
private var presenterViewedRegionH:Number = 100;
|
||||
|
||||
private var cursor:Shape;
|
||||
private var overlayChildrenHolder:Canvas = new Canvas();
|
||||
private var overlayCanvas:IBbbCanvas;
|
||||
|
||||
//The following few variables concern text selection
|
||||
private var slideClip:MovieClip;
|
||||
private var slideText:TextSnapshot;
|
||||
private var firstChar:Number = -1;
|
||||
private var lastChar:Number = -1;
|
||||
private var whiteboardCanvasHolder:Canvas = new Canvas();
|
||||
private var whiteboardCanvas:IBbbCanvas;
|
||||
|
||||
[Bindable] public var slides:ArrayCollection;
|
||||
[Bindable] public var selectedSlide:int=0;
|
||||
[Bindable] private var isPresenter:Boolean = false;
|
||||
[Bindable] private var lateComerSynched:Boolean = false;
|
||||
|
||||
private var dispatcher:Dispatcher = new Dispatcher();
|
||||
|
||||
[Bindable]
|
||||
private var slideModel:SlideViewModel = new SlideViewModel();
|
||||
|
||||
private function onCreationComplete():void {
|
||||
slideLoader.width = this.width;
|
||||
slideLoader.height = this.height;
|
||||
@ -115,10 +108,10 @@
|
||||
this.rawChildren.addChild(cursor);
|
||||
cursor.visible = false;
|
||||
|
||||
overlayChildrenHolder = new Canvas();
|
||||
this.addChild(overlayChildrenHolder);
|
||||
overlayChildrenHolder.x = 0;
|
||||
overlayChildrenHolder.y = 0;
|
||||
whiteboardCanvasHolder = new Canvas();
|
||||
this.addChild(whiteboardCanvasHolder);
|
||||
whiteboardCanvasHolder.x = 0;
|
||||
whiteboardCanvasHolder.y = 0;
|
||||
|
||||
this.setChildIndex(thumbnailView, this.numChildren - 1);
|
||||
}
|
||||
@ -139,15 +132,15 @@
|
||||
dispatchEvent(e);
|
||||
}
|
||||
|
||||
private var prevMouseX:Number;
|
||||
private var prevMouseY:Number;
|
||||
|
||||
/**
|
||||
* Triggered when the presenter clicks on the slides with the intent of moving it.
|
||||
*/
|
||||
private function onMouseDown(e:MouseEvent):void {
|
||||
canvasMouseXOnMouseDown = this.mouseX;
|
||||
canvasMouseYOnMouseDown = this.mouseY;
|
||||
loaderXOnMouseDown = slideLoader.x;
|
||||
loaderYOnMouseDown = slideLoader.y;
|
||||
|
||||
prevMouseX = this.mouseX;
|
||||
prevMouseY = this.mouseY;
|
||||
addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
|
||||
}
|
||||
|
||||
@ -156,28 +149,15 @@
|
||||
*/
|
||||
private function onMouseMove(e:MouseEvent):void {
|
||||
// Compute the change in mouse position from where the mouse was clicked.
|
||||
var deltaCanvasMouseX:Number = this.mouseX - canvasMouseXOnMouseDown;
|
||||
var deltaCanvasMouseY:Number = this.mouseY - canvasMouseYOnMouseDown;
|
||||
|
||||
// Now we move the slide by the amount of mouse location change.
|
||||
slideLoader.x = loaderXOnMouseDown + deltaCanvasMouseX;
|
||||
slideLoader.y = loaderYOnMouseDown + deltaCanvasMouseY;
|
||||
|
||||
// Move the slide within the loader.
|
||||
var deltaCanvasMouseX:Number = this.mouseX - prevMouseX;
|
||||
var deltaCanvasMouseY:Number = this.mouseY - prevMouseY;
|
||||
prevMouseX = this.mouseX;
|
||||
prevMouseY = this.mouseY;
|
||||
slideModel.onMove(deltaCanvasMouseX, deltaCanvasMouseY);
|
||||
slideModel.printViewedRegion();
|
||||
slideModel.displayPresenterView();
|
||||
fitSlideToLoader();
|
||||
notifyOtherParticipantsOfSlideMoving();
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to other participants indicating the presenter has moved the slide.
|
||||
*/
|
||||
private function notifyOtherParticipantsOfSlideMoving():void {
|
||||
var presentEvent:PresenterCommands = new PresenterCommands(PresenterCommands.MOVE);
|
||||
presentEvent.xOffset = slideLoader.x/slideLoader.width;
|
||||
presentEvent.yOffset = slideLoader.y/slideLoader.height;
|
||||
presentEvent.slideToCanvasWidthRatio = slideLoader.width/this.width;
|
||||
presentEvent.slideToCanvasHeightRatio = slideLoader.height/this.height;
|
||||
dispatchEvent(presentEvent);
|
||||
notifyOthersOfZoomEvent();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -194,27 +174,25 @@
|
||||
removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the resizing of the presenter's window. This is for the presenter resizing
|
||||
* his/her window.
|
||||
*/
|
||||
private function handleWindowResizeEvent(event:WindowResizedEvent):void {
|
||||
this.width = event.width;
|
||||
this.height = event.height;
|
||||
resizeAndMoveLoaderInRelationToCanvas();
|
||||
}
|
||||
public function onParentResized(parentWidth:Number, parentHeight:Number):void {
|
||||
if (slideModel == null || noSlideContentLoaded()) return;
|
||||
|
||||
/**
|
||||
* Resize and moves the slide loader within the canvas container.
|
||||
*/
|
||||
private function resizeAndMoveLoaderInRelationToCanvas():void {
|
||||
slideLoader.width = this.width * presentersLoaderCanvasWidthRatio;
|
||||
slideLoader.height = this.height * presentersLoaderCanvasHeightRatio;
|
||||
|
||||
slideLoader.x = slideLoader.width * presentersLoaderXOffsetFromCanvas;
|
||||
slideLoader.y = slideLoader.height * presentersLoaderYOffsetFromCanvas;
|
||||
slideModel.parentChange(parentWidth, parentHeight);
|
||||
|
||||
if (UserManager.getInstance().getConference().amIPresenter()) {
|
||||
slideModel.adjustSlideAfterParentResized();
|
||||
slideModel.displayPresenterView();
|
||||
slideModel.printViewedRegion();
|
||||
fitSlideToLoader();
|
||||
notifyOthersOfZoomEvent();
|
||||
} else {
|
||||
slideModel.calculateViewportNeededForRegion(slideModel.viewedRegionX, slideModel.viewedRegionY, slideModel.viewedRegionW, slideModel.viewedRegionH);
|
||||
slideModel.displayViewerRegion(slideModel.viewedRegionX, slideModel.viewedRegionY, slideModel.viewedRegionW, slideModel.viewedRegionH);
|
||||
slideModel.calculateViewportXY();
|
||||
slideModel.displayPresenterView();
|
||||
slideModel.printViewedRegion();
|
||||
fitSlideToLoader();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -228,92 +206,10 @@
|
||||
slideLoader.content.width = slideLoader.width;
|
||||
slideLoader.content.height = slideLoader.height;
|
||||
|
||||
moveCanvas(slideLoader.x, slideLoader.y);
|
||||
zoomCanvas(slideLoader.width, slideLoader.height);
|
||||
}
|
||||
|
||||
private function fitLoaderToCanvas():void{
|
||||
if (noSlideContentLoaded()) return;
|
||||
|
||||
slideLoader.width = this.width;
|
||||
slideLoader.height = this.height;
|
||||
slideLoader.x = this.x;
|
||||
slideLoader.y = this.y;
|
||||
|
||||
fitSlideToLoader();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function resizeAndMoveLoaderBy(percent:Number):void {
|
||||
// Save the old loader dimensions. We need these to calculate
|
||||
// the new position of the loader;
|
||||
var oldLoaderHeight:int = slideLoader.height;
|
||||
var oldLoaderWidth:int = slideLoader.width;
|
||||
|
||||
slideLoader.width = this.width * percent/100;
|
||||
slideLoader.height = this.height * percent/100;
|
||||
|
||||
slideLoader.x = calculateNewLoaderX(oldLoaderWidth);
|
||||
slideLoader.y = calculateNewLoaderY(oldLoaderHeight);
|
||||
|
||||
fitSlideToLoader();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the new y coordinate of the loader. This determines if the location has
|
||||
* changed because the slide was resized or moved.
|
||||
*/
|
||||
private function calculateNewLoaderY(oldLoaderHeight:int):int {
|
||||
var deltaPercentHeight:Number = (slideLoader.height - oldLoaderHeight) /oldLoaderHeight;
|
||||
|
||||
var newLoaderY:int = (slideLoader.y/slideLoader.height) * deltaPercentHeight;
|
||||
if (newLoaderY == 0) {
|
||||
newLoaderY = slideLoader.y - (deltaPercentHeight * 100);
|
||||
} else {
|
||||
newLoaderY = slideLoader.y - newLoaderY;
|
||||
}
|
||||
|
||||
return newLoaderY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the new y coordinate of the loader. This determines if the location has
|
||||
* changed because the slide was resized or moved.
|
||||
*/
|
||||
private function calculateNewLoaderX(oldLoaderWidth:int):int {
|
||||
var deltaPercentWidth:Number = (slideLoader.width - oldLoaderWidth) / oldLoaderWidth;
|
||||
var newLoaderX:int = (slideLoader.x/slideLoader.width) * deltaPercentWidth;
|
||||
if (newLoaderX == 0) {
|
||||
newLoaderX = slideLoader.x - (deltaPercentWidth * 100);
|
||||
} else {
|
||||
newLoaderX = slideLoader.x - newLoaderX;
|
||||
}
|
||||
|
||||
return newLoaderX;
|
||||
}
|
||||
|
||||
private function handleSlideResizeEvent(event:PresenterCommands):void {
|
||||
zoomLoaderBy(event.newSizeInPercent);
|
||||
}
|
||||
|
||||
public function zoomLoaderBy(percent:Number):void {
|
||||
if (percent < 100) {
|
||||
zoomPercentage = 100;
|
||||
} else if (percent > 400) {
|
||||
zoomPercentage = 400;
|
||||
} else {
|
||||
zoomPercentage = percent;
|
||||
}
|
||||
|
||||
if (zoomPercentage == 100) {
|
||||
fitLoaderToCanvas();
|
||||
} else {
|
||||
resizeAndMoveLoaderBy(zoomPercentage);
|
||||
}
|
||||
notifyOthersOfZoomEvent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when the presenter uses the mouse wheel to zoom in/out of the slide.
|
||||
*/
|
||||
@ -324,22 +220,42 @@
|
||||
zoomPercentage += ZOOM_STEP;
|
||||
}
|
||||
|
||||
zoomLoaderBy(zoomPercentage);
|
||||
notifyListenersOfSlideResize(zoomPercentage);
|
||||
zoomSlide(zoomPercentage, this.mouseX, this.mouseY);
|
||||
|
||||
}
|
||||
|
||||
public function notifyListenersOfSlideResize(percent:Number):void {
|
||||
var event:SlideResizedEvent = new SlideResizedEvent();
|
||||
event.percent = percent;
|
||||
dispatcher.dispatchEvent(event);
|
||||
public function switchToFitToPage(ftp:Boolean):void {
|
||||
slideModel.switchToFitToPage(ftp);
|
||||
onZoomSlide(100);
|
||||
}
|
||||
|
||||
public function onZoomSlide(zoom:Number):void {
|
||||
if (slideLoader.content == null) return;
|
||||
zoomSlide(zoom, slideLoader.content.width/2, slideLoader.content.height/2);
|
||||
}
|
||||
|
||||
private function zoomSlide(zoom:Number, mouseX:Number, mouseY:Number):void {
|
||||
zoomPercentage = zoom;
|
||||
if (zoomPercentage <= SlideViewModel.HUNDRED_PERCENT) {
|
||||
zoomPercentage = SlideViewModel.HUNDRED_PERCENT;
|
||||
} else if (zoomPercentage >= SlideViewModel.MAX_ZOOM_PERCENT) {
|
||||
zoomPercentage = SlideViewModel.MAX_ZOOM_PERCENT
|
||||
}
|
||||
|
||||
slideModel.onZoom(zoomPercentage, mouseX, mouseY);
|
||||
slideModel.printViewedRegion();
|
||||
slideModel.displayPresenterView();
|
||||
fitSlideToLoader();
|
||||
|
||||
notifyOthersOfZoomEvent();
|
||||
}
|
||||
|
||||
private function notifyOthersOfZoomEvent():void {
|
||||
var presentEvent:PresenterCommands = new PresenterCommands(PresenterCommands.ZOOM);
|
||||
presentEvent.xOffset = slideLoader.x/slideLoader.width;
|
||||
presentEvent.yOffset = slideLoader.y/slideLoader.height;
|
||||
presentEvent.slideToCanvasWidthRatio = slideLoader.width/this.width;
|
||||
presentEvent.slideToCanvasHeightRatio = slideLoader.height/this.height;
|
||||
presentEvent.xOffset = slideModel.viewedRegionX;
|
||||
presentEvent.yOffset = slideModel.viewedRegionY;
|
||||
presentEvent.slideToCanvasWidthRatio = slideModel.viewedRegionW;
|
||||
presentEvent.slideToCanvasHeightRatio = slideModel.viewedRegionH;
|
||||
dispatchEvent(presentEvent);
|
||||
}
|
||||
|
||||
@ -351,25 +267,37 @@
|
||||
/**
|
||||
* Handles notification from presenter that the slide has moved.
|
||||
*/
|
||||
private function handleMoveEvent(e:MoveEvent):void{
|
||||
savePresentersSettings(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio);
|
||||
if (!isPresenter) {
|
||||
resizeAndMoveLoaderInRelationToCanvas();
|
||||
private function handleCurSlideSettingEvent(e:MoveEvent):void{
|
||||
if (UserManager.getInstance().getConference().amIPresenter()) {
|
||||
return;
|
||||
}
|
||||
|
||||
moveCanvas(slideLoader.x, slideLoader.y);
|
||||
presenterViewedRegionX = e.xOffset;
|
||||
presenterViewedRegionY = e.yOffset;
|
||||
presenterViewedRegionW = e.slideToCanvasWidthRatio;
|
||||
presenterViewedRegionH = e.slideToCanvasHeightRatio;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle notification from presenter that the slide has been zoomed.
|
||||
* Handles notification from presenter that the slide has moved.
|
||||
*/
|
||||
private function handleZoomEvent(e:ZoomEvent):void {
|
||||
savePresentersSettings(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio);
|
||||
if (!isPresenter) {
|
||||
resizeAndMoveLoaderInRelationToCanvas();
|
||||
private function handleMoveEvent(e:MoveEvent):void{
|
||||
if (UserManager.getInstance().getConference().amIPresenter()) {
|
||||
return;
|
||||
}
|
||||
|
||||
zoomCanvas(slideLoader.width, slideLoader.height);
|
||||
presenterViewedRegionX = e.xOffset;
|
||||
presenterViewedRegionY = e.yOffset;
|
||||
presenterViewedRegionW = e.slideToCanvasWidthRatio;
|
||||
presenterViewedRegionH = e.slideToCanvasHeightRatio;
|
||||
|
||||
slideModel.saveViewedRegion(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio);
|
||||
slideModel.calculateViewportNeededForRegion(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio);
|
||||
slideModel.displayViewerRegion(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio);
|
||||
slideModel.calculateViewportXY();
|
||||
slideModel.displayPresenterView();
|
||||
slideModel.printViewedRegion();
|
||||
fitSlideToLoader();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -383,7 +311,6 @@
|
||||
* Handle the event where this presenter becomes a viewer because another attendee became presenter.
|
||||
*/
|
||||
private function handleSwitchToViewerEvent(e:MadePresenterEvent):void{
|
||||
participantIsNowPresenter(false);
|
||||
removeEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelZoomEvent);
|
||||
slideLoader.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||
slideLoader.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
|
||||
@ -395,17 +322,14 @@
|
||||
* Makes the attendee the presenter.
|
||||
*/
|
||||
private function handleSwitchToPresenterEvent(e:MadePresenterEvent):void{
|
||||
participantIsNowPresenter(true);
|
||||
addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelZoomEvent);
|
||||
slideLoader.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||
slideLoader.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
|
||||
slideLoader.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
|
||||
addEventListener(MouseEvent.MOUSE_MOVE, mouseCursorUpdateListener);
|
||||
notifyOthersOfZoomEvent();
|
||||
}
|
||||
|
||||
private function participantIsNowPresenter(presenter:Boolean):void {
|
||||
this.isPresenter = presenter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Listen for mouse events to track the cursor.
|
||||
@ -445,16 +369,6 @@
|
||||
return slideLoader.content == null
|
||||
}
|
||||
|
||||
/**
|
||||
* Keep track of the presenter's x,y coordinates and the size of his/her presentation window.
|
||||
*/
|
||||
private function savePresentersSettings(xOffset:Number, yOffset:Number, widthRatio:Number, heightRatio:Number):void {
|
||||
presentersLoaderXOffsetFromCanvas = xOffset;
|
||||
presentersLoaderYOffsetFromCanvas = yOffset;
|
||||
presentersLoaderCanvasWidthRatio = widthRatio;
|
||||
presentersLoaderCanvasHeightRatio = heightRatio;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fire an event when a single slide has been loaded.
|
||||
*/
|
||||
@ -463,10 +377,15 @@
|
||||
}
|
||||
|
||||
private function handleSlideLoadedCompleteEvent(event:Event):void {
|
||||
var slideRealWidth:int = slideLoader.content.width;
|
||||
var slideRealHeight:int = slideLoader.content.height;
|
||||
fitLoaderToCanvas();
|
||||
dispatchNewSlideDisplayedEvent(slideRealWidth, slideRealHeight);
|
||||
if (lateComerSynched) {
|
||||
slideModel.resetForNewSlide(slideLoader.contentWidth, slideLoader.contentHeight);
|
||||
} else {
|
||||
lateComerSynched = true;
|
||||
slideModel.reset(slideLoader.contentWidth, slideLoader.contentHeight);
|
||||
slideModel.saveViewedRegion(presenterViewedRegionX, presenterViewedRegionY, presenterViewedRegionW, presenterViewedRegionH);
|
||||
}
|
||||
|
||||
dispatchNewSlideDisplayedEvent(slideModel.pageOrigW, slideModel.pageOrigH);
|
||||
}
|
||||
|
||||
private function dispatchNewSlideDisplayedEvent(slideRealWidth:int, slideRealHeight:int):void {
|
||||
@ -490,41 +409,48 @@
|
||||
|
||||
/** Inherited from IBbbCanvas*/
|
||||
public function addRawChild(child:DisplayObject):void{
|
||||
this.overlayChildrenHolder.rawChildren.addChild(child);
|
||||
this.whiteboardCanvasHolder.rawChildren.addChild(child);
|
||||
}
|
||||
|
||||
public function removeRawChild(child:DisplayObject):void{
|
||||
this.overlayChildrenHolder.rawChildren.removeChild(child);
|
||||
this.whiteboardCanvasHolder.rawChildren.removeChild(child);
|
||||
}
|
||||
|
||||
public function doesContain(child:DisplayObject):Boolean{
|
||||
return this.overlayChildrenHolder.rawChildren.contains(child);
|
||||
return this.whiteboardCanvasHolder.rawChildren.contains(child);
|
||||
}
|
||||
|
||||
public function acceptOverlayCanvas(overlay:IBbbCanvas):void{
|
||||
overlayCanvas = overlay;
|
||||
whiteboardCanvas = overlay;
|
||||
var c:Canvas = overlay as Canvas;
|
||||
this.addChild(c);
|
||||
c.x = 0;
|
||||
c.y = 0;
|
||||
c.x = slideLoader.x * SlideCalcUtil.MYSTERY_NUM;
|
||||
c.y = slideLoader.y * SlideCalcUtil.MYSTERY_NUM;
|
||||
c.width = slideLoader.width;
|
||||
c.height = slideLoader.height;
|
||||
fitSlideToLoader();
|
||||
}
|
||||
|
||||
public function moveCanvas(x:int, y:int):void{
|
||||
overlayChildrenHolder.x = slideLoader.x * 2;
|
||||
overlayChildrenHolder.y = slideLoader.y * 2;
|
||||
public function moveCanvas(x:Number, y:Number):void{
|
||||
whiteboardCanvasHolder.x = slideLoader.x * SlideCalcUtil.MYSTERY_NUM;
|
||||
whiteboardCanvasHolder.y = slideLoader.y * SlideCalcUtil.MYSTERY_NUM;
|
||||
|
||||
if (overlayCanvas != null) overlayCanvas.moveCanvas(overlayChildrenHolder.x, overlayChildrenHolder.y);
|
||||
if (whiteboardCanvas != null) {
|
||||
whiteboardCanvas.moveCanvas(whiteboardCanvasHolder.x, whiteboardCanvasHolder.y);
|
||||
}
|
||||
}
|
||||
|
||||
public function zoomCanvas(width:int, height:int):void{
|
||||
overlayChildrenHolder.width = width;
|
||||
overlayChildrenHolder.height = height;
|
||||
public function zoomCanvas(width:Number, height:Number):void{
|
||||
whiteboardCanvasHolder.width = width;
|
||||
whiteboardCanvasHolder.height = height;
|
||||
moveCanvas(slideLoader.x, slideLoader.y);
|
||||
if (overlayCanvas != null) overlayCanvas.zoomCanvas(width, height);
|
||||
if (whiteboardCanvas != null) {
|
||||
whiteboardCanvas.zoomCanvas(width, height);
|
||||
}
|
||||
}
|
||||
|
||||
public function showOverlayCanvas(show:Boolean):void{
|
||||
overlayCanvas.showCanvas(show);
|
||||
whiteboardCanvas.showCanvas(show);
|
||||
}
|
||||
|
||||
public function showCanvas(show:Boolean):void{
|
||||
@ -533,9 +459,9 @@
|
||||
|
||||
]]>
|
||||
</mx:Script>
|
||||
<mx:SWFLoader id="slideLoader" width="{slideModel.loaderW}" height="{slideModel.loaderH}" x="{slideModel.loaderX}" y="{slideModel.loaderY}"
|
||||
creationComplete="listenForSlideLoadedCompleteEvent()" scaleContent="false" showBusyCursor="true" completeEffect="Fade"/>
|
||||
|
||||
<mx:SWFLoader id="slideLoader" width="100%" height="100%" creationComplete="listenForSlideLoadedCompleteEvent()"
|
||||
scaleContent="false" maintainAspectRatio="true" showBusyCursor="true" completeEffect="Fade"/>
|
||||
|
||||
<mx:HorizontalList id="thumbnailView" itemRenderer="org.bigbluebutton.modules.present.ui.views.Thumbnail" itemRollOver="changeIndex(event)"
|
||||
visible="false" width="100%" height="100" y="{this.height - 100}" change="changeSlide()" />
|
||||
|
@ -0,0 +1,68 @@
|
||||
package org.bigbluebutton.modules.present.ui.views.models
|
||||
{
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
|
||||
public class SlideCalcUtil
|
||||
{
|
||||
public static const HUNDRED_PERCENT:Number = 100;
|
||||
// After lots of trial and error on why synching doesn't work properly, I found I had to
|
||||
// multiply the coordinates by 2. There's something I don't understand probably on the
|
||||
// canvas coordinate system. (ralam feb 22, 2012)
|
||||
public static const MYSTERY_NUM:int = 2;
|
||||
|
||||
/**
|
||||
* Calculate the viewed region width
|
||||
*/
|
||||
public static function calcViewedRegionWidth(vpw:Number, cpw:Number):Number {
|
||||
var width:Number = (vpw/cpw) * HUNDRED_PERCENT;
|
||||
if (width > HUNDRED_PERCENT) return HUNDRED_PERCENT;
|
||||
return width;
|
||||
}
|
||||
|
||||
public static function calcViewedRegionHeight(vph:Number, cph:Number):Number {
|
||||
var height:Number = (vph/cph) * HUNDRED_PERCENT;
|
||||
if (height > HUNDRED_PERCENT) return HUNDRED_PERCENT;
|
||||
return height;
|
||||
}
|
||||
|
||||
public static function calcCalcPageSizeWidth(ftp:Boolean, vpw:Number, vrw:Number):Number {
|
||||
if (ftp) {
|
||||
return (vpw/vrw) * HUNDRED_PERCENT;
|
||||
} else {
|
||||
return vpw;
|
||||
}
|
||||
}
|
||||
|
||||
public static function calcCalcPageSizeHeight(ftp:Boolean, vph:Number, vrh:Number, cpw:Number, cph:Number, opw:Number, oph:Number):Number {
|
||||
if (ftp) {
|
||||
return (vph/vrh) * HUNDRED_PERCENT;
|
||||
} else {
|
||||
return (cpw/opw) * oph;
|
||||
}
|
||||
}
|
||||
|
||||
public static function calcViewedRegionX(cpx:Number, cpw:Number):Number {
|
||||
return (cpx * HUNDRED_PERCENT) / cpw;
|
||||
}
|
||||
|
||||
public static function calcViewedRegionY(cpy:Number, cph:Number):Number {
|
||||
return (cpy * HUNDRED_PERCENT) / cph;
|
||||
}
|
||||
|
||||
public static function calculateViewportX(vpw:Number, pw:Number):Number {
|
||||
if (vpw == pw) {
|
||||
return 0;
|
||||
} else {
|
||||
return (pw - vpw) / MYSTERY_NUM;
|
||||
}
|
||||
}
|
||||
|
||||
public static function calculateViewportY(vph:Number, ph:Number):Number {
|
||||
if (vph == ph) {
|
||||
return 0;
|
||||
} else {
|
||||
return (ph - vph) / MYSTERY_NUM;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,304 @@
|
||||
package org.bigbluebutton.modules.present.ui.views.models
|
||||
{
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
|
||||
|
||||
public class SlideViewModel
|
||||
{
|
||||
public static const MAX_ZOOM_PERCENT:Number = 400;
|
||||
public static const HUNDRED_PERCENT:Number = 100;
|
||||
|
||||
[Bindable] public var viewportX:Number = 0;
|
||||
[Bindable] public var viewportY:Number = 0;
|
||||
[Bindable] public var viewportW:Number = 0;
|
||||
[Bindable] public var viewportH:Number = 0;
|
||||
|
||||
[Bindable] public var loaderW:Number = 0;
|
||||
[Bindable] public var loaderH:Number = 0;
|
||||
[Bindable] public var loaderX:Number = 0;
|
||||
[Bindable] public var loaderY:Number = 0;
|
||||
|
||||
private var _viewedRegionX:Number = 0;
|
||||
private var _viewedRegionY:Number = 0;
|
||||
private var _viewedRegionW:Number = HUNDRED_PERCENT;
|
||||
private var _viewedRegionH:Number = HUNDRED_PERCENT;
|
||||
|
||||
private var _pageOrigW:Number = 0;
|
||||
private var _pageOrigH:Number = 0;
|
||||
private var _calcPageW:Number = 0;
|
||||
private var _calcPageH:Number = 0;
|
||||
private var _calcPageX:Number = 0;
|
||||
private var _calcPageY:Number = 0;
|
||||
private var _parentW:Number = 0;
|
||||
private var _parentH:Number = 0;
|
||||
|
||||
private var fitToPage:Boolean = true;
|
||||
|
||||
// After lots of trial and error on why synching doesn't work properly, I found I had to
|
||||
// multiply the coordinates by 2. There's something I don't understand probably on the
|
||||
// canvas coordinate system. (ralam feb 22, 2012)
|
||||
private const MYSTERY_NUM:int = 2;
|
||||
|
||||
public function set parentW(width:Number):void {
|
||||
_parentW = width;
|
||||
}
|
||||
|
||||
public function set parentH(height:Number):void {
|
||||
_parentH = height;
|
||||
}
|
||||
|
||||
public function get parentW():Number {
|
||||
return _parentW;
|
||||
}
|
||||
|
||||
public function get parentH():Number {
|
||||
return _parentH;
|
||||
}
|
||||
|
||||
public function get pageOrigW():Number {
|
||||
return _pageOrigW;
|
||||
}
|
||||
|
||||
public function get pageOrigH():Number {
|
||||
return _pageOrigH;
|
||||
}
|
||||
|
||||
public function get viewedRegionW():Number {
|
||||
return _viewedRegionW;
|
||||
}
|
||||
|
||||
public function get viewedRegionH():Number {
|
||||
return _viewedRegionH;
|
||||
}
|
||||
|
||||
public function get viewedRegionX():Number {
|
||||
return _viewedRegionX;
|
||||
}
|
||||
|
||||
public function get viewedRegionY():Number {
|
||||
return _viewedRegionY;
|
||||
}
|
||||
|
||||
private function isPortraitDoc():Boolean {
|
||||
return _pageOrigH > _pageOrigW;
|
||||
}
|
||||
|
||||
public function reset(pageWidth:Number, pageHeight:Number):void {
|
||||
_pageOrigW = pageWidth;
|
||||
_pageOrigH = pageHeight;
|
||||
}
|
||||
|
||||
public function resetForNewSlide(pageWidth:Number, pageHeight:Number):void {
|
||||
_pageOrigW = pageWidth;
|
||||
_pageOrigH = pageHeight;
|
||||
}
|
||||
|
||||
public function parentChange(parentW:Number, parentH:Number):void {
|
||||
viewportW = this.parentW = parentW;
|
||||
viewportH = this.parentH = parentH;
|
||||
}
|
||||
|
||||
public function calculateViewportXY():void {
|
||||
viewportX = SlideCalcUtil.calculateViewportX(viewportW, parentW);
|
||||
viewportY = SlideCalcUtil.calculateViewportY(viewportH, parentH);
|
||||
}
|
||||
|
||||
private function calcViewedRegion():void {
|
||||
_viewedRegionW = SlideCalcUtil.calcViewedRegionWidth(viewportW, _calcPageW);
|
||||
_viewedRegionH = SlideCalcUtil.calcViewedRegionHeight(viewportH, _calcPageH);
|
||||
_viewedRegionX = SlideCalcUtil.calcViewedRegionX(_calcPageX, _calcPageW);
|
||||
_viewedRegionY = SlideCalcUtil.calcViewedRegionY(_calcPageY, _calcPageH);
|
||||
}
|
||||
|
||||
public function displayPresenterView():void {
|
||||
loaderX = Math.round(_calcPageX);
|
||||
loaderY = Math.round(_calcPageY);
|
||||
loaderW = Math.round(_calcPageW);
|
||||
loaderH = Math.round(_calcPageH);
|
||||
}
|
||||
|
||||
public function adjustSlideAfterParentResized():void {
|
||||
if (fitToPage) {
|
||||
calculateViewportNeededForRegion(_viewedRegionX, _viewedRegionY, _viewedRegionW, _viewedRegionH);
|
||||
displayViewerRegion(_viewedRegionX, _viewedRegionY, _viewedRegionW, _viewedRegionH);
|
||||
calculateViewportXY();
|
||||
displayPresenterView();
|
||||
printViewedRegion();
|
||||
} else {
|
||||
calculateViewportSize();
|
||||
calculateViewportXY();
|
||||
_calcPageW = (viewportW/_viewedRegionW) * HUNDRED_PERCENT;
|
||||
_calcPageH = (_pageOrigH/_pageOrigW) * _calcPageW;
|
||||
calcViewedRegion();
|
||||
onResizeMove();
|
||||
}
|
||||
}
|
||||
|
||||
public function switchToFitToPage(ftp:Boolean):void {
|
||||
LogUtil.debug("switchToFitToPage");
|
||||
|
||||
this.fitToPage = ftp;
|
||||
calculateViewportSize();
|
||||
calculateViewportXY();
|
||||
}
|
||||
|
||||
private function doWidthBoundsDetection():void {
|
||||
if (_calcPageX >= 0) {
|
||||
// Don't let the left edge move inside the view.
|
||||
_calcPageX = 0;
|
||||
} else if ((_calcPageW + _calcPageX * MYSTERY_NUM) < viewportW) {
|
||||
// Don't let the right edge move inside the view.
|
||||
_calcPageX = (viewportW - _calcPageW) / MYSTERY_NUM;
|
||||
} else {
|
||||
// Let the move happen.
|
||||
}
|
||||
}
|
||||
|
||||
private function doHeightBoundsDetection():void {
|
||||
if (_calcPageY >= 0) {
|
||||
// Don't let the top edge move into the view.
|
||||
_calcPageY = 0;
|
||||
} else if ((_calcPageH + _calcPageY * MYSTERY_NUM) < viewportH) {
|
||||
// Don't let the bottome edge move into the view.
|
||||
_calcPageY = (viewportH - _calcPageH) / MYSTERY_NUM;
|
||||
} else {
|
||||
// Let the move happen.
|
||||
}
|
||||
}
|
||||
|
||||
private function onResizeMove():void {
|
||||
doWidthBoundsDetection();
|
||||
doHeightBoundsDetection();
|
||||
}
|
||||
|
||||
public function onMove(deltaX:Number, deltaY:Number):void {
|
||||
_calcPageX += deltaX;
|
||||
_calcPageY += deltaY;
|
||||
|
||||
onResizeMove();
|
||||
calcViewedRegion();
|
||||
}
|
||||
|
||||
public function calculateViewportSize():void {
|
||||
viewportW = parentW;
|
||||
viewportH = parentH;
|
||||
|
||||
if (fitToPage) {
|
||||
// If the height is smaller than the width, we use the height as the base to determine the size of the slide.
|
||||
if (parentH < parentW) {
|
||||
viewportH = parentH;
|
||||
viewportW = ((pageOrigW * viewportH)/pageOrigH);
|
||||
if (parentW < viewportW) {
|
||||
viewportW = parentW;
|
||||
viewportH = ((pageOrigH * viewportW)/pageOrigW);
|
||||
}
|
||||
} else {
|
||||
viewportW = parentW;
|
||||
viewportH = (viewportW/pageOrigW) * pageOrigH;
|
||||
if (parentH < viewportH) {
|
||||
viewportH = parentH;
|
||||
viewportW = ((pageOrigW * viewportH)/pageOrigH);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (viewportW < pageOrigW) {
|
||||
viewportH = (viewportW/pageOrigW)*pageOrigH;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function printViewedRegion():void {
|
||||
// LogUtil.debug("Region [" + viewedRegionW + "," + viewedRegionH + "] [" + viewedRegionX + "," + viewedRegionY + "]");
|
||||
// LogUtil.debug("Region [" + ((viewedRegionW / HUNDRED_PERCENT)*_calcPageW) + "," + ((viewedRegionH/HUNDRED_PERCENT)*_calcPageH) +
|
||||
// "] [" + ((viewedRegionX/HUNDRED_PERCENT)*_calcPageW) + "," + ((viewedRegionY/HUNDRED_PERCENT)*_calcPageH) + "]");
|
||||
}
|
||||
|
||||
public function onZoom(zoomValue:Number, mouseX:Number, mouseY:Number):void {
|
||||
var cpw:Number = _calcPageW;
|
||||
var cph:Number = _calcPageH;
|
||||
var zpx:Number = Math.abs(_calcPageX) + mouseX;
|
||||
var zpy:Number = Math.abs(_calcPageY) + mouseY;
|
||||
var zpxp:Number = zpx/cpw;
|
||||
var zpyp:Number = zpy/cph;
|
||||
|
||||
_calcPageW = pageOrigW * zoomValue / HUNDRED_PERCENT;
|
||||
_calcPageH = (_calcPageW/cpw) * cph;
|
||||
|
||||
var zpx1:Number = _calcPageW * zpxp;
|
||||
var zpy1:Number = _calcPageH * zpyp;
|
||||
_calcPageX = -((zpx1 + zpx)/2) + mouseX;
|
||||
_calcPageY = -((zpy1 + zpy)/2) + mouseY;
|
||||
|
||||
doWidthBoundsDetection();
|
||||
doHeightBoundsDetection();
|
||||
|
||||
if ((zoomValue <= HUNDRED_PERCENT) || (_calcPageW < viewportW) || (_calcPageH < viewportH)) {
|
||||
if (isPortraitDoc()) {
|
||||
if (fitToPage) {
|
||||
_calcPageY = 0;
|
||||
_calcPageH = viewportH;
|
||||
_calcPageW = (_pageOrigW/_pageOrigH)*_calcPageH;
|
||||
_calcPageX = 0;
|
||||
} else {
|
||||
_calcPageX = 0;
|
||||
_calcPageY = 0;
|
||||
_calcPageW = viewportW;
|
||||
_calcPageH = (_calcPageW/_pageOrigW)*_pageOrigH;
|
||||
}
|
||||
} else {
|
||||
if (fitToPage) {
|
||||
_calcPageW = viewportW;
|
||||
_calcPageH = viewportH;
|
||||
_calcPageY = 0;
|
||||
_calcPageX = 0;
|
||||
} else {
|
||||
_calcPageX = 0;
|
||||
_calcPageY = 0;
|
||||
_calcPageW = viewportW;
|
||||
_calcPageH = (_calcPageW/_pageOrigW)*_pageOrigH;
|
||||
}
|
||||
}
|
||||
}
|
||||
calcViewedRegion();
|
||||
}
|
||||
|
||||
public function displayViewerRegion(x:Number, y:Number, regionW:Number, regionH:Number):void {
|
||||
// LogUtil.debug("** disp viewer 1 [" + regionW + "," + regionH + "][" + x + "," + y + "]");
|
||||
_calcPageW = viewportW/(regionW/HUNDRED_PERCENT);
|
||||
_calcPageH = viewportH/(regionH/HUNDRED_PERCENT);
|
||||
_calcPageX = (x/HUNDRED_PERCENT) * _calcPageW;
|
||||
_calcPageY = (y/HUNDRED_PERCENT) * _calcPageH;
|
||||
// LogUtil.debug("** disp viewer 2 [" + viewportW + "," + viewportH + "][" +_calcPageW + "," + _calcPageH + "][" + _calcPageX + "," + _calcPageY + "]");
|
||||
}
|
||||
|
||||
public function saveViewedRegion(x:Number, y:Number, regionW:Number, regionH:Number):void {
|
||||
_viewedRegionX = x;
|
||||
_viewedRegionY = y;
|
||||
_viewedRegionW = regionW;
|
||||
_viewedRegionH = regionH;
|
||||
}
|
||||
|
||||
public function calculateViewportNeededForRegion(x:Number, y:Number, regionW:Number, regionH:Number):void {
|
||||
var vrwp:Number = pageOrigW * (regionW/HUNDRED_PERCENT);
|
||||
var vrhp:Number = pageOrigH * (regionH/HUNDRED_PERCENT);
|
||||
|
||||
if (parentW < parentH) {
|
||||
viewportW = parentW;
|
||||
viewportH = (vrhp/vrwp)*parentW;
|
||||
if (parentH < viewportH) {
|
||||
viewportH = parentH;
|
||||
viewportW = ((vrwp * viewportH)/viewportH);
|
||||
// LogUtil.debug("calc viewport ***** resizing [" + viewportW + "," + viewportH + "] [" + parentW + "," + parentH + "," + fitToPage + "] [" + pageOrigW + "," + pageOrigH + "]");
|
||||
}
|
||||
} else {
|
||||
viewportH = parentH;
|
||||
viewportW = (vrwp/vrhp)*parentH;
|
||||
if (parentW < viewportW) {
|
||||
viewportW = parentW;
|
||||
viewportH = ((vrhp * viewportW)/vrwp);
|
||||
// LogUtil.debug("calc viewport resizing [" + viewportW + "," + viewportH + "] [" + parentW + "," + parentH + "," + fitToPage + "] [" + pageOrigW + "," + pageOrigH + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -60,11 +60,16 @@ package org.bigbluebutton.modules.videoconf.business
|
||||
[Bindable] public var resolutions:Array;
|
||||
|
||||
protected function getVideoResolution(stream:String):Array {
|
||||
for each (var resStr:String in resolutions){
|
||||
if (resStr == stream.substr(0, resStr.length))
|
||||
return resStr.split( "x" );
|
||||
// streamname: <width>x<height><userId>-<timestamp>
|
||||
// example: 320x2405-1329334829687
|
||||
var pattern:RegExp = new RegExp("\\d+x\\d+-\\d+", "");
|
||||
if (pattern.test(stream)) {
|
||||
LogUtil.debug("The stream name is well formatted");
|
||||
return stream.substr(0, stream.split("-")[0].length - String(this.userId).length).split("x");
|
||||
} else {
|
||||
LogUtil.error("The stream name doesn't follow the pattern <width>x<height><userId>-<timestamp>. However, the video resolution will be set to the lowest defined resolution in the config.xml: " + resolutions[0]);
|
||||
return resolutions[0].split("x");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function get paddingVertical():Number {
|
||||
|
@ -0,0 +1,205 @@
|
||||
package org.bigbluebutton.modules.whiteboard
|
||||
{
|
||||
import flash.display.Shape;
|
||||
|
||||
import mx.collections.ArrayCollection;
|
||||
import mx.core.Application;
|
||||
import mx.managers.CursorManager;
|
||||
|
||||
import org.bigbluebutton.common.IBbbCanvas;
|
||||
import org.bigbluebutton.common.Images;
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.modules.present.events.WindowResizedEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.WhiteboardCanvasModel;
|
||||
import org.bigbluebutton.modules.whiteboard.business.shapes.DrawObject;
|
||||
import org.bigbluebutton.modules.whiteboard.business.shapes.DrawObjectFactory;
|
||||
import org.bigbluebutton.modules.whiteboard.business.shapes.ShapeFactory;
|
||||
import org.bigbluebutton.modules.whiteboard.events.PageEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardButtonEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardDrawEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardPresenterEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardUpdate;
|
||||
import org.bigbluebutton.modules.whiteboard.maps.WhiteboardEventMap;
|
||||
import org.bigbluebutton.modules.whiteboard.views.WhiteboardCanvas;
|
||||
|
||||
public class WhiteboardCanvasModel {
|
||||
public var wbCanvas:WhiteboardCanvas;
|
||||
|
||||
private var isDrawing:Boolean;
|
||||
private var sending:Boolean = false;
|
||||
private var feedback:Shape = new Shape();
|
||||
private var latentFeedbacks:Array = new Array();
|
||||
private var segment:Array = new Array();
|
||||
private var shapeList:Array = new Array();
|
||||
|
||||
private var shapeFactory:ShapeFactory = new ShapeFactory();
|
||||
private var bbbCanvas:IBbbCanvas;
|
||||
|
||||
private var shapeStyle:String = DrawObject.PENCIL;
|
||||
private var drawColor:uint = 0x000000;
|
||||
private var thickness:uint = 1;
|
||||
|
||||
private var drawStatus:String = DrawObject.DRAW_START;
|
||||
private var width:Number;
|
||||
private var height:Number;
|
||||
|
||||
public function doMouseUp():void{
|
||||
if (isDrawing) {
|
||||
/**
|
||||
* Check if we are drawing because when resizing the window, it generates
|
||||
* a mouseUp event at the end of resize. We don't want to dispatch another
|
||||
* shape to the viewers.
|
||||
*/
|
||||
isDrawing = false;
|
||||
sendShapeToServer(DrawObject.DRAW_END);
|
||||
}
|
||||
}
|
||||
|
||||
private var objCount:int = 0;
|
||||
|
||||
private function sendShapeToServer(status:String):void{
|
||||
if (segment.length == 0) return;
|
||||
|
||||
var dobj:DrawObject = shapeFactory.createDrawObject(this.shapeStyle, segment, this.drawColor, this.thickness);
|
||||
|
||||
dobj.id = "" + objCount++;
|
||||
|
||||
switch (status) {
|
||||
case DrawObject.DRAW_START:
|
||||
dobj.status = DrawObject.DRAW_START;
|
||||
drawStatus = DrawObject.DRAW_UPDATE;
|
||||
break;
|
||||
case DrawObject.DRAW_UPDATE:
|
||||
dobj.status = DrawObject.DRAW_UPDATE;
|
||||
break;
|
||||
case DrawObject.DRAW_END:
|
||||
dobj.status = DrawObject.DRAW_END;
|
||||
drawStatus = DrawObject.DRAW_START;
|
||||
break;
|
||||
}
|
||||
|
||||
LogUtil.error("SEGMENT LENGTH = [" + segment.length + "] STATUS = [" + dobj.status + "]");
|
||||
|
||||
if (this.shapeStyle == DrawObject.PENCIL) {
|
||||
dobj.status = DrawObject.DRAW_END;
|
||||
drawStatus = DrawObject.DRAW_START;
|
||||
segment = new Array();
|
||||
var xy:Array = wbCanvas.getMouseXY();
|
||||
segment.push(xy[0], xy[1]);
|
||||
}
|
||||
|
||||
wbCanvas.sendShapeToServer(dobj);
|
||||
}
|
||||
|
||||
public function doMouseDown(mouseX:Number, mouseY:Number):void{
|
||||
isDrawing = true;
|
||||
drawStatus = DrawObject.DRAW_START;
|
||||
segment = new Array();
|
||||
segment.push(mouseX);
|
||||
segment.push(mouseY);
|
||||
}
|
||||
|
||||
public function doMouseMove(mouseX:Number, mouseY:Number):void{
|
||||
if (isDrawing){
|
||||
segment.push(mouseX);
|
||||
segment.push(mouseY);
|
||||
if (segment.length > 30) {
|
||||
sendShapeToServer(drawStatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function drawSegment(event:WhiteboardUpdate):void{
|
||||
var o:DrawObject = event.data;
|
||||
draw(o);
|
||||
}
|
||||
|
||||
private function draw(o:DrawObject):void{
|
||||
LogUtil.debug("Got shape [" + o.getType() + " " + o.status + "]");
|
||||
switch (o.status) {
|
||||
case DrawObject.DRAW_START:
|
||||
addNewShape(o);
|
||||
break;
|
||||
case DrawObject.DRAW_UPDATE:
|
||||
case DrawObject.DRAW_END:
|
||||
if (shapeList.length == 0 || o.getType() == DrawObject.PENCIL) {
|
||||
addNewShape(o);
|
||||
} else {
|
||||
removeLastShape();
|
||||
addNewShape(o);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private function addNewShape(o:DrawObject):void {
|
||||
LogUtil.error("Adding new shape");
|
||||
var dobj:DrawObject = shapeFactory.makeShape(o);
|
||||
wbCanvas.addShape(dobj.getShape());
|
||||
shapeList.push(dobj);
|
||||
}
|
||||
|
||||
public function setShape(s:String):void{
|
||||
this.shapeStyle = s;
|
||||
}
|
||||
|
||||
public function changeColor(color:uint):void{
|
||||
drawColor = color;
|
||||
}
|
||||
|
||||
public function changeThickness(thickness:uint):void{
|
||||
this.thickness = thickness;
|
||||
}
|
||||
|
||||
private function removeLastShape():void {
|
||||
var dobj:DrawObject = shapeList.pop() as DrawObject;
|
||||
wbCanvas.removeShape(dobj.getShape());
|
||||
}
|
||||
|
||||
|
||||
public function clearBoard(event:WhiteboardUpdate = null):void{
|
||||
var numShapes:int = this.shapeList.length;
|
||||
for (var i:Number = 0; i < numShapes; i++){
|
||||
removeLastShape();
|
||||
}
|
||||
}
|
||||
|
||||
public function undoShape():void{
|
||||
if (this.shapeList.length > 0) {
|
||||
removeLastShape();
|
||||
}
|
||||
}
|
||||
|
||||
public function changePage(e:PageEvent):void{
|
||||
var page:Number = e.pageNum;
|
||||
var shapes:ArrayCollection = e.shapes;
|
||||
|
||||
clearBoard();
|
||||
for (var i:int = 0; i < shapes.length; i++){
|
||||
var o:DrawObject = shapes.getItemAt(i) as DrawObject;
|
||||
draw(o);
|
||||
}
|
||||
}
|
||||
|
||||
public function zoomCanvas(width:Number, height:Number):void{
|
||||
shapeFactory.setParentDim(width, height);
|
||||
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
|
||||
for (var i:int = 0; i < this.shapeList.length; i++){
|
||||
redrawShape(this.shapeList[i] as DrawObject);
|
||||
}
|
||||
}
|
||||
|
||||
private function redrawShape(dobj:DrawObject):void {
|
||||
wbCanvas.removeShape(dobj.getShape());
|
||||
shapeFactory.makeShape(dobj);
|
||||
wbCanvas.addShape(dobj.getShape());
|
||||
}
|
||||
|
||||
public function isPageEmpty():Boolean {
|
||||
return shapeList.length == 0;
|
||||
}
|
||||
}
|
||||
}
|
@ -27,15 +27,15 @@ package org.bigbluebutton.modules.whiteboard.business
|
||||
import flash.net.Responder;
|
||||
import flash.net.SharedObject;
|
||||
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.modules.present.events.PresentationEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.business.shapes.DrawObject;
|
||||
import org.bigbluebutton.modules.whiteboard.business.shapes.DrawObjectFactory;
|
||||
import org.bigbluebutton.modules.whiteboard.events.PageEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.StartWhiteboardModuleEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardDrawEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardPresenterEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardUpdate;
|
||||
import org.bigbluebutton.modules.whiteboard.events.PageEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.StartWhiteboardModuleEvent;
|
||||
import org.bigbluebutton.modules.present.events.PresentationEvent;
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
|
||||
/**
|
||||
* The DrawProxy class is a Delegate class for the Red5 Server. It communicates directly with the Red5
|
||||
@ -184,7 +184,7 @@ package org.bigbluebutton.modules.whiteboard.business
|
||||
*/
|
||||
public function sendShape(e:WhiteboardDrawEvent):void{
|
||||
var shape:DrawObject = e.message;
|
||||
|
||||
LogUtil.debug("*** Sending shape");
|
||||
var nc:NetConnection = connection;
|
||||
nc.call(
|
||||
"whiteboard.sendShape",// Remote function name
|
||||
@ -201,14 +201,9 @@ package org.bigbluebutton.modules.whiteboard.business
|
||||
}
|
||||
}
|
||||
),//new Responder
|
||||
shape.getShapeArray(), shape.getType(), shape.getColor(), shape.getThickness(), shape.parentWidth, shape.parentHeight
|
||||
shape.getShapeArray(), shape.getType(), shape.getColor(), shape.getThickness(),
|
||||
shape.id, shape.status
|
||||
); //_netConnection.call
|
||||
|
||||
/*try{
|
||||
drawSO.send("addSegment", shape.getShapeArray(), shape.getType(), shape.getColor(), shape.getThickness(), shape.parentWidth, shape.parentHeight);
|
||||
} catch(e:Error){
|
||||
LogUtil.error("DrawProxy::sendShape - sending shape failed");
|
||||
}*/
|
||||
}
|
||||
|
||||
/**
|
||||
@ -216,10 +211,12 @@ package org.bigbluebutton.modules.whiteboard.business
|
||||
* @param array The array representation of a shape
|
||||
*
|
||||
*/
|
||||
public function addSegment(array:Array, type:String, color:uint, thickness:uint, parentWidth:Number, parentHeight:Number):void{
|
||||
var d:DrawObject = drawFactory.makeDrawObject(type,array,color,thickness);
|
||||
d.parentWidth = parentWidth;
|
||||
d.parentHeight = parentHeight;
|
||||
public function addSegment(array:Array, type:String, color:uint, thickness:uint, id:String, status:String):void{
|
||||
LogUtil.debug("Rx add segment ****");
|
||||
var d:DrawObject = drawFactory.makeDrawObject(type, array, color, thickness);
|
||||
d.id = id;
|
||||
d.status = status;
|
||||
|
||||
var e:WhiteboardUpdate = new WhiteboardUpdate(WhiteboardUpdate.BOARD_UPDATED);
|
||||
e.data = d;
|
||||
dispatcher.dispatchEvent(e);
|
||||
@ -350,17 +347,16 @@ package org.bigbluebutton.modules.whiteboard.business
|
||||
var shapes:Array = result as Array;
|
||||
//LogUtil.debug("Whiteboard::recievedShapesHistory() : recieved " + shapes.length);
|
||||
|
||||
for (var i:int=0; i<shapes.length; i++){
|
||||
for (var i:int=0; i < shapes.length; i++){
|
||||
var shape:Array = shapes[i] as Array;
|
||||
var shapeArray:Array = shape[0] as Array;
|
||||
var type:String = shape[1] as String;
|
||||
var color:uint = shape[2] as uint;
|
||||
var thickness:uint = shape[3] as uint;
|
||||
var width:Number = shape[4] as Number;
|
||||
var height:Number = shape[5] as Number;
|
||||
addSegment(shapeArray, type, color, thickness, width, height);
|
||||
var id:String = shape[4] as String;
|
||||
var status:String = shape[5] as String;
|
||||
addSegment(shapeArray, type, color, thickness, id, status);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
{
|
||||
import flash.display.Shape;
|
||||
|
||||
/**
|
||||
* The DrawObject class provides an interface for other geometric representations.
|
||||
* This is a simple implementation of the Template design pattern. Other classes extend the
|
||||
@ -28,8 +30,7 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
* @author dzgonjan
|
||||
*
|
||||
*/
|
||||
public class DrawObject
|
||||
{
|
||||
public class DrawObject {
|
||||
public static const PENCIL:String = "pencil";
|
||||
public static const RECTANGLE:String = "rectangle";
|
||||
public static const ELLIPSE:String = "ellipse";
|
||||
@ -38,15 +39,29 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
protected var shape:Array;
|
||||
protected var color:uint;
|
||||
protected var thickness:uint;
|
||||
public var parentWidth:Number;
|
||||
public var parentHeight:Number;
|
||||
|
||||
/**
|
||||
* Id we can use to match the feedback shape in the presenter's view so we can
|
||||
* remove it.
|
||||
*/
|
||||
public var id:String = null;
|
||||
|
||||
/**
|
||||
* Status = [START, UPDATE, END]
|
||||
*/
|
||||
public static const DRAW_UPDATE:String = "DRAW_UPDATE";
|
||||
public static const DRAW_END:String = "DRAW_END";
|
||||
public static const DRAW_START:String = "DRAW_START";
|
||||
public var status:String = DRAW_START;
|
||||
|
||||
protected var _shape:Shape = new Shape();
|
||||
protected var _segment:Array;
|
||||
|
||||
/**
|
||||
* The default constructor for the DrawObject
|
||||
*
|
||||
*/
|
||||
public function DrawObject(type:String, segment:Array, color:uint, thickness:uint)
|
||||
{
|
||||
public function DrawObject(type:String, segment:Array, color:uint, thickness:uint) {
|
||||
this.type = type;
|
||||
this.shape = segment;
|
||||
this.color = color;
|
||||
@ -54,6 +69,10 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
this.optimize();
|
||||
}
|
||||
|
||||
public function getShape():Shape {
|
||||
return _shape;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of DrawObject this class is
|
||||
* @return a string representing the type
|
||||
@ -91,8 +110,23 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
}
|
||||
|
||||
protected function optimize():void{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
protected function readyToSend():Boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
public function makeShape(width:Number, height:Number):void {
|
||||
|
||||
}
|
||||
|
||||
protected function denormalize(val:Number, side:Number):Number {
|
||||
return (val*side)/100.0;
|
||||
}
|
||||
|
||||
protected function normalize(val:Number, side:Number):Number {
|
||||
return (val*100.0)/side;
|
||||
}
|
||||
}
|
||||
}
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
{
|
||||
import flash.display.Shape;
|
||||
|
||||
/**
|
||||
* The Ellipse class. Extends the DrawObject
|
||||
* @author dzgonjan
|
||||
@ -58,5 +60,20 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
this.shape.push(y2);
|
||||
}
|
||||
|
||||
override public function makeShape(parentWidth:Number, parentHeight:Number):void {
|
||||
var newShape:Shape = new Shape();
|
||||
newShape.graphics.lineStyle(getThickness(), getColor());
|
||||
var arrayEnd:Number = getShapeArray().length;
|
||||
var x:Number = denormalize(getShapeArray()[0], parentWidth);
|
||||
var y:Number = denormalize(getShapeArray()[1], parentHeight);
|
||||
var width:Number = denormalize(getShapeArray()[arrayEnd-2], parentWidth) - x;
|
||||
var height:Number = denormalize(getShapeArray()[arrayEnd-1], parentHeight) - y;
|
||||
|
||||
newShape.graphics.drawEllipse(x, y, width, height);
|
||||
if (getColor() == 0x000000 || getColor() == 0xFFFFFF) newShape.alpha = 1.0;
|
||||
else newShape.alpha = 0.6;
|
||||
|
||||
_shape = newShape;
|
||||
}
|
||||
}
|
||||
}
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
{
|
||||
import flash.display.Shape;
|
||||
|
||||
/**
|
||||
* The Pencil class. Extends a DrawObject
|
||||
* @author dzgonjan
|
||||
@ -37,5 +39,26 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
super(DrawObject.PENCIL, segment, color, thickness);
|
||||
}
|
||||
|
||||
override public function makeShape(parentWidth:Number, parentHeight:Number):void {
|
||||
var newShape:Shape = new Shape();
|
||||
newShape.graphics.lineStyle(getThickness(), getColor());
|
||||
|
||||
var graphicsCommands:Vector.<int> = new Vector.<int>();
|
||||
graphicsCommands.push(1);
|
||||
var coordinates:Vector.<Number> = new Vector.<Number>();
|
||||
coordinates.push(denormalize(getShapeArray()[0], parentWidth), denormalize(getShapeArray()[1], parentHeight));
|
||||
|
||||
for (var i:int = 2; i < getShapeArray().length; i += 2){
|
||||
graphicsCommands.push(2);
|
||||
coordinates.push(denormalize(getShapeArray()[i], parentWidth), denormalize(getShapeArray()[i+1], parentHeight));
|
||||
}
|
||||
|
||||
newShape.graphics.drawPath(graphicsCommands, coordinates);
|
||||
|
||||
if (getColor() == 0x000000 || getColor() == 0xFFFFFF) newShape.alpha = 1;
|
||||
else newShape.alpha = 0.6;
|
||||
|
||||
_shape = newShape;
|
||||
}
|
||||
}
|
||||
}
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
{
|
||||
import flash.display.Shape;
|
||||
|
||||
/**
|
||||
* The Rectangle class. Extends a DrawObject
|
||||
* @author dzgonjan
|
||||
@ -55,5 +57,21 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
this.shape.push(y2);
|
||||
}
|
||||
|
||||
override public function makeShape(parentWidth:Number, parentHeight:Number):void {
|
||||
var newShape:Shape = new Shape();
|
||||
newShape.graphics.lineStyle(getThickness(), getColor());
|
||||
var arrayEnd:Number = getShapeArray().length;
|
||||
var x:Number = denormalize(getShapeArray()[0], parentWidth);
|
||||
var y:Number = denormalize(getShapeArray()[1], parentHeight);
|
||||
var width:Number = denormalize(getShapeArray()[arrayEnd-2], parentWidth) - x;
|
||||
var height:Number = denormalize(getShapeArray()[arrayEnd-1], parentHeight) - y;
|
||||
|
||||
newShape.graphics.drawRect(x,y,width,height);
|
||||
if (getColor() == 0x000000 || getColor() == 0xFFFFFF) newShape.alpha = 1.0;
|
||||
else newShape.alpha = 0.6;
|
||||
|
||||
_shape = newShape;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -31,28 +31,50 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
public class ShapeFactory
|
||||
{
|
||||
private var drawFactory:DrawObjectFactory;
|
||||
private var _parentWidth:Number = 0;
|
||||
private var _parentHeight:Number = 0;
|
||||
|
||||
public function ShapeFactory()
|
||||
{
|
||||
public function ShapeFactory() {
|
||||
drawFactory = new DrawObjectFactory();
|
||||
}
|
||||
|
||||
public function setParentDim(width:Number, height:Number):void {
|
||||
_parentWidth = width;
|
||||
_parentHeight = height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a Flash Shape, given a DrawObject representation of it
|
||||
* @param shape
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
public function makeShape(shape:DrawObject):Shape{
|
||||
var s:Shape = null;
|
||||
public function makeShape(shape:DrawObject):DrawObject{
|
||||
if (shape.getType() == DrawObject.PENCIL){
|
||||
s = makePencil(Pencil(shape));
|
||||
return makePencil(shape as Pencil);
|
||||
} else if (shape.getType() == DrawObject.RECTANGLE){
|
||||
s = makeRectangle(Rectangle(shape));
|
||||
return makeRectangle(shape as Rectangle);
|
||||
} else if (shape.getType() == DrawObject.ELLIPSE){
|
||||
s = makeEllipse(Ellipse(shape));
|
||||
return makeEllipse(shape as Ellipse);
|
||||
}
|
||||
return s;
|
||||
return null;
|
||||
}
|
||||
|
||||
private function denormalize(val:Number, side:Number):Number {
|
||||
return (val*side)/100.0;
|
||||
}
|
||||
|
||||
private function normalize(val:Number, side:Number):Number {
|
||||
return (val*100.0)/side;
|
||||
}
|
||||
|
||||
public function createDrawObject(type:String, segment:Array, color:uint, thickness:uint):DrawObject {
|
||||
var normSegment:Array = new Array();
|
||||
for (var i:int = 0; i < segment.length; i += 2) {
|
||||
normSegment[i] = normalize(segment[i] , _parentWidth);
|
||||
normSegment[i+1] = normalize(segment[i+1], _parentHeight);
|
||||
}
|
||||
return makeShape(drawFactory.makeDrawObject(type, normSegment, color, thickness));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -64,36 +86,21 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
* @return A Flash Shape object
|
||||
*
|
||||
*/
|
||||
public function makeFeedback(segment:Array, type:String, color:uint, thickness:uint):Shape{
|
||||
return makeShape(drawFactory.makeDrawObject(type,segment, color, thickness));
|
||||
public function makeFeedback(type:String, segment:Array, color:uint, thickness:uint):DrawObject{
|
||||
return makeShape(drawFactory.makeDrawObject(type, segment, color, thickness));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Creates a Flash Shape from a Pencil DrawObject
|
||||
* @param p a Pencil DrawObject
|
||||
* @return a Shape
|
||||
*
|
||||
*/
|
||||
private function makePencil(p:Pencil):Shape{
|
||||
var newShape:Shape = new Shape();
|
||||
newShape.graphics.lineStyle(p.getThickness(), p.getColor());
|
||||
|
||||
var graphicsCommands:Vector.<int> = new Vector.<int>();
|
||||
graphicsCommands.push(1);
|
||||
var coordinates:Vector.<Number> = new Vector.<Number>();
|
||||
coordinates.push(p.getShapeArray()[0], p.getShapeArray()[1]);
|
||||
|
||||
for (var i:int = 2; i < p.getShapeArray().length; i += 2){
|
||||
graphicsCommands.push(2);
|
||||
coordinates.push(p.getShapeArray()[i], p.getShapeArray()[i+1]);
|
||||
}
|
||||
|
||||
newShape.graphics.drawPath(graphicsCommands, coordinates);
|
||||
|
||||
if (p.getColor() == 0x000000 || p.getColor() == 0xFFFFFF) newShape.alpha = 1;
|
||||
else newShape.alpha = 0.6;
|
||||
|
||||
return newShape;
|
||||
private function makePencil(p:Pencil):DrawObject{
|
||||
p.makeShape(_parentWidth, _parentHeight);
|
||||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -102,20 +109,9 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
* @return a Shape
|
||||
*
|
||||
*/
|
||||
private function makeRectangle(r:Rectangle):Shape{
|
||||
var newShape:Shape = new Shape();
|
||||
newShape.graphics.lineStyle(r.getThickness(), r.getColor());
|
||||
var arrayEnd:Number = r.getShapeArray().length;
|
||||
var x:Number = r.getShapeArray()[0];
|
||||
var y:Number = r.getShapeArray()[1];
|
||||
var width:Number = r.getShapeArray()[arrayEnd-2] - x;
|
||||
var height:Number = r.getShapeArray()[arrayEnd-1] - y;
|
||||
|
||||
newShape.graphics.drawRect(x,y,width,height);
|
||||
if (r.getColor() == 0x000000 || r.getColor() == 0xFFFFFF) newShape.alpha = 1.0;
|
||||
else newShape.alpha = 0.6;
|
||||
|
||||
return newShape;
|
||||
private function makeRectangle(r:Rectangle):DrawObject{
|
||||
r.makeShape(_parentWidth, _parentHeight);
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -124,20 +120,9 @@ package org.bigbluebutton.modules.whiteboard.business.shapes
|
||||
* @return a Shape
|
||||
*
|
||||
*/
|
||||
private function makeEllipse(e:Ellipse):Shape{
|
||||
var newShape:Shape = new Shape();
|
||||
newShape.graphics.lineStyle(e.getThickness(), e.getColor());
|
||||
var arrayEnd:Number = e.getShapeArray().length;
|
||||
var x:Number = e.getShapeArray()[0];
|
||||
var y:Number = e.getShapeArray()[1];
|
||||
var width:Number = e.getShapeArray()[arrayEnd-2] - x;
|
||||
var height:Number = e.getShapeArray()[arrayEnd-1] - y;
|
||||
|
||||
newShape.graphics.drawEllipse(x,y,width,height);
|
||||
if (e.getColor() == 0x000000 || e.getColor() == 0xFFFFFF) newShape.alpha = 1.0;
|
||||
else newShape.alpha = 0.6;
|
||||
|
||||
return newShape;
|
||||
private function makeEllipse(e:Ellipse):DrawObject{
|
||||
e.makeShape(_parentWidth, _parentHeight);
|
||||
return e;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -76,6 +76,8 @@ package org.bigbluebutton.modules.whiteboard.managers
|
||||
}
|
||||
|
||||
private function gotoPage(pageNumber:int):void{
|
||||
if (pages == null || pages.length < pageNumber) return;
|
||||
|
||||
var event:PageEvent = new PageEvent(PageEvent.CHANGE_PAGE);
|
||||
event.pageNum = pageNumber;
|
||||
this.pageNum = pageNumber;
|
||||
|
@ -19,15 +19,20 @@
|
||||
package org.bigbluebutton.modules.whiteboard.managers
|
||||
{
|
||||
import com.asfusion.mate.events.Dispatcher;
|
||||
|
||||
import flash.events.TimerEvent;
|
||||
import flash.utils.Timer;
|
||||
import org.bigbluebutton.core.managers.UserManager;
|
||||
|
||||
import org.bigbluebutton.common.events.AddUIComponentToMainCanvas;
|
||||
import org.bigbluebutton.core.managers.UserManager;
|
||||
import org.bigbluebutton.main.model.users.Conference;
|
||||
import org.bigbluebutton.modules.present.api.PresentationAPI;
|
||||
import org.bigbluebutton.modules.present.events.AddButtonToPresentationEvent;
|
||||
import org.bigbluebutton.modules.present.events.AddOverlayCanvasEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.WhiteboardCanvasModel;
|
||||
import org.bigbluebutton.modules.whiteboard.events.PageEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardButtonEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardUpdate;
|
||||
import org.bigbluebutton.modules.whiteboard.views.WhiteboardButton;
|
||||
import org.bigbluebutton.modules.whiteboard.views.WhiteboardCanvas;
|
||||
import org.bigbluebutton.modules.whiteboard.views.WhiteboardToolbar;
|
||||
@ -38,15 +43,17 @@ package org.bigbluebutton.modules.whiteboard.managers
|
||||
private var highlighterCanvas:WhiteboardCanvas;
|
||||
private var highlighterToolbar:WhiteboardToolbar;
|
||||
private var whiteboardButton:WhiteboardButton;
|
||||
private var model:WhiteboardCanvasModel = new WhiteboardCanvasModel();
|
||||
|
||||
public function WhiteboardManager()
|
||||
{
|
||||
public function WhiteboardManager() {
|
||||
globalDispatcher = new Dispatcher();
|
||||
}
|
||||
|
||||
public function handleStartModuleEvent():void{
|
||||
if (highlighterCanvas != null) return;
|
||||
highlighterCanvas = new WhiteboardCanvas();
|
||||
highlighterCanvas.model = model;
|
||||
model.wbCanvas = highlighterCanvas;
|
||||
if (highlighterToolbar != null) return;
|
||||
highlighterToolbar = new WhiteboardToolbar();
|
||||
highlighterToolbar.canvas = highlighterCanvas;
|
||||
@ -54,7 +61,7 @@ package org.bigbluebutton.modules.whiteboard.managers
|
||||
whiteboardButton = new WhiteboardButton();
|
||||
|
||||
//Necessary now because of module loading race conditions
|
||||
var t:Timer = new Timer(2000, 1);
|
||||
var t:Timer = new Timer(1000, 1);
|
||||
t.addEventListener(TimerEvent.TIMER, addHighlighterCanvas);
|
||||
t.addEventListener(TimerEvent.TIMER, addHighlighterToolbar);
|
||||
t.start();
|
||||
@ -78,5 +85,28 @@ package org.bigbluebutton.modules.whiteboard.managers
|
||||
highlighterToolbar.positionToolbar(e.window);
|
||||
}
|
||||
|
||||
public function drawSegment(event:WhiteboardUpdate):void{
|
||||
model.drawSegment(event);
|
||||
}
|
||||
|
||||
public function clearBoard(event:WhiteboardUpdate = null):void{
|
||||
model.clearBoard();
|
||||
}
|
||||
|
||||
public function undoShape(event:WhiteboardUpdate):void{
|
||||
model.undoShape();
|
||||
}
|
||||
|
||||
public function changePage(e:PageEvent):void{
|
||||
model.changePage(e);
|
||||
}
|
||||
|
||||
public function enableWhiteboard(e:WhiteboardButtonEvent):void{
|
||||
highlighterCanvas.enableWhiteboard(e);
|
||||
}
|
||||
|
||||
public function disableWhiteboard(e:WhiteboardButtonEvent):void{
|
||||
highlighterCanvas.disableWhiteboard(e);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
BigBlueButton open source conferencing system - http://www.bigbluebutton.org
|
||||
|
||||
Copyright (c) 2010 BigBlueButton Inc. and by respective authors (see below).
|
||||
|
||||
BigBlueButton is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU Lesser General Public License as published by the Free Software
|
||||
Foundation; either version 2.1 of the License, or (at your option) any later
|
||||
version.
|
||||
|
||||
BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
$Id: $
|
||||
-->
|
||||
|
||||
<EventMap xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="http://mate.asfusion.com/" xmlns:mate="org.bigbluebutton.common.mate.*">
|
||||
<mx:Script>
|
||||
<![CDATA[
|
||||
import mx.controls.Alert;
|
||||
import mx.events.FlexEvent;
|
||||
import org.bigbluebutton.main.events.ModuleStartedEvent;
|
||||
import org.bigbluebutton.modules.present.events.AddButtonToPresentationEvent;
|
||||
import org.bigbluebutton.modules.present.events.AddOverlayCanvasEvent;
|
||||
import org.bigbluebutton.modules.present.events.NavigationEvent;
|
||||
import org.bigbluebutton.modules.present.events.PresentationEvent;
|
||||
import org.bigbluebutton.modules.present.events.WindowResizedEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.business.DrawProxy;
|
||||
import org.bigbluebutton.modules.whiteboard.events.PageEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.StartWhiteboardModuleEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardButtonEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardDrawEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardPresenterEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardUpdate;
|
||||
import org.bigbluebutton.modules.whiteboard.managers.PageManager;
|
||||
import org.bigbluebutton.modules.whiteboard.managers.WhiteboardManager;
|
||||
import org.bigbluebutton.modules.whiteboard.views.WhiteboardCanvas;
|
||||
|
||||
private function dummyMethod():void{
|
||||
|
||||
}
|
||||
]]>
|
||||
</mx:Script>
|
||||
|
||||
<EventHandlers type="{FlexEvent.PREINITIALIZE}">
|
||||
<ObjectBuilder generator="{WhiteboardManager}" cache="global" />
|
||||
<ObjectBuilder generator="{DrawProxy}" cache="global" />
|
||||
<ObjectBuilder generator="{PageManager}" cache="global" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardPresenterEvent.MODIFY_ENABLED}" >
|
||||
<MethodInvoker generator="{DrawProxy}" method="modifyEnabled" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{NavigationEvent.GOTO_PAGE}" >
|
||||
<MethodInvoker generator="{PageManager}" method="changePage" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{PresentationEvent.PRESENTATION_LOADED}" >
|
||||
<MethodInvoker generator="{PageManager}" method="createPages" arguments="{event}" />
|
||||
<MethodInvoker generator="{DrawProxy}" method="setActivePresentation" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{StartWhiteboardModuleEvent.START_HIGHLIGHTER_MODULE_EVENT}">
|
||||
<MethodInvoker generator="{WhiteboardManager}" method="handleStartModuleEvent" />
|
||||
<MethodInvoker generator="{DrawProxy}" method="connect" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardDrawEvent.CLEAR_BOARD}" >
|
||||
<MethodInvoker generator="{DrawProxy}" method="clearBoard" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardDrawEvent.SEND_SHAPE}">
|
||||
<MethodInvoker generator="{DrawProxy}" method="sendShape" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardDrawEvent.UNDO_SHAPE}" >
|
||||
<MethodInvoker generator="{DrawProxy}" method="undoShape" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardUpdate.BOARD_UPDATED}">
|
||||
<MethodInvoker generator="{PageManager}" method="addShapeToPage" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardUpdate.SHAPE_UNDONE}" >
|
||||
<MethodInvoker generator="{PageManager}" method="undoShapeFromPage" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardUpdate.BOARD_CLEARED}" >
|
||||
<MethodInvoker generator="{PageManager}" method="clearPage" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{PageEvent.CHANGE_PAGE}" >
|
||||
<MethodInvoker generator="{DrawProxy}" method="getPageHistory" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{PageEvent.LOAD_PAGE}" >
|
||||
<MethodInvoker generator="{PageManager}" method="loadPage" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardButtonEvent.WHITEBOARD_ADDED_TO_PRESENTATION}" >
|
||||
<MethodInvoker generator="{WhiteboardManager}" method="positionToolbar" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{AddOverlayCanvasEvent.ADD_OVERLAY_CANVAS}" >
|
||||
<InlineInvoker method="dummyMethod" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WindowResizedEvent.PRESENTATION_WINDOW_RESIZED_EVENT}">
|
||||
<InlineInvoker method="dummyMethod" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{AddButtonToPresentationEvent.ADD_BUTTON}">
|
||||
<InlineInvoker method="dummyMethod" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{NavigationEvent.GOTO_PAGE}">
|
||||
<InlineInvoker method="dummyMethod" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{PresentationEvent.PRESENTATION_LOADED}">
|
||||
<InlineInvoker method="dummyMethod" />
|
||||
</EventHandlers>
|
||||
|
||||
</EventMap>
|
@ -25,7 +25,6 @@
|
||||
<![CDATA[
|
||||
import mx.controls.Alert;
|
||||
import mx.events.FlexEvent;
|
||||
|
||||
import org.bigbluebutton.main.events.ModuleStartedEvent;
|
||||
import org.bigbluebutton.modules.present.events.AddButtonToPresentationEvent;
|
||||
import org.bigbluebutton.modules.present.events.AddOverlayCanvasEvent;
|
||||
@ -129,4 +128,23 @@
|
||||
<InlineInvoker method="dummyMethod" />
|
||||
</EventHandlers>
|
||||
|
||||
<EventHandlers type="{WhiteboardUpdate.BOARD_CLEARED}" >
|
||||
<MethodInvoker generator="{WhiteboardManager}" method="clearBoard" arguments="{event}"/>
|
||||
</EventHandlers>
|
||||
<EventHandlers type="{WhiteboardUpdate.BOARD_UPDATED}" >
|
||||
<MethodInvoker generator="{WhiteboardManager}" method="drawSegment" arguments="{event}"/>
|
||||
</EventHandlers>
|
||||
<EventHandlers type="{WhiteboardUpdate.SHAPE_UNDONE}" >
|
||||
<MethodInvoker generator="{WhiteboardManager}" method="undoShape" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
<EventHandlers type="{PageEvent.CHANGE_PAGE}" >
|
||||
<MethodInvoker generator="{WhiteboardManager}" method="changePage" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
<EventHandlers type="{WhiteboardButtonEvent.ENABLE_WHITEBOARD}" >
|
||||
<MethodInvoker generator="{WhiteboardManager}" method="enableWhiteboard" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
<EventHandlers type="{WhiteboardButtonEvent.DISABLE_WHITEBOARD}" >
|
||||
<MethodInvoker generator="{WhiteboardManager}" method="disableWhiteboard" arguments="{event}" />
|
||||
</EventHandlers>
|
||||
|
||||
</EventMap>
|
||||
|
@ -25,9 +25,7 @@
|
||||
mouseOver="setCursor()" mouseOut="removeCursor()" implements="org.bigbluebutton.common.IBbbCanvas">
|
||||
<mx:Script>
|
||||
<![CDATA[
|
||||
|
||||
import mx.collections.ArrayCollection;
|
||||
import mx.controls.Alert;
|
||||
import mx.core.Application;
|
||||
import mx.managers.CursorManager;
|
||||
|
||||
@ -35,6 +33,7 @@
|
||||
import org.bigbluebutton.common.Images;
|
||||
import org.bigbluebutton.common.LogUtil;
|
||||
import org.bigbluebutton.modules.present.events.WindowResizedEvent;
|
||||
import org.bigbluebutton.modules.whiteboard.WhiteboardCanvasModel;
|
||||
import org.bigbluebutton.modules.whiteboard.business.shapes.DrawObject;
|
||||
import org.bigbluebutton.modules.whiteboard.business.shapes.DrawObjectFactory;
|
||||
import org.bigbluebutton.modules.whiteboard.business.shapes.ShapeFactory;
|
||||
@ -45,205 +44,49 @@
|
||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardUpdate;
|
||||
import org.bigbluebutton.modules.whiteboard.maps.WhiteboardEventMap;
|
||||
|
||||
private var x1:int;
|
||||
private var y1:int;
|
||||
private var x2:int;
|
||||
private var y2:int;
|
||||
|
||||
public var d:DrawObject;
|
||||
private var isDrawing:Boolean;
|
||||
private var sending:Boolean = false;
|
||||
private var feedback:Shape = new Shape();
|
||||
private var latentFeedbacks:ArrayCollection = new ArrayCollection();
|
||||
private var segment:Array = new Array();
|
||||
private var newShape:Shape = new Shape();
|
||||
private var shapeList:Array = new Array();
|
||||
|
||||
protected var drawFactory:DrawObjectFactory;
|
||||
protected var shapeFactory:ShapeFactory;
|
||||
protected var bbbCanvas:IBbbCanvas;
|
||||
|
||||
protected var shapeStyle:String = DrawObject.PENCIL;
|
||||
protected var drawColor:uint = 0x000000;
|
||||
protected var thickness:uint = 1;
|
||||
public var model:WhiteboardCanvasModel;
|
||||
private var bbbCanvas:IBbbCanvas;
|
||||
|
||||
private var _xPosition:int;
|
||||
private var _yPosition:int;
|
||||
|
||||
private var images:Images = new Images();
|
||||
[Bindable] private var pencil_icon:Class = images.pencil_icon;
|
||||
|
||||
private var whiteboardEnabled:Boolean = false;
|
||||
private var showWhiteboard:Boolean = true;
|
||||
|
||||
private var drawTimer:Timer;
|
||||
|
||||
private function init():void{
|
||||
drawFactory = new DrawObjectFactory();
|
||||
shapeFactory = new ShapeFactory();
|
||||
this.label = "Highlighter";
|
||||
}
|
||||
|
||||
/**
|
||||
*Method is invoked when the mouse is released
|
||||
*<p>
|
||||
*The method finalizes the shape that was being edited. The shape is then sent as
|
||||
*an event, which updates all client views.
|
||||
*<p>
|
||||
*The method also deleted the temporary feedback shape from the screen.
|
||||
*/
|
||||
private function doMouseUp():void{
|
||||
isDrawing = false;
|
||||
sendShapeToServer();
|
||||
if (drawTimer != null) drawTimer.stop();
|
||||
private function doMouseUp():void {
|
||||
model.doMouseUp();
|
||||
}
|
||||
|
||||
private function onDrawTimer(e:TimerEvent):void{
|
||||
if (this.shapeStyle != DrawObject.PENCIL) return;
|
||||
var startX:Number = segment[segment.length - 2] as Number;
|
||||
var startY:Number = segment[segment.length - 1] as Number;
|
||||
sendShapeToServer();
|
||||
startShape(startX,startY);
|
||||
LogUtil.debug("StartShape from onDrawTimer: "+startX+" "+startY);
|
||||
}
|
||||
|
||||
private function sendShapeToServer():void{
|
||||
if (segment.length == 0) return;
|
||||
|
||||
this.d = drawFactory.makeDrawObject(this.shapeStyle, segment, this.drawColor, this.thickness);
|
||||
this.d.parentHeight = this.height;
|
||||
this.d.parentWidth = this.width;
|
||||
var event:WhiteboardDrawEvent = new WhiteboardDrawEvent(WhiteboardDrawEvent.SEND_SHAPE);
|
||||
event.message = d;
|
||||
dispatchEvent(event);
|
||||
|
||||
latentFeedbacks.addItem(feedback);
|
||||
|
||||
feedback = new Shape();
|
||||
segment = new Array();
|
||||
}
|
||||
|
||||
/**
|
||||
*Method is invoked when the mouse is pressed
|
||||
*<p>
|
||||
*The method captures the x and y coordinates of the mouse click and uses the point as
|
||||
*the starting point in a shape
|
||||
*/
|
||||
private function doMouseDown():void{
|
||||
x1 = this.mouseX;
|
||||
y1 = this.mouseY;
|
||||
startShape(x1, y1);
|
||||
drawTimer = new Timer(1000, 0);
|
||||
drawTimer.addEventListener(TimerEvent.TIMER, onDrawTimer);
|
||||
drawTimer.start();
|
||||
model.doMouseDown(this.mouseX, this.mouseY);
|
||||
}
|
||||
|
||||
private function startShape(startX:Number, startY:Number):void{
|
||||
isDrawing = true;
|
||||
segment.push(startX);
|
||||
segment.push(startY);
|
||||
rawChildren.addChild(feedback);
|
||||
}
|
||||
|
||||
/**
|
||||
*Method is invoked when the mouse is moved over the canvas
|
||||
*<p>
|
||||
*The method captures the x and y coordinates of the mouse, adding the points to the current
|
||||
*shape being drawn.
|
||||
*<p>
|
||||
*Note: The method only works if the mouse is pressed, otherwise does nothing.
|
||||
*/
|
||||
private function doMouseMove():void{
|
||||
if (isDrawing){
|
||||
x2 = this.mouseX;
|
||||
y2 = this.mouseY;
|
||||
segment.push(x2);
|
||||
segment.push(y2);
|
||||
|
||||
rawChildren.removeChild(feedback);
|
||||
feedback = shapeFactory.makeFeedback(segment,this.shapeStyle, this.drawColor, this.thickness);
|
||||
rawChildren.addChild(feedback);
|
||||
|
||||
x1 = x2;
|
||||
y1 = y2;
|
||||
}
|
||||
model.doMouseMove(this.mouseX, this.mouseY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws the segment stored in the drawVO Value Object
|
||||
* <p>
|
||||
* This method is executed by the BoardMediator upon reception of an Update request. The method
|
||||
* is executed on all clients, even the one which sent the update request.
|
||||
*/
|
||||
public function drawSegment(event:WhiteboardUpdate):void{
|
||||
var o:DrawObject = event.data;
|
||||
draw(o);
|
||||
public function sendShapeToServer(dobj:DrawObject):void{
|
||||
var event:WhiteboardDrawEvent = new WhiteboardDrawEvent(WhiteboardDrawEvent.SEND_SHAPE);
|
||||
event.message = dobj;
|
||||
dispatchEvent(event);
|
||||
}
|
||||
|
||||
private function draw(o:DrawObject):void{
|
||||
|
||||
for( var i:int = 0; i<latentFeedbacks.length;i++){
|
||||
var tempshape:Shape = latentFeedbacks.getItemAt(i) as Shape;
|
||||
if(rawChildren.contains(tempshape))
|
||||
{
|
||||
rawChildren.removeChild(tempshape);
|
||||
latentFeedbacks.removeItemAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
newShape = shapeFactory.makeShape(o);
|
||||
newShape.width = newShape.width * (this.width/o.parentWidth);
|
||||
newShape.height = newShape.height * (this.height/o.parentHeight);
|
||||
shapeList.push(newShape);
|
||||
//rawChildren.addChild(shapeList[shapeList.length-1]);
|
||||
bbbCanvas.addRawChild(shapeList[shapeList.length-1]);
|
||||
newShape = new Shape();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the type of shape we're drawing (pencil, rectangle, etc...)
|
||||
* @param s The type
|
||||
*
|
||||
*/
|
||||
public function setShape(s:String):void{
|
||||
this.shapeStyle = s;
|
||||
model.setShape(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the color
|
||||
* @param e event containing the color (e.target.selectedColor)
|
||||
*
|
||||
*/
|
||||
public function changeColor(e:Event):void{
|
||||
drawColor = e.target.selectedColor;
|
||||
model.changeColor(e.target.selectedColor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the thickness
|
||||
* @param e event containing the thickness (e.target.value)
|
||||
*
|
||||
*/
|
||||
public function changeThickness(e:Event):void{
|
||||
this.thickness = e.target.value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the entire board
|
||||
*/
|
||||
public function clearBoard(event:WhiteboardUpdate = null):void{
|
||||
for (var i:Number = 0; i<this.shapeList.length; i++){
|
||||
if (this.bbbCanvas.doesContain(this.shapeList[i])){
|
||||
this.bbbCanvas.removeRawChild(this.shapeList[i]);
|
||||
}
|
||||
}
|
||||
this.shapeList = new Array();
|
||||
}
|
||||
|
||||
public function undoShape(event:WhiteboardUpdate):void{
|
||||
if (this.shapeList.length > 0){
|
||||
this.bbbCanvas.removeRawChild(this.shapeList[this.shapeList.length-1]);
|
||||
shapeList.pop();
|
||||
}
|
||||
model.changeThickness(e.target.value);
|
||||
}
|
||||
|
||||
public function get xPosition():int {
|
||||
@ -262,20 +105,6 @@
|
||||
_yPosition = y;
|
||||
}
|
||||
|
||||
private function scaleCanvas(e:WindowResizedEvent):void{
|
||||
zoomCanvas(e.width, e.height);
|
||||
}
|
||||
|
||||
private function changePage(e:PageEvent):void{
|
||||
var page:Number = e.pageNum;
|
||||
var shapes:ArrayCollection = e.shapes;
|
||||
clearBoard();
|
||||
for (var i:int = 0; i<shapes.length; i++){
|
||||
var o:DrawObject = shapes.getItemAt(i) as DrawObject;
|
||||
draw(o);
|
||||
}
|
||||
}
|
||||
|
||||
private function setWhiteboardVisibility():void{
|
||||
if (this.whiteboardEnabled && this.showWhiteboard) this.visible = true;
|
||||
else this.visible = false;
|
||||
@ -292,38 +121,48 @@
|
||||
|
||||
/** Inherited from org.bigbluebutton.common.IBbbCanvas*/
|
||||
public function addRawChild(child:DisplayObject):void{
|
||||
this.rawChildren.addChild(child);
|
||||
this.bbbCanvas.addRawChild(child);
|
||||
}
|
||||
|
||||
public function removeRawChild(child:DisplayObject):void{
|
||||
this.rawChildren.removeChild(child);
|
||||
this.bbbCanvas.removeRawChild(child);
|
||||
}
|
||||
|
||||
public function doesContain(child:DisplayObject):Boolean{
|
||||
return this.rawChildren.contains(child);
|
||||
return bbbCanvas.doesContain(child);
|
||||
}
|
||||
|
||||
public function acceptOverlayCanvas(overlay:IBbbCanvas):void{
|
||||
LogUtil.debug("WhiteboardCanvas::acceptOverlayCanvas()");
|
||||
LogUtil.debug("OVERLAYING PRESENTATION CANVAS");
|
||||
this.bbbCanvas = overlay;
|
||||
//Load existing shapes onto the canvas.
|
||||
dispatchEvent(new PageEvent(PageEvent.LOAD_PAGE));
|
||||
}
|
||||
|
||||
public function moveCanvas(x:int, y:int):void{
|
||||
public function moveCanvas(x:Number, y:Number):void {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public function zoomCanvas(width:int, height:int):void{
|
||||
for (var i:int = 0; i<this.shapeList.length; i++){
|
||||
var s:Shape = this.shapeList[i] as Shape;
|
||||
s.width = s.width * (width /this.width);
|
||||
s.height = s.height * (height /this.height);
|
||||
public function getMouseXY():Array {
|
||||
return [this.mouseX, this.mouseY];
|
||||
}
|
||||
|
||||
public function removeShape(child:DisplayObject):void {
|
||||
if (bbbCanvas == null) return;
|
||||
if (doesContain(child)) removeRawChild(child);
|
||||
}
|
||||
|
||||
public function addShape(child:DisplayObject):void {
|
||||
if (bbbCanvas == null) return;
|
||||
addRawChild(child);
|
||||
}
|
||||
|
||||
public function zoomCanvas(width:Number, height:Number):void {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
model.zoomCanvas(width, height);
|
||||
}
|
||||
|
||||
public function showCanvas(show:Boolean):void{
|
||||
@ -333,29 +172,20 @@
|
||||
|
||||
/** End IBBBCanvas*/
|
||||
|
||||
public function isPageEmpty():Boolean{
|
||||
return (this.shapeList.length == 0);
|
||||
public function isPageEmpty():Boolean {
|
||||
return model.isPageEmpty();
|
||||
}
|
||||
|
||||
private function enableWhiteboard(e:WhiteboardButtonEvent):void{
|
||||
public function enableWhiteboard(e:WhiteboardButtonEvent):void{
|
||||
this.whiteboardEnabled = true;
|
||||
setWhiteboardVisibility();
|
||||
}
|
||||
|
||||
private function disableWhiteboard(e:WhiteboardButtonEvent):void{
|
||||
public function disableWhiteboard(e:WhiteboardButtonEvent):void{
|
||||
this.whiteboardEnabled = false;
|
||||
setWhiteboardVisibility();
|
||||
}
|
||||
|
||||
]]>
|
||||
</mx:Script>
|
||||
|
||||
<mate:Debugger level="{Debugger.ALL}" />
|
||||
<mate:Listener type="{WhiteboardUpdate.BOARD_CLEARED}" method="clearBoard" />
|
||||
<mate:Listener type="{WhiteboardUpdate.BOARD_UPDATED}" method="drawSegment" />
|
||||
<mate:Listener type="{WhiteboardUpdate.SHAPE_UNDONE}" method="undoShape" />
|
||||
<mate:Listener type="{WindowResizedEvent.PRESENTATION_WINDOW_RESIZED_EVENT}" method="scaleCanvas" />
|
||||
<mate:Listener type="{PageEvent.CHANGE_PAGE}" method="changePage" />
|
||||
<mate:Listener type="{WhiteboardButtonEvent.ENABLE_WHITEBOARD}" method="enableWhiteboard" />
|
||||
<mate:Listener type="{WhiteboardButtonEvent.DISABLE_WHITEBOARD}" method="disableWhiteboard" />
|
||||
</mx:Canvas>
|
||||
|
@ -41,13 +41,15 @@
|
||||
# 2010-02-28 FFD Fixed #834
|
||||
# 2011-06-26 FFD Updates for 0.8
|
||||
# 2012-01-14 FFD Tsting the development environment for 0.8
|
||||
# 2012-02-22 FFD Updates to development environment
|
||||
|
||||
#set -x
|
||||
##set -x
|
||||
#set -e
|
||||
|
||||
PATH=$PATH:/sbin
|
||||
|
||||
FREESWITCH_INIT_D="/etc/init.d/bbb-freeswitch"
|
||||
BBB_VERSION="0.8-beta-4"
|
||||
source /etc/bigbluebutton/bigbluebutton-release
|
||||
|
||||
if [ ! -f /usr/share/red5/webapps/bigbluebutton/WEB-INF/red5-web.xml ]; then
|
||||
echo "#"
|
||||
@ -132,17 +134,6 @@ check_file() {
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
is_vm() {
|
||||
#
|
||||
# Is the the BigBlueButton VM?
|
||||
#
|
||||
if [ -f /home/firstuser/.profile ]; then
|
||||
echo $(cat /home/firstuser/.profile | grep BigBlueButton)
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
print_header() {
|
||||
if [ ! $HEADER ]; then
|
||||
echo
|
||||
@ -171,7 +162,7 @@ need_root() {
|
||||
|
||||
|
||||
usage() {
|
||||
echo "BigBlueButton Configuration Utility - Version $BBB_VERSION"
|
||||
echo "BigBlueButton Configuration Utility - Version $BIGBLUEBUTTON_RELEASE"
|
||||
echo "http://code.google.com/p/bigbluebutton/wiki/BBBConf"
|
||||
echo
|
||||
echo " bbb-conf [options]"
|
||||
@ -179,14 +170,13 @@ usage() {
|
||||
echo "Configuration:"
|
||||
echo " --version Display BigBlueButton version (packages)"
|
||||
echo " --setip <host> Set IP/hostname for BigBlueButton"
|
||||
echo " --setfreeswtichip <host> Set IP for FreeSWITCH"
|
||||
echo " --setsalt <salt> Change the security salt in bigbluebutton.properties"
|
||||
echo
|
||||
echo "Monitoring:"
|
||||
echo " --check <verbose> Check configuration files and processes for problems"
|
||||
echo " --check Check configuration files and processes for problems"
|
||||
echo " --debug Scan the log files for error messages"
|
||||
echo " --watch Scan the log files for error messages every 2 seconds"
|
||||
echo " --salt View the URL and security salt for the server"
|
||||
echo " --salt View the URL and salt (shared secret) for the server"
|
||||
echo
|
||||
echo "Administration:"
|
||||
echo " --restart Restart BigBueButton"
|
||||
@ -195,13 +185,11 @@ usage() {
|
||||
echo " --clean Restart and clean all log files"
|
||||
echo " --zip Zip up log files for reporting an error"
|
||||
echo
|
||||
if [ "$(is_vm)" ]; then
|
||||
|
||||
echo "Development:"
|
||||
echo " --setup-samba Setup samba share for development (VM only)"
|
||||
echo " --checkout <repo> Checkout from github or passed in repository"
|
||||
echo " --setup-dev [client|web|apps] Setup development environment "
|
||||
echo " --setup-samba Setup samba share for current users"
|
||||
echo " --setup-dev [tools|client|web|apps] Setup development environment "
|
||||
echo " --reset-dev Reset environment back to using packages"
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
@ -363,6 +351,41 @@ display_bigbluebutton_status () {
|
||||
/etc/init.d/${SERVLET_CONTAINER} status
|
||||
}
|
||||
|
||||
check_tools() {
|
||||
if [ ! -d $1 ]; then
|
||||
echo
|
||||
echo "# Error: You haven't installed the development tools yet."
|
||||
echo "# Run:"
|
||||
echo "# bbb-conf --setup-dev tools "
|
||||
echo
|
||||
exit 1
|
||||
else
|
||||
echo "# Found dev tools at $1"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
check_source() {
|
||||
mkdir -p $HOME/dev
|
||||
if [ ! -d $1 ]; then
|
||||
echo
|
||||
echo "# You need to clone the BigBlueButton source from GitHub into"
|
||||
echo "#"
|
||||
echo "# $HOME/dev"
|
||||
echo "#"
|
||||
echo "# After cloning you should have the folder"
|
||||
echo "#"
|
||||
echo "# $HOME/dev/bigbluebutton"
|
||||
echo "#"
|
||||
echo "# For more information, see:"
|
||||
echo "# http://code.google.com/p/bigbluebutton/wiki/08SettingDevEnvironment"
|
||||
echo
|
||||
exit 1
|
||||
else
|
||||
echo "# Found source at $1"
|
||||
fi
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
usage
|
||||
exit 1
|
||||
@ -440,17 +463,6 @@ while [ $# -gt 0 ]; do
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "--checkout" -o "$1" = "-checkout" ]; then
|
||||
echo "# Request to checkout BigBlueButton"
|
||||
if [ $# -lt 2 ]; then
|
||||
CHECKOUT="git://github.com/bigbluebutton/bigbluebutton.git"
|
||||
else
|
||||
CHECKOUT="${2}"
|
||||
fi
|
||||
shift; shift
|
||||
continue
|
||||
fi
|
||||
|
||||
#
|
||||
# all other parameters requires at least 1 argument
|
||||
#
|
||||
@ -463,7 +475,6 @@ while [ $# -gt 0 ]; do
|
||||
|
||||
if echo $HOST|grep -q ":"; then
|
||||
HOST=`echo ${2}|cut -d: -f1`
|
||||
PORT=`echo ${2}|cut -d: -f2`
|
||||
fi
|
||||
shift; shift
|
||||
continue
|
||||
@ -511,15 +522,6 @@ while [ $# -gt 0 ]; do
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "-setfreeswitchip" -o "$1" = "--setfreeswitchip" ]; then
|
||||
if test -z "${2}"; then
|
||||
usage;
|
||||
fi
|
||||
FREESWITCHIP="${2}"
|
||||
shift; shift
|
||||
continue
|
||||
fi
|
||||
|
||||
usage
|
||||
exit 1
|
||||
done
|
||||
@ -547,14 +549,6 @@ if [ $SALT ]; then
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ $FREESWITCHIP ]; then
|
||||
need_root
|
||||
change_var_ip /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties sip.server.host $FREESWITCHIP
|
||||
echo "Changed the value for sip.server.host to $FREESWITCHIP"
|
||||
echo
|
||||
CLEAN=1
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup samba
|
||||
#
|
||||
@ -604,169 +598,262 @@ you can map the above path to a drive letter.
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Setup the development environemnt.
|
||||
#
|
||||
|
||||
if [ $CHECKOUT ]; then
|
||||
if [ $SETUPDEV ]; then
|
||||
check_root
|
||||
|
||||
# This is a step towards setting up a development environment on a non-BigBlueButton VM
|
||||
#
|
||||
# Setup the development tools
|
||||
#
|
||||
if [ $SETUPDEV == "tools" ]; then
|
||||
|
||||
#
|
||||
# Check for core development tools
|
||||
#
|
||||
if ! which git > /dev/null; then
|
||||
echo "# Installing git and ant"
|
||||
sudo apt-get install git-core -y --force-yes
|
||||
fi
|
||||
|
||||
if ! which ant > /dev/null; then
|
||||
echo "# Installing git and ant"
|
||||
sudo apt-get install ant -y --force-yes
|
||||
fi
|
||||
|
||||
|
||||
BBBSRCGIT="$HOME/dev/source/bigbluebutton"
|
||||
|
||||
if [ -d $BBBSRCGIT ]; then
|
||||
echo "# "
|
||||
echo "# Looks like you already have $BBBSRCGIT. Your good to go."
|
||||
echo "# "
|
||||
exit
|
||||
if ! which javac > /dev/null; then
|
||||
sudo apt-get install openjdk-6-jdk -y --force-yes
|
||||
fi
|
||||
|
||||
mkdir -p $HOME/dev/source
|
||||
BASE=~/dev/tools
|
||||
mkdir -p $BASE
|
||||
#
|
||||
# Check for BigBlueButton-specific development tools
|
||||
#
|
||||
TOOLS="gradle-0.8 grails-1.1.1 groovy-1.6.5"
|
||||
for tool in $TOOLS; do
|
||||
if [ ! -d $BASE/$tool ]; then
|
||||
cd $BASE
|
||||
if [ ! -f $tool.tar.gz ]; then
|
||||
wget http://bigbluebutton.googlecode.com/files/$tool.tar.gz
|
||||
fi
|
||||
echo "Installing $tool to $BASE/$tool"
|
||||
tar xvfz $tool.tar.gz
|
||||
fi
|
||||
done
|
||||
|
||||
echo "# Changing to the dev directory"
|
||||
cd $HOME/dev/source
|
||||
if [ ! -f $BASE/flex-4.5.0.20967/flex-sdk-description.xml ]; then
|
||||
cd $BASE
|
||||
if [ ! -f flex_sdk_4.5.0.20967_mpl.zip ]; then
|
||||
wget http://fpdownload.adobe.com/pub/flex/sdk/builds/flex4.5/flex_sdk_4.5.0.20967_mpl.zip
|
||||
fi
|
||||
mkdir -p $BASE/flex-4.5.0.20967
|
||||
cd $BASE/flex-4.5.0.20967
|
||||
unzip $BASE/flex_sdk_4.5.0.20967_mpl.zip
|
||||
#
|
||||
# The permissions are not in good shape, so let's fix them
|
||||
#
|
||||
sudo find $BASE/flex-4.5.0.20967 -type d -exec chmod o+rx '{}' \;
|
||||
chmod 755 $BASE/flex-4.5.0.20967/bin/*
|
||||
sudo chmod -R +r $BASE/flex-4.5.0.20967
|
||||
#sudo chmod o+w /usr/share/flex-4.5.0.20967/frameworks/projects/framework/bundles
|
||||
fi
|
||||
|
||||
echo "#"
|
||||
echo "# Cloning the BigBlueButton GIT source"
|
||||
echo "#"
|
||||
git clone $CHECKOUT
|
||||
cd $HOME/dev/source/bigbluebutton
|
||||
echo " Checking out version $BBB_VERSION "
|
||||
#git checkout -b 0.7-release-workspace v0.7
|
||||
#git checkout -b 0.7-release-workspace v0.7
|
||||
|
||||
echo "#"
|
||||
echo "# Done"
|
||||
echo "#"
|
||||
echo "# You can now run 'bbb-conf --setup-dev [client|web|apps]' to setup dev environment "
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ $SETUPDEV ]; then
|
||||
check_root
|
||||
|
||||
if [ ! -d $HOME/dev/source/bigbluebutton ]; then
|
||||
echo "# "
|
||||
echo "*** ERROR: You haven't checked-out BigBlueButton source yet. Please run 'bbb-conf --checkout' first. "
|
||||
echo "# "
|
||||
exit 1
|
||||
if [ ! -L $BASE/flex ]; then
|
||||
ln -s $BASE/flex-4.5.0.20967 $BASE/flex
|
||||
fi
|
||||
|
||||
|
||||
if [ ! -f $BASE/flex-4.5.0.20967/frameworks/libs/player/10.3/playerglobal.swc ]; then
|
||||
mkdir -p $BASE/flex-4.5.0.20967/frameworks/libs/player/10.3
|
||||
cd $BASE/flex-4.5.0.20967/frameworks/libs/player/10.3
|
||||
if [ ! -f playerglobal10_3.swc ]; then
|
||||
wget http://fpdownload.macromedia.com/pub/flashplayer/updaters/10/playerglobal10_3.swc
|
||||
fi
|
||||
mv -f playerglobal10_3.swc playerglobal.swc
|
||||
fi
|
||||
|
||||
if ! grep -q GROOVY_HOME ~/.profile; then
|
||||
echo "
|
||||
#
|
||||
# BigBlueButton: Setup development environment
|
||||
|
||||
export GROOVY_HOME=$HOME/dev/tools/groovy-1.6.5
|
||||
export PATH=\$PATH:\$GROOVY_HOME/bin
|
||||
|
||||
export GRAILS_HOME=$HOME/dev/tools/grails-1.1.1
|
||||
export PATH=\$PATH:\$GRAILS_HOME/bin
|
||||
|
||||
export FLEX_HOME=$HOME/dev/tools/flex
|
||||
export PATH=\$PATH:\$FLEX_HOME/bin
|
||||
|
||||
export GRADLE_HOME=$HOME/dev/tools/gradle-0.8
|
||||
export PATH=\$PATH:\$GRADLE_HOME/bin
|
||||
|
||||
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
|
||||
export ANT_OPTS=\"-Xmx512m -XX:MaxPermSize=512m\"
|
||||
" >> ~/.profile
|
||||
fi
|
||||
|
||||
if [ ! -n "$GROOVY_HOME" ]; then
|
||||
echo "
|
||||
|
||||
# Finished setting up your development environment variables in
|
||||
#
|
||||
# $HOME/.profile
|
||||
#
|
||||
# Before you continue, you need to load them into your environment.
|
||||
# Do the following
|
||||
#
|
||||
# source ~/.profile
|
||||
#
|
||||
# You then need to checkout the source for BigBlueButton. See
|
||||
#
|
||||
# http://code.google.com/p/bigbluebutton/wiki/08SettingDevEnvironment
|
||||
#
|
||||
"
|
||||
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
check_tools ~/dev/tools
|
||||
|
||||
check_source ~/dev/bigbluebutton
|
||||
|
||||
#
|
||||
# Now, setup the specific development environment
|
||||
#
|
||||
if [ $SETUPDEV == "web" ]; then
|
||||
BBBWEBHOME=$HOME/dev/source/bigbluebutton/bigbluebutton-web
|
||||
if [ ! -d $BBBWEBHOME ]; then
|
||||
echo "# "
|
||||
echo "*** ERROR: Cannot find ${BBBWEBHOME} "
|
||||
echo "*** ERROR: You haven't checked-out BigBlueButton source yet. Please run 'bbb-conf --checkout' first. "
|
||||
echo "# "
|
||||
exit 1
|
||||
fi
|
||||
BBBWEBHOME=$HOME/dev/bigbluebutton/bigbluebutton-web
|
||||
check_source $BBBWEBHOME
|
||||
|
||||
echo "# Copying the bigbluebutton.properites in ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties to ~/.grails/bigbluebutton-config.properties"
|
||||
mkdir -p $HOME/.grails
|
||||
cp ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties $HOME/.grails/bigbluebutton-config.properties
|
||||
cp ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties $BBBWEBHOME/grails-app/conf
|
||||
|
||||
echo "# Copying the bbb_api_conf.jsp into ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties to ${BBBWEBHOME}/web-app/demo"
|
||||
cp ${SERVLET_DIR}/demo/bbb_api_conf.jsp ${BBBWEBHOME}/web-app/demo
|
||||
|
||||
echo "# Enabling $USER to write to /var/bigbluebutton to upload slides"
|
||||
# Enabling $USER to write to /var/bigbluebutton to upload slides
|
||||
sudo chmod -R ugo+rwx /var/bigbluebutton
|
||||
|
||||
echo "# Enabling $USER to write to /var/log/bigbluebutton to write log files"
|
||||
# Enabling $USER to write to /var/log/bigbluebutton to write log files
|
||||
sudo chmod -R ugo+rwx /var/log/bigbluebutton
|
||||
|
||||
echo "# Resolving dependencies"
|
||||
# Resolving dependencies
|
||||
cd $BBBWEBHOME
|
||||
gradle resolveDeps
|
||||
|
||||
if [ ! -f /etc/bigbluebutton/nginx/web_dev ]; then
|
||||
echo "
|
||||
# Handle request to bbb-web running within Tomcat. This is for
|
||||
# the BBB-API and Presentation.
|
||||
location /bigbluebutton {
|
||||
proxy_pass http://127.0.0.1:8888;
|
||||
proxy_redirect default;
|
||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||
|
||||
# Allow 30M uploaded presentation document.
|
||||
client_max_body_size 30m;
|
||||
client_body_buffer_size 128k;
|
||||
|
||||
proxy_connect_timeout 90;
|
||||
proxy_send_timeout 90;
|
||||
proxy_read_timeout 90;
|
||||
|
||||
proxy_buffer_size 4k;
|
||||
proxy_buffers 4 32k;
|
||||
proxy_busy_buffers_size 64k;
|
||||
proxy_temp_file_write_size 64k;
|
||||
|
||||
include fastcgi_params;
|
||||
}
|
||||
" | sudo tee /etc/bigbluebutton/nginx/web_dev > /dev/null 2>&1
|
||||
|
||||
fi
|
||||
|
||||
#sudo rm /etc/bigbluebutton/nginx/web.nginx
|
||||
sudo ln -s -f /etc/bigbluebutton/nginx/web_dev /etc/bigbluebutton/nginx/web.nginx
|
||||
|
||||
sudo /etc/init.d/nginx restart
|
||||
|
||||
echo "
|
||||
# Done. To run your local build of bbb-web:
|
||||
|
||||
sudo /etc/init.d/${SERVLET_CONTAINER} stop
|
||||
cd ${BBBWEBHOME}
|
||||
ant
|
||||
grails -Dserver.port=8888 run-app
|
||||
|
||||
## Note ##
|
||||
|
||||
You'll get an error running the above the first time. Just cancel and run again.
|
||||
"
|
||||
fi
|
||||
|
||||
|
||||
if [ $SETUPDEV == "client" ]; then
|
||||
BBBCLIENTHOME=$HOME/dev/source/bigbluebutton/bigbluebutton-client
|
||||
if [ ! -d $BBBCLIENTHOME ]; then
|
||||
echo "# "
|
||||
echo "*** ERROR: Cannot find ${BBBCLIENTHOME} "
|
||||
echo "*** ERROR: You haven't checked-out BigBlueButton source yet. Please run 'bbb-conf --checkout' first. "
|
||||
echo "# "
|
||||
exit 1
|
||||
fi
|
||||
BBBCLIENTHOME=$HOME/dev/bigbluebutton/bigbluebutton-client
|
||||
check_source $BBBCLIENTHOME
|
||||
|
||||
#
|
||||
# Setup the directories so we can point /etc/nginx/sites-available/bigbluebutton to this
|
||||
# local copy of the client
|
||||
# Setup initial values from the working environment
|
||||
#
|
||||
if [ ! -d $BBBCLIENTHOME/bin ]; then
|
||||
mkdir -p $BBBCLIENTHOME/bin
|
||||
fi
|
||||
cp /var/www/bigbluebutton/client/conf/config.xml $BBBCLIENTHOME/src/conf/config.xml
|
||||
cp $BBBCLIENTHOME/resources/dev/join-mock.xml $BBBCLIENTHOME/src/conf/join-mock.xml
|
||||
|
||||
if [ ! -d $BBBCLIENTHOME/conf ]; then
|
||||
mkdir -p $BBBCLIENTHOME/bin/conf
|
||||
fi
|
||||
#
|
||||
# We're going to create a symbolic link to the new location for BigBlueButton client
|
||||
#
|
||||
if [ ! -f /etc/bigbluebutton/nginx/client_dev ]; then
|
||||
echo "
|
||||
location /client/BigBlueButton.html {
|
||||
root $BBBCLIENTHOME;
|
||||
index index.html index.htm;
|
||||
expires 1m;
|
||||
}
|
||||
|
||||
if [ ! -h $BBBCLIENTHOME/client ]; then
|
||||
# BigBlueButton Flash client.
|
||||
location /client {
|
||||
root $BBBCLIENTHOME;
|
||||
index index.html index.htm;
|
||||
}
|
||||
" | sudo tee /etc/bigbluebutton/nginx/client_dev > /dev/null 2>&1
|
||||
|
||||
fi
|
||||
sudo ln -f -s /etc/bigbluebutton/nginx/client_dev /etc/bigbluebutton/nginx/client.nginx
|
||||
|
||||
if [ ! -L $BBBCLIENTHOME/client ]; then
|
||||
ln -s $BBBCLIENTHOME/bin $BBBCLIENTHOME/client
|
||||
fi
|
||||
|
||||
echo "Modifying /etc/nginx/sites-available/bigbluebutton to point to your local copy of bbb-client"
|
||||
sudo sed -i "s/\/var\/www\/bigbluebutton;/\/home\/firstuser\/dev\/source\/bigbluebutton\/bigbluebutton-client;/g" \
|
||||
/etc/nginx/sites-available/bigbluebutton
|
||||
echo
|
||||
sudo /etc/init.d/nginx restart
|
||||
|
||||
echo "# Copying /var/www/bigbluebutton/client/conf/config.xml to ${BBBCLIENTHOME}/src/conf/config.xml"
|
||||
cp /var/www/bigbluebutton/client/conf/config.xml $BBBCLIENTHOME/src/conf/config.xml
|
||||
|
||||
echo "# Copying ${BBBCLIENTHOME}/resources/dev/join-mock.xml to ${BBBCLIENTHOME}/src/conf/join-mock.xml"
|
||||
cp $BBBCLIENTHOME/resources/dev/join-mock.xml $BBBCLIENTHOME/src/conf/join-mock.xml
|
||||
|
||||
if [ ! -d /var/bigbluebutton/conference-mock-default/conference-mock-default/room-mock-default ]; then
|
||||
echo "# Creating /var/bigbluebutton/conference-mock-default/conference-mock-default/room-mock-default"
|
||||
sudo mkdir -p /var/bigbluebutton/conference-mock-default/conference-mock-default/room-mock-default
|
||||
echo "# chown /var/bigbluebutton/conference-mock-default to tomcat6"
|
||||
sudo chown -R tomcat6:tomcat6 /var/bigbluebutton/conference-mock-default
|
||||
fi
|
||||
# xxx
|
||||
#if [ ! -d /var/bigbluebutton/conference-mock-default/conference-mock-default/room-mock-default ]; then
|
||||
# echo "# Creating /var/bigbluebutton/conference-mock-default/conference-mock-default/room-mock-default"
|
||||
# sudo mkdir -p /var/bigbluebutton/conference-mock-default/conference-mock-default/room-mock-default
|
||||
# echo "# chown /var/bigbluebutton/conference-mock-default to tomcat6"
|
||||
# sudo chown -R tomcat6:tomcat6 /var/bigbluebutton/conference-mock-default
|
||||
#fi
|
||||
|
||||
cd $BBBCLIENTHOME
|
||||
|
||||
echo "
|
||||
# Done. To build your local build of bbb-client:
|
||||
# Setup of development for bigbluebutton-client complete.
|
||||
#
|
||||
# 1. Build the language files. (You need only do this once unless
|
||||
# you change the language files in the future.)
|
||||
#
|
||||
# cd ${BBBCLIENTHOME}
|
||||
# ant locales
|
||||
#
|
||||
# 2. Modify the source for the client. The source is locatedt at
|
||||
#
|
||||
# $BBBCLIENTHOME
|
||||
#
|
||||
# 3. Build the client
|
||||
#
|
||||
# cd ${BBBCLIENTHOME}
|
||||
# ant
|
||||
|
||||
cd ${BBBCLIENTHOME}
|
||||
ant
|
||||
|
||||
# The nginx server now loads the BigBlueButton Flash client from
|
||||
# ${BBBCLIENTHOME}.
|
||||
"
|
||||
fi
|
||||
|
||||
if [ $SETUPDEV == "apps" ]; then
|
||||
BBBAPPSHOME=~/dev/source/bigbluebutton/bigbluebutton-apps
|
||||
if [ ! -d $BBBAPPSHOME ]; then
|
||||
echo "# "
|
||||
echo "*** ERROR: Cannot find ${BBBAPPSHOME} "
|
||||
echo "*** ERROR: You haven't checked-out BigBlueButton source yet. Please run 'bbb-conf --checkout' first. "
|
||||
echo "# "
|
||||
exit 1
|
||||
fi
|
||||
BBBAPPSHOME=~/dev/bigbluebutton/bigbluebutton-apps
|
||||
check_source $BBBAPPSHOME
|
||||
|
||||
#
|
||||
# We're going to make it easier to deploy by giving write access to others to
|
||||
@ -781,29 +868,13 @@ if [ $SETUPDEV ]; then
|
||||
sudo apt-get purge --yes bbb-apps
|
||||
fi
|
||||
|
||||
if [ ! -f ~/.bbb-apps-build.properties ]; then
|
||||
echo "#
|
||||
# Override the default properties for bbb-apps
|
||||
#
|
||||
red5.home = $RED5_DIR
|
||||
" > ~/.bbb-apps-build.properties
|
||||
fi
|
||||
|
||||
if [ ! -L /etc/nginx/sites-enabled/bigbluebutton ]; then
|
||||
echo " No symbolic link in /etc/nginx/sites-enabled/bigbluebutton to /etc/nginx/sites-available/bigbluebutton "
|
||||
sudo ln -s /etc/nginx/sites-available/bigbluebutton /etc/nginx/sites-enabled/bigbluebutton
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup the directories so we can point /etc/nginx/sites-available/bigbluebutton to this
|
||||
# local copy of the client
|
||||
#
|
||||
echo "
|
||||
# Done. To run your local build of bbb-apps:
|
||||
|
||||
sudo /etc/init.d/red5 stop
|
||||
cd ${BBBAPPSHOME}
|
||||
gradle war deploy
|
||||
gradle resolveDeps
|
||||
gradle clean war deploy
|
||||
cd $RED5_DIR
|
||||
sudo -u red5 ./red5.sh
|
||||
|
||||
@ -821,8 +892,9 @@ if [ $RESET_DEV ]; then
|
||||
check_root
|
||||
|
||||
echo "Reseting /etc/nginx/sites-available/bigbluebutton to point to /var/www/bigbluebutton"
|
||||
sudo sed -i "s/\/home\/firstuser\/dev\/source\/bigbluebutton\/bigbluebutton-client;/\/var\/www\/bigbluebutton;/g" \
|
||||
/etc/nginx/sites-available/bigbluebutton
|
||||
sudo rm /etc/bigbluebutton/nginx/client.nginx
|
||||
sudo ln -s /etc/bigbluebutton/nginx/client /etc/bigbluebutton/nginx/client.nginx
|
||||
|
||||
sudo /etc/init.d/nginx restart
|
||||
fi
|
||||
|
||||
@ -955,16 +1027,19 @@ $RED5_DIR/webapps/sip/WEB-INF/bigbluebutton-sip.properties"
|
||||
SALT_DEMO=$(cat ${SERVLET_DIR}/demo/bbb_api_conf.jsp | tr -d '\r' | sed -n '/salt[ ]*=/{s/.*=[ ]*"//;s/".*//g;p}')
|
||||
|
||||
if [ "$SALT_PROPERTIES" != "$SALT_DEMO" ]; then
|
||||
echo "# API Salt mismatch: "
|
||||
echo "# Warning: API Salt mismatch: "
|
||||
echo "# ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties=$SALT_PROPERTIES"
|
||||
echo "# ${SERVLET_DIR}/demo/bbb_api_conf.jsp=$SALT_DEMO"
|
||||
echo
|
||||
fi
|
||||
|
||||
API_IP=$(cat ${SERVLET_DIR}/demo/bbb_api_conf.jsp | sed -n '/String BigBlueButtonURL/{s/.*http:\/\///;s/\/.*//;p}' | tr -d '\015')
|
||||
if [ "$IP" != "$API_IP" ]; then
|
||||
echo "# API URL IPs do not match host:"
|
||||
echo "# Warning: API URL IPs do not match host:"
|
||||
echo "#"
|
||||
echo "# IP from ifconfig: $IP"
|
||||
echo "# ${SERVLET_DIR}/demo/bbb_api_conf.jsp: $API_IP"
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -1072,10 +1147,26 @@ check_state() {
|
||||
#
|
||||
# Check if running development environment
|
||||
#
|
||||
if grep -v \# /etc/nginx/sites-available/bigbluebutton | grep /home/firstuser/dev/source/bigbluebutton/bigbluebutton-client > /dev/null; then
|
||||
if ! grep /var/www/bigbluebutton /etc/bigbluebutton/nginx/client.nginx > /dev/null; then
|
||||
NEW_LOCATION=$(cat /etc/bigbluebutton/nginx/client.nginx | sed -n '/root/{s/[ \t]*root[ \t]*//;s/;//;p}' | head -n 1)
|
||||
echo "# Warning: nginx is not serving the client from /var/www/bigbluebutton/."
|
||||
echo "# Instead, it's being served from"
|
||||
echo "#"
|
||||
echo "# $NEW_LOCATION"
|
||||
echo "#"
|
||||
echo "# (This is OK if you have setup a development environment.) "
|
||||
echo
|
||||
fi
|
||||
|
||||
#
|
||||
# Check if running development environment
|
||||
#
|
||||
if ! grep 8080 /etc/bigbluebutton/nginx/web.nginx > /dev/null; then
|
||||
echo "# Warning: nginx is not serving BigBlueButton's web application"
|
||||
echo "# from port 8080"
|
||||
echo "#"
|
||||
echo "# (This is OK if you have setup a development environment.) "
|
||||
echo
|
||||
echo "# Nginx: serving client from /home/firstuser/dev/source/bigbluebutton/bigbluebutton-client"
|
||||
echo "# instead of the usual /var/www/bigbluebutton"
|
||||
fi
|
||||
|
||||
|
||||
@ -1137,9 +1228,12 @@ check_state() {
|
||||
# Checking if voice app registered with Asterisk successfully
|
||||
#
|
||||
if cat /usr/share/red5/log/sip.log | grep -q "Failed to register with Sip Server"; then
|
||||
echo "# Error: The voice application failed to register with the sip server."
|
||||
echo "# Try running: "
|
||||
echo "#"
|
||||
echo "# sudo bbb-conf --clean"
|
||||
echo "#"
|
||||
echo
|
||||
echo "# The voice application failed to register with the sip server."
|
||||
echo "# Try running: sudo bbb-conf --clean"
|
||||
fi
|
||||
|
||||
#
|
||||
@ -1147,10 +1241,12 @@ check_state() {
|
||||
#
|
||||
|
||||
if cat /usr/share/red5/log/sip.log | tail -n1 | grep -q "Call request for default but not registered"; then
|
||||
echo "# The voice app is not registered with SIP server. Audio might not be working correctly."
|
||||
echo "# Error: The voice app is not registered with SIP server. Audio might not be working correctly."
|
||||
echo
|
||||
fi
|
||||
else
|
||||
echo "# No /usr/share/red5/log/sip.log"
|
||||
echo "# Error: /usr/share/red5/log/sip.log"
|
||||
echo
|
||||
fi
|
||||
|
||||
#
|
||||
@ -1173,6 +1269,16 @@ check_state() {
|
||||
echo "# No $RED5_DIR/log/bigbluebutton.log"
|
||||
fi
|
||||
|
||||
#
|
||||
# Check if the user is running their own bbb-web
|
||||
#
|
||||
if grep -q 8888 /etc/bigbluebutton/nginx/web.nginx; then
|
||||
if ! netstat -ant | grep '8888' > /dev/null; then
|
||||
echo "# Warning: There is no application server listening to port 8888."
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Check if the local server can access the API. This is a common problem when setting up BigBlueButton behind
|
||||
@ -1181,12 +1287,15 @@ check_state() {
|
||||
BBB_WEB=$(cat ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties | sed -n '/^bigbluebutton.web.serverURL/{s/.*\///;p}')
|
||||
check_no_value server_name /etc/nginx/sites-available/bigbluebutton $BBB_WEB
|
||||
if ! wget http://$BBB_WEB/bigbluebutton/api -O - --quiet | grep -q SUCCESS; then
|
||||
echo
|
||||
echo "# This server could not connect to BigBlueButton through http://$BBB_WEB/"
|
||||
echo "# Error: Could not connect to the configured hostname/IP address"
|
||||
echo "#"
|
||||
echo "# http://$BBB_WEB/"
|
||||
echo "#"
|
||||
echo "# If your BigBlueButton server is behind a firewall, see FAQ:"
|
||||
echo "#"
|
||||
echo "# If you are setting up BigBlueButton behind a firewall, see the FAQ"
|
||||
echo "# for steps to setup BigBlueButton behind a firewall."
|
||||
echo "# http://code.google.com/p/bigbluebutton/wiki/FAQ"
|
||||
echo "#"
|
||||
echo "# (See entry for setting up BigBlueButton behind a firewall.)"
|
||||
echo
|
||||
fi
|
||||
|
||||
@ -1195,20 +1304,19 @@ check_state() {
|
||||
#
|
||||
if [ ! -z $NGINX_IP ]; then
|
||||
if ! nc -z -w 3 $NGINX_IP 1935; then
|
||||
echo "# Error: Unable to connect to port 1935 (RTMP) on $NGINX_IP"
|
||||
echo
|
||||
echo "# Unable to connect to port 1935 (RTMP) on $NGINX_IP"
|
||||
fi
|
||||
|
||||
if ! nc -z -w 3 $NGINX_IP 9123; then
|
||||
echo "# Error: Unable to connect to port 9123 (desktop sharing) on $NGINX_IP"
|
||||
echo
|
||||
echo "# Unable to connect to port 9123 (desktop sharing) on $NGINX_IP"
|
||||
fi
|
||||
fi
|
||||
|
||||
if dpkg -l | grep -q bbb-freeswitch-config; then
|
||||
if [ "$VOICE_CONFERENCE" == "bbb-voice-asterisk.xml" ]; then
|
||||
echo
|
||||
echo "# You have freeswitch installed, but the current voice conference set"
|
||||
echo "# Error: You have freeswitch installed, but the current voice conference set"
|
||||
echo "# to asterisk. To switch to freeswitch, enter"
|
||||
echo "#"
|
||||
echo "# sudo bbb-conf --conference freeswitch"
|
||||
@ -1218,37 +1326,39 @@ check_state() {
|
||||
SIP_SERVER_HOST=$(cat /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties | sed -n '/sip.server.host=/{s/.*=//;s/;//;p}')
|
||||
if [ $SIP_SERVER_HOST != "127.0.0.1" ]; then
|
||||
if [ $SIP_SERVER_HOST != $IP ]; then
|
||||
echo
|
||||
echo "# The IP address ($SIP_SERVER_HOST) set for sip.server.host in"
|
||||
echo "# Error: The setting of ($SIP_SERVER_HOST) for sip.server.host in"
|
||||
echo "#"
|
||||
echo "# /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties"
|
||||
echo "#"
|
||||
echo "# does not match the local IP address ($IP)."
|
||||
echo
|
||||
fi
|
||||
|
||||
SIP_IP=$(netstat -ant | grep 5060 | awk -F" " '{print $4}' | cut -d: -f1)
|
||||
SIP_IP=$(netstat -ant | grep 5060 | head -n1 | awk -F" " '{print $4}' | cut -d: -f1)
|
||||
if [ $SIP_SERVER_HOST != $SIP_IP ]; then
|
||||
echo
|
||||
echo "# FreeSWITCH is listening on IP address $SIP_IP for SIP calls, but "
|
||||
echo "# Error: FreeSWITCH is listening on IP address $SIP_IP for SIP calls, but "
|
||||
echo "# The IP address ($SIP_SERVER_HOST) set for sip.server.host."
|
||||
echo "#"
|
||||
echo "# If your audio is not working (users click the headset icon "
|
||||
echo "# and don't appear in the Listeners window, try the command"
|
||||
echo "#"
|
||||
echo "# sudo bbb-conf --setfreeswitchip $SIP_IP"
|
||||
echo "#"
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo
|
||||
echo "# You don't have either bbb-freeswitch-config installed. To install"
|
||||
echo "# Error: You don't have bbb-freeswitch-config installed. To install FreeSWITCH"
|
||||
echo "#"
|
||||
echo "# sudo apt-get install bbb-freeswitch-config"
|
||||
echo "#"
|
||||
echo
|
||||
fi
|
||||
|
||||
#
|
||||
# We've not done extensive testing of asterisk in BigBlueButton 0.8
|
||||
#
|
||||
if dpkg -l | grep -q bbb-voice-conference; then
|
||||
if [ "$VOICE_CONFERENCE" == "bbb-voice-freeswitch.xml" ]; then
|
||||
echo
|
||||
echo "# You have asterisk installed, but the current voice conference set"
|
||||
echo "# to freeswitch. To switch to asterisk, enter"
|
||||
echo "#"
|
||||
@ -1258,9 +1368,10 @@ check_state() {
|
||||
|
||||
SIP_SERVER_HOST=$(cat /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties | sed -n '/sip.server.host=/{s/.*=//;s/;//;p}')
|
||||
if [ $SIP_SERVER_HOST != "127.0.0.1" ]; then
|
||||
echo
|
||||
echo "# The IP address ($SIP_SERVER_HOST) set for sip.server.host in"
|
||||
echo "#"
|
||||
echo "# /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties"
|
||||
echo "#"
|
||||
echo "# should be 127.0.0.1 for Asterisk."
|
||||
echo
|
||||
fi
|
||||
@ -1268,17 +1379,17 @@ check_state() {
|
||||
|
||||
PLAYBACK_IP=$(cat /usr/local/bigbluebutton/core/scripts/slides.yml | sed -n '/playback_host/{s/.*:[ ]*//;s/;//;p}')
|
||||
if [ $PLAYBACK_IP != $IP ]; then
|
||||
echo
|
||||
echo "# The IP address ($PLAYBACK_IP) set for playback_host in"
|
||||
echo "# Warning: The value ($PLAYBACK_IP) for playback_host in"
|
||||
echo "#"
|
||||
echo "# /usr/local/bigbluebutton/core/scripts/slides.yml"
|
||||
echo "#"
|
||||
echo "# does not match the local IP address ($IP)."
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ -d ${SERVLET_DIR}/demo ]; then
|
||||
if test ${SERVLET_DIR}/demo.war -nt ${SERVLET_DIR}/demo; then
|
||||
echo
|
||||
echo "# Tomcat6 didn't deploy the updated demo.war file. To fix:"
|
||||
echo "# Error: The updated demo.war did not deploy. To manually deploy:"
|
||||
echo "#"
|
||||
echo "# sudo touch ${SERVLET_DIR}/demo.war"
|
||||
echo "#"
|
||||
@ -1287,7 +1398,6 @@ check_state() {
|
||||
fi
|
||||
|
||||
if grep -q removeMeetingWhenEnded=false $SERVLET_DIR/bigbluebutton/WEB-INF/classes/bigbluebutton.properties; then
|
||||
echo
|
||||
echo "# Warning: In"
|
||||
echo "#"
|
||||
echo "# $SERVLET_DIR/bigbluebutton/WEB-INF/classes/bigbluebutton.properties"
|
||||
@ -1303,10 +1413,22 @@ check_state() {
|
||||
fi
|
||||
|
||||
if (( $MEM < 1990 )); then
|
||||
echo "#"
|
||||
echo "# Warning: You are running BigBlueButton on a server with less than 2G of memory. Your"
|
||||
echo "# performance may suffer."
|
||||
echo
|
||||
fi
|
||||
|
||||
|
||||
if [ -f /var/lib/tomcat6/webapps/demo/demo1.jsp ]; then
|
||||
BBB_WEB=$(cat ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties | sed -n '/^bigbluebutton.web.serverURL/{s/.*\///;p}')
|
||||
echo "# Warning: The API demos are installed and accessible from:"
|
||||
echo "#"
|
||||
echo "# http://$BBB_WEB/"
|
||||
echo "#"
|
||||
echo "# Use the API demos test your BigBlueButton setup. To remove"
|
||||
echo "#"
|
||||
echo "# sudo apt-get purge bbb-demo"
|
||||
echo
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@ -1320,7 +1442,7 @@ if [ $CHECK ]; then
|
||||
need_root
|
||||
|
||||
echo
|
||||
echo "BigBlueButton Server $BBB_VERSION"
|
||||
echo "BigBlueButton Server $BIGBLUEBUTTON_RELEASE"
|
||||
echo " Kernel version:" `uname -r`
|
||||
|
||||
if [ -e /etc/lsb-release ]; then
|
||||
@ -1355,7 +1477,7 @@ if [ $CHECK ]; then
|
||||
PORT=$(cat /etc/nginx/sites-available/bigbluebutton | sed -n '/listen/{s/.*listen[ ]*//;s/;//;p}')
|
||||
echo " port: $PORT"
|
||||
|
||||
BBB_CLIENT_DOC_ROOT=$(cat /etc/nginx/sites-available/bigbluebutton | grep \/client -A 1 | head -n 2 | grep root | sed -n '{s/[ ]*root[ ]*//;s/;//;p}')
|
||||
BBB_CLIENT_DOC_ROOT=$(cat /etc/bigbluebutton/nginx/client.nginx | grep \/client -A 1 | head -n 2 | grep root | sed -n '{s/[ \t]*root[ ]*//;s/;//;p}')
|
||||
echo " bbb-client dir: $BBB_CLIENT_DOC_ROOT"
|
||||
|
||||
BBB_WEB_IP=$(cat ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties | sed -n '/^bigbluebutton.web.serverURL/{s/.*\///;p}')
|
||||
@ -1367,7 +1489,7 @@ if [ $CHECK ]; then
|
||||
API_IP=$(cat ${SERVLET_DIR}/demo/bbb_api_conf.jsp | sed -n '/String BigBlueButtonURL/{s/.*http:\/\///;s/\/.*//;p}' | tr -d '\015')
|
||||
echo
|
||||
echo "${SERVLET_DIR}/demo/bbb_api_conf.jsp (API demos)"
|
||||
echo " bbb-web-api host: $API_IP"
|
||||
echo " api url: $API_IP"
|
||||
fi
|
||||
|
||||
if [ $VOICE_CONFERENCE == "bbb-voice-freeswitch.xml" ]; then
|
||||
@ -1391,6 +1513,7 @@ if [ $CHECK ]; then
|
||||
#echo
|
||||
#echo "/usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties"
|
||||
#echo " SIP server host: $SIP_SERVER_HOST"
|
||||
|
||||
check_state
|
||||
echo ""
|
||||
|
||||
@ -1614,13 +1737,6 @@ if [ -n "$HOST" ]; then
|
||||
echo "Assigning $HOST for servername in /etc/nginx/sites-available/bigbluebutton"
|
||||
sudo sed -i "s/server_name .*/server_name $HOST;/g" /etc/nginx/sites-available/bigbluebutton
|
||||
|
||||
#
|
||||
# Use port for remaining substitutions
|
||||
#
|
||||
if [ $PORT ]; then
|
||||
HOST="$HOST:$PORT"
|
||||
fi
|
||||
|
||||
#
|
||||
# Update configuration for BigBlueButton client
|
||||
#
|
||||
@ -1642,15 +1758,6 @@ if [ -n "$HOST" ]; then
|
||||
|
||||
# cat ${SERVLET_DIR}/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
|
||||
|
||||
#
|
||||
# Update nginx
|
||||
#
|
||||
|
||||
if [ $PORT ]; then
|
||||
echo "Assigning $PORT for listen in /etc/nginx/sites-available/bigbluebutton"
|
||||
sudo sed -i "s/listen .*/listen $PORT;/g" /etc/nginx/sites-available/bigbluebutton
|
||||
fi
|
||||
|
||||
if ! grep -q server_names_hash_bucket_size /etc/nginx/nginx.conf; then
|
||||
sudo sed -i "s/gzip on;/gzip on;\n server_names_hash_bucket_size 64;/g" /etc/nginx/nginx.conf
|
||||
fi
|
||||
@ -1671,42 +1778,6 @@ if [ -n "$HOST" ]; then
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Update Freeswitch config
|
||||
#
|
||||
# Not needed -- we can keep this at 127.0.0.1
|
||||
#
|
||||
#HOSTIP=$(ifconfig | grep -v '127.0.0.1' | grep -m 1 'inet addr:' | cut -d: -f2 | awk '{ print $1}');
|
||||
#if [ -f /opt/freeswitch/conf/autoload_configs/event_socket.conf.xml ]; then
|
||||
# EVENTIP=$(cat /opt/freeswitch/conf/autoload_configs/event_socket.conf.xml | grep 'name="listen-ip"' | cut -d\" -f4 | awk '{print $1}')
|
||||
# sed -i "s/$EVENTIP/$HOSTIP/g" \
|
||||
# /opt/freeswitch/conf/autoload_configs/event_socket.conf.xml
|
||||
#fi
|
||||
|
||||
#
|
||||
# Update bigbluebutton-sip.properties
|
||||
#
|
||||
# Not needed -- we can keep this at 127.0.0.1
|
||||
#
|
||||
#SIPIP=$(cat /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties | grep 'sip.server.host' | cut -d= -f2)
|
||||
#if [ -f /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties ]; then
|
||||
# sed -i "s/$SIPIP/$HOSTIP/g" \
|
||||
# /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties
|
||||
#fi
|
||||
|
||||
#
|
||||
#if [ $VOICE_CONFERENCE == "bbb-voice-freeswitch.xml" ]; then
|
||||
# if [ -f /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties ]; then
|
||||
# if echo "$HOST" | grep -q -E "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"; then
|
||||
# IP=$HOST
|
||||
# fi
|
||||
#
|
||||
# echo "Assigning $IP for sip.server.host in /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties"
|
||||
# sudo sed -i "s/sip.server.host=.*/sip.server.host=$IP/g" \
|
||||
# /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties
|
||||
# fi
|
||||
#fi
|
||||
|
||||
echo "Restarting the bigbluebutton server ..."
|
||||
stop_bigbluebutton
|
||||
echo
|
||||
@ -1738,6 +1809,9 @@ if [ $CONFERENCE ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Depreciated
|
||||
#
|
||||
if [ $CONFERENCE = "meetme" ]; then
|
||||
if [ ! -f /etc/asterisk/bbb_extensions.conf ]; then
|
||||
echo
|
||||
@ -1785,6 +1859,9 @@ if [ $CONFERENCE ]; then
|
||||
sudo /etc/init.d/red5 restart
|
||||
fi
|
||||
|
||||
#
|
||||
# Depreciated
|
||||
#
|
||||
if [ $CONFERENCE = "app_konference" ]; then
|
||||
if [ ! -f /etc/asterisk/bbb_extensions.conf ]; then
|
||||
echo
|
||||
@ -1854,13 +1931,7 @@ if [ $CONFERENCE ]; then
|
||||
/usr/share/red5/webapps/bigbluebutton/WEB-INF/red5-web.xml
|
||||
fi
|
||||
|
||||
#if [ -f /opt/freeswitch/conf/autoload_configs/event_socket.conf.xml ]; then
|
||||
# EVENTIP=$(sudo cat /opt/freeswitch/conf/autoload_configs/event_socket.conf.xml | grep 'name="listen-ip"' | cut -d\" -f4 | awk '{print $1}')
|
||||
# sed -i "s/$EVENTIP/$IP/g" \
|
||||
# /opt/freeswitch/conf/autoload_configs/event_socket.conf.xml
|
||||
#fi
|
||||
|
||||
change_var_ip /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties sip.server.host $IP
|
||||
change_var_ip /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties sip.server.host 127.0.0.1
|
||||
|
||||
echo "Switching to $CONFERENCE ... "
|
||||
if [ -f /etc/init.d/asterisk ]; then
|
||||
|
@ -23,12 +23,14 @@
|
||||
# 2011-08-18 FFD Inital Version
|
||||
# 2011-11-20 FFD Added more checks for processing of recording
|
||||
# 2012-01-04 GUG Add option to check for errors
|
||||
# 2012-02-27 GUG Add option to delete one meeting and recording
|
||||
|
||||
set -e
|
||||
#set -x
|
||||
|
||||
BASE=/var/bigbluebutton/recording
|
||||
STATUS=$BASE/status
|
||||
source /etc/bigbluebutton/bigbluebutton-release
|
||||
|
||||
RECORDING_DIR=$(cat /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml | sed -n '/\(recording_dir\)/{s/.*recording_dir:[ ]*//;s/;//;p}')
|
||||
PUBLISHED_DIR=$(cat /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml | sed -n '/\(published_dir\)/{s/.*published_dir:[ ]*//;s/;//;p}')
|
||||
@ -41,7 +43,7 @@ TYPES=$(cd /usr/local/bigbluebutton/core/scripts/process; ls *.rb | sed s/.rb//g
|
||||
|
||||
mark_for_rebuild() {
|
||||
MEETING_ID=$1
|
||||
set -x
|
||||
#set -x
|
||||
for type in $TYPES; do
|
||||
if [ -d $BASE/process/$type/$MEETING_ID ]; then
|
||||
rm -rf $BASE/process/$type/$MEETING_ID
|
||||
@ -75,7 +77,7 @@ mark_for_rebuild() {
|
||||
done
|
||||
}
|
||||
|
||||
BBB_VERSION=0.8-beta-3
|
||||
BIGBLUEBUTTON_RELEASE=0.8-beta-4
|
||||
|
||||
need_root() {
|
||||
if [ $EUID != 0 ]; then
|
||||
@ -84,8 +86,16 @@ need_root() {
|
||||
fi
|
||||
}
|
||||
|
||||
print_header() {
|
||||
if [ ! $HEADER ]; then
|
||||
echo
|
||||
echo "** Potential problems described below **"
|
||||
HEADER=1
|
||||
fi
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "BigBlueButton Recording Diagnostic Utility - Version $BBB_VERSION"
|
||||
echo "BigBlueButton Recording Diagnostic Utility (BigBlueButton Version $BIGBLUEBUTTON_RELEASE)"
|
||||
echo
|
||||
echo " bbb-record [options]"
|
||||
echo
|
||||
@ -95,8 +105,10 @@ usage() {
|
||||
echo "Monitoring:"
|
||||
echo " --watch Watch processing of recordings"
|
||||
echo " --rebuild [meetingID] rebuild the output for meetingID"
|
||||
echo " --delete [meetingID] delete one meeting and recording"
|
||||
echo " --deletall delete all meetings and recordings"
|
||||
echo " --check check for errors while archiving, processing or publishing recordings"
|
||||
echo " --debug check for recording errors"
|
||||
echo " --check check for configuration errors"
|
||||
echo
|
||||
}
|
||||
|
||||
@ -133,6 +145,18 @@ while [ $# -gt 0 ]; do
|
||||
shift
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "-delete" -o "$1" = "--delete" ]; then
|
||||
need_root
|
||||
if [ ! -z "${2}" ]; then
|
||||
MEETING_ID="${2}"
|
||||
shift
|
||||
fi
|
||||
DELETE=1
|
||||
shift
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "-deleteall" -o "$1" = "--deleteall" ]; then
|
||||
need_root
|
||||
DELETEALL=1
|
||||
@ -146,6 +170,13 @@ while [ $# -gt 0 ]; do
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$1" = "-debug" -o "$1" = "--debug" ]; then
|
||||
need_root
|
||||
DEBUG=1
|
||||
shift
|
||||
continue
|
||||
fi
|
||||
|
||||
usage
|
||||
exit 1
|
||||
done
|
||||
@ -165,6 +196,34 @@ if [ $REBUILD ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $DELETE ]; then
|
||||
if [ ! -z "$MEETING_ID" ]; then
|
||||
for type in $TYPES; do
|
||||
rm -rf /var/bigbluebutton/published/$type/$MEETING_ID*
|
||||
rm -rf /var/bigbluebutton/unpublished/$type/$MEETING_ID*
|
||||
|
||||
rm -rf /var/bigbluebutton/recording/process/$type/$MEETING_ID*
|
||||
rm -rf /var/bigbluebutton/recording/publish/$type/$MEETING_ID*
|
||||
|
||||
rm -rf /var/bigbluebutton/recording/raw/$MEETING_ID*
|
||||
|
||||
rm -rf /var/log/bigbluebutton/$type/*$MEETING_ID*
|
||||
done
|
||||
|
||||
rm -f /var/bigbluebutton/recording/status/recorded/$MEETING_ID*
|
||||
rm -f /var/bigbluebutton/recording/status/archived/$MEETING_ID*
|
||||
rm -f /var/bigbluebutton/recording/status/processed/$MEETING_ID*
|
||||
|
||||
rm -rf /usr/share/red5/webapps/video/streams/$MEETING_ID
|
||||
rm -f /var/bigbluebutton/deskshare/$MEETING_ID*.flv
|
||||
rm -f /var/freeswitch/meetings/$MEETING_ID*.wav
|
||||
|
||||
echo "deleting: $MEETING_ID"
|
||||
else
|
||||
echo "Give a meeting id or use --deleteall"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $DELETEALL ]; then
|
||||
for type in $TYPES; do
|
||||
rm -rf /var/bigbluebutton/published/$type/*
|
||||
@ -194,6 +253,23 @@ fi
|
||||
|
||||
if [ $LIST ]; then
|
||||
|
||||
# Does the meeting contain:
|
||||
# A -- Audio
|
||||
# P -- Presentation
|
||||
# V -- Video
|
||||
# D -- Desktop
|
||||
#
|
||||
# Does the archive contain
|
||||
# A -- Audio
|
||||
# P -- Presentation
|
||||
# V -- Video
|
||||
# D -- Desktop
|
||||
# E -- Events
|
||||
#
|
||||
# Is there a done flag (trigger rap-worker.rb to process) for
|
||||
# R -- Recording
|
||||
# A -- Archiving
|
||||
#
|
||||
|
||||
echo "MeetingID Time APVD APVDE RA Slides Processed Published Description"
|
||||
echo "------------------------------------------------------ ---------------------------- ---- ----- -- ------ -------------------- -------------------- -----------------------------"
|
||||
@ -362,13 +438,32 @@ if [ $WATCH ]; then
|
||||
fi
|
||||
|
||||
if [ $CHECK ]; then
|
||||
if [ -f /var/bigbluebutton/recording/process/slides ]; then
|
||||
if [ ! -w /var/bigbluebutton/recording/process/slides ]; then
|
||||
print_header
|
||||
echo "# Error: The output director for slides"
|
||||
echo "#"
|
||||
echo "# /var/bigbluebutton/recording/process/slides"
|
||||
echo "#"
|
||||
echo "# is not writeable."
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $DEBUG ]; then
|
||||
|
||||
LOG_DIR=/var/log/bigbluebutton
|
||||
|
||||
if [ -f /var/log/bigbluebutton/bbb-rap-worker.log ]; then
|
||||
grep -i error /var/log/bigbluebutton/bbb-rap-worker.*
|
||||
fi
|
||||
|
||||
#
|
||||
#Failures while archiving files
|
||||
#
|
||||
if [ -f /var/log/bigbluebutton/archive.log ]; then
|
||||
grep "Failed to" "/var/log/bigbluebutton/archive.log" > /tmp/t
|
||||
if [ -f $LOG_DIR/archive.log ]; then
|
||||
grep "Failed to" "$LOG_DIR/archive.log" > /tmp/t
|
||||
if [ -s /tmp/t ]; then
|
||||
echo " -- ERRORS found while archiving files -- "
|
||||
cat /tmp/t
|
||||
@ -380,47 +475,26 @@ if [ $CHECK ]; then
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
#Errors while processing slides
|
||||
# We're going to look through the output files for each of the processed types
|
||||
#
|
||||
grep -B 3 "ERROR -- : Error:" /var/log/bigbluebutton/slides/process-* | egrep -w 'Task:| Error:' > /tmp/t
|
||||
STAGES="process publish"
|
||||
for type in $TYPES; do
|
||||
for stage in $STAGES; do
|
||||
if ls -A $LOG_DIR/$type/$stage-* &> /dev/null; then
|
||||
rm -rf /tmp/t
|
||||
grep -B 3 "ERROR -- : Error:" $LOG_DIR/$type/$stag-* | egrep -w 'Task:| Error:' > /tmp/t
|
||||
if [ -s /tmp/t ]; then
|
||||
echo " -- ERRORS found while processing slides /var/log/bigbluebutton/slides/process-* -- "
|
||||
echo " -- ERRORS found while processing slides $LOG_DIR/$type/$stag-* -- "
|
||||
cat /tmp/t
|
||||
echo
|
||||
fi
|
||||
|
||||
#
|
||||
#Errors while publishing slides
|
||||
#
|
||||
grep "ERROR -- : Error:" /var/log/bigbluebutton/slides/publish-* > /tmp/t
|
||||
if [ -s /tmp/t ]; then
|
||||
echo " -- ERRORS found while publishing slides /var/log/bigbluebutton/slides/publish-* -- "
|
||||
cat /tmp/t
|
||||
echo
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
|
||||
#
|
||||
#Errors while processing matterhorn
|
||||
#
|
||||
grep "ERROR -- : Error:" /var/log/bigbluebutton/matterhorn-process-* > /tmp/t
|
||||
if [ -s /tmp/t ]; then
|
||||
echo " -- ERRORS found while processing matterhorn /var/log/bigbluebutton/matterhorn-process-* -- "
|
||||
cat /tmp/t
|
||||
echo
|
||||
fi
|
||||
|
||||
#
|
||||
#Errors while publishing matterhorn
|
||||
#
|
||||
grep "ERROR -- : Error:" /var/log/bigbluebutton/matterhorn-publish-* > /tmp/t
|
||||
if [ -s /tmp/t ]; then
|
||||
echo " -- ERRORS found while publishing matterhorn /var/log/bigbluebutton/matterhorn-publish-* -- "
|
||||
cat /tmp/t
|
||||
echo
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -21,7 +21,15 @@
|
||||
test -x /var/bigbluebutton || exit 0
|
||||
|
||||
#
|
||||
# Delete presentation directories in /var/bigbluebutton older than 10 days
|
||||
# Disable this cron job for now (the administrator can manually enable it).
|
||||
#
|
||||
# We disable it for now to ensure if rap-worker.rb didn't archive a recording
|
||||
# we can try and archive it again without having the source files deleted.
|
||||
#
|
||||
exit 0
|
||||
|
||||
#
|
||||
# Delete presentations older than a day
|
||||
#
|
||||
find /var/bigbluebutton -maxdepth 1 -type d -name "*-*" -mtime +11 -exec rm -r '{}' \;
|
||||
|
||||
|
BIN
bigbluebutton-config/web/default.pdf
Normal file → Executable file
BIN
bigbluebutton-config/web/default.pdf
Normal file → Executable file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user