summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Pocock2014-11-06 14:19:21 (GMT)
committerDaniel Pocock2014-11-06 14:19:21 (GMT)
commit95a340881f8460872022edca9241473cfd9cc720 (patch)
tree6570f08eb5534d0f6372480526516c4df1cc7492
parentf5e7b0ad5a8c42abe7f46b7a250f2b629437c477 (diff)
Update for latest JSCommunicator
-rw-r--r--available_languages.xml39
-rw-r--r--drucall-phone.tpl.php197
-rw-r--r--drucall.admin.inc16
-rw-r--r--drucall.info2
-rw-r--r--drucall.module7
-rw-r--r--internationalization/Messages.properties45
-rw-r--r--internationalization/Messages_bg.properties45
-rw-r--r--internationalization/Messages_de.properties46
-rw-r--r--internationalization/Messages_en.properties45
-rw-r--r--internationalization/Messages_es.properties45
-rw-r--r--internationalization/Messages_fr.properties35
-rw-r--r--internationalization/Messages_he.properties45
-rw-r--r--internationalization/Messages_nl.properties45
-rw-r--r--internationalization/Messages_pl.properties45
-rw-r--r--internationalization/Messages_pt.properties45
-rw-r--r--internationalization/Messages_sk.properties45
-rw-r--r--js/drucall.js25
-rw-r--r--skin.css45
-rw-r--r--sounds/new_message.oggbin0 -> 34900 bytes
-rw-r--r--sounds/new_message.wavbin0 -> 576796 bytes
20 files changed, 745 insertions, 72 deletions
diff --git a/available_languages.xml b/available_languages.xml
new file mode 100644
index 0000000..e76d7ca
--- /dev/null
+++ b/available_languages.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list>
+<language>
+ <display>Български</display>
+ <code>bg</code>
+</language>
+<language>
+ <display>Deutsch</display>
+ <code>de</code>
+</language>
+<language>
+ <display>English</display>
+ <code>en</code>
+</language>
+<language>
+ <display>Español</display>
+ <code>es</code>
+</language>
+<language>
+ <display>Français</display>
+ <code>fr</code>
+</language>
+<language>
+ <display>עברית</display>
+ <code>he</code>
+</language>
+<language>
+ <display>Polski</display>
+ <code>pl</code>
+</language>
+<language>
+ <display>Português</display>
+ <code>pt</code>
+</language>
+<language>
+ <display>slovenčina</display>
+ <code>sk</code>
+</language>
+</list>
diff --git a/drucall-phone.tpl.php b/drucall-phone.tpl.php
index df59b2a..4a5c91b 100644
--- a/drucall-phone.tpl.php
+++ b/drucall-phone.tpl.php
@@ -16,7 +16,127 @@
it is completely valid to include the <script> elements in the
HTML body where you include the HTML fragement from this file -->
-<div id="network-controls">
+<div id="encapsulate">
+ <div id="header">
+ <select id="lang_selection">
+ <option value="en">Select a language</option>
+ </select>
+ <i class="fa fa-power-off" id="jsc-logout-button"></i>
+ <h1>JSCommunicator</h1>
+ <span id="welcome"></span><span id="welcome_name"></span>
+ </div>
+ <div id="network-controls">
+ <div id="jsc-login">
+ <div id="jsc-login-display-name">
+ <span class="jsc-login-label">Display name (may be empty)</span>
+ <input type="text" id="jsc-login-display-name-field"/>
+ </div>
+ <div id="jsc-login-sip-uri">
+ <span class="jsc-login-label">SIP address</span>
+ <input type="text" id="jsc-login-sip-address-field"/>
+ </div>
+ <div id="jsc-login-password">
+ <span class="jsc-login-label">Password</span>
+ <input type="password" id="jsc-login-password-field"/>
+ </div>
+ <div id="jsc-login-option">
+ <input type="checkbox" id="rememberMe"><span id="remember-label">Remember me</span><br>
+ </div>
+ <input type="button" value="Login" id="jsc-login-button"/>
+ </div>
+ </div>
+
+ <div id="communicator">
+ <div id="call">
+ <h3>Call</h3>
+ <div id="call-info">
+ <span class="no-contact" id="call-contact-error">Please enter a contact.</span>
+ <div id="state">
+ <span class="session-outgoing">Dialing...</span>
+ <span class="session-incoming">Incoming call</span>
+ <span class="session-accepted">Answering, connectivity checks in progress...</span>
+ <span class="session-active">Call connected</span>
+ </div>
+ </div>
+
+ <div id="dial-controls" class="ws-connected">
+ <div id="dest">
+ <span id="dest_label">Destination:</span>
+ <input type="text" id="address" placeholder="Enter contact"/>
+ </div>
+ <div id="dialing-actions">
+ <button id="call-audio"><i class="fa fa-phone fa-lg" style="color:green;"></i></button>
+ <button id="call-video"><i class="fa fa-video-camera fa-lg" style="color:green;"></i></button>
+ </div>
+ </div>
+
+ <div id="session-controls" class="ws-connected in-call">
+ <div id="peer"></div>
+ <div id="session-actions">
+ <button value="Cancel" id="session-cancel" class="session-outgoing">
+ <i class="fa fa-phone fa-lg red-phone" ></i>
+ </button>
+ <button value="Reject" id="session-reject" class="session-incoming">
+ <i class="fa fa-phone fa-lg red-phone" style="color:red;"></i>
+ </button>
+ <button value="Answer" id="session-answer" class="session-incoming">
+ <i class="fa fa-phone fa-lg" style="color:green;"></i>
+ </button>
+ <button value="Answer (with video)" id="session-answer-video" class="session-incoming">
+ <i class="fa fa-video-camera fa-lg" style="color:green;"></i>
+ </button>
+ <!-- Not implemented yet?
+ <button value="Hold" id="session-hold" class="session-active" disabled>
+ <i class="fa fa-pause fa-lg" style="color:red;"></i>
+ </button>-->
+ <button value="Hangup" id="session-hangup" class="session-active">
+ <i class="fa fa-phone fa-lg red-phone" style="color:red;"></i>
+ </button>
+ <button id="dtmf-button" class="session-active">
+ <i class="fa fa-th fa-lg" style="color:darkblue;"></i>
+ </button>
+ </div>
+ </div>
+ <div id="dtmf-pad">
+ <input type="button" value="1" class="dtmf-number"/>
+ <input type="button" value="2" class="dtmf-number"/>
+ <input type="button" value="3" class="dtmf-number"/>
+ <input type="button" value="A" class="dtmf-symbol"/>
+ <br/>
+ <input type="button" value="4" class="dtmf-number"/>
+ <input type="button" value="5" class="dtmf-number"/>
+ <input type="button" value="6" class="dtmf-number"/>
+ <input type="button" value="B" class="dtmf-symbol"/>
+ <br/>
+ <input type="button" value="7" class="dtmf-number"/>
+ <input type="button" value="8" class="dtmf-number"/>
+ <input type="button" value="9" class="dtmf-number"/>
+ <input type="button" value="C" class="dtmf-symbol"/>
+ <br/>
+ <input type="button" value="*" class="dtmf-symbol"/>
+ <input type="button" value="0" class="dtmf-number"/>
+ <input type="button" value="#" class="dtmf-symbol"/>
+ <input type="button" value="D" class="dtmf-symbol"/>
+ <br/>
+ </div>
+ </div>
+ <hr>
+ <div id="chat">
+ <h3>Chat</h3>
+ <div id="chat-error">
+ <span class="no-contact" id="chat-contact-error">Please enter a contact.</span>
+ </div>
+ <div id="new-chat">
+ <span id="chat_dest_label">Destination:</span>
+ <input type="text" id="chat-address" placeholder="Enter contact"/>
+ <button id="start-chat"><i class="fa fa-comments fa-lg" style="color:darkblue;"></i></button>
+ </div>
+ <ul id="tab-labels">
+ </ul>
+ <div id="tab-pages">
+ </div>
+ </div>
+ </div>
<div id="error">
<span id="js">ERROR: This service requires JavaScript. Please enable JavaScript in your web browser settings.</span>
@@ -27,29 +147,11 @@
<span id="call-attempt-failed">ERROR: failed to start call, check that microphone/webcam are connected, check browser security settings, peer may not support compatible codecs</span>
<span id="dynamic"></span>
</div>
-
- <div id="jsc-login">
- <div id="jsc-login-display-name">
- <span class="jsc-login-label">Display name (may be empty)</span>
- <input type="text" id="jsc-login-display-name-field"/>
- </div>
- <div id="jsc-login-sip-uri">
- <span class="jsc-login-label">SIP address</span>
- <span>sip:<input type="text" id="jsc-login-sip-address-field"/></span>
- </div>
- <div id="jsc-login-password">
- <span class="jsc-login-label">Password</span>
- <input type="password" id="jsc-login-password-field"/>
- </div>
- <input type="button" value="Login" id="jsc-login-button"/>
- </div>
-
<div id="ws">
- <span>WebSocket link:</span>
+ <span id="ws_link">WebSocket link:</span>
<span id="connected" class="state ws-connected">Connected</span>
<span id="disconnected" class="state ws-disconnected">Disconnected</span>
</div>
-
<div id="reg" class="ws-connected up down"><span>SIP registration:</span>
<span id="state">
<span class="up">Registered</span>
@@ -60,61 +162,16 @@
<input type="button" value="De-Register" id="de-reg-button" class="up"/>
</span>
</div>
+
</div>
-
-<div id="dial-controls" class="ws-connected">
- <div id="dest">
- <span>Destination:</span>
- <input type="text" id="address"/>
- </div>
- <div id="dialing-actions">
- <input type="button" value="Call (audio only)" id="call-audio"/>
- <input type="button" value="Call (audio and video)" id="call-video"/>
- </div>
-</div>
-
-<div id="session-controls" class="ws-connected in-call">
- <div id="state">
- <span class="session-outgoing">Dialing...</span>
- <span class="session-incoming">Incoming call</span>
- <span class="session-accepted">Answering, connectivity checks in progress...</span>
- <span class="session-active">Call connected</span>
- </div>
- <div id="peer"></div>
- <div id="session-actions">
- <input type="button" value="Cancel" id="session-cancel" class="session-outgoing"/>
- <input type="button" value="Reject" id="session-reject" class="session-incoming"/>
- <input type="button" value="Answer" id="session-answer" class="session-incoming"/>
- <input type="button" value="Answer (with video)" id="session-answer-video" class="session-incoming"/>
- <input type="button" value="Hold" id="session-hold" class="session-active" disabled/>
- <input type="button" value="Hangup" id="session-hangup" class="session-active"/>
- </div>
- <div id="dtmf-pad" class="session-active">
- <input type="button" value="1" class="dtmf-number"/>
- <input type="button" value="2" class="dtmf-number"/>
- <input type="button" value="3" class="dtmf-number"/>
- <br/>
- <input type="button" value="4" class="dtmf-number"/>
- <input type="button" value="5" class="dtmf-number"/>
- <input type="button" value="6" class="dtmf-number"/>
- <br/>
- <input type="button" value="7" class="dtmf-number"/>
- <input type="button" value="8" class="dtmf-number"/>
- <input type="button" value="9" class="dtmf-number"/>
- <br/>
- <input type="button" value="*" class="dtmf-symbol"/>
- <input type="button" value="0" class="dtmf-number"/>
- <input type="button" value="#" class="dtmf-symbol"/>
- </div>
-</div>
-
+
<div id="video-session" class="ws-connected in-call">
- <video id="remoteView" autoplay></video>
- <video id="selfView" autoplay></video>
+ <video id="remoteView" autoplay controls></video>
+ <video id="selfView" autoplay muted></video>
<div id="video-controls">
<input type="button" value="Self view" id="video-control-self-view" class="self"/>
<input type="button" value="Self hide" id="video-control-self-hide" class="self"/>
- <input type="button" value="Full screen" id="video-control-fullscreen" disabled/>
</div>
</div>
+
diff --git a/drucall.admin.inc b/drucall.admin.inc
index 98361b2..c57e91b 100644
--- a/drucall.admin.inc
+++ b/drucall.admin.inc
@@ -33,6 +33,20 @@ function drucall_admin($form, &$form_state) {
'#description' => t('Whether or not to show a button allowing a video call.'),
);
+ $form['enable_chat'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Show chat panel'),
+ '#default_value' => variable_get('enable_chat', true),
+ '#description' => t('Whether or not to show the chat messaging facility.'),
+ );
+
+ $form['enable_dtmf_pad'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Show DTMF panel in-call'),
+ '#default_value' => variable_get('enable_dtmf_pad', true),
+ '#description' => t('Whether or not to show a DTMF dialing pad during calls.'),
+ );
+
$form['display_name'] = array(
'#type' => 'textfield',
'#title' => t('Display name for caller'),
@@ -140,6 +154,8 @@ function drucall_admin_submit($form, &$form_state) {
variable_set('default_destination', $form_state['values']['default_destination']);
variable_set('enable_audio', $form_state['values']['enable_audio']);
variable_set('enable_video', $form_state['values']['enable_video']);
+ variable_set('enable_chat', $form_state['values']['enable_chat']);
+ variable_set('enable_dtmf_pad', $form_state['values']['enable_dtmf_pad']);
variable_set('display_name', $form_state['values']['display_name']);
variable_set('from_uri', $form_state['values']['from_uri']);
variable_set('auth_user', $form_state['values']['auth_user']);
diff --git a/drucall.info b/drucall.info
index 5163c44..e696013 100644
--- a/drucall.info
+++ b/drucall.info
@@ -5,5 +5,7 @@ core = 7.x
dependencies[] = jssip
dependencies[] = jscommunicator
dependencies[] = arbiterjs
+dependencies[] = jqueryi18nproperties
+dependencies[] = fontawesome
configure = admin/config/drucall/settings
diff --git a/drucall.module b/drucall.module
index 13a0679..eb9eb0c 100644
--- a/drucall.module
+++ b/drucall.module
@@ -47,9 +47,11 @@ function drucall_theme() {
function drucall_call() {
+ global $language;
+
// We use the `libraries' module to load javascript dependencies:
- foreach ([ "jssip", "jscommunicator", "arbiterjs" ] as $libname) {
+ foreach ([ "jssip", "jscommunicator", "arbiterjs", "jqueryi18nproperties", "fontawesome" ] as $libname) {
if (!($library = libraries_detect($libname))) {
$error = "failed to load an essential component";
$error_msg = "failed to load $libname - please install it (check the DruCall instructions)";
@@ -70,6 +72,8 @@ function drucall_call() {
'phone_number' => variable_get('default_destination'),
'enable_audio' => variable_get('enable_audio'),
'enable_video' => variable_get('enable_video'),
+ 'enable_chat' => variable_get('enable_chat'),
+ 'enable_dtmf_pad' => variable_get('enable_dtmf_pad'),
'display_name' => variable_get('display_name'),
'impi' => variable_get('auth_user'),
'impu' => variable_get('from_uri'),
@@ -80,6 +84,7 @@ function drucall_call() {
'turn_server_url' => variable_get('turn_server_url'),
'turn_username' => variable_get('turn_username'),
'turn_password' => variable_get('turn_password'),
+ 'language_code' => $language->language,
);
drupal_add_js(
diff --git a/internationalization/Messages.properties b/internationalization/Messages.properties
new file mode 100644
index 0000000..c917d61
--- /dev/null
+++ b/internationalization/Messages.properties
@@ -0,0 +1,45 @@
+error_js = ERROR: This service requires JavaScript. Please enable JavaScript in your web browser settings.
+error_webrtc = ERROR: This service requires WebRTC. Please try <a href="http://www.mozilla.org">Mozilla Firefox</a> or <a href="http://www.google.com/chrome">Google Chrome</a>, using the latest version is strongly recommended.
+error_no_config = ERROR: JsCommunicator configuration not found.
+error_ua_init_failure = ERROR: Failed to initialize user agent.
+error_reg_fail = ERROR: SIP Registration failure.
+error_call_attempt_failed = ERROR: Failed to start call, check that microphone/webcam are connected, check browser security settings, peer may not support compatible codecs.
+error_dynamic = " "
+jsc_login_display_name = Display name (may be empty)
+jsc_login_sip_uri = SIP address
+jsc_login_password = Password
+jsc_login_button = Login
+ws_link = WebSocket link:
+ws_state_connected = Connected
+ws_state_disconnected = Disconnected
+sip_reg = SIP registration:
+sip_reg_up = Registered
+sip_reg_down = Not Registered
+sip_dest_address = Destination
+session_state_outgoing = Dialing ...
+session_state_incoming = Incoming call
+session_state_accepted = Answering, connectivity checks in progress ...
+session_state_active = Call connected
+button_session_cancel = Cancel
+button_session_reject = Reject
+button_session_answer = Answer
+button_call_audio = Call (audio only)
+button_reg = Register
+button_dereg = De-Register
+button_call_audio_video = Call (audio and video)
+button_session_answer_video = Answer (with video)
+button_session_answer_hold = Hold
+button_session_answer_hang_up = Hang-up
+button_video_control_self_view = Self view
+button_video_control_self_hide = Self hide
+button_video_control_full_screen = Full screen
+welcome = Welcome,
+call = Call
+chat = Chat
+enter_contact = Enter contact
+type_to_chat = type to chat...
+start_chat = start chat
+me = me
+logout = Logout
+no_contact = Please enter a contact.
+remember_me = Remember me \ No newline at end of file
diff --git a/internationalization/Messages_bg.properties b/internationalization/Messages_bg.properties
new file mode 100644
index 0000000..b28d1b7
--- /dev/null
+++ b/internationalization/Messages_bg.properties
@@ -0,0 +1,45 @@
+error_js = ГРЕШКА: Тази услуга изисква JavaScript. Моля активирайте JavaScript в настройките на Вашия браузър.
+error_webrtc = ГРЕШКА: Тази услуга изисква WebRTC. Моля опитайте с <a href="http://www.mozilla.org">Mozilla Firefox</a> или <a href="http://www.google.com/chrome">Google Chrome</a>, използването на последна версия на браузъра е препорачително.
+error_no_config = ГРЕШКА: JsCommunicator конфигурация не е намерена.
+error_ua_init_failure = ГРЕШКА: Неуспешно стартиране на телефона.
+error_reg_fail = ГРЕШКА: Неуспешна SIP регистрация.
+error_call_attempt_failed = ГРЕШКА: Неуспешно обаждане, проверете дали микрофона и камерата са свързани, проверете настройките за сигурност на браузъра. Възможно е също другата страна да не поддържа съвместими кодеци.
+error_dynamic = " "
+jsc_login_display_name = Публично име (може да бъде празно)
+jsc_login_sip_uri = SIP адрес
+jsc_login_password = Парола
+jsc_login_button = Вход
+ws_link = WebSocket връзка:
+ws_state_connected = Свързан
+ws_state_disconnected = Несвързан
+sip_reg = SIP регистрация:
+sip_reg_up = Регистриран
+sip_reg_down = Нерегистриран
+sip_dest_address = Адрес на получателя
+session_state_outgoing = Набиране ...
+session_state_incoming = Входящо обаждане
+session_state_accepted = Обаждане, проверка на връзката ...
+session_state_active = Осъществено обаждане
+button_session_cancel = Затвори
+button_session_reject = Затвори
+button_session_answer = Обаждане
+button_call_audio = Обаждане (само глас)
+button_reg = Регистрация
+button_dereg = Отписване
+button_call_audio_video = Обаждане (аудио и видео)
+button_session_answer_video = Вдигни (с видео)
+button_session_answer_hold = Задръж
+button_session_answer_hang_up = Затвори
+button_video_control_self_view = Покажи себе си
+button_video_control_self_hide = Скрий себе си
+button_video_control_full_screen = Цял екран
+welcome = Добре дошли,
+call = Обаждане
+chat = Чат
+enter_contact = Въведете контакт
+type_to_chat = Въведете за започване на чат...
+start_chat = започни чат
+me = аз:
+logout = Изход
+no_contact = Моля въведете контакт.
+remember_me = Запомни ме \ No newline at end of file
diff --git a/internationalization/Messages_de.properties b/internationalization/Messages_de.properties
new file mode 100644
index 0000000..d96748a
--- /dev/null
+++ b/internationalization/Messages_de.properties
@@ -0,0 +1,46 @@
+error_js = FEHLER: Dieser Dienst erfordert JavaScript. Bitte aktivieren Sie JavaScript in Ihren Browsereinstellungen.
+error_webrtc = FEHLER: Dieser Dienst erfordert WebRTC. Bitte versuchen Sie es mit <a href="http://www.mozilla.org">Mozilla Firefox</a> oder <a href="http://www.google.com/chrome">Google Chrome</a>. Es ist empfohlen, die jeweils neueste Version zu verwenden.
+error_no_config = FEHLER: JsCommunicator-Konfiguration wurde nicht gefunden.
+error_ua_init_failure = FEHLER: Der User-Agent konnte nicht initialisiert werden.
+error_reg_fail = FEHLER: SIP-Registrierung fehlgeschlagen.
+error_call_attempt_failed = FEHLER: Start des Anrufs fehlgeschlagen. Stellen Sie sicher, dass Mikrofon und Webcam verbunden sind, und prüfen Sie die Browsereinstellungen. Eventuell unterstützt Ihr Gegenüber auch die erforderlichen Codecs nicht.
+error_dynamic = " "
+jsc_login_display_name = Angezeigter Name (kann leer sein)
+jsc_login_sip_uri = SIP-Adresse
+jsc_login_password = Passwort
+jsc_login_button = Login
+ws_link = WebSocket-Link:
+ws_state_connected = Verbunden
+ws_state_disconnected = Nicht verbunden
+sip_reg = SIP-Registrierung:
+sip_reg_up = Registriert
+sip_reg_down = Nicht registriert
+sip_dest_address = Ziel
+session_state_outgoing = Wähle ...
+session_state_incoming = Eingehender Anruf
+session_state_accepted = Antworte, prüfe Verbindung ...
+session_state_active = Anrufer verbunden
+button_session_cancel = Abbrechen
+button_session_reject = Abweisen
+button_session_answer = Antworten
+button_call_audio = Anrufen (nur Ton)
+button_reg = Registrieren
+button_dereg = Deregistrieren
+button_call_audio_video = Anrufen (Bild und Ton)
+button_session_answer_video = Antworten (mit Bild)
+button_session_answer_hold = Halten
+button_session_answer_hang_up = Auflegen
+button_video_control_self_view = Selbstansicht
+button_video_control_self_hide = Selbstansicht verstecken
+button_video_control_full_screen = Vollbild
+welcome = Wilkommen,
+call = Anrufen
+chat = Chat
+enter_contact = Kontakt eingeben
+type_to_chat = tippen zum chatten...
+start_chat = Chat anfangen
+me = ich:
+logout = Ausloggen
+no_contact = Bitte ein Kontakt eingeben.
+remember_me = Erinnere mich
+ 45,1 Bot
diff --git a/internationalization/Messages_en.properties b/internationalization/Messages_en.properties
new file mode 100644
index 0000000..a99469e
--- /dev/null
+++ b/internationalization/Messages_en.properties
@@ -0,0 +1,45 @@
+error_js = ERROR: This service requires JavaScript. Please enable JavaScript in your web browser settings.
+error_webrtc = ERROR: This service requires WebRTC. Please try <a href="http://www.mozilla.org">Mozilla Firefox</a> or <a href="http://www.google.com/chrome">Google Chrome</a>, using the latest version is strongly recommended.
+error_no_config = ERROR: JsCommunicator configuration not found.
+error_ua_init_failure = ERROR: Failed to initialize user agent.
+error_reg_fail = ERROR: SIP Registration failure.
+error_call_attempt_failed = ERROR: Failed to start call, check that microphone/webcam are connected, check browser security settings, peer may not support compatible codecs.
+error_dynamic = " "
+jsc_login_display_name = Display name (may be empty)
+jsc_login_sip_uri = SIP address
+jsc_login_password = Password
+jsc_login_button = Login
+ws_link = WebSocket link:
+ws_state_connected = Connected
+ws_state_disconnected = Disconnected
+sip_reg = SIP registration:
+sip_reg_up = Registered
+sip_reg_down = Not Registered
+sip_dest_address = Destination
+session_state_outgoing = Dialing ...
+session_state_incoming = Incoming call
+session_state_accepted = Answering, connectivity checks in progress ...
+session_state_active = Call connected
+button_session_cancel = Cancel
+button_session_reject = Reject
+button_session_answer = Answer
+button_call_audio = Call (audio only)
+button_reg = Register
+button_dereg = De-Register
+button_call_audio_video = Call (audio and video)
+button_session_answer_video = Answer (with video)
+button_session_answer_hold = Hold
+button_session_answer_hang_up = Hang-up
+button_video_control_self_view = Self view
+button_video_control_self_hide = Self hide
+button_video_control_full_screen = Full screen
+welcome = Welcome,
+call = Call
+chat = Chat
+enter_contact = Enter contact
+type_to_chat = type to chat...
+start_chat = start chat
+me = me:
+logout = Logout
+no_contact = Please enter a contact.
+remember_me = Remember me \ No newline at end of file
diff --git a/internationalization/Messages_es.properties b/internationalization/Messages_es.properties
new file mode 100644
index 0000000..4ed1c03
--- /dev/null
+++ b/internationalization/Messages_es.properties
@@ -0,0 +1,45 @@
+error_js = ERROR: este servicio requiere JavaScript. Habilite JavaScript en las opciones de su navegador.
+error_webrtc = ERROR: Este servicio requiere WebRTC. Utilice el siguiente enlace, <a href="http://www.mozilla.org">Mozilla Firefox</a> o <a href="http://www.google.com/chrome">Google Chrome</a>, es recomendable utilizar la versión más reciente.
+error_no_config = ERROR: No se encontró la configuración de JsCommunicator.
+error_ua_init_failure = ERROR: Fallo durante la inicialización del agente.
+error_reg_fail = ERROR: Fallo durante la registración SIP.
+error_call_attempt_failed = ERROR: No se pudo iniciar la llamada. Verifique si el micrófono y/o la cámara están conectados y verifique las opciones de seguridad de su navegador. Es posible que no compartan codecs con el otro usuario.
+error_dynamic = " "
+jsc_login_display_name = Nombre (opcional)
+jsc_login_sip_uri = Dirección SIP
+jsc_login_password = Contraseña
+jsc_login_button = Iniciar sesión
+ws_link = Enlace WebSocket:
+ws_state_connected = Conectado
+ws_state_disconnected = Desconectado
+sip_reg = Registro SIP:
+sip_reg_up = Registrado
+sip_reg_down = No Registrado
+sip_dest_address = Destino
+session_state_outgoing = Marcando ...
+session_state_incoming = Llamada entrante
+session_state_accepted = Conectando, verificaciones de conectividad en progreso ...
+session_state_active = Llamada conectada
+button_session_cancel = Cancelar
+button_session_reject = Rechazar
+button_session_answer = Contestar
+button_call_audio = Llamar (sólo audio)
+button_reg = Registrar
+button_dereg = Cancelar el registro
+button_call_audio_video = Llamar (audio y video)
+button_session_answer_video = Contestar (con video)
+button_session_answer_hold = Llamada en espera
+button_session_answer_hang_up = Terminar la llamada
+button_video_control_self_view = Vista (propia)
+button_video_control_self_hide = Ocultar (propia)
+button_video_control_full_screen = Pantalla completa
+welcome = Bienvenido,
+call = Llamada
+chat = Conversar
+enter_contact = Introduce el contacto
+type_to_chat = escribe para hablar...
+start_chat = empezar conversación
+me = yo:
+logout = Salir
+no_contact = Por favor, introduce un contacto.
+remember_me = Recuérdame
diff --git a/internationalization/Messages_fr.properties b/internationalization/Messages_fr.properties
new file mode 100644
index 0000000..499a610
--- /dev/null
+++ b/internationalization/Messages_fr.properties
@@ -0,0 +1,35 @@
+error_js = ERREUR : Ce service requiert l'activation de JavaScript. Veuillez l'activer dans les paramètres de votre navigateur.
+error_webrtc = ERREUR : Ce service requiert la technologie WebRTC. Veuillez utiliser les navigateurs <a href="http://www.mozilla.org">Mozilla Firefox</a> ou <a href="http://www.google.com/chrome">Google Chrome</a>; l'utilisation des dernières versions est vivement recommandée.
+error_no_config = ERREUR : La configuration de JsCommunicator est introuvable.
+error_ua_init_failure = ERREUR : Échec d'initialisation de l'agent utilisateur SIP.
+error_reg_fail = ERREUR : Échec de l'enregistrement SIP.
+error_call_attempt_failed = Échec de lancement de l'appel, veuillez vous assurer que vos webcam et micro sont connectés, vérifiez également les options de sécurité de votre navigateur. Il se peut que votre interlocuteur ne possède pas les codecs compatibles.
+error_dynamic = " "
+jsc_login_display_name = Nom (peut être vide)
+jsc_login_sip_uri = Adresse SIP
+jsc_login_password = Mot de passe
+jsc_login_button = Login
+ws_link = Adresse Websocket :
+ws_state_connected = connecté
+ws_state_disconnected = déconnecté
+sip_reg = Enregistrement SIP :
+sip_reg_up = Enregistré
+sip_reg_down = Non enregistré
+sip_dest_address = Destination
+session_state_outgoing = Numérotation…
+session_state_incoming = Appel entrant
+session_state_accepted = Réponse en cours, test de la connectivité en cours…
+session_state_active = Appel établi
+button_session_cancel = Annuler
+button_session_reject = Rejeter
+button_session_answer = Répondre
+button_call_audio = Appel (audio seulement)
+button_reg = Enregistrer
+button_dereg = Désenregistrer
+button_call_audio_video = Appel (audio et vidéo)
+button_session_answer_video = Répondre (avec vidéo)
+button_session_answer_hold = Décrocher
+button_session_answer_hang_up = Raccrocher
+button_video_control_self_view = Vidéo locale
+button_video_control_self_hide = Cacher la vidéo locale
+button_video_control_full_screen = Plein écran
diff --git a/internationalization/Messages_he.properties b/internationalization/Messages_he.properties
new file mode 100644
index 0000000..53be28f
--- /dev/null
+++ b/internationalization/Messages_he.properties
@@ -0,0 +1,45 @@
+error_js =.בהגדרות הדפדפן שלך JavaScript נא אפשר .JavaScript שגיאה: השירות דורש
+error_webrtc =.שימוש במהדורה האחרונה מומלץ ,<a href="http://www.google.com/chrome">Google Chrome</a> או <a href="http://www.mozilla.org">Mozilla Firefox</a> נסה .WebRTC שגיאה: השירות דורש
+error_no_config =.לא נמצאה JsCommunicator שגיאה: הקונפיגורציה של
+error_ua_init_failure = שגיאה: נכשל האתחול user agent.
+error_reg_fail = שגיאה: כישלון רישום SIP.
+error_call_attempt_failed = שגיאה: נכשל ניסיון להתחיל שיחה. לוודא שמיקרופון / מצלמת אינטרנט מחוברים. בדוק את הגדרות אבטחה של דפדפן, peer עשויים שלא לתמוך קודקים תואמים.
+error_dynamic = " "
+jsc_login_display_name = שם תצוגה (יכול להיות ריק)
+jsc_login_sip_uri = כתובת SIP
+jsc_login_password = סיסמה
+jsc_login_button = כניסה
+ws_link = קישור WebSocket:
+ws_state_connected = מחובר
+ws_state_disconnected = מנותק
+sip_reg = SIP registration:
+sip_reg_up = רשום
+sip_reg_down = לא רשום
+sip_dest_address = יעד
+session_state_outgoing = מחייג ...
+session_state_incoming = שיחה נכנסת
+session_state_accepted = עונה, בודק חיבור ...
+session_state_active = שיחה פעילה
+button_session_cancel = ביטול
+button_session_reject = דחייה
+button_session_answer = תשובה
+button_call_audio = (התקשרות (רק שמע
+button_reg = הרשמה
+button_dereg = בטל הרשמה
+button_call_audio_video = חייג (וידאו וקול)
+button_session_answer_video = (תשובה (עם וידאו
+button_session_answer_hold = השהה
+button_session_answer_hang_up = נתק
+button_video_control_self_view = תצוגה עצמית
+button_video_control_self_hide = הסתרה עצמית
+button_video_control_full_screen = מסך מלא
+welcome = ברוכים הבאים,
+call = שיחה
+chat = צ'ט
+enter_contact = הכנס איש קשר
+type_to_chat = הקלד לצ'ט...
+start_chat = התחל צ'ט
+me = אני:
+logout = התנתק
+no_contact = הזן איש קשר.
+remember_me = זכור אותי \ No newline at end of file
diff --git a/internationalization/Messages_nl.properties b/internationalization/Messages_nl.properties
new file mode 100644
index 0000000..dfa5808
--- /dev/null
+++ b/internationalization/Messages_nl.properties
@@ -0,0 +1,45 @@
+error_js = FOUT: Deze dienst vereist JavaScript. Zet alstublieft JavaScript aan in uw web browser instellingen.
+error_webrtc = FOUT: Deze dienst vereist WebRTC. Probeer alstublieft <a href="http://www.mozilla.org">Mozilla Firefox</a> of <a href="http://www.google.com/chrome">Google Chrome</a>, het gebruik van de laatste versie is sterk aanbevolen.
+error_no_config = FOUT: JsCommunicator configuratie niet gevonden.
+error_ua_init_failure = FOUT: Mislukt om de useragent te initialiseren.
+error_reg_fail = FOUT: SIP registratie mislukt.
+error_call_attempt_failed = FOUT: Mislukt om een gesprek te starten, controleer of de microfoon en webcam aangesloten zijn, controleer de browser veiligheidsinstellingen, deelnemer ondersteund misschient niet een compatibele codecs.
+error_dynamic = " "
+jsc_login_display_name = Weergave naam (mag leeg zijn)
+jsc_login_sip_uri = SIP-adres
+jsc_login_password = Wachtwoord
+jsc_login_button = Login
+ws_link = WebSocket link:
+ws_state_connected = Verbonden
+ws_state_disconnected = Niet verbonden
+sip_reg = SIP registratie:
+sip_reg_up = Registereerd
+sip_reg_down = Niet registereerd
+sip_dest_address = Bestemming
+session_state_outgoing = Bellen ...
+session_state_incoming = Inkomend gesprek
+session_state_accepted = Bezig met beantwoorden, connectiviteitstest is bezig ...
+session_state_active = Gesprek verbonden
+button_session_cancel = Annuleer
+button_session_reject = Weigeren
+button_session_answer = Aannemen
+button_call_audio = Bel (alleen geluid)
+button_reg = Registreer
+button_dereg = Afmelden
+button_call_audio_video = Bel (beeld en geluid)
+button_session_answer_video = Aannemen (met beeld)
+button_session_answer_hold = Wachtstand
+button_session_answer_hang_up = Ophangen
+button_video_control_self_view = Zelf tonen
+button_video_control_self_hide = Zelf verbergen
+button_video_control_full_screen = Volledig scherm
+welcome = Welkom,
+call = Bel
+chat = Chat
+enter_contact = Voer contactpersoon in
+type_to_chat = Type om te chatten...
+start_chat = start chat
+me = ik:
+logout = Uitloggen
+no_contact = Voer een contactpersoon in.
+remember_me = Herriner mij
diff --git a/internationalization/Messages_pl.properties b/internationalization/Messages_pl.properties
new file mode 100644
index 0000000..1af640c
--- /dev/null
+++ b/internationalization/Messages_pl.properties
@@ -0,0 +1,45 @@
+error_js = ERROR: Ta usługa wymaga JavaScript. Proszę włączyć JavaScript w ustawieniach przeglądarki WWW.
+error_webrtc = ERROR: Ta usługa wymaga WebRTC. Spróbuj użyć <a href="http://www.mozilla.org">Mozilli Firefox</a> lub <a href="http://www.google.com/chrome">Google Chrome</a>, rekomendowane są najnowsze wersje.
+error_no_config = ERROR: Konfiguracja JsCommunicator nie znaleziona.
+error_ua_init_failure = ERROR: Nie udało się zainicjalizować klienta.
+error_reg_fail = ERROR: Błąd rejestracji SIP.
+error_call_attempt_failed = ERROR: Nie udało się nawiązać połączenia, sprawdź czy mikrofon/kamera są podłączone, sprawdź ustawienia bezpieczeństwa przeglądarki, druga strona może nie wspierać twoihc kodeków.
+error_dynamic = " "
+jsc_login_display_name = Wyświetlana nazwa (może być puste)
+jsc_login_sip_uri = Adres SIP
+jsc_login_password = Hasło
+jsc_login_button = Login
+ws_link = Połączenie WebSocket:
+ws_state_connected = Połączono
+ws_state_disconnected = Rozłączono
+sip_reg = Rejestracja SIP:
+sip_reg_up = Zarejestrowano
+sip_reg_down = Nie zarejestrowano
+sip_dest_address = Adres docelowy
+session_state_outgoing = Wybieram ...
+session_state_incoming = Rozmowa przychodząca
+session_state_accepted = Odbieranie, sprawdzanie połączenia ...
+session_state_active = Nazwiązano połączenie
+button_session_cancel = Anuluj
+button_session_reject = Odrzuć
+button_session_answer = Odbierz
+button_call_audio = Zadzwoń (tylko audio)
+button_reg = Rejestracja
+button_dereg = Wyrejestrowanie
+button_call_audio_video = Zadzwoń (audio i video)
+button_session_answer_video = Odbierz (z video)
+button_session_answer_hold = Oczekiwanie
+button_session_answer_hang_up = Rozłacz
+button_video_control_self_view = Pokaż siebie
+button_video_control_self_hide = Schowaj siebie
+button_video_control_full_screen = Pełny ekran
+welcome = Witaj,
+call = Zadzwoń
+chat = Czat
+enter_contact = Wpisz kontakt
+type_to_chat = pisz...
+start_chat = zacznij czat
+me = ja:
+logout = Wyloguj
+no_contact = Prosze wpisać kontakt.
+remember_me = Zapamiętaj mnie
diff --git a/internationalization/Messages_pt.properties b/internationalization/Messages_pt.properties
new file mode 100644
index 0000000..8084927
--- /dev/null
+++ b/internationalization/Messages_pt.properties
@@ -0,0 +1,45 @@
+error_js = ERRO: Esse serviço requer JavaScript. Por favor habilite JavaScript no seu navegador.
+error_webrtc = ERRO: Esse serviço requer WebRTC. Experimente usar <a href="http://www.mozilla.org">Mozilla Firefox</a> ou <a href="http://www.google.com/chrome">Google Chrome</a>, recomendamos utilizar a versão mais recente.
+error_no_config = ERRO: Configuração JsCommunicator não encontrada.
+error_ua_init_failure = ERRO: Falha na inicialização do agente do utilizador.
+error_reg_fail = ERRO: Falha no registro SIP.
+error_call_attempt_failed = ERRO: Falha ao começar a chamada, verifique que o microfone/webcam estão conectados, verifique as definições de segurança do navegador, pode ser que um participante não possui codecs compatíveis.
+error_dynamic = " "
+jsc_login_display_name = Nome exibido (opcional)
+jsc_login_sip_uri = Endereço SIP
+jsc_login_password = Senha
+jsc_login_button = Login
+ws_link = Link WebSocket:
+ws_state_connected = Conectado
+ws_state_disconnected = Disconectado
+sip_reg = Registro SIP:
+sip_reg_up = Registrado
+sip_reg_down = Não Registrado
+sip_dest_address = Destino
+session_state_outgoing = Discando ...
+session_state_incoming = Chamada recebida
+session_state_accepted = Atendendo, verificando a conectividade ...
+session_state_active = Chamada conectada
+button_session_cancel = Cancelar
+button_session_reject = Rejeitar
+button_session_answer = Atender
+button_call_audio = Ligar (apenas audio)
+button_reg = Registrar
+button_dereg = Desregistrar
+button_call_audio_video = Ligar (audio e video)
+button_session_answer_video = Atender (com video)
+button_session_answer_hold = Em espera
+button_session_answer_hang_up = Desligar
+button_video_control_self_view = Visualizar video
+button_video_control_self_hide = Fechar video
+button_video_control_full_screen = Tela cheia
+welcome = Bem-vindo,
+call = Ligar
+chat = Chat
+enter_contact = Digite um contato
+type_to_chat = digite para enviar uma mensagem...
+start_chat = Iniciar chat
+me = eu:
+logout = Logout
+no_contact = Por favor digite um contato.
+remember_me = Salvar dados
diff --git a/internationalization/Messages_sk.properties b/internationalization/Messages_sk.properties
new file mode 100644
index 0000000..2a663aa
--- /dev/null
+++ b/internationalization/Messages_sk.properties
@@ -0,0 +1,45 @@
+error_js = CHYBA: Táto služba vyžaduje JavaScript. Prosím, zapnite si JavaScript v nastaveniach svojho webového prehliadača.
+error_webrtc = CHYBA: Táto služba vyžaduje WebRTC. Prosím, skúste <a href="http://www.mozilla.org">Mozilla Firefox</a> alebo <a href="http://www.google.com/chrome">Google Chrome</a>. Dôrazne odporúčame používať ich najnovšiu verziu.
+error_no_config = CHYBA: Konfiguácia JsCommunicator nebola nájdená.
+error_ua_init_failure = CHYBA: Nepodarilo sa inicializovať klienta.
+error_reg_fail = CHYBA: Chyba registrácie SIP.
+error_call_attempt_failed = CHYBA: Nepodarilo sa spustiť hovor. Skontrolujte, či je váš mikrofón alebo webová kamera zapojená. Skontrolujte nastavenia zabezpečenia v prehliadači. Je tiež možné, že účastník, s ktorým sa snažíte spojiť nepodporuje kompatibilné kodeky.
+error_dynamic = " "
+jsc_login_display_name = Zobrazené meno (môže byť prázdne)
+jsc_login_sip_uri = Adresa SIP
+jsc_login_password = Heslo
+jsc_login_button = Prihlasovacie meno
+ws_link = Odkaz WebSocket:
+ws_state_connected = Spojené
+ws_state_disconnected = Odpojené
+sip_reg = Registrácia SIP:
+sip_reg_up = Zaregistrované
+sip_reg_down = Nezaregistrované
+sip_dest_address = Cieľ
+session_state_outgoing = Prebieha vytáčanie ...
+session_state_incoming = Prichádzajúci hovor
+session_state_accepted = Prijíma sa hovor, prebieha kontrola spojenia ...
+session_state_active = Hovor spojený
+button_session_cancel = Zrušiť
+button_session_reject = Odmietnuť
+button_session_answer = Odpovedať
+button_call_audio = Volať (iba zvuk)
+button_reg = Zaregistrovať
+button_dereg = Odregistrovať
+button_call_audio_video = Volať (zvuk a video)
+button_session_answer_video = Odpovedať (s videom)
+button_session_answer_hold = Podržať
+button_session_answer_hang_up = Zavesiť
+button_video_control_self_view = Zobraziť seba
+button_video_control_self_hide = Skryť seba
+button_video_control_full_screen = Celoobrazovkový režim
+welcome = Vitajte,
+call = Volať
+chat = Četovať
+enter_contact = Zadajte kontakt
+type_to_chat = tu môžete četovať...
+start_chat = spustiť četovanie
+me = ja
+logout = Odhlásiť sa
+no_contact = prosím, zadajte kontakt.
+remember_me = Zapamätať si ma
diff --git a/js/drucall.js b/js/drucall.js
index e31fe1f..bbfcdf7 100644
--- a/js/drucall.js
+++ b/js/drucall.js
@@ -57,12 +57,35 @@
video_dialing: dcsettings.enable_video, // Whether to offer a video call button
prefer_video: false, // If user presses Enter to dial, use video?
no_answer_timeout: 60, // How long to wait for answer (seconds)
+ clear_dialbox: false // Whether to clear dialbox after call/attempted call
+ },
+
+ chat : {
+ enable: dcsettings.enable_chat // Whether to show chat functions
},
session : {
- show_dtmf_pad : false, // Whether to show a DTMF dialpad during calls
+ show_dtmf_pad : dcsettings.enable_dtmf_pad, // Whether to show a DTMF dialpad during calls
+ dtmf_duration : 160, // Duration (ms) to signal a DTMF press
+ dialpad_tone: true, // Whether to play sound after pressing dialpad button
+ message_tone: true, // Whether to alert (sound) when new IM is received
+ require_relay_candidate: false // Whether to abort calls if no
+ // relay candidate found in the SDP
+ // generated by the browser.
+ // If a TURN server had been configured,
+ // the lack of a relay candidate is
+ // likely to be a sign that UDP is blocked
+ },
+
+ i18n : {
+ translate: true, // enables the call to i18n init function from JSCommManager.init()
+ show_menu: true, // show the language chooser menu
+ default_lang: dcsettings.language_code // default language to use
},
+ extra_headers : [
+ // 'X-WS-Session-Extra: some_token=value'
+ ]
};
diff --git a/skin.css b/skin.css
new file mode 100644
index 0000000..4443740
--- /dev/null
+++ b/skin.css
@@ -0,0 +1,45 @@
+span {
+ color:#FFF;
+ }
+
+ #peer {
+ color:#FFF;
+}
+
+#lang_selection {
+ background-color: #888;
+ color:#FFF;
+}
+
+#communicator {
+ border-radius: 6px;
+ border-style: solid;
+ border-color: #FFF;
+ border-width: 1px;
+}
+
+#dtmf-pad {
+ border: 1px solid #FFF;
+ opacity: 0.8;
+}
+
+#encapsulate {
+ background-color: #888;
+ border-radius: 6px;
+}
+
+#error span, #ws span, #reg span {
+ color: white;
+}
+
+#header h1 {
+ color: white;
+}
+
+#jsc-logout-button {
+ color: #FFF;
+}
+
+h3 {
+ color: white;
+} \ No newline at end of file
diff --git a/sounds/new_message.ogg b/sounds/new_message.ogg
new file mode 100644
index 0000000..19f65d0
--- /dev/null
+++ b/sounds/new_message.ogg
Binary files differ
diff --git a/sounds/new_message.wav b/sounds/new_message.wav
new file mode 100644
index 0000000..1a427b2
--- /dev/null
+++ b/sounds/new_message.wav
Binary files differ