• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/internals/input.php
  • Класс: BitrixSaleInternalsInputBase
  • Вызов: Base::extractAttributes
static function extractAttributes(array $input, array $boolean, array $other, $withGlobal = true)
{
	$string = '';

	// add boolean attributes with predefined values or no value

	unset($boolean['REQUIRED']); // TODO remove with HTML5

	static $globalBoolean = array('CONTENTEDITABLE'=>'', 'DRAGGABLE'=>'true', 'SPELLCHECK'=>'', 'TRANSLATE'=>'yes');

	if ($withGlobal)
		$boolean = $globalBoolean + $boolean;

	foreach (array_intersect_key($input, $boolean) as $k => $v)
		if ($v === 'Y' || $v === true)
			$string .= ' '.mb_strtolower($k).($boolean[$k] ? '="'.$boolean[$k].'"' : '');

	// add event attributes with values
	if ($withGlobal)
	{
		static $globalEvents = array(
			'ONABORT'=>1, 'ONBLUR'=>1, 'ONCANPLAY'=>1, 'ONCANPLAYTHROUGH'=>1, 'ONCHANGE'=>1, 'ONCLICK'=>1,
			'ONCONTEXTMENU'=>1, 'ONDBLCLICK'=>1, 'ONDRAG'=>1, 'ONDRAGEND'=>1, 'ONDRAGENTER'=>1, 'ONDRAGLEAVE'=>1,
			'ONDRAGOVER'=>1, 'ONDRAGSTART'=>1, 'ONDROP'=>1, 'ONDURATIONCHANGE'=>1, 'ONEMPTIED'=>1, 'ONENDED'=>1,
			'ONERROR'=>1, 'ONFOCUS'=>1, 'ONINPUT'=>1, 'ONINVALID'=>1, 'ONKEYDOWN'=>1, 'ONKEYPRESS'=>1, 'ONKEYUP'=>1,
			'ONLOAD'=>1, 'ONLOADEDDATA'=>1, 'ONLOADEDMETADATA'=>1, 'ONLOADSTART'=>1, 'ONMOUSEDOWN'=>1, 'ONMOUSEMOVE'=>1,
			'ONMOUSEOUT'=>1, 'ONMOUSEOVER'=>1, 'ONMOUSEUP'=>1, 'ONMOUSEWHEEL'=>1, 'ONPAUSE'=>1, 'ONPLAY'=>1,
			'ONPLAYING'=>1, 'ONPROGRESS'=>1, 'ONRATECHANGE'=>1, 'ONREADYSTATECHANGE'=>1, 'ONRESET'=>1, 'ONSCROLL'=>1,
			'ONSEEKED'=>1, 'ONSEEKING'=>1, 'ONSELECT'=>1, 'ONSHOW'=>1, 'ONSTALLED'=>1, 'ONSUBMIT'=>1, 'ONSUSPEND'=>1,
			'ONTIMEUPDATE'=>1, 'ONVOLUMECHANGE'=>1, 'ONWAITING'=>1,
		);

		$events = array_intersect_key($input, $globalEvents);
		$other = array_diff_key($other, $events);

		foreach ($events as $k => $v)
			if ($v)
				$string .= ' '.mb_strtolower($k).'="'.$v.'"';
	}

	// add other attributes with values

	static $globalOther = array(
		'ACCESSKEY'=>1, 'CLASS'=>1, 'CONTEXTMENU'=>1, 'DIR'=>1, 'DROPZONE'=>1, 'LANG'=>1, 'STYLE'=>1, 'TABINDEX'=>1,
		'TITLE'=>1, 'ID' => 1,
		'XML:LANG'=>1, 'XML:SPACE'=>1, 'XML:BASE'=>1
	);

	if ($withGlobal)
		$other += $globalOther;

	foreach (array_intersect_key($input, $other) as $k => $v)
		if ($v)
			$string .= ' '.mb_strtolower($k).'="'.htmlspecialcharsbx($v).'"';

	// add data attributes
	if ($withGlobal && isset($input['DATA']) && is_array($input['DATA']))
	{
		foreach ($input['DATA'] as $k => $v)
		{
			$string .= ' data-'.htmlspecialcharsbx($k).'="'.htmlspecialcharsbx($v).'"';
		}
	}

	return $string;
}