123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\View\PageLayout;
- /**
- * Page layouts configuration
- */
- class Config extends \Magento\Framework\Config\AbstractXml
- {
- /**
- * @var \Magento\Framework\Config\Dom\UrnResolver
- */
- protected $urnResolver;
- /**
- * Instantiate with the list of files to merge
- *
- * @param array $configFiles
- * @param \Magento\Framework\Config\DomFactory $domFactory
- * @param \Magento\Framework\Config\Dom\UrnResolver $urnResolver
- * @throws \InvalidArgumentException
- */
- public function __construct(
- $configFiles,
- \Magento\Framework\Config\DomFactory $domFactory,
- \Magento\Framework\Config\Dom\UrnResolver $urnResolver
- ) {
- $this->urnResolver = $urnResolver;
- parent::__construct($configFiles, $domFactory);
- }
- /**
- * Get absolute path to the XML-schema file
- *
- * @return string
- */
- public function getSchemaFile()
- {
- return $this->urnResolver->getRealPath('urn:magento:framework:View/PageLayout/etc/layouts.xsd');
- }
- /**
- * Get page layout that contains declared in system
- *
- * @return string[][]
- */
- public function getPageLayouts()
- {
- return $this->_data;
- }
- /**
- * Checks that the page layout declared in configuration
- *
- * @param string $pageLayout
- * @return bool
- */
- public function hasPageLayout($pageLayout)
- {
- return isset($this->_data[$pageLayout]);
- }
- /**
- * Retrieve page layout options
- *
- * @return array
- */
- public function getOptions()
- {
- return $this->getPageLayouts();
- }
- /**
- * @param bool $withEmpty
- * @return array
- */
- public function toOptionArray($withEmpty = false)
- {
- $options = [];
- foreach ($this->getPageLayouts() as $value => $label) {
- $options[] = ['label' => $label, 'value' => $value];
- }
- if ($withEmpty) {
- array_unshift($options, [
- 'value' => '',
- 'label' => (string)new \Magento\Framework\Phrase('-- Please Select --')
- ]);
- }
- return $options;
- }
- /**
- * Extract configuration data from the DOM structure
- *
- * @param \DOMDocument $dom
- * @return array
- */
- protected function _extractData(\DOMDocument $dom)
- {
- $result = [];
- /** @var \DOMElement $layout */
- foreach ($dom->getElementsByTagName('layout') as $layout) {
- $result[$layout->getAttribute('id')] = trim($layout->nodeValue);
- }
- return $result;
- }
- /**
- * Get XML-contents, initial for merging
- *
- * @return string
- */
- protected function _getInitialXml()
- {
- return '<?xml version="1.0" encoding="UTF-8"?>'
- . '<page_layouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></page_layouts>';
- }
- /**
- * Get list of paths to identifiable nodes
- *
- * @return array
- */
- protected function _getIdAttributes()
- {
- return [
- '/page_layouts/layout' => 'id'
- ];
- }
- }
|