* @copyright 2007-2008 The SquirrelMail Project Team, Alexandros Vellis * @package plugins * @subpackage addressbook_ui_enhancements */ /** * Prints the javascript functions for addressbook enhancements. * * @return string */ function addressbook_ui_javascripts_main() { global $color, $base_uri; sq_bindtextdomain('addressbook_ui_enhancements', SM_PATH . 'plugins/addressbook_ui_enhancements/locale'); textdomain ('addressbook_ui_enhancements'); include_once(SM_PATH .'plugins/uoa_enhancements/functions_common.php'); $ua = uoa_browser_info(); $msie = false; if(isset($ua['msie'])) { $msie = true; } $out = " Event.observe(window, 'load', function() { if($('FormAddrsAbook') != null) { $('FormAddrsAbook').observe('click', respondToClick); $('FormAddrsAbook').observe('mouseover', respondToMouseOver); $('FormAddrsAbook').observe('mouseout', respondToMouseOut); } if($('abook_add_new_start') != null) { $('abook_add_new_start').observe('click', addNewContactStart); } }); function determineMyIdFromGenericId(genericId) { var splitPos = genericId.indexOf(':'); if(splitPos > 0) { // FIXME - remove the 1: return '1:' + genericId.substr(splitPos+1); } return null; } function respondToMouseOver(event) { var element = event.element(); myId = determineMyIdFromGenericId(element.parentNode.id); if(myId == null) return; $('abook_main_row_' + myId).style.background = '".$color[16]."'; $('abook_main_row_' + myId).style.cursor = 'pointer'; } function respondToMouseOut(event) { var element = event.element(); myId = determineMyIdFromGenericId(element.parentNode.id); if(myId == null) return; row = document.getElementById('abook_info_row_' + myId); if(row.style.display != 'table-row' && row.style.display != 'block') { // Not expanded restoreOriginalRowColor(myId); } else { // Expanded var newcolor = '".$color[0]."'; $('abook_main_row_' + myId).style.background = newcolor; } // $('abook_main_row_' + myId).style.cursor = 'default'; } function respondToClick(event) { var element = event.element(); var myId = null; myId = determineMyIdFromGenericId(element.parentNode.id); if(element.hasClassName('abook_ui_expand_link')) { // TODO: extra argument of line number addressbookUiToggleExpandInfo(myId, 1); } } function addressbookUiLoading(myId) { Element.update('abook_extended_info_' + myId, ''); } function addressbookUiAddNew() { new Ajax.Updater('abook_add_new', '".$base_uri."plugins/addressbook_ui_enhancements/addressbook_handler.php?pabaction=addnew', { method:'get', onComplete: function(transport) { Effect.ScrollTo('FormAddNew'); } }); } function addressbookUiResetAddNew() { $('abook_add_new').innerHTML = ''; } function addressbookUiToggleExpandInfo(myId, line) { var row = document.getElementById('abook_info_row_' + myId); if(row.style.display != 'table-row' && row.style.display != 'block') { "; if($msie) { $out .= " row.style.display = 'block'; "; } else { $out .= " try { row.style.display='table-row'; } catch(e) { row.style.display = 'block'; }"; } $out .= " document.getElementById('abook_main_row_' + myId).style.background = '".$color[0]."'; new Ajax.Updater('abook_extended_info_' + myId, '".$base_uri."plugins/addressbook_ui_enhancements/addressbook_handler.php?pabaction=retrieve&pabobject=' + encodeURIComponent(myId), { method:'get' }); } else { new Effect.BlindUp('abook_info_row_' + myId, {duration: 0.4}); restoreOriginalRowColor(myId); setTimeout('addressbookUiLoading(\\'' + myId + '\\');', 500); } } function restoreOriginalRowColor(myId) { if($('abook_main_row_' + myId).hasClassName('abook_row_alternate')) { var newcolor = '".$color[12]."'; } else { var newcolor = '".$color[4]."'; } $('abook_main_row_' + myId).style.background = newcolor; } function addressbookUiShow(myId) { new Ajax.Updater('abook_extended_info_' + myId, '".$base_uri."plugins/addressbook_ui_enhancements/addressbook_handler.php?pabaction=retrieve&pabobject=' + encodeURIComponent(myId), { method:'get' }); } function addressbookUiEdit(myId) { // addressbookUiLoading(myId); new Ajax.Updater('abook_extended_info_' + myId, '".$base_uri."plugins/addressbook_ui_enhancements/addressbook_handler.php?pabaction=edit&pabobject=' + encodeURIComponent(myId), { method:'get' }); } function addressbookUiDelete(myId) { new Ajax.Request('".$base_uri."plugins/addressbook_ui_enhancements/addressbook_handler.php?pabaction=delete&pabobject=' + encodeURIComponent(myId), { method:'post', onSuccess: function(transport){ var responseraw = transport.responseText || 'no response text'; var responseArray=responseraw.split('||'); if(responseArray[0] != null) { var response = responseArray[0]; } if(responseArray[1] != null) { var infoText = responseArray[1]; } if(responseArray.length == 3 && responseArray[2] != null) { var errorMsg = responseArray[2]; } if(response == ".ABOOK_UI_DELETED_SUCCESSFULLY.") { var successMsg = '\"\" ' + '". _("Entry for %s has been deleted successfully.") ."
". _("Click on "Refresh Addressbook" link to update the contacts list.") ."'; var msg = successMsg.replace(/%s/, infoText); addressbookUiMsg(msg, 'info'); $('abook_message_refresh').style.display = 'block'; setTimeout('addressbookUiToggleExpandInfo(\'' + myId + '\', 1)', 1000); } if(response == ".ABOOK_UI_ERROR_DURING_DELETE.") { var errorMsg1 = '". _("Error while deleting entry for %s.") ."'; var errorMsg2 = '". _("Error message: %s") ."'; var msg = errorMsg1.replace(/%s/, infoText) + '
' + errorMsg2.replace(/%s/, errorMsg);; addressbookUiMsg(msg, 'error'); setTimeout('addressbookUiToggleExpandInfo(myId, 1)', 1000); } }, onFailure: function(){ alert('Error: Could not delete entry.') } }); } function addressbookUiSave(myId) { var formname = 'FormAddrsAbook'; var addnew = false; if(myId == '1:0') { formname = 'FormAddNew'; addnew = true; } new Ajax.Request('".$base_uri."plugins/addressbook_ui_enhancements/addressbook_handler.php?pabaction=save&pabobject=' + encodeURIComponent(myId), { method:'post', parameters: $(formname).serialize(true), onSuccess: function(transport){ var responseraw = transport.responseText || 'no response text'; var responseArray=responseraw.split('||'); if(responseArray[0] != null) { var response = responseArray[0]; } if(responseArray[1] != null) { var infoText = responseArray[1]; } if(responseArray.length == 3 && responseArray[2] != null) { var errorMsg = responseArray[2]; } if(response == ".ABOOK_UI_SAVED_SUCCESSFULLY.") { var successMsg = '\"\" '+ '". _("Entry for %s has been Saved Successfully.") ."'; var msg = successMsg.replace(/%s/, infoText); addressbookUiMsg(msg, 'info'); setTimeout('addressbookUiToggleExpandInfo(\'' + myId + '\', 1)', 1000); } if(response == ".ABOOK_UI_SAVED_SUCCESSFULLY_UPDATE_NEEDED.") { if(addnew) { // Force a refresh of the page. document.location = 'addressbook.php?saved=true'; exit; } var successMsg = '\"\" ' + '". _("Entry for %s has been Saved Successfully.") ."
". _("Click on "Refresh Addressbook" link to update the contacts list.") ."'; var msg = successMsg.replace(/%s/, infoText); addressbookUiMsg(msg, 'info'); $('abook_message_refresh').style.display = 'block'; setTimeout('addressbookUiToggleExpandInfo(\'' + myId + '\', 1)', 1000); } if(response == ".ABOOK_UI_ERROR_DURING_SAVE.") { var errorMsg1 = '". _("Error while saving entry for %s.") ."'; if(addnew) { errorMsg1 = '". _("Error while adding entry.") ."'; } else { errorMsg1 = errorMsg1.replace(/%s/, infoText); } var errorMsg2 = '". _("Error message: %s") ."'; var msg = errorMsg1 + '
' + errorMsg2.replace(/%s/, errorMsg);; addressbookUiMsg(msg, 'error'); setTimeout('addressbookUiToggleExpandInfo(myId, 1)', 1000); } }, onFailure: function(){ alert('Error: Could not save entry.') } }); } /** * Display an error or success message in a box */ function addressbookUiMsg(msg, type) { var isMSIE = /*@cc_on!@*/false; if(isMSIE) { alert(msg.replace(/(<([^>]+)>)/ig,\"\").replace(/"/ig,\"\")); } else { if(type == 'error') { msgStyle = {color:'red', font: 'bold', display:'block'}; } else { msgStyle = {color:'green', font: 'bold', display:'block'}; } $('abook_message_box').update(msg).setStyle(msgStyle); setTimeout('new Effect.Fade(\\'abook_message_box\\')', 6000); } return true; } function addressbookUiDisplayProfileMsg(myId, html) { $('profile_msgs_' + myId).innerHtml = 'lala!!!'; } function addressbookUiJsError() { //console.log('Error during operation on object'); } function addressbookUiEditFocus(id) { document.getElementById(id).className = 'abook_form_element_active'; } function addressbookUiEditBlur(id) { document.getElementById(id).className = 'abook_form_element'; } function addNewContactStart() { $('abook_add_new_start').disabled = true; addressbookUiAddNew(); } "; textdomain ('squirrelmail'); return $out; }