emailui.js
来自「SugarCRM5.1 开源PHP客户关系管理系统」· JavaScript 代码 · 共 2,103 行 · 第 1/5 页
JS
2,103 行
tmp = Ext.DomHelper.append('resultRow' + idx, { tag : 'td', width : '1%', nowrap : "NOWRAP", style : "text-align:right;", cls : '' }, true); var buttonId = tmp.dom.id; // form tmp = Ext.DomHelper.append(buttonId, { tag : 'form', id : 'addForm' + idx, method : 'get', action : '#' }, true); var addFormId = tmp.dom.id; Ext.DomHelper.append(addFormId, { tag : 'input', type : 'hidden', name : 'bean_id', value : obj.id }); Ext.DomHelper.append(addFormId, { tag : 'input', type : 'hidden', name : 'bean_module', value : obj.module }); Ext.DomHelper.append(addFormId, { tag : 'input', type : 'button', cls : 'button', value : app_strings.LBL_EMAIL_ADDRESS_BOOK_ADD, onclick : "SUGAR.email2.addressBook.addContact('addForm" + idx + "');" }); }, editContact : function() { SUGAR.email2.contextMenus.contactsContextMenu.hide(); var element = SUGAR.email2.contactView.getSelectedNodes()[0]; var elementId = ""; if (element.className.indexOf('address-contact') > -1) { elementId = element.id; } else if (element.className.indexOf('address-exp-contact') > -1) { elementId = element.id.substring(2); } if(elementId != "") { // verify that it is a Sugar Contact var contact = SUGAR.email2.addressBook._contactCache[elementId]; if(contact.module == 'Contacts') { // lazy load settings if(!SUGAR.email2.addressBook.editContactDialog) { SUGAR.email2.addressBook.editContactDialog = new Ext.LayoutDialog("editContact", { modal:true, width:600, height:400, shadow:true, minWidth:300, minHeight:300, center: { autoScroll:true, tabPosition: SUGAR.email2.userPrefs.emailSettings.tabPosition, closeOnTab: false, alwaysShowTabs: false } }); } // end lazy load AjaxObject.startRequest(AjaxObject.addressBook.callback.editContact, urlStandard + "&emailUIAction=editContact&id=" + elementId); } else { overlay(app_strings.LBL_EMAIL_ERROR_DESC, app_strings.LBL_EMAIL_ADDRESS_BOOK_ERR_NOT_CONTACT, 'alert'); } } else { alert(app_strings.LBL_EMAIL_MENU_MAKE_SELECTION); } }, /** * Filters contact entries based on user input */ filter : function(inputEl) { var ret = new Object(); var re = new RegExp(inputEl.value, "gi"); for(var i in this._contactCache) { if(this._contactCache[i].name.match(re)) { ret[i] = this._contactCache[i]; } } this.buildContactList(ret); }, fullForm : function(id, module) { document.location = "index.php?return_module=Emails&return_action=index&module=" + module + "&action=EditView&record=" + id; }, /** * returns a formatted email address from the addressBook cache */ getFormattedAddress : function(id) { var o = this._contactCache[id]; var primaryEmail = ''; for(var i=0; i<o.email.length; i++) { var currentEmail = o.email[i].email_address; if(o.email[i].primary_address == 1) { primaryEmail = o.email[i].email_address; } } var finalEmail = (primaryEmail == "") ? currentEmail : primaryEmail; var name = new String(o.name); var finalName = name.replace(/(<([^>]+)>)/ig, ""); var ret = finalName + " <" + finalEmail + ">"; return ret; }, /** * Generates the listView form that unites users, contacts, leads, and prospects * @return string HTML */ getPeopleListView : function() { var sf = document.getElementById('searchForm'); // lazy load searchform if(sf == null || typeof(sf) == 'undefined') { var tmp = null; // search form Ext.DomHelper.append("contactsDialogueHTML", { tag : 'form', id : 'searchForm', method : 'GET', action : "#" }); Ext.DomHelper.append("searchForm", { tag : 'table', id : 'searchTable', cellpadding : 0, cellspacing : 0, border : 0, width : "100%", cls : 'tabForm' }); Ext.DomHelper.append("searchTable", { tag : 'tr', id : 'peopleTableSearchRow' }); // first name Ext.DomHelper.append('peopleTableSearchRow', { tag : 'td', nowrap : "NOWRAP", id : "searchNameFirst", cls : 'dataLabel', html : app_strings.LBL_EMAIL_ADDRESS_BOOK_FIRST_NAME + ": " }); Ext.DomHelper.append("searchNameFirst", { tag : "input", type : 'text', name : 'first_name', id : 'input_searchNameFirst' }); // last name Ext.DomHelper.append('peopleTableSearchRow', { tag : 'td', nowrap : "NOWRAP", id : "searchNameLast", cls : 'dataLabel', html : app_strings.LBL_EMAIL_ADDRESS_BOOK_LAST_NAME + ": " }); Ext.DomHelper.append("searchNameLast", { tag : "input", type : 'text', name : 'last_name', id : 'input_searchNameLast' }); // email Ext.DomHelper.append('peopleTableSearchRow', { tag : 'td', nowrap : "NOWRAP", id : "searchEmail", cls : 'dataLabel', html : app_strings.LBL_EMAIL_ADDRESS_BOOK_EMAIL_ADDR + ": " }); Ext.DomHelper.append("searchEmail", { tag : "input", type : 'text', name : 'email_address', id : 'input_searchEmail' }); // search button Ext.DomHelper.append('peopleTableSearchRow', { tag : 'td', nowrap : "NOWRAP", id : "searchSubmit", cls : 'dataLabel' }); Ext.DomHelper.append("searchSubmit", { tag : "input", cls : 'button', type : 'button', onclick : "SUGAR.email2.addressBook.searchContacts();", value : " " + app_strings.LBL_EMAIL_ADDRESS_BOOK_SEARCH + " ", id : 'input_searchSubmit' }); Ext.DomHelper.append("contactsDialogueHTML", { tag : "br" }); } return document.getElementById('contactsDialogueHTML').innerHTML; }, /** * Parses through Contact object and returns the primary email address * @param object * @return string */ getPrimaryEmailFromContact : function(contact) { var emails = contact.email; for(var i=0; i<emails.length; i++) { if(emails[i].primary_address == '1') { return emails[i].email_address; } } return ''; }, /** * Async call to get user's contacts & groups */ getUserContacts : function() { if(SUGAR.email2.addressBook._contactCache.length < 1) { AjaxObject.startRequest(callbackGetUserContacts, urlStandard + "&emailUIAction=getUserContacts"); } }, removeContact : function() { SUGAR.email2.contextMenus.contactsContextMenu.hide(); if(confirm(app_strings.LBL_EMAIL_CONFIRM_DELETE)) { var str = ''; var selectedItems = SUGAR.email2.contactView.getSelectedNodes(); removeHiddenNodes(selectedItems); for(var i=0; i < selectedItems.length; i++) { var node = selectedItems[i]; if (node.className.indexOf('address-contact') > -1) { if(str != '') { str += "::"; } str += node.id; } else if (node.className.indexOf('address-exp-contact') > -1) { if(str != '') { str += "::"; } str += node.id.substring(2); } } if(str != "") { AjaxObject.startRequest(callbackGetUserContacts, urlStandard + '&emailUIAction=removeContact&ids=' + str); } } }, /** * commits changes to a contact record from Email 2.0 * @return bool false on failure */ saveContact : function() { var form = document.getElementById('editContactForm'); var errors = new Array(); var emailElements = new Array(); if(form.contact_last_name.value == "") { errors.push(app_strings.LBL_EMAIL_ERROR_CONTACT_NAME) } if(errors.length > 0) { var out = new String(); out = app_strings.LBL_EMAIL_ERROR_DESC; for(i=0; i<errors.length; i++) { if(out != "") { out += "\n"; } out += errors[i]; } alert(out); return false; } else { var send = new Object(); send.invalid = new Array(); send.optOut = new Array(); send.primary = ''; // get values and save for(var i=0; i<form.elements.length; i++) { var el = form.elements[i]; if(el.type == 'text' || el.type == 'hidden') { send[el.name] = el.value; // get id if is address field if(el.name.match(/emailAddress[0-9]/) && el.value != "") { emailElements.push(el.name); } } } // handle multi-value (PHP array) values for(var j=0; j<emailElements.length; j++) { var indexNumber = emailElements[j].substr(12); var optOut = document.getElementById("emailAddressOptOutFlag" + indexNumber); var invalid = document.getElementById("emailAddressInvalidFlag" + indexNumber); var primary = document.getElementById("emailAddressPrimaryFlag" + indexNumber); if(optOut && optOut.checked) { send.optOut.push(optOut.value); } if(invalid && invalid.checked) { send.invalid.push(invalid.value); } if(primary && primary.checked) { send.primary = primary.value; } } var args = JSON.stringifyNoSecurity(send); AjaxObject.startRequest(callbackGetUserContacts, urlStandard + "&emailUIAction=saveContactEdit&args=" + args); } }, /** * Sets up async call to query for matching contacts, users, etc. */ searchContacts : function() { var fn = document.getElementById('input_searchNameFirst').value; var ln = document.getElementById('input_searchNameLast').value; var em = document.getElementById('input_searchEmail').value; this.grid.getDataSource().baseParams['first_name'] = fn; this.grid.getDataSource().baseParams['last_name'] = ln; this.grid.getDataSource().baseParams['email_address'] = em;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?