Your IP : 18.222.118.188


Current Path : /var/www/u0635749/data/www/hobbyclick.ru/public/hobbyclick/bitrix/js/landing/node/
Upload File :
Current File : /var/www/u0635749/data/www/hobbyclick.ru/public/hobbyclick/bitrix/js/landing/node/embed.js

;(function() {
	"use strict";

	BX.namespace("BX.Landing");

	var data = BX.Landing.Utils.data;

	/**
	 * @extends {BX.Landing.Block.Node}
	 * @param options
	 * @constructor
	 */
	BX.Landing.Block.Node.Embed = function(options)
	{
		BX.Landing.Block.Node.apply(this, arguments);
		this.type = 'embed';
		this.attribute = ['data-src', 'data-source', 'data-preview'];
		this.onAttributeChangeHandler = options.onAttributeChange || (function() {});
		this.lastValue = this.getValue();
	};


	BX.Landing.Block.Node.Embed.prototype = {
		constructor: BX.Landing.Block.Node.Embed,
		__proto__: BX.Landing.Block.Node.prototype,

		onChange: function()
		{
			this.lastValue = this.getValue();
			this.onAttributeChangeHandler(this);
			this.onChangeHandler(this);
		},

		isChanged: function()
		{
			return JSON.stringify(this.getValue()) !== JSON.stringify(this.lastValue);
		},

		getValue: function()
		{
			return {
				src: this.node.src ? this.node.src : data(this.node, "data-src"),
				source: data(this.node, "data-source"),
				preview: data(this.node, "data-preview")
			};
		},

		setValue: function(value, preventSave, preventHistory)
		{
			// if iframe or preview-div
			if(this.node.src)
			{
				this.node.src = value.src;
			}
			else
			{
				data(this.node, "data-src", value.src)
			}

			data(this.node, "data-source", value.source);
			if(value.preview)
			{
				data(this.node, "data-preview", value.preview);
				this.node.style.backgroundImage = "url(\""+value.preview+"\")";
			}
			else
			{
				data(this.node, "data-preview", null);
				this.node.style.backgroundImage = "";
			}

			if (this.isChanged())
			{
				if (!preventHistory)
				{
					BX.Landing.History.getInstance().push(
						new BX.Landing.History.Entry({
							block: this.getBlock().id,
							selector: this.selector,
							command: "editEmbed",
							undo: this.lastValue,
							redo: this.getValue()
						})
					);
				}

				this.onChange();
			}
		},

		getField: function()
		{
			return new BX.Landing.UI.Field.Embed({
				title: this.manifest.name,
				selector: this.selector,
				content: this.getValue()
			});
		}
	};

})();