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 + -
显示快捷键?