Allow playing of internal messages
[infodrom/phone] / phone.js
index 58e5371..b249880 100644 (file)
--- a/phone.js
+++ b/phone.js
@@ -14,13 +14,24 @@ function page_init()
     fetch_archive();
 }
 
+function reload()
+{
+    fetch_incoming();
+    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 = '';
@@ -59,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 = '';
@@ -98,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;
@@ -190,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)
@@ -199,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);
+}