Add method for looking up other page component properties (getOtherPageComponent)
This commit is contained in:
parent
a89eda62cf
commit
8ec4cd6ea3
|
|
@ -1,6 +1,7 @@
|
|||
<?php namespace Cms\Classes;
|
||||
|
||||
use URL;
|
||||
use Str;
|
||||
use App;
|
||||
use File;
|
||||
use View;
|
||||
|
|
@ -277,6 +278,48 @@ class Controller extends BaseController
|
|||
return $componentObj;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a basic component object for another page, useful for extracting properties.
|
||||
* @param string $page Page name or page file name
|
||||
* @param string $class Component class name
|
||||
* @return ComponentBase
|
||||
*/
|
||||
public function getOtherPageComponent($page, $class)
|
||||
{
|
||||
$class = Str::normalizeClassName($class);
|
||||
$theme = $this->getTheme();
|
||||
$manager = ComponentManager::instance();
|
||||
$componentObj = new $class;
|
||||
|
||||
if (($page = Page::loadCached($theme, $page)) && isset($page->settings['components'])) {
|
||||
foreach ($page->settings['components'] as $component => $properties) {
|
||||
list($name, $alias) = strpos($component, ' ') ? explode(' ', $component) : array($component, $component);
|
||||
if ($manager->resolve($name) == $class) {
|
||||
$componentObj->setProperties($properties);
|
||||
$componentObj->alias = $alias;
|
||||
return $componentObj;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($page->settings['layout']))
|
||||
return null;
|
||||
|
||||
$layout = $page->settings['layout'];
|
||||
if (($layout = Layout::loadCached($theme, $layout)) && isset($layout->settings['components'])) {
|
||||
foreach ($layout->settings['components'] as $component => $properties) {
|
||||
list($name, $alias) = strpos($component, ' ') ? explode(' ', $component) : array($component, $component);
|
||||
if ($manager->resolve($name) == $class) {
|
||||
$componentObj->setProperties($properties);
|
||||
$componentObj->alias = $alias;
|
||||
return $componentObj;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes the page, layout, component and plugin AJAX handlers.
|
||||
* @return mixed Returns the AJAX Response object or null.
|
||||
|
|
@ -710,7 +753,6 @@ class Controller extends BaseController
|
|||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Searches the layout and page components by a partial file
|
||||
* @return ComponentBase The component object, if found
|
||||
|
|
|
|||
Loading…
Reference in New Issue