Implemented the view bag. Minor UX fix.
This commit is contained in:
parent
268f693d81
commit
2018215c44
|
|
@ -7753,7 +7753,7 @@ nav#layout-mainmenu.navbar ul li.preview i {
|
|||
}
|
||||
nav#layout-mainmenu.navbar ul li.power-off a,
|
||||
nav#layout-mainmenu.navbar ul li.preview a {
|
||||
padding: 20px;
|
||||
padding: 22px 20px 20px 20px;
|
||||
}
|
||||
nav#layout-mainmenu.navbar ul li.account {
|
||||
margin-right: 0;
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ nav#layout-mainmenu.navbar {
|
|||
|
||||
&.power-off, &.preview {
|
||||
i {font-size: 20px;}
|
||||
a {padding: 20px;}
|
||||
a {padding: 22px 20px 20px 20px;}
|
||||
}
|
||||
|
||||
&.account {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ use BackendAuth;
|
|||
use Backend\Classes\WidgetManager;
|
||||
use October\Rain\Support\ModuleServiceProvider;
|
||||
use System\Classes\SettingsManager;
|
||||
use Cms\Classes\ComponentManager;
|
||||
|
||||
class ServiceProvider extends ModuleServiceProvider
|
||||
{
|
||||
|
|
@ -116,6 +117,13 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
]
|
||||
]);
|
||||
});
|
||||
|
||||
/*
|
||||
* Register components
|
||||
*/
|
||||
ComponentManager::instance()->registerComponents(function($manager){
|
||||
$manager->registerComponent('Cms\Classes\ViewBag', 'viewBag');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -367,7 +367,7 @@
|
|||
var $componentList = $('.control-componentlist', pane),
|
||||
$primaryPanel = $('.control-tabs.primary', pane),
|
||||
$primaryTabContainer = $('.nav-tabs', $primaryPanel),
|
||||
hasComponents = $('.layout', $componentList).children().length > 0
|
||||
hasComponents = $('.layout', $componentList).children(':not(.hidden)').length > 0
|
||||
|
||||
$primaryTabContainer.toggleClass('component-area', hasComponents)
|
||||
$componentList.toggleClass('has-components', hasComponents)
|
||||
|
|
|
|||
|
|
@ -34,6 +34,11 @@ abstract class ComponentBase extends Extendable
|
|||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* @var boolean Determines whether the component is hidden in the back-end UI.
|
||||
*/
|
||||
public $isHidden = false;
|
||||
|
||||
/**
|
||||
* @var string Icon of the plugin that defines the component.
|
||||
* This field is used by the CMS internally.
|
||||
|
|
|
|||
|
|
@ -100,6 +100,9 @@ class ComponentManager
|
|||
if (!$code)
|
||||
$code = Str::getClassId($className);
|
||||
|
||||
if ($code == 'viewBag' && $className != 'Cms\Classes\ViewBag')
|
||||
throw new SystemException(sprintf('The component code viewBag is reserved. Please use another code for the component class %s.', $className));
|
||||
|
||||
$className = Str::normalizeClassName($className);
|
||||
$this->codeMap[$code] = $className;
|
||||
$this->classMap[$className] = $code;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
<?php namespace Cms\Classes;
|
||||
|
||||
use Cms\Classes\ComponentBase;
|
||||
|
||||
/**
|
||||
* The view bag stores custom template properties.
|
||||
* This is a hidden component ignored by the back-end UI.
|
||||
*
|
||||
* @package october\cms
|
||||
* @author Alexey Bobkov, Samuel Georges
|
||||
*/
|
||||
class ViewBag extends ComponentBase
|
||||
{
|
||||
public $isHidden = true;
|
||||
|
||||
public function componentDetails()
|
||||
{
|
||||
return [
|
||||
'name' => 'viewBag',
|
||||
'description' => 'Stores custom template properties.'
|
||||
];
|
||||
}
|
||||
|
||||
public function validateProperties(array $properties)
|
||||
{
|
||||
return $properties;
|
||||
}
|
||||
|
||||
public function __call($method, $parameters)
|
||||
{
|
||||
if (array_key_exists($method, $this->properties) && !method_exists($this, $method))
|
||||
return $this->properties[$method];
|
||||
|
||||
return parent::__call($method, $parameters);
|
||||
}
|
||||
|
||||
public function defineProperties()
|
||||
{
|
||||
$result = [];
|
||||
|
||||
foreach ($this->properties as $name=>$value) {
|
||||
$result[$name] = [
|
||||
'title' => $name,
|
||||
'type' => 'string'
|
||||
];
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<div class="layout-cell <?= e($component->componentCssClass) ?> <?= $component->isHidden ? 'hidden' : null ?>">
|
||||
<div
|
||||
class="<?= 'oc-'.$component->pluginIcon ?> layout-relative"
|
||||
<?php if ($component->inspectorEnabled): ?>data-inspectable<?php endif ?>
|
||||
data-inspector-title="<?= $name = e($this->getComponentName($component)) ?>"
|
||||
data-inspector-description="<?= $description = e($this->getComponentDescription($component)) ?>"
|
||||
data-inspector-config="<?= e($this->getComponentsPropertyConfig($component)) ?>"
|
||||
data-inspector-class="<?= get_class($component) ?>">
|
||||
<span class="name"><?= $name ?></span>
|
||||
<span class="description"><?= $description ?></span>
|
||||
<span class="alias oc-icon-code"><?= e($component->alias) ?></span>
|
||||
<input type="hidden" name="component_properties[]" data-inspector-values value="<?= e($this->getComponentPropertyValues($component)) ?>"/>
|
||||
<input type="hidden" name="component_names[]" value="<?= e($component->name) ?>"></input>
|
||||
<input type="hidden" name="component_aliases[]" value="<?= e($component->alias) ?>"></input>
|
||||
<a href="#" class="remove">×</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,25 +1,18 @@
|
|||
<div class="control-componentlist">
|
||||
<?php
|
||||
foreach ($components as $component) {
|
||||
if ($component->isHidden)
|
||||
echo $this->makePartial('component', ['component'=>$component]);
|
||||
}
|
||||
?>
|
||||
<div class="components" data-control="toolbar">
|
||||
<div class="layout">
|
||||
<?php foreach ($components as $component): ?>
|
||||
<div class="layout-cell <?= e($component->componentCssClass) ?>">
|
||||
<div
|
||||
class="<?= 'oc-'.$component->pluginIcon ?> layout-relative"
|
||||
<?php if ($component->inspectorEnabled): ?>data-inspectable<?php endif ?>
|
||||
data-inspector-title="<?= $name = e($this->getComponentName($component)) ?>"
|
||||
data-inspector-description="<?= $description = e($this->getComponentDescription($component)) ?>"
|
||||
data-inspector-config="<?= e($this->getComponentsPropertyConfig($component)) ?>"
|
||||
data-inspector-class="<?= get_class($component) ?>">
|
||||
<span class="name"><?= $name ?></span>
|
||||
<span class="description"><?= $description ?></span>
|
||||
<span class="alias oc-icon-code"><?= e($component->alias) ?></span>
|
||||
<input type="hidden" name="component_properties[]" data-inspector-values value="<?= e($this->getComponentPropertyValues($component)) ?>"/>
|
||||
<input type="hidden" name="component_names[]" value="<?= e($component->name) ?>"></input>
|
||||
<input type="hidden" name="component_aliases[]" value="<?= e($component->alias) ?>"></input>
|
||||
<a href="#" class="remove">×</a>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
<?php
|
||||
foreach ($components as $component) {
|
||||
if (!$component->isHidden)
|
||||
echo $this->makePartial('component', ['component'=>$component]);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue