%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.136.23.239 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/main.mail.form/templates/.default/ |
Upload File : |
;(function() { if (window.BXMainMailForm) return; var BXMainMailForm = function(id, fields, options) { if (BXMainMailForm.__forms[id]) return BXMainMailForm.__forms[id]; this.id = id; this.fields = fields; this.options = options; BXMainMailForm.__forms[this.id] = this; }; BXMainMailForm.__forms = {}; BXMainMailForm.getForm = function (id) { return BXMainMailForm.__forms[id]; }; BXMainMailForm.prototype.getField = function (name) { for (var i = this.fields.length; i-- > 0;) { if (this.fields[i].params.name == name) return this.fields[i]; } return false; }; BXMainMailForm.prototype.onSubmit = function (event) { var form = this; var footer = BX.findChildByClassName(this.formWrapper, 'main-mail-form-footer', false) || this.footerNode; var button = BX.findChildByClassName(footer, 'main-mail-form-submit-button', true); if (button.disabled) return BX.PreventDefault(); this.editor.OnSubmit(); var footerClone = footer.cloneNode(true); Array.prototype.forEach.call( footerClone.querySelectorAll('[id]'), function (item) { item.removeAttribute('id'); } ); BX(this.formId+'_dummy_footer').appendChild(footerClone); event = event || window.event; BX.onCustomEvent(this, 'MailForm:submit', [this, event]); if (!event.defaultPrevented && event.returnValue !== false) { this.hideError(); BX.addClass(button, 'ui-btn-wait'); button.disabled = true; button.offsetHeight; // hack to show loader for (var i = 0, copyChecked = -1; i < this.fields.length; i++) { if (this.fields[i].params.copy) { copyChecked = Math.max(copyChecked, BX(this.fields[i].fieldId+'_copy').checked); } } if (copyChecked >= 0) { BX.userOptions.save('main.mail.form', 'copy_to_sender', null, copyChecked); BX.userOptions.send(); } if (this.options.submitAjax) { BX.ajax.submitAjax(this.htmlForm, { url: this.htmlForm.getAttribute('action'), method: 'POST', dataType: 'json', onsuccess: function(data) { button.disabled = false; BX.removeClass(button, 'ui-btn-wait'); BX.onCustomEvent(form, 'MailForm:submit:ajaxSuccess', [form, data]); }, onfailure: function(data) { button.disabled = false; BX.removeClass(button, 'ui-btn-wait'); BX.onCustomEvent(form, 'MailForm:submit:ajaxFailure', [form, data]); } }); return BX.PreventDefault(event); } } }; BXMainMailForm.prototype.showError = function (html) { var errorNode = BX.findChildByClassName(this.formWrapper, 'main-mail-form-error', true); BX.adjust(errorNode, { html: html, style: { display: 'block' } }); this.initScrollable(); if (this.__scrollable) { var pos0 = BX.pos(this.__scrollable); var pos1 = BX.pos(this.formWrapper); var pos2 = BX.pos(errorNode); if (pos0.top > pos2.top-10-this.__scrollable.scrollTop) this.__scrollable.scrollTop = pos2.top-10; else if (pos0.bottom < pos1.bottom-10-this.__scrollable.scrollTop) this.__scrollable.scrollTop = pos1.bottom-10-pos0.bottom; } }; BXMainMailForm.prototype.hideError = function () { var errorNode = BX.findChildByClassName(this.formWrapper, 'main-mail-form-error', true); BX.adjust(errorNode, { style: { display: 'none' } }); }; BXMainMailForm.prototype.init = function() { var form = this; if (this.__inited) return; this.formId = 'main_mail_form_'+this.id; this.formWrapper = BX(this.formId); this.htmlForm = BX.findParent(this.formWrapper, {tag: 'form'}); this.postForm = LHEPostForm.getHandler(this.formId+'_editor'); this.editor = BXHtmlEditor.Get(this.formId+'_editor'); this.editor.config.autoLink = false; this.editorInited = false; this.timestamp = (new Date).getTime(); // id names for smart nodes this.quoteNodeId = this.formId + '_quote_' + this.timestamp.toString(16); this.signatureNodeId = this.formId + '_signature_' + this.timestamp.toString(16); // insert signature on change 'from' field BX.addCustomEvent(this, 'MailForm::from::change', BX.proxy(function(field, signature) { if(!BX.type.isString(signature)) { signature = ''; var currentSender; var input = BX(field.fieldId+'_value'); if(input) { currentSender = input.value; } if(currentSender && field.params && BX.type.isArray(field.params.mailboxes) && BX.type.isNotEmptyObject(field.params.signatures)) { for(var i in field.params.mailboxes) { if(field.params.mailboxes.hasOwnProperty(i)) { if(field.params.mailboxes[i].formated === currentSender) { if(BX.type.isNotEmptyString(field.params.signatures[field.params.mailboxes[i].formated])) { signature = field.params.signatures[field.params.mailboxes[i].formated]; } else if(BX.type.isNotEmptyString(field.params.signatures[field.params.mailboxes[i].email])) { signature = field.params.signatures[field.params.mailboxes[i].email]; } else if(BX.type.isNotEmptyString(field.params.signatures[''])) { signature = field.params.signatures['']; } break; } } } } } this.insertSignature(signature); }, this)); this.initFields(); this.initFooter(); BX.bind(this.htmlForm, 'submit', this.onSubmit.bind(this)); this.__inited = true; BX.onCustomEvent(BXMainMailForm, 'MailForm:init:'+this.id, [this]); } BXMainMailForm.prototype.initScrollable = function() { if (!this.__scrollable) { if (document.scrollingElement) this.__scrollable = document.scrollingElement; } if (!this.__scrollable) { if (document.documentElement.scrollTop > 0 || document.documentElement.scrollLeft > 0) this.__scrollable = document.documentElement; else if (document.body.scrollTop > 0 || document.body.scrollLeft > 0) this.__scrollable = document.body; } if (!this.__scrollable) { window.scrollBy(1, 1); if (document.documentElement.scrollTop > 0 || document.documentElement.scrollLeft > 0) this.__scrollable = document.documentElement; else if (document.body.scrollTop > 0 || document.body.scrollLeft > 0) this.__scrollable = document.body; window.scrollBy(-1, -1); } } BXMainMailForm.prototype.initFields = function() { for (var i = 0, fieldId; i < this.fields.length; i++) { this.fields[i] = new BXMainMailFormField(this, this.fields[i]); fieldId = this.fields[i].fieldId; this.fields[fieldId] = this.fields[i]; } // hidden fields switches var fieldsFooter = BX(this.formId+'_fields_footer'); var fieldsExtFooter = BX(this.formId+'_fields_ext_footer'); var hiddenFields = [] .concat(BX.findChildrenByClassName(fieldsFooter, 'main-mail-form-field-button', true) || []) .concat(BX.findChildrenByClassName(fieldsExtFooter, 'main-mail-form-field-button', true) || []); for (var i = 0, fieldId; i < hiddenFields.length; i++) { fieldId = hiddenFields[i].getAttribute('data-target'); if (typeof this.fields[fieldId] != 'undefined') { this.fields[fieldId].__switch = hiddenFields[i]; BX.bind(hiddenFields[i], 'click', this.fields[fieldId].unfold.bind(this.fields[fieldId])); } } } BXMainMailForm.prototype.initFooter = function() { var form = this; var footerWrapper = BX.findChildByClassName(this.formWrapper, 'main-mail-form-footer-wrapper', true); var footer = BX.findChildByClassName(footerWrapper, 'main-mail-form-footer', false); this.footerNode = footer; var footerButtons = BX.findChildrenByClassName(footer, 'main-mail-form-footer-button', true); for (var i in footerButtons) { (function(button) { BX.bind(button, 'click', function () { BX.onCustomEvent(form, 'MailForm:footer:buttonClick', [form, button]); if (BX.hasClass(button, 'main-mail-form-submit-button')) BX.submit(form.htmlForm); }); })(footerButtons[i]); } var resetFooter = function () { if (BX.hasClass(footer, 'main-mail-form-footer-fixed')) { BX.removeClass(footer, 'main-mail-form-footer-fixed-hidden'); BX.removeClass(footer, 'main-mail-form-footer-fixed'); footer.style.left = ''; footer.style.width = ''; footerWrapper.style.height = ''; footerWrapper.appendChild(footer); } }; var positionFooter = function() { form.initScrollable(); if (form.formWrapper.offsetHeight > 0 && form.__scrollable) { var pos0 = BX.pos(form.__scrollable); var pos1 = BX.pos(form.formWrapper); if (pos0.bottom < pos1.bottom-10-form.__scrollable.scrollTop) { footer.style.left = (pos1.left-pos0.left-form.__scrollable.scrollLeft)+'px'; footer.style.width = form.formWrapper.offsetWidth+'px'; if (!BX.hasClass(footer, 'main-mail-form-footer-fixed')) { if (pos0.bottom < BX.pos(footerWrapper).top-form.__scrollable.scrollTop) BX.addClass(footer, 'main-mail-form-footer-fixed-hidden'); footerWrapper.style.height = footerWrapper.offsetHeight+'px'; BX.addClass(footer, 'main-mail-form-footer-fixed'); document.body.appendChild(footer); } var editorWrapper = BX.findChildByClassName(form.formWrapper, 'main-mail-form-editor-wrapper', true); if (pos0.bottom < BX.pos(editorWrapper).top+footer.offsetHeight-form.__scrollable.scrollTop) BX.addClass(footer, 'main-mail-form-footer-fixed-hidden'); else BX.removeClass(footer, 'main-mail-form-footer-fixed-hidden'); return; } } resetFooter(); }; var scrollableObserver = new MutationObserver(function () { form.initScrollable(); if (form.__scrollable) { var state = [ form.__scrollable.scrollHeight, form.__scrollable.scrollTop ].join(':'); if (form.__scrollable.__lastState != state) { form.__scrollable.__lastState = state; positionFooter(); } } }); var startMonitoring = function () { setTimeout(function () { if (!form.__footerMonitoring) { form.__footerMonitoring = true; scrollableObserver.observe( document.body, { attributes: true, childList: true, subtree: true } ); BX.bind(window, 'resize', positionFooter); BX.bind(window, 'scroll', positionFooter); BX.addCustomEvent(window, 'AutoResizeFinished', positionFooter); // OnEditorResizedAfter positionFooter(); } }, 400); }; var stopMonitoring = function () { form.__footerMonitoring = false; scrollableObserver.disconnect(); BX.unbind(window, 'resize', positionFooter); BX.unbind(window, 'scroll', positionFooter); BX.removeCustomEvent(window, 'AutoResizeFinished', positionFooter); // OnEditorResizedAfter resetFooter(); }; BX.addCustomEvent(this, 'MailForm:show', startMonitoring); BX.addCustomEvent(this, 'MailForm:hide', stopMonitoring); if (this.formWrapper.offsetHeight > 0) startMonitoring(); } BXMainMailForm.prototype.insertSignature = function(signature) { if(this.editorInited) { this.editor.synchro.Sync(); var signatureNode = this.editor.GetIframeDoc().getElementById(this.signatureNodeId); if(!BX.type.isNotEmptyString(signature)) { if(signatureNode) { BX.remove(signatureNode); } return; } var signatureHtml = '--<br />' + signature; if(signatureNode) { signatureNode.innerHTML = signatureHtml; } else { signatureNode = BX.create('div', { attrs: { id: this.signatureNodeId }, html: signatureHtml }); var quoteNode = this.editor.GetIframeDoc().getElementById(this.quoteNodeId); if(quoteNode) { quoteNode.parentNode.insertBefore(signatureNode, quoteNode); } else { BX.append(signatureNode, this.editor.GetIframeDoc().body); } signatureNode.parentNode.insertBefore(document.createElement('BR'), signatureNode); } this.editor.synchro.FullSyncFromIframe(); } else { // if editor is not inited yet - do it later BX.addCustomEvent(this, 'MailForm::editor::init', BX.proxy(function() { this.insertSignature(signature); }, this)); } }; var BXMainMailFormField = function(form, params) { this.form = form; this.params = params; this.fieldId = this.form.formId+'_'+this.params.id; this.init(); }; BXMainMailFormField.prototype.init = function() { this.params.__row = BX(this.fieldId); if (BXMainMailFormField.__types[this.params.type] && BXMainMailFormField.__types[this.params.type].init) BXMainMailFormField.__types[this.params.type].init(this); if (this.params.menu) { var field = this; var menuExtButton = BX.findChildByClassName(this.params.__row, 'main-mail-form-field-value-menu-ext-button', true); BX.addCustomEvent(this.form, 'MailForm::editor:click', function () { var menu = BX.PopupMenu.getMenuById(field.fieldId+'-menu-ext'); if (menu) menu.close(); }); BX.addCustomEvent('onSubMenuShow', function () { var menuWindow = this.menuWindow; while (menuWindow.parentMenuWindow) menuWindow = menuWindow.parentMenuWindow; if (field.fieldId+'-menu-ext' == menuWindow.id) BX.addClass(this.subMenuWindow.popupWindow.popupContainer, 'main-mail-form-field-value-menu-ext-content'); }); BX.bind(menuExtButton, 'click', function () { BX.onCustomEvent(field.form, 'MailForm:field:setMenuExt', [field.form, field]); BX.PopupMenu.destroy(field.fieldId+'-menu-ext'); BX.PopupMenu.show( field.fieldId+'-menu-ext', this, field.__menuExt, { className: 'main-mail-form-field-value-menu-ext-content', offsetTop: -8, offsetLeft: 13, angle: true, closeByEsc: true } ); }); } } BXMainMailFormField.prototype.setMenuExt = function(items) { this.__menuExt = items; } BXMainMailFormField.prototype.insert = function(text) { if (BXMainMailFormField.__types[this.params.type] && BXMainMailFormField.__types[this.params.type].insert) BXMainMailFormField.__types[this.params.type].insert(this, text); } BXMainMailFormField.prototype.setValue = function(value, options) { if (BXMainMailFormField.__types[this.params.type] && BXMainMailFormField.__types[this.params.type].setValue) BXMainMailFormField.__types[this.params.type].setValue(this, value, options); } BXMainMailFormField.prototype.show = function() { // @TODO: enable form fields this.params.hidden = false; BX.addClass(this.fieldId, 'main-mail-form-drop-animation'); BX(this.fieldId).style.display = this.params.folded ? 'none' : ''; this.__switch.style.display = this.params.folded ? '' : 'none'; } BXMainMailFormField.prototype.hide = function() { // @TODO: disable form fields this.params.hidden = true; BX(this.fieldId).style.display = 'none'; this.__switch.style.display = 'none'; BX.removeClass(this.fieldId, 'main-mail-form-drop-animation'); } BXMainMailFormField.prototype.fold = function() { this.params.folded = true; if (!this.params.hidden) this.__switch.style.display = ''; BX(this.fieldId).style.display = 'none'; BX.removeClass(this.fieldId, 'main-mail-form-drop-animation'); } BXMainMailFormField.prototype.unfold = function() { this.params.folded = false; if (!this.params.hidden) { BX.addClass(this.fieldId, 'main-mail-form-drop-animation'); BX(this.fieldId).style.display = ''; } this.__switch.style.display = 'none'; } BXMainMailFormField.__types = { 'list': {}, 'text': {}, 'from': {}, 'rcpt': {}, 'editor': {}, 'files': {} }; BXMainMailFormField.__types['list'].init = function(field) { BX.addCustomEvent(field.form, 'MailForm::editor:click', function () { var menu = BX.PopupMenu.getMenuById(field.fieldId+'-menu'); if (menu) menu.close(); }); var selector = BX.findChildByClassName(field.params.__row, 'main-mail-form-field-value-menu', true); BX.bind(selector, 'click', function() { var input = BX(field.fieldId+'_value'); var apply = function(value, text) { input.value = value; BX.adjust(selector, { html: text }); }; var handler = function(event, item) { apply(item.options.value, item.text); item.menuWindow.close(); }; var items = []; if (!field.params.required) { items.push({ text: BX.util.htmlspecialchars(field.params.placeholder), title: field.params.placeholder, value: '', onclick: handler }); items.push({ delimiter: true }); } for (var i in field.params.list) { items.push({ text: BX.util.htmlspecialchars(field.params.list[i]), title: field.params.list[i], value: i, onclick: handler }); } BX.PopupMenu.show( field.fieldId+'-menu', selector, items, { className: 'main-mail-form-field-value-menu-content', offsetLeft: 40, angle: true, closeByEsc: true } ); }); }; BXMainMailFormField.__types['from'].init = function(field) { BX.addCustomEvent(field.form, 'MailForm::editor:click', function () { var menu = BX.PopupMenu.getMenuById(field.fieldId+'-menu'); if (menu) menu.close(); }); BX.onCustomEvent(field.form, 'MailForm::from::change', [field]); var selector = BX.findChildByClassName(field.params.__row, 'main-mail-form-field-value-menu', true); BX.bind(selector, 'click', function() { var input = BX(field.fieldId + '_value'); BXMainMailConfirm.showList( field.fieldId, selector, { required: field.params.required, placeholder: field.params.placeholder, selected: input.value, callback: function (value, text) { input.value = value; BX.adjust(selector, {html: BX.util.strip_tags(text)}); BX.onCustomEvent(field.form, 'MailForm::from::change', [field]); } } ); }); }; BXMainMailFormField.__types['rcpt'].init = function(field) { var more = BX.findChildByClassName(field.params.__row, 'main-mail-form-field-rcpt-item-more', true); var wrapper = BX.findChildByClassName(field.params.__row, 'main-mail-form-field-value-wrapper', true); var link = BX.findChildByClassName(field.params.__row, 'main-mail-form-field-rcpt-add-link', true); var input = BX(field.fieldId+'_fvalue'); field.selector = field.fieldId+'-selector'; var select = function(item, type, search, undeleted, name, state) { // BX.hide(BX.findChildByClassName(createForm, 'crm-task-list-mail-reply-error', true)); if (!field.params.multiple) { var selected = BX.SocNetLogDestination.getSelected(field.selector); for (var i in selected) { if (i != item.id || selected[i] != type) BX.SocNetLogDestination.deleteItem(i, selected[i], field.selector); } } var itemWrapper = document.createElement('SPAN'); itemWrapper.setAttribute('data-id', item.id); BX.addClass(itemWrapper, 'main-mail-form-field-rcpt-item'); wrapper.insertBefore(itemWrapper, more.parentNode); itemWrapper.appendChild(BX.create('INPUT', { 'props': { 'type': 'hidden', 'name': field.params.name+'[]', 'value': JSON.stringify(item) } })); item.showEmail = 'N'; if (field.params.email && item.email && item.email.length > 0 && item.email != item.name) { item = BX.clone(item); item.name = item.name+' <' + item.email + '>'; } BX.SocNetLogDestination.BXfpSelectCallback({ item: item, type: type, varName: 'dummy_'+field.params.name, bUndeleted: false, containerInput: itemWrapper, valueInput: input, formName: name, tagInputName: link, tagLink1: field.params.placeholder, tagLink2: field.params.placeholder }); if ('init' == state) { var limit = 9; var items = BX.findChildrenByClassName(wrapper, 'main-mail-form-field-rcpt-item', false); if (items.length > limit+1) { for (var i = limit; i < items.length; i++) items[i].style.display = 'none'; more.setAttribute('title', more.getAttribute('title').replace(/-?\d+/, items.length-limit)); more.parentNode.style.display = ''; } } }; var unselect = function(item, type, search, name) { var itemWrapper = BX.findChild(wrapper, {attribute: {'data-id': item.id}}, false); BX.SocNetLogDestination.BXfpUnSelectCallback.apply({ formName: name, inputContainerName: itemWrapper, inputName: input, tagInputName: link, tagLink1: field.params.placeholder, tagLink2: field.params.placeholder }, [item]); if (itemWrapper && itemWrapper.parentNode == wrapper) { if (!BX.findChildByClassName(itemWrapper, 'feed-add-post-destination')) wrapper.removeChild(itemWrapper); } var limit = 9; var visible = 0; var items = BX.findChildrenByClassName(wrapper, 'main-mail-form-field-rcpt-item', false); for (var i = 0; i < items.length; i++) { if (items[i].offsetHeight > 0) visible++; } if (visible < items.length && (visible < limit || items.length <= limit+1)) { for (var i = 0; i < items.length; i++) { if (items[i].offsetHeight > 0) continue; items[i].style.display = ''; visible++; if (visible >= Math.min(limit, items.length) && items.length > limit+1) break; } more.setAttribute('title', more.getAttribute('title').replace(/-?\d+/, items.length-limit)); if (visible >= items.length) more.parentNode.style.display = 'none'; } }; if (field.form.options.version < 2) { var selectorParams = { name: field.selector, searchInput: input, bindMainPopup: { node: wrapper, offsetTop: '5px', offsetLeft: '15px' }, bindSearchPopup : { node: wrapper, offsetTop: '5px', offsetLeft: '15px' }, callback: { select: select, unSelect: unselect, openDialog: BX.delegate(BX.SocNetLogDestination.BXfpOpenDialogCallback, { inputBoxName: input.parentNode, inputName: input, tagInputName: link }), closeDialog: function() { BX.onCustomEvent(field.form, 'MailForm:field:rcptSelectorClose', [field.form, field]); BX.SocNetLogDestination.BXfpCloseDialogCallback.apply({ inputBoxName: input.parentNode, inputName: input, tagInputName: link }); }, openSearch: BX.delegate(BX.SocNetLogDestination.BXfpOpenDialogCallback, { inputBoxName: input.parentNode, inputName: input, tagInputName: link }) }, items: {}, itemsLast: {}, itemsSelected: {}, destSort: {} }; if (field.params.selector) { for (var i in field.params.selector) selectorParams[i] = field.params.selector[i]; } BX.SocNetLogDestination.init(selectorParams); BX.bind(input, 'keydown', BX.delegate(BX.SocNetLogDestination.BXfpSearchBefore, { formName: field.selector, inputName: input })); BX.bind(input, 'keyup', BX.delegate(BX.SocNetLogDestination.BXfpSearch, { formName: field.selector, inputName: input, tagInputName: link })); BX.bind(input, 'paste', BX.defer(BX.SocNetLogDestination.BXfpSearch, { formName: field.selector, inputName: input, tagInputName: link, onPasteEvent: true })); BX.bind(input, 'blur', BX.delegate(BX.SocNetLogDestination.BXfpBlurInput, { inputBoxName: input.parentNode, tagInputName: link })); BX.bind(wrapper, 'click', function(e) { BX.SocNetLogDestination.openDialog(field.selector); BX.PreventDefault(e); }); } BX.bind(more, 'click', function(e) { var items = BX.findChildrenByClassName(wrapper, 'main-mail-form-field-rcpt-item', false); for (var i = 0; i < items.length; i++) items[i].style.display = ''; this.parentNode.style.display = 'none'; BX.PreventDefault(e); }); }; BXMainMailFormField.__types['editor'].init = function(field) { var postForm = field.form.postForm; var editor = field.form.editor; if (field.params.value === null || field.params.value === undefined) field.params.value = ''; field.quoteNode = document.createElement('DIV'); var quoteContentNode = document.createElement('DIV'); quoteContentNode.setAttribute('id', field.form.quoteNodeId); quoteContentNode.innerHTML = field.params.value; field.quoteNode.appendChild(quoteContentNode); field.quoteNode.__folded = field.form.options.foldQuote; //postForm.controllerInit('hide'); BX.onCustomEvent(postForm.eventNode, 'OnShowLHE', ['justShow']); BX.addClass(editor.dom.cont, 'main-mail-form-editor'); editor.dom.toolbarCont.style.opacity = 'inherit'; // close rctp selectors on focus on html-editor BX.addCustomEvent( editor, 'OnIframeClick', function() { if (field.form.options.version < 2) { BX.SocNetLogDestination.abortSearchRequest(); BX.SocNetLogDestination.closeSearch(); BX.SocNetLogDestination.closeDialog(); } BX.onCustomEvent(field.form, 'MailForm::editor:click', []); } ); // append original message quote var quoteButton = BX.findChildByClassName(field.form.htmlForm, 'main-mail-form-quote-button', true); var quoteHandler = function() { if (field.quoteNode.__folded) { field.quoteNode.__folded = false; field.setValue(editor.GetContent(), {quote: true, signature: false}); editor.Focus(false); BX.hide(quoteButton.parentNode.parentNode || quoteButton.parentNode) } }; BX.bind(quoteButton, 'click', quoteHandler); // append original message quote on switch from wysiwyg mode var modeHandler = function () { if (editor.GetViewMode() != 'wysiwyg') { BX.removeCustomEvent(editor, 'OnSetViewAfter', modeHandler); quoteHandler(); } }; BX.addCustomEvent(editor, 'OnSetViewAfter', modeHandler); // wysiwyg -> code inline-attachments parser if (postForm.parser) { postForm.parser.disk_file.regexp = /(bxacid):(n?\d+)/ig; } editor.phpParser.AddBxNode('diskfile0', { Parse: function (params, bxid) { var node = editor.GetIframeDoc().getElementById(bxid) || BX.findChild(field.quoteNode, {attr: {id: bxid}}, true); var params = editor.GetBxTag(bxid); if (node && params) { var dummy = document.createElement('DIV'); node = node.cloneNode(true); dummy.appendChild(node); if (node.tagName.toUpperCase() == 'IMG') { var image = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='; node.setAttribute('data-bx-orig-src', node.getAttribute('src')); node.setAttribute('src', image); return dummy.innerHTML.replace(image, 'bxacid:'+params.fileId); } return dummy.innerHTML; } return '[ ' + params.value + ' ]'; } }); // clear inline-attachments on attachment remove BX.addCustomEvent( postForm.eventNode, 'OnFileUploadRemove', function (result) { editor.synchro.Sync(); for (i in editor.bxTags) { if (editor.bxTags[i].fileId && editor.bxTags[i].fileId == result) { var node = editor.GetIframeDoc().getElementById(editor.bxTags[i].id); if (node && node.parentNode) node.parentNode.removeChild(node); var node = BX.findChild(field.quoteNode, {attr: {id: editor.bxTags[i].id}}, true); if (node && node.parentNode) node.parentNode.removeChild(node); delete editor.bxTags[i]; } } editor.synchro.FullSyncFromIframe(); } ); // initialize editor content BX.addCustomEvent( editor, 'OnCreateIframeAfter', function () { field.setValue('', {quote: true, signature: true}); field.form.editorInited = true; BX.onCustomEvent(field.form, 'MailForm::editor::init', [field]); } ); BX.addCustomEvent(field.form, 'MailForm:show', function () { field.form.editor.CheckAndReInit(); field.form.editor.ResizeSceleton(); }); BX.addCustomEvent(field.form, 'MailForm:hide', function () { field.form.editor.SaveContent(); }); BX.addCustomEvent( field.form, 'MailForm:submit', function () { var value = editor.GetContent(); if (field.quoteNode.__folded) value += editor.Parse(field.quoteNode.innerHTML, true, false); BX(field.fieldId+'_value').value = value; } ); }; BXMainMailFormField.__types['from'].setValue = function(field, value) { var input = BX(field.fieldId+'_value'); var selector = BX.findChildByClassName(field.params.__row, 'main-mail-form-field-value-menu', true); if (!value.trim()) { if (!field.params.required) { input.value = ''; BX.adjust(selector, {html: ''}); } BX.onCustomEvent(field.form, 'MailForm::from::change', [field, '']); return; } if (field.params.mailboxes && field.params.mailboxes.length > 0) { var escRegex = new RegExp('[-\/\\^$*+?.()|[\]{}]', 'g'); for (var i in field.params.mailboxes) { var pattern = new RegExp( '(^|<)' + field.params.mailboxes[i].email.replace(escRegex, '\\$&') + '(>|$)', 'i' ); if (value.trim().match(pattern)) { input.value = value; BX.adjust(selector, {html: BX.util.htmlspecialchars(value)}); BX.onCustomEvent(field.form, 'MailForm::from::change', [field]); break; } } } }; BXMainMailFormField.__types['rcpt'].setValue = function(field, value) { if (field.form.options.version < 2) { var selected = BX.SocNetLogDestination.getSelected(field.selector); for (var id in selected) BX.SocNetLogDestination.deleteItem(id, selected[id], field.selector); } if (value && BX.type.isPlainObject(value)) { if (field.form.options.version < 2) { for (var id in value) { if (value.hasOwnProperty(id)) { BX.SocNetLogDestination.obItemsSelected[field.selector][id] = value[id]; BX.SocNetLogDestination.runSelectCallback(id, value[id], field.selector, false, 'init'); } } } BX.onCustomEvent("BX.Main.SelectorV2:reInitDialog", [ { selectorId: field.params.id, selectedItems: BX.clone(value) } ]); } }; BXMainMailFormField.__types['text'].insert = function(field, text) { var input = BX(field.fieldId+'_value'); if (typeof input.selectionStart != 'undefined') { var selection = { start: input.selectionStart, end: input.selectionEnd }; input.value = input.value.substr(0, selection.start) + text + input.value.substr(selection.end); input.selectionStart = input.selectionEnd = selection.start + text.length; } else { input.value = input.value + text; } input.focus(); }; BXMainMailFormField.__types['text'].setValue = function(field, value) { var input = BX(field.fieldId+'_value'); input.value = value; }; BXMainMailFormField.__types['editor'].insert = function(field, text) { var editor = field.form.editor; if (editor.synchro.IsFocusedOnTextarea()) { editor.textareaView.WrapWith('', '', text); if (editor.textareaView.element && typeof editor.textareaView.element.selectionStart != 'undefined') editor.textareaView.element.selectionStart = editor.textareaView.element.selectionEnd; } else { editor.selection.GetRange().deleteContents(); editor.InsertHtml(text); } editor.Focus(); }; BXMainMailFormField.__types['editor'].setValue = function(field, value, options) { var postForm = field.form.postForm; var editor = field.form.editor; if (value.length > 0) { for (var uid in postForm.controllers) { if (!postForm.controllers.hasOwnProperty(uid)) continue; var ctrl = postForm.controllers[uid]; if (ctrl.storage != 'disk') continue; if (!ctrl.values) break; for (var id in ctrl.values) { if (ctrl.values.hasOwnProperty(id) && ctrl.values[id].src) value = value.replace('bxacid:'+id, ctrl.values[id].src+'&__bxacid='+id); } break; } } if (options && options.signature) { editor.synchro.Sync(); var signatureNode = editor.GetIframeDoc().getElementById(field.form.signatureNodeId); if (signatureNode) { var dummyNode = document.createElement('div'); dummyNode.appendChild(signatureNode.cloneNode(true)); value += dummyNode.innerHTML; } } if (options && options.quote && !field.quoteNode.__folded) value += field.quoteNode.innerHTML; editor.SetContent(value, true); var regex = /[&?]__bxacid=(n?\d+)/; var types = {'IMG': 'src', 'A': 'href'}; for (var name in types) { var nodeList = editor.GetIframeDoc().getElementsByTagName(name); for (var i = 0; i < nodeList.length; i++) { var matches = nodeList[i].getAttribute(types[name]) ? nodeList[i].getAttribute(types[name]).match(regex) : false; if (matches) { nodeList[i].removeAttribute('id'); nodeList[i].setAttribute( types[name], nodeList[i].getAttribute(types[name]).replace(regex, '') ); editor.SetBxTag(nodeList[i], {'tag': 'diskfile0', fileId: matches[1]}); } } } editor.synchro.FullSyncFromIframe(); }; BXMainMailFormField.__types['files'].setValue = function(field, value) { var postForm = field.form.postForm; postForm.controllerInit('show'); for (var uid in postForm.controllers) { if (!postForm.controllers.hasOwnProperty(uid)) continue; var ctrl = postForm.controllers[uid]; if (ctrl.storage != 'disk') continue; if (!ctrl.handler) break; value = BX.clone(value); if (ctrl.values) { for (var i = 0; i < value.length; i++) { if (ctrl.values[value[i].id]) value.splice(i--, 1); } } ctrl.handler.selectFile({}, {}, value); break; } }; window.BXMainMailForm = BXMainMailForm; })();