%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.135.212.195
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/modules/report/lib/visualconstructor/fields/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/report/lib/visualconstructor/fields/base.php
<?php
namespace Bitrix\Report\VisualConstructor\Fields;

use Bitrix\Main\Page\Asset;
use Bitrix\Report\VisualConstructor\Form;

/**
 * Class Base
 * @package Bitrix\Report\VisualConstructor\Fields
 */
abstract class Base
{
	const FIELDS_COMPONENT_NAME = 'bitrix:report.visualconstructor.config.fields';

	private $key;
	private $classList = array();
	private $dataAttributes = array();
	private $id;
	private $label = '';
	private $isDisplayLabel = true;
	private $prefix;
	private $postfix;
	private $weight = 0;
	private $assets = array();
	private $js = array();
	private $css = array();
	private $inline = array();
	private $jsEvents = array();
	private $jsEventListeners = array();
	private $form;
	private $compatibleViewTypes;
	private $inlineStyle;
	private $display = true;

	/**
	 * @return string
	 */
	public static function getClassName()
	{
		return get_called_class();
	}

	/**
	 * @return Base
	 */
	public function getPrefix()
	{
		return $this->prefix;
	}

	/**
	 * Setter for string which render before field content.
	 *
	 * @param string|Base $prefix String for render before content.
	 * @return void
	 */
	public function setPrefix($prefix)
	{
		if (is_string($prefix))
		{
			$prefix = new Html($prefix);
		}
		$this->prefix = $prefix;
	}

	/**
	 * @return Base
	 */
	public function getPostfix()
	{
		return $this->postfix;
	}

	/**
	 * Setter for string which render after field content.
	 *
	 * @param string|Base $postfix String for render after content.
	 * @return void
	 */
	public function setPostfix($postfix)
	{
		if (is_string($postfix))
		{
			$postfix = new Html($postfix);
		}
		$this->postfix = $postfix;
	}

	/**
	 * @return array
	 */
	public function getAssets()
	{
		return $this->assets;
	}

	/**
	 * Attach js, css, or inline assets to field.
	 *
	 * @param array $assets Array of assets which attach to field.
	 * @return void
	 */
	public function addAssets($assets)
	{
		foreach ($assets as $key => $assetList)
		{
			switch ($key)
			{
				case 'js':
					$this->js = array_merge($this->js, $assetList);
					break;
				case 'css':
					$this->css = array_merge($this->css, $assetList);
					break;
				case 'inline':
					$this->inline = array_merge($this->inline, $assetList);
			}
		}
		$this->assets = $assets;
	}

	/**
	 * @return Form
	 */
	public function getForm()
	{
		return $this->form;
	}

	/**
	 * Setter for form context.
	 *
	 * @param Form $form Form where render field.
	 * @return void
	 */
	public function setForm($form)
	{
		$this->form = $form;
	}

	/**
	 * Check is displayable this field, if yes collect all assets,
	 * And print content.
	 *
	 * @return void
	 */
	public function render()
	{
		if (!$this->isDisplay())
		{
			return;
		}

		foreach ($this->js as $jsPath)
		{
			Asset::getInstance()->addJs($jsPath);
		}

		foreach ($this->css as $cssPath)
		{
			Asset::getInstance()->addCss($cssPath);
		}

		foreach ($this->inline as $inline)
		{
			//TODO
			Asset::getInstance()->addString($inline);
		}

		if ($this->getPrefix())
		{
			$this->getPrefix()->render();
		}

		$this->printContent();

		if ($this->getPostfix())
		{
			$this->getPostfix()->render();
		}

	}

	/**
	 * Print field html/string ore somthing else printable.
	 *
	 * @return void
	 */
	abstract public function printContent();

	/**
	 * @return array
	 */
	public function getJsEventListeners()
	{
		return $this->jsEventListeners;
	}

	/**
	 * @return array
	 */
	public function getJsEvents()
	{
		return $this->jsEvents;
	}

	/**
	 * Add js event handler to field on some event which fire on $field in first parameter of this function.
	 *
	 * @param self|null $field Field which fire event.
	 * @param string $eventKey Event key which listen this field.
	 * @param array $jsParams JS parameters which pass to handler.
	 * @return $this
	 */
	public function addJsEventListener(Base $field = null, $eventKey, $jsParams)
	{
		$field->jsEvents[$eventKey][] = array(
			'behaviourOwner' => $this,
			'handlerParams' => $jsParams
		);

		$this->jsEventListeners[$eventKey][] = array(
			'eventOwner' => $field,
			'handlerParams' => $jsParams,
		);
		return $this;
	}

	/**
	 * @return string
	 */
	public function getLabel()
	{
		return $this->label;
	}

	/**
	 * Setter for field label.
	 *
	 * @param string $label String to set as label for field.
	 * @return void
	 */
	public function setLabel($label)
	{
		$this->label = $label;
	}


	/**
	 * @return array
	 */
	public function getCompatibleViewTypes()
	{
		return $this->compatibleViewTypes;
	}

	/**
	 * Setter of compatible widget view types.
	 *
	 * @param array $compatibleViewTypes Compatible widget view type list.
	 * @return void
	 */
	public function setCompatibleViewTypes($compatibleViewTypes)
	{
		$this->compatibleViewTypes = $compatibleViewTypes;
	}

	/**
	 * @return string
	 */
	public function getId()
	{
		return $this->id;
	}

	/**
	 * Setter for id.
	 *
	 * @param string $id Unique id.
	 * @return void
	 */
	public function setId($id)
	{
		$this->id = $id;
	}

	/**
	 * @return int
	 */
	public function getWeight()
	{
		return $this->weight;
	}

	/**
	 * Setter for Weight.
	 *
	 * @param int $weight Integer of weightof Field.
	 * @return void
	 */
	public function setWeight($weight)
	{
		$this->weight = $weight;
	}


	/**
	 * Add to class list class string.
	 *
	 * @param string $class Class string.
	 * @return void
	 */
	public function addClass($class)
	{
		$this->classList[] = $class;
	}

	/**
	 * @return array
	 */
	public function getClasses()
	{
		return $this->classList;
	}

	/**
	 * Get data attribute by key.
	 *
	 * @param string $key Key for data attribute which will return.
	 * @return mixed|null
	 */
	public function getDataAttribute($key)
	{
		return !empty($this->dataAttributes[$key]) ? $this->dataAttributes[$key] : null;
	}

	/**
	 * @return array
	 */
	public function getDataAttributes()
	{
		return $this->dataAttributes;
	}

	/**
	 * Set Data attributes by array of pair key => values.
	 *
	 * @param array $dataAttributes Array of pair key=>value.
	 * @return void
	 */
	public function setDataAttributes($dataAttributes)
	{
		$this->dataAttributes = $dataAttributes;
	}

	/**
	 * @param string $key Key for data attribute. ('role').
	 * @param string $value Value for data attribute. ('widget').
	 * @return void
	 */
	public function addDataAttribute($key, $value)
	{
		$this->dataAttributes[$key] = $value;
	}

	/**
	 * Conver id property to string for render as html in element.
	 *
	 * @return string
	 */
	public function getRenderedIdAttribute()
	{
		$result = '';
		if ($this->getId() !== null)
		{
			$result = ' id="' . $this->getId() . '"';
		}
		return $result;
	}

	/**
	 * @return string
	 */
	public function getKey()
	{
		return $this->key;
	}

	/**
	 * Seter for key.
	 *
	 * @param string $key Unique key for field.
	 * @return void
	 */
	public function setKey($key)
	{
		$this->key = $key;
	}

	/**
	 * Convert class list property collection to string for render as html in field element.
	 *
	 * @return string
	 */
	public function getRenderedClassAttributes()
	{
		$classes =  $this->getClasses();
		$classes = array_filter($classes);
		$result = '';
		if (!empty($classes))
		{
			$result = !empty($classes) ? ' class="' . implode(' ', $classes) . '"' : '';
		}
		return $result;
	}

	/**
	 * Conver data atttribute property collection to string for render as html in field element.
	 *
	 * @return string
	 */
	public function getRenderedDataAttributes()
	{
		$dataAttributes = $this->getDataAttributes();
		$result = '';
		foreach ($dataAttributes as $key => $value)
		{
			$result .= ' data-' . $key . '="' . $value .  '"';
		}
		return $result;
	}

	/**
	 * Convert inline style propery collection to string for render as html.
	 *
	 * @return string
	 */
	public function getRenderedInlineStyle()
	{
		$inlineStyles = $this->getInlineStyle();
		$result = '';
		if ($inlineStyles)
		{
			$result = 'style="';
			foreach ($inlineStyles as $key => $value)
			{
				$result .= ' ' . $key . ': ' . $value .  ';';
			}
			$result .= '"';
		}

		return $result;
	}

	/**
	 * @return bool
	 */
	public function isDisplayLabel()
	{
		return $this->isDisplayLabel;
	}

	/**
	 * Setter for display mode of label of field.
	 *
	 * @param bool $isDisplayLabel True if label must render else false.
	 * @return void
	 */
	public function setIsDisplayLabel($isDisplayLabel)
	{
		$this->isDisplayLabel = $isDisplayLabel;
	}

	/**
	 * Add inline style by key and value.
	 *
	 * @param string $key Key of inline style. ('background-color').
	 * @param string $value Value Of inline style. ('red').
	 * @return void
	 */
	public function addInlineStyle($key, $value)
	{
		$this->inlineStyle[$key] = $value;
	}
	/**
	 * @return array
	 */
	public function getInlineStyle()
	{
		return $this->inlineStyle;
	}

	/**
	 * Setter dor inline style.
	 *
	 * @param array $inlineStyle Inline style string.
	 * @return void
	 */
	public function setInlineStyle($inlineStyle)
	{
		$this->inlineStyle = $inlineStyle;
	}

	/**
	 * @return bool
	 */
	public function isDisplay()
	{
		return $this->display;
	}

	/**
	 * Setter for display mode.
	 *
	 * @param bool $display Render or not this field marker.
	 * @return void
	 */
	public function setDisplay($display)
	{
		$this->display = $display;
	}

	/**
	 * Include component for field.
	 *
	 * @param string $templateName Template name string.
	 * @param array $params Parameters pass to component.
	 * @return void
	 */
	protected function includeFieldComponent($templateName, $params = array())
	{
		global $APPLICATION;
		$defaultParams = array(
			'CONFIGURATION_FIELD' => $this,
		);
		$params = array_merge($defaultParams, $params);
		$APPLICATION->IncludeComponent(self::FIELDS_COMPONENT_NAME, $templateName, $params);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit