From: Joey Schulze Date: Sun, 13 Dec 2009 13:41:48 +0000 (+0100) Subject: Allow playing of internal messages X-Git-Url: https://git.infodrom.org/?p=infodrom%2Fphone;a=commitdiff_plain;h=cb3e539cdc964f2cbfe1bfe2c92adbb13e946c3d;ds=sidebyside Allow playing of internal messages --- diff --git a/index.php b/index.php index b227cf5..fbe62a0 100644 --- a/index.php +++ b/index.php @@ -17,6 +17,8 @@ if (!empty($_POST['func'])) { $data['call'] = $_POST['call']; } elseif ($_POST['func'] == 'save') { save_call(); + } elseif ($_POST['func'] == 'messages') { + $data['messages'] = read_directory('messages'); } header('Content-type: application/json; charset=UTF-8'); echo json_encode($data); @@ -60,7 +62,8 @@ if (!empty($_POST['func'])) {
- +
+
@@ -71,7 +74,7 @@ if (!empty($_POST['func'])) {

-
+

Edit message

@@ -86,5 +89,12 @@ Note

+
+

Configured messages

+
    +
  • Loading data...
  • +
+
+ diff --git a/phone.js b/phone.js index 0a2a996..b249880 100644 --- a/phone.js +++ b/phone.js @@ -20,13 +20,18 @@ function reload() fetch_archive(); } +function remove_children(obj) +{ + while (obj.childNodes.length > 0) + obj.removeChild(obj.childNodes[0]); +} + function fetch_incoming_callback(data) { var calls = document.getElementById('incoming_calls'); var div = document.getElementById('incoming'); - while (calls.childNodes.length > 0) - calls.removeChild(calls.childNodes[0]); + remove_children(calls); if (data.incoming.length > 0) { div.style.display = ''; @@ -65,8 +70,7 @@ function fetch_archive_callback(data) var calls = document.getElementById('archive_calls'); var div = document.getElementById('archive'); - while (calls.childNodes.length > 0) - calls.removeChild(calls.childNodes[0]); + remove_children(calls); if (data.archive.length > 0) { div.style.display = ''; @@ -104,6 +108,13 @@ function play_message_callback(data) var date = document.getElementById('calldate'); var note = document.getElementById('callnote'); + if (data.dir == 'messages') { + date.innerHTML = ' '; + speaker.innerHTML = 'Message ' + data.call; + note.innerHTML = ''; + return; + } + var text = data.name; if (data.number != '0') text += ' (' + data.number + ')'; speaker.innerHTML = text; @@ -196,6 +207,12 @@ function menu_list_edit(e) ajax_request('callinfo', params, menu_list_edit_callback); e.target.parentNode.style.display = 'none'; + + var edit = document.getElementById('container_edit'); + var config = document.getElementById('container_config'); + + edit.style.display = ''; + config.style.display = 'none'; } function menu_list_delete(e) @@ -205,3 +222,34 @@ function menu_list_delete(e) e.target.parentNode.style.display = 'none'; } + +function fetch_messages_callback(data) +{ + var calls = document.getElementById('internal_calls'); + + remove_children(calls); + + if (data.messages.length > 0) { + for (var i=0; i < data.messages.length; i++) { + var elem = document.createElement('li'); + + elem.innerHTML = data.messages[i].fname; + elem.payload = new Array(); + elem.payload['dir'] = 'messages'; + elem.payload['call'] = data.messages[i].fname; + elem.onclick = play_message; + calls.appendChild(elem); + } + } +} + +function toggle_messages() +{ + var edit = document.getElementById('container_edit'); + var config = document.getElementById('container_config'); + + config.style.display = ''; + edit.style.display = 'none'; + + ajax_request('messages', '', fetch_messages_callback); +} diff --git a/phone.php b/phone.php index dc68c44..ff8e0bd 100644 --- a/phone.php +++ b/phone.php @@ -75,7 +75,7 @@ function read_directory($directory) if ($dir = opendir(SPOOL_DIR . '/' . $directory)) { while (($filename = readdir($dir)) !== false) { - if (($pos = strpos($filename, '.vmsg')) !== false) { + if (($pos = strpos($filename, '.vmsg')) !== false || ($pos = strpos($filename, '.msg')) !== false) { $fname = substr($filename,0,$pos); $info = message_info($directory, $fname); $info['fname'] = $fname; @@ -98,7 +98,13 @@ function send_call($dir, $call) { $dir = str_replace('/','x',$dir); $call = str_replace('/','x',$call); - $fname = SPOOL_DIR . '/' . $dir . '/' . $call . '.vmsg'; + + if ($dir == 'messages') + $ext = '.msg'; + else + $ext = '.vmsg'; + + $fname = SPOOL_DIR . '/' . $dir . '/' . $call . $ext; if (!is_file($fname)) { printf("

Anruf %s in %s nicht gefunden!

", $call, $dir);