Refs #729 - Fixes CMS permissions, should not show "pages" content by default

This commit is contained in:
Sam Georges 2014-11-09 12:35:10 +11:00
parent 2f4603ef58
commit 98e100b377
5 changed files with 88 additions and 27 deletions

View File

@ -358,6 +358,7 @@ class NavigationManager
/** /**
* Specifies a code of the side menu item in the current navigation context. * Specifies a code of the side menu item in the current navigation context.
* If the code is set to TRUE, the first item will be flagged as active.
* @param string $sideMenuItemCode Specifies the side menu item code * @param string $sideMenuItemCode Specifies the side menu item code
*/ */
public function setContextSideMenu($sideMenuItemCode) public function setContextSideMenu($sideMenuItemCode)
@ -397,6 +398,11 @@ class NavigationManager
*/ */
public function isSideMenuItemActive($item) public function isSideMenuItemActive($item)
{ {
if ($this->contextSideMenuItemCode === true) {
$this->contextSideMenuItemCode = null;
return true;
}
return $this->contextOwner == $item->owner && $this->contextSideMenuItemCode == $item->code; return $this->contextOwner == $item->owner && $this->contextSideMenuItemCode == $item->code;
} }
@ -424,9 +430,9 @@ class NavigationManager
{ {
$key = $owner.$mainMenuItemCode; $key = $owner.$mainMenuItemCode;
return array_key_exists($key, $this->contextSidenavPartials) ? return array_key_exists($key, $this->contextSidenavPartials)
$this->contextSidenavPartials[$key] : ? $this->contextSidenavPartials[$key]
null; : null;
} }
/** /**

View File

@ -2,7 +2,7 @@
$context = BackendMenu::getContext(); $context = BackendMenu::getContext();
$contextSidenav = BackendMenu::getContextSidenavPartial($context->owner, $context->mainMenuCode); $contextSidenav = BackendMenu::getContextSidenavPartial($context->owner, $context->mainMenuCode);
if (!$contextSidenav): if (!$contextSidenav):
$sideMenuItems = BackendMenu::listSideMenuItems(); $sideMenuItems = BackendMenu::listSideMenuItems();
if ($sideMenuItems): if ($sideMenuItems):
@ -11,9 +11,14 @@
<div class="layout-relative"> <div class="layout-relative">
<nav class="layout-sidenav" id="layout-sidenav" data-control="sidenav"> <nav class="layout-sidenav" id="layout-sidenav" data-control="sidenav">
<ul class="nav"> <ul class="nav">
<?php foreach ($sideMenuItems as $sideItemCode=>$item): ?> <?php foreach ($sideMenuItems as $sideItemCode => $item): ?>
<li class="<?= BackendMenu::isSideMenuItemActive($item) ? 'active' : null ?>" <?= HTML::attributes($item->attributes) ?>> <li
<a href="<?= $item->url ?>"><i class="<?= $item->icon ?>"></i><?= e(trans($item->label)) ?></a> class="<?= BackendMenu::isSideMenuItemActive($item) ? 'active' : null ?>"
<?= HTML::attributes($item->attributes) ?>
>
<a href="<?= $item->url ?>">
<i class="<?= $item->icon ?>"></i><?= e(trans($item->label)) ?>
</a>
<span <span
class="counter <?= $item->counter === null ? 'empty' : null ?>" class="counter <?= $item->counter === null ? 'empty' : null ?>"
data-menu-id="<?= e($context->mainMenuCode.'/'.$sideItemCode) ?>" data-menu-id="<?= e($context->mainMenuCode.'/'.$sideItemCode) ?>"

View File

@ -75,7 +75,7 @@ class ServiceProvider extends ModuleServiceProvider
'icon' => 'icon-puzzle-piece', 'icon' => 'icon-puzzle-piece',
'url' => 'javascript:;', 'url' => 'javascript:;',
'attributes' => ['data-menu-item'=>'components'], 'attributes' => ['data-menu-item'=>'components'],
'permissions' => ['cms.manage_pages', 'cms:manage_layouts'] 'permissions' => ['cms.manage_pages', 'cms.manage_layouts', 'cms.manage_partials']
] ]
] ]

View File

@ -48,7 +48,7 @@ class Index extends Controller
{ {
parent::__construct(); parent::__construct();
BackendMenu::setContext('October.Cms', 'cms', 'pages'); BackendMenu::setContext('October.Cms', 'cms', true);
try { try {
if (!($theme = Theme::getEditTheme())) { if (!($theme = Theme::getEditTheme())) {

View File

@ -1,24 +1,74 @@
<?php
$visibleCount = 0;
?>
<div class="layout control-scrollpanel" id="cms-side-panel"> <div class="layout control-scrollpanel" id="cms-side-panel">
<div class="layout-cell"> <div class="layout-cell">
<div class="layout-relative fix-button-container"> <div class="layout-relative fix-button-container">
<form class="layout" data-content-id="pages" data-template-type="page" data-type-icon="oc-icon-copy" onsubmit="return false"> <?php if ($this->user->hasAccess('cms.manage_pages')): ?>
<?= $this->widget->pageList->render() ?> <!-- Pages -->
</form> <form
<form class="layout hide" data-content-id="partials" data-template-type="partial" data-type-icon="oc-icon-tags" onsubmit="return false"> class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
<?= $this->widget->partialList->render() ?> data-content-id="pages"
</form> data-template-type="page"
<form class="layout hide" data-content-id="layouts" data-template-type="layout" data-type-icon="oc-icon-th-large" onsubmit="return false"> data-type-icon="oc-icon-copy"
<?= $this->widget->layoutList->render() ?> onsubmit="return false">
</form> <?= $this->widget->pageList->render() ?>
<form class="layout hide" data-content-id="content" data-template-type="content" data-type-icon="oc-icon-file-text-o" onsubmit="return false"> </form>
<?= $this->widget->contentList->render() ?> <?php endif ?>
</form> <?php if ($this->user->hasAccess('cms.manage_partials')): ?>
<form class="layout hide" data-content-id="assets" data-template-type="asset" data-type-icon="oc-icon-file-text-o" onsubmit="return false"> <!-- Partials -->
<?= $this->widget->assetList->render() ?> <form
</form> class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
<form class="layout hide" data-content-id="components" onsubmit="return false" id="cms-component-list"> data-content-id="partials"
<?= $this->widget->componentList->render() ?> data-template-type="partial"
</form> data-type-icon="oc-icon-tags"
onsubmit="return false">
<?= $this->widget->partialList->render() ?>
</form>
<?php endif ?>
<?php if ($this->user->hasAccess('cms.manage_layouts')): ?>
<!-- Layouts -->
<form
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
data-content-id="layouts"
data-template-type="layout"
data-type-icon="oc-icon-th-large"
onsubmit="return false">
<?= $this->widget->layoutList->render() ?>
</form>
<?php endif ?>
<?php if ($this->user->hasAccess('cms.manage_content')): ?>
<!-- Content -->
<form
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
data-content-id="content"
data-template-type="content"
data-type-icon="oc-icon-file-text-o"
onsubmit="return false">
<?= $this->widget->contentList->render() ?>
</form>
<?php endif ?>
<?php if ($this->user->hasAccess('cms.manage_assets')): ?>
<!-- Assets -->
<form
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
data-content-id="assets"
data-template-type="asset"
data-type-icon="oc-icon-file-text-o"
onsubmit="return false">
<?= $this->widget->assetList->render() ?>
</form>
<?php endif ?>
<?php if ($this->user->hasAccess(['cms.manage_pages', 'cms.manage_layouts', 'cms.manage_partials'])): ?>
<!-- Components -->
<form
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
data-content-id="components"
onsubmit="return false"
id="cms-component-list">
<?= $this->widget->componentList->render() ?>
</form>
<?php endif ?>
</div> </div>
</div> </div>
</div> </div>