• Модуль: fileman
  • Путь к файлу: ~/bitrix/modules/fileman/lib/block/content/engine.php
  • Класс: BitrixFilemanBlockContentEngine
  • Вызов: Engine::addStylesToDocumentHead
protected function addStylesToDocumentHead($styleString)
{
	$headDomElement = $this->document->getHead();
	if(!$headDomElement)
	{
		return;
	}

	$styleNode = end($headDomElement->querySelectorAll('style[' . self::STYLIST_TAG_ATTR . ']'));
	if(!$styleNode)
	{
		$styleNode = $this->document->createElement('style');
		$styleNode->setAttribute('type', 'text/css');
		$styleNode->setAttribute(self::STYLIST_TAG_ATTR, 'item');
		$headDomElement->appendChild($styleNode);
		$styleNode->appendChild($this->document->createTextNode($styleString));
	}
	else
	{
		$styleList1 = CssParser::parseCss($styleNode->getTextContent());
		$styleList2 = CssParser::parseCss($styleString);
		$styleList = array_merge($styleList1, $styleList2);

		$styleListByKey = array();
		foreach($styleList as $styleItem)
		{
			if(!is_array($styleListByKey[$styleItem['SELECTOR']]))
			{
				$styleListByKey[$styleItem['SELECTOR']] = array();
			}

			$styleListByKey[$styleItem['SELECTOR']] = array_merge(
				$styleListByKey[$styleItem['SELECTOR']],
				$styleItem['STYLE']
			);
		}

		$stylesString = '';
		foreach($styleListByKey as $selector => $declarationList)
		{
			$stylesString .= $selector . '{' . CssParser::getDeclarationString($declarationList) . "}n";
		}

		if($stylesString)
		{
			$styleNode->setInnerHTML('');
			$styleNode->appendChild($this->document->createTextNode($stylesString));
		}
	}
}