X-Git-Url: https://git.infodrom.org/?p=infodrom%2Fphone;a=blobdiff_plain;f=phone.js;h=b249880425874972e44e5f9a23d1908ff3532457;hp=fb1b829fe9eac817d4b86d6f8d19ac30de74b469;hb=cb3e539cdc964f2cbfe1bfe2c92adbb13e946c3d;hpb=704e68ffbef1356efa61a99dae6e675480d216af diff --git a/phone.js b/phone.js index fb1b829..b249880 100644 --- a/phone.js +++ b/phone.js @@ -1,3 +1,11 @@ +var menu_list = { + 'title': 'Calls', + 'items': [{'name': 'Archive', 'callback': menu_list_archive}, + {'name': 'Edit', 'callback': menu_list_edit}, + {'name': 'Delete', 'callback': menu_list_delete}, + {'name': 'Cancel', 'type': 'hide'}] +}; + function page_init() { var frame = document.getElementById('phonecall'); @@ -6,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 = ''; @@ -29,10 +48,11 @@ function fetch_incoming_callback(data) elem.innerHTML = text; elem.payload = new Array(); elem.payload['dir'] = 'incoming'; - elem.payload['fname'] = data.incoming[i].fname; + elem.payload['call'] = data.incoming[i].fname; if (data.incoming[i].read == undefined) elem.className = 'new'; elem.onclick = play_message; + elem.oncontextmenu = list_context; calls.appendChild(elem); } } else { @@ -50,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 = ''; @@ -68,8 +87,9 @@ function fetch_archive_callback(data) elem.innerHTML = text; elem.payload = new Array(); elem.payload['dir'] = 'archive'; - elem.payload['fname'] = data.archive[i].fname; + elem.payload['call'] = data.archive[i].fname; elem.onclick = play_message; + elem.oncontextmenu = list_context; calls.appendChild(elem); } } else { @@ -88,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; @@ -98,8 +125,131 @@ function play_message_callback(data) function play_message(event) { var frame = document.getElementById('phonecall'); - var parms = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['fname']; - ajax_request('callinfo', parms, play_message_callback); - frame.src = 'index.php?'+parms; + var params = 'dir='+event.originalTarget.payload['dir']+'&call='+event.originalTarget.payload['call']; + ajax_request('callinfo', params, play_message_callback); + frame.src = 'index.php?'+params; event.originalTarget.className = ''; } + +function save_callback(data) +{ + field = document.getElementById('edit_status'); + field.innerHTML = 'Call saved'; +} + +function save() +{ + var dir = document.getElementById('edit_dir'); + var call = document.getElementById('edit_call'); + var name = document.getElementById('edit_name'); + var note = document.getElementById('edit_note'); + var params = 'dir=' + dir.value + '&call=' + call.value; + params += '&name=' + name.value + '¬e=' + note.value; + + ajax_request('save', params, save_callback); +} + +function list_context(e) +{ + var menu = document.getElementById('menu_list'); + if (!menu) + menu = menu_create('menu_list', menu_list); + + menu.style.left = e.pageX - 40; + menu.style.top = e.pageY - 15; + menu.style.display = ''; + menu.payload = new Array(); + menu.payload['dir'] = e.target.payload['dir']; + menu.payload['call'] = e.target.payload['call']; + + return false; +} + +function menu_list_archive_callback(data) +{ + fetch_incoming(); + fetch_archive(); +} + +function menu_list_edit_callback(data) +{ + var fields = ['name','note','dir','call']; + var field; + + for (var i=0; i < fields.length; i++) { + field = document.getElementById('edit_' + fields[i]); + field.value = data[fields[i]]; + } + + fields = ['name','note']; + for (var i=0; i < fields.length; i++) { + field = document.getElementById('edit_' + fields[i]); + field.innerHTML = data[fields[i]]; + } + + field = document.getElementById('edit_date'); + field.innerHTML = data.date + ', ' + data.length; + field = document.getElementById('edit_status'); + field.innerHTML = ''; +} + +function menu_list_archive(e) +{ + if (e.target.parentNode.payload['dir'] == 'incoming') + ajax_request('archive_call', 'call='+e.target.parentNode.payload['call'], menu_list_archive_callback); + + e.target.parentNode.style.display = 'none'; +} + +function menu_list_edit(e) +{ + var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call']; + 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) +{ + var params = 'dir='+e.target.parentNode.payload['dir']+'&call='+e.target.parentNode.payload['call']; + ajax_request('delete_call', params, menu_list_archive_callback); + + 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); +}