emailui.js
来自「SugarCRM5.1 开源PHP客户关系管理系统」· JavaScript 代码 · 共 2,103 行 · 第 1/5 页
JS
2,103 行
this.grid.getDataSource().baseParams['emailUIAction'] = 'getAddressSearchResults'; SUGAR.email2.addressBook.grid.toggleSelectAll(false); this.grid.getDataSource().load({params: {start:0, limit: 25}}); //SUGAR.email2.addressBook.addressBookDataModel = this.grid.getDataSource(); }, getAddressBookPanel : function() { grid = SUGAR.email2.addressBook.grid; grid.reconfigure(SUGAR.email2.addressBook.addressBookDataModel, grid.getColumnModel()); document.getElementById('addressBookGridFooterDiv').style.display = ""; }, /** * Opens modal select window to add contacts to addressbook */ selectContactsDialogue : function(destId) { if (!SUGAR.email2.addressBook.grid) { AddressSearchGridInit(); } if(!this.contactsDialogue) { this.contactsDialogue = new Ext.LayoutDialog("contactsDialogue", { iframe : true, modal : true, width : 800, height : 450, shadow : true, minWidth : 300, minHeight : 300, north: { alwaysShowTabs : false, autoScroll : false, closeOnTab : false, tabPosition: "top", initialSize: 80 }, center: { autoScroll : true, closeOnTab : false, alwaysShowTabs : false } }); //this.contactsDialogue.getLayout().addRegion('north', {alwaysShowTabs : true, minTabWidth : 200}); contactsDialogueHTMLContentpanel = new Ext.ContentPanel('contactsDialogueHTML', {title : app_strings.LBL_EMAIL_ADDRESS_BOOK_TITLE}); this.contactsDialogue.getLayout().add('north', contactsDialogueHTMLContentpanel); this.contactsDialogue.getLayout().add('center', new Ext.GridPanel(SUGAR.email2.addressBook.grid)); //this.contactsDialogue.getLayout().add('center', new Ext.GridPanel(SUGAR.email2.addressBook.grid)) this.contactsDialogue.setTitle(app_strings.LBL_EMAIL_ADDRESS_BOOK_SELECT_TITLE); this.contactsDialogue.addButton(app_strings.LBL_EMAIL_ADDRESS_BOOK_ADD, this.addMultipleContacts); this.contactsDialogue.addButton(app_strings.LBL_EMAIL_CLOSE, function(){ SUGAR.email2.addressBook.contactsDialogue.hide(); }); var gridFoot = this.grid.getView().getFooterPanel(true); // add a paging toolbar to the grid's footer var paging = new Ext.PagingToolbar('addressBookGridFooterDiv', SUGAR.email2.addressBook.addressBookDataModel, { pageSize : 25, displayInfo : true, displayMsg : app_strings.LBL_EMAIL_DISPLAY_MSG, emptyMsg : app_strings.LBL_EMAIL_EMPTY_MSG, beforePageText: app_strings.LBL_EMAIL_PAGE_BEFORE, afterPageText : app_strings.LBL_EMAIL_PAGE_AFTER, firstText : app_strings.LBL_EMAIL_TEXT_FIRST, prevText : app_strings.LBL_EMAIL_TEXT_PREV, nextText : app_strings.LBL_EMAIL_TEXT_NEXT, lastText : app_strings.LBL_EMAIL_TEXT_LAST, refreshText : app_strings.LBL_EMAIL_TEXT_REFRESH }); gridFoot.dom.appendChild(document.getElementById('addressBookGridFooterDiv')); document.getElementById('addressBookGridFooterDiv').style.display = ""; SUGAR.email2.addressBook.addressBookPaging = paging; this.contactsDialogue.getLayout().showPanel('contactsDialogueHTML'); this.contactsDialogue.resizeTo(800, 450); } if (destId) { this.contactsDialogue.buttons[0].handler = this.insertContactToField; this.contactsDialogue.target = destId; } else { this.contactsDialogue.buttons[0].handler = this.addMultipleContacts; } //this.contactsDialogue.layout.regions.center.activePanel.setContent(this.getPeopleListView()); this.contactsDialogue.show('selectContacts'); }, addMultipleContacts : function() { var rows = SUGAR.email2.addressBook.grid.getSelections(); var contacts = []; for (var i = 0; i < rows.length; i++) { var data = rows[i].data; contacts.push({id : data.bean_id, module : data.bean_module}); } var contactData = JSON.stringifyNoSecurity(contacts); SUGAR.email2.addressBook.grid.toggleSelectAll(false); AjaxObject.startRequest(callbackGetUserContacts, urlStandard + "&emailUIAction=addContactsMultiple&contactData=" + contactData); }, insertContactToField : function() { var contactsDialogue = SUGAR.email2.addressBook.contactsDialogue; var target = document.getElementById(contactsDialogue.target); var contacts = SUGAR.email2.addressBook.grid.getSelections(); for (var i=0; i < contacts.length; i++) { var data = contacts[i].data; target.value = SUGAR.email2.addressBook.smartAddEmailAddressToComposeField(target.value, data.name + ' <' + data.email + '>'); } SUGAR.email2.addressBook.grid.toggleSelectAll(false); }, /** * adds an email address to a string, but first checks if it exists * @param string concat The string we are appending email addresses to * @param string addr Email address to add * @return string */ smartAddEmailAddressToComposeField : function(concat, addr) { var re = new RegExp(addr); if(!concat.match(re)) { if(concat != "") { concat += "; " + addr; } else { concat = addr; } } return concat; }};//// END ADDRESS BOOK////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// AUTOCOMPLETE/** * Auto-complete object */SUGAR.email2.autoComplete = { config : { delimChar : [";", ","], useShadow : false, useIFrame : false, typeAhead : true, prehighlightClassName : "yui-ac-prehighlight", queryDelay : 0 }, instances : new Array(), /** * Parses an addressBook entry looking for primary address. If not found, it will return the last found address. * @param object Contact from AddressBook * @return string */ getPrimaryAddress : function(contact) { var address = app_strings.LBL_EMAIL_ADDRESS_BOOK_NOT_FOUND; for(var eIndex in contact.email) { address = contact.email[eIndex].email_address; if(contact.email[eIndex].primary_address == 1) { return contact.email[eIndex].email_address; } } return address; }, /** * initializes autocomplete widgets for a given compose view * @param int idx */ init : function(idx) { var ds = new YAHOO.widget.DS_JSArray(this.returnDataSource(SUGAR.email2.addressBook._contactCache), { "queryMatchContains" : false, "queryMatchSubset" : true }); this.instances[idx] = { to : null, cc : null, bcc : null }; // instantiate the autoComplete widgets this.instances[idx]['to'] = new YAHOO.widget.AutoComplete('addressTo'+idx, "addressToAC"+idx, ds, this.config); this.instances[idx]['cc'] = new YAHOO.widget.AutoComplete('addressCC'+idx, "addressCcAC"+idx, ds, this.config); this.instances[idx]['bcc'] = new YAHOO.widget.AutoComplete('addressBCC'+idx, "addressBccAC"+idx, ds, this.config); // enable hiding of interfering textareas this.instances[idx]['to'].containerExpandEvent.subscribe(SUGAR.email2.autoComplete.toggleTextareaHide); this.instances[idx]['cc'].containerExpandEvent.subscribe(SUGAR.email2.autoComplete.toggleTextareaHide); this.instances[idx]['bcc'].containerExpandEvent.subscribe(SUGAR.email2.autoComplete.toggleTextareaHide); // enable reshowing of hidden textareas this.instances[idx]['to'].containerCollapseEvent.subscribe(SUGAR.email2.autoComplete.toggleTextareaShow); this.instances[idx]['cc'].containerCollapseEvent.subscribe(SUGAR.email2.autoComplete.toggleTextareaShow); this.instances[idx]['bcc'].containerCollapseEvent.subscribe(SUGAR.email2.autoComplete.toggleTextareaShow); // enable refreshes of contact lists this.instances[idx]['to'].textboxFocusEvent.subscribe(SUGAR.email2.autoComplete.refreshDataSource); this.instances[idx]['cc'].textboxFocusEvent.subscribe(SUGAR.email2.autoComplete.refreshDataSource); this.instances[idx]['bcc'].textboxFocusEvent.subscribe(SUGAR.email2.autoComplete.refreshDataSource); }, refreshDataSource : function(sType, aArgs) { var textBoxId = aArgs[0]._oTextbox.id; // "addressTo0" var idx; var refresh = SUGAR.email2.autoComplete.returnDataSource(SUGAR.email2.addressBook._contactCache); if(textBoxId.indexOf("addressTo") > -1 || textBoxId.indexOf("addressCC") > -1) { idx = textBoxId.substr(9); } else { idx = textBoxId.substr(10); } SUGAR.email2.autoComplete.instances[idx]['to'].dataSource.data = refresh; SUGAR.email2.autoComplete.instances[idx]['cc'].dataSource.data = refresh; SUGAR.email2.autoComplete.instances[idx]['bcc'].dataSource.data = refresh; }, /** * Parses AddressBook entries to return an appropriate DataSource array for YUI.autoComplete */ returnDataSource : function(contacts) { var ret = new Array(); for(var id in contacts) { if (contacts[id].name) { var primary = this.getPrimaryAddress(contacts[id]); ret[ret.length] = contacts[id].name.replace(/<[\/]*b>/gi, '') + " <" + primary + ">"; //ret[ret.length] = contacts[id].name + " <" + primary + ">"; for(var emailIndex in contacts[id].email) { ret[ret.length] = contacts[id].email[emailIndex].email_address; } } } return ret; }, /** * Hides address textareas to prevent autocomplete dropdown from being obscured */ toggleTextareaHide : function(sType, aArgs) { var textBoxId = aArgs[0]._oTextbox.id; // "addressTo0" var type = ""; var idx = -1; if(textBoxId.indexOf("addressTo") > -1) { type = "to"; } else if(textBoxId.indexOf("addressCC") > -1) { type = "cc"; } idx = textBoxId.substr(9); // follow through if not BCC if(type != "") { var cc = document.getElementById("addressCC" + idx);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?