Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/components/bitrix/sender.mail.editor/templates/.default/
Upload File :
Current File : /var/www/homesaver/www/bitrix/components/bitrix/sender.mail.editor/templates/.default/script.js

;(function (window)
{
	BX.namespace('BX.Sender.Mail');
	if (BX.Sender.Mail.Editor)
	{
		return;
	}


	var Helper = {
		changeDisplay: function (node, isShow)
		{
			if (!node)
			{
				return;
			}

			node.style.display = isShow ? '' : 'none';
		}
	};

	/**
	 * Editor.
	 *
	 */
	function Editor()
	{
	}
	Editor.prototype.init = function (params)
	{
		this.id = params.id;
		this.input = BX(params.inputId);
		this.placeHolders = params.placeHolders;
		this.mess = params.mess;
		this.AIImageContextId = params.AIImageContextId;
		this.AITextContextId = params.AITextContextId;
		this.isAIImageAvailable = params.isAIImageAvailable === 'Y';
		this.isAITextAvailable = params.isAITextAvailable === 'Y';

		this.context = BX(params.containerId);
		this.blockNode = this.context.querySelector('[data-bx-editor-block]');
		this.plainNode = this.context.querySelector('[data-bx-editor-plain]');
		this.inputNode = this.plainNode.querySelector('[data-bx-input]');

		BX.Event.EventEmitter.subscribe('OnEditorInitedBefore', (event) => {
			const [currentEditor] = event.getData();

			if (this.isAITextAvailable)
			{
				currentEditor.AddButton({
					id: 'ai-text-generator',
					name: 'Create text',
					iconClassName: 'marketing-letter-editor-btn-ai-text',
					toolbarSort: 16,
					disabledForTextarea: false,
					compact: true,
					handler: () => {
						const aiTextPicker = new BX.AI.Picker({
							moduleId: 'sender',
							contextId: this.AITextContextId,
							analyticLabel: 'sender_ai_text_marketing_letter',
							history: true,
							onSelect: (info) => {
								let data = info.data;
								if (data && data.replace)
								{
									data = BX.util.htmlspecialchars(data);
									const text = (data + '').replace(/(\r\n|\n\r|\r|\n)/g, '<br/>$1');

									if (currentEditor.bbCode && currentEditor.synchro.IsFocusedOnTextarea())
									{
										currentEditor.textareaView.WrapWith(false, false, text);
										currentEditor.textareaView.Focus();
									}
									else
									{
										currentEditor.action.actions.insertHTML.exec('insertHTML', text);
										currentEditor.Focus();
									}
								}
							},
							onTariffRestriction: () => {
								// BX.UI.InfoHelper.show(`limit_sender_ai_text`);
							},
						});
						aiTextPicker.setLangSpace(BX.AI.Picker.LangSpace.text);
						aiTextPicker.text();
					},
				})
			}

			// if (this.isAIImageAvailable)
			// {
			// 	currentEditor.AddButton({
			// 		id: 'ai-image-generator',
			// 		name: 'Create Image',
			// 		iconClassName: 'marketing-letter-editor-btn-ai-image',
			// 		toolbarSort: 17,
			// 		disabledForTextarea: false,
			// 		compact: true,
			// 		handler: () => {
			// 			const aiImagePicker = new BX.AI.Picker({
			// 				moduleId: 'sender',
			// 				contextId: this.AIImageContextId,
			// 				analyticLabel: 'sender_ai_image_merketing_letter',
			// 				history: true,
			// 				onSelect: (imageUrl) => {
			// 					debugger;
			// 					// eslint-disable-next-line promise/catch-or-return
			// 					// ajax.runAction('socialnetwork.api.livefeed.blogpost.uploadAIImage', {
			// 					// 	data: {
			// 					// 		imageUrl: imageUrl,
			// 					// 	},
			// 					// }).then((response) => {
			// 					// 	const userFieldControl = BX.Disk.Uploader.UserFieldControl.getById(this.formId);
			// 					// 	const uploader: Uploader = userFieldControl.getUploader();
			// 					// 	uploader.addFile(response.data.fileId, {
			// 					// 		events: {
			// 					// 			[FileEvent.LOAD_COMPLETE]: (event) => {
			// 					// 				const file = event.getTarget();
			// 					// 				const item = userFieldControl.getItem(file.getId());
			// 					// 				userFieldControl.getMainPostForm().getParser().insertFile(item);
			// 					// 				userFieldControl.showUploaderPanel();
			// 					// 			},
			// 					// 		},
			// 					// 	});
			// 					// });
			// 				},
			// 				onTariffRestriction: () => {
			// 					// BX.UI.InfoHelper.show(`limit_sonet_ai_image`);
			// 				},
			// 			});
			// 			aiImagePicker.setLangSpace(BX.AI.Picker.LangSpace.image);
			// 			aiImagePicker.image();
			// 		},
			// 	});
			// }
		});


		BX.addCustomEvent('OnEditorInitedBefore', this.onEditorInitedBefore.bind(this));
		BX.addCustomEvent('OnEditorInitedAfter', this.onEditorInitedAfter.bind(this));

		if (BX.Sender.Template && BX.Sender.Template.Selector)
		{
			var selector = BX.Sender.Template.Selector;
			BX.addCustomEvent(selector, selector.events.templateSelect, this.onTemplateSelect.bind(this));
		}
	};
	Editor.prototype.onTemplateSelect = function (template)
	{
		var isOnDemand = template.messageFields.some(function (field) {
			return (field.code === 'MESSAGE' && field.onDemand);
		});
		if (isOnDemand)
		{
			var uri = BX.Sender.Template.Selector.getTemplateRequestingUri(template);
			this.setTemplateUri(uri);
		}
		else
		{
			template.messageFields.forEach(function (field) {
				if(field.code !== 'MESSAGE' )
				{
					return;
				}
				this.setContent(field.value);
			}, this);
		}
	};
	Editor.prototype.isTargetEditor = function (editor)
	{
		if (!editor)
		{
			return false;
		}

		return editor.id.indexOf('BX_BLOCK_EDITOR_CONTENT') === 0;
	};
	Editor.prototype.onEditorInitedAfter = function (editor)
	{
		if (!this.isTargetEditor(editor))
		{
			return;
		}

		editor.components.SetComponentIcludeMethod('EventMessageThemeCompiler::includeComponent');
	};
	Editor.prototype.onEditorInitedBefore = function (editor)
	{
		if (!this.isTargetEditor(editor))
		{
			return;
		}

		BX.extend(PlaceHolderSelectorButton, window.BXHtmlEditor.Button);
		window.BXHtmlEditor.Controls['placeholder_selector'] = PlaceHolderSelectorButton;
		buildPrototypes();

		//
		BX.addCustomEvent(
			editor,
			"PlaceHolderSelectorButtonCreate",
			this.onPlaceHolderSelectorButtonCreate.bind(this)
		);
	};

	Editor.prototype.onPlaceHolderSelectorButtonCreate = function (PlaceHolderSelectorButton)
	{
		PlaceHolderSelectorButton.placeHolders = this.placeHolders;
	};
	Editor.prototype.isSupportedTemplateUri = function ()
	{
		return true;
	};
	Editor.prototype.setTemplateUri = function(uri)
	{
		if (this.input.value && !this.isShowedBlock() && !this.confirmTemplateChange())
		{
			return;
		}

		BX.BlockEditorManager.get(this.id).load(uri);
		this.switchView(true);
	};
	Editor.prototype.isShowedBlock = function()
	{
		return this.blockNode.style.display !== 'none';
	};
	Editor.prototype.confirmTemplateChange = function()
	{
		return confirm(this.mess.changeTemplate);
	};
	Editor.prototype.switchView = function(isShowBlock)
	{
		Helper.changeDisplay(this.blockNode, isShowBlock);
		Helper.changeDisplay(this.plainNode, !isShowBlock);
		BX.BlockEditorManager.get(this.id).resultNode = isShowBlock ? this.inputNode : null;
	};
	Editor.prototype.setContent = function(content)
	{
		if (this.isShowedBlock() && !this.confirmTemplateChange())
		{
			return;
		}

		this.inputNode.value = content;
		this.switchView(false);
	};


	PlaceHolderSelectorButton = function(editor, wrap)
	{
		// Call parent constructor
		PlaceHolderSelectorButton.superclass.constructor.apply(this, arguments);
		this.id = 'placeholder_selector';

		this.placeHolders = [];
		
		this.className = 'bxhtmled-top-bar-btn bxhtmled-top-bar-choose-template';
		this.activeClassName = 'bxhtmled-top-bar-btn-active';
		this.disabledClassName = 'bxhtmled-top-bar-btn-disabled';

		editor.On('PlaceHolderSelectorButtonCreate', [this]);

		this.disabledForTextarea = false;
		this.Create();
		// this.pCont.innerHTML = this.title;

		var _this = this;
		new BX.Sender.PersonalizationSelector({
			button: this.pCont,
			fields: this.placeHolders,
			onItemClick: function (event)
			{
				event.preventDefault();
				var value = event.getData().item.getCustomData().get('property');
				if (typeof value !== 'undefined' &&
					_this.editor.action.IsSupported('insertHTML'))
				{
					_this.editor.action.Exec('insertHTML', value.id);
				}
			}
		});
	}

	buildPrototypes = function ()
	{
		PlaceHolderSelectorButton.prototype.buildPlaceHolders = BX.DoNothing;
		PlaceHolderSelectorButton.prototype.Check = BX.DoNothing;
		PlaceHolderSelectorButton.prototype.GetValue = BX.DoNothing;
		PlaceHolderSelectorButton.prototype.SetValue = BX.DoNothing;
		PlaceHolderSelectorButton.prototype.OnMouseUp = BX.DoNothing;
		PlaceHolderSelectorButton.prototype.OnMouseDown = BX.DoNothing;

		PlaceHolderSelectorButton.prototype.OnClick = BX.DoNothing;
	}

	setTimeout(function () {
		if (window.BXHtmlEditor)
		{
			BX.extend(PlaceHolderSelectorButton, window.BXHtmlEditor.Button);
			window.BXHtmlEditor.Controls['placeholder_selector'] = PlaceHolderSelectorButton;
		}
	}, 300);

	BX.Sender.Mail.Editor = new Editor();

	if (BX.Sender.Message.Editor.setAdaptedInstance)
	{
		BX.Sender.Message.Editor.setAdaptedInstance(BX.Sender.Mail.Editor);
	}

})(window);