Commit 0dd9c277 authored by dj3c1t's avatar dj3c1t

admin header menu

parent 1c48bb14
Pipeline #55 skipped
......@@ -58,6 +58,7 @@ class AdminController extends Controller {
}
$dm = $this->container->get('doctrine_phpcr.odm.default_document_manager');
$pm = $this->container->get('dj3c1t_cms.page_manager');
$cms_config = $this->container->get('dj3c1t_cms.config');
$page = $pm->getPage($path);
$pages = $pm->getPages($path);
$form = $this->createForm(
......@@ -86,6 +87,7 @@ class AdminController extends Controller {
'pages' => $pages,
'ariane' => $pm->getAriane($path, true),
'form' => $form->createView(),
'addRootPagesToHeaderMenu' => $cms_config->getAddRootPagesToHeaderMenu(),
)
);
}
......
<?php
namespace Dj3c1t\CmsBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class ConfigController extends Controller {
public function indexAction(Request $request) {
$cms_config = $this->container->get('dj3c1t_cms.config');
if($data = $request->request->all()) {
try {
$cms_config->setAddRootPagesToHeaderMenu(isset($data['header_menu_root_pages']));
$this->get('session')->getFlashBag()->add('success', "La configuration a été enregistrée");
}
catch(\Exception $e) {
$this->get('session')->getFlashBag()->add('error', $e->getMessage());
}
}
return $this->redirect($this->generateUrl('cms_admin_page_edit'));
}
}
......@@ -4,6 +4,10 @@ cms_page_view:
requirements:
path: .+
cms_admin_config:
path: /admin/cms/page/admin
defaults: { _controller: Dj3c1tCmsBundle:Config:index }
cms_admin_page_add:
path: /admin/cms/page/add/{path}
defaults: { _controller: Dj3c1tCmsBundle:Admin:add, path: null }
......
......@@ -7,3 +7,7 @@ services:
dj3c1t_cms.menus:
class: Dj3c1t\CmsBundle\Service\Menus
arguments: ['@service_container']
dj3c1t_cms.config:
class: Dj3c1t\CmsBundle\Service\Config
arguments: ['@service_container']
......@@ -98,6 +98,34 @@
</div>
</div>
{% if page.path|length == 0 %}
<h3>Configuration générale des pages</h3>
<form id="config_form" action="{{ path('cms_admin_config') }}" method="post">
<input type="hidden" name="confirm_form" value="1" />
<h4>
Menu du header
</h4>
<div class="row">
<div class="col-xs-12">
<div class="form-group">
<input type="checkbox" id="header_menu_root_pages" name="header_menu_root_pages"{% if addRootPagesToHeaderMenu %} checked{% endif %}/>
<label for="header_menu_root_pages">Ajouter un menu dans le header pour les pages de premier niveau</label>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="form-group">
<button type="submit" class="btn btn-primary">Enregistrer</button>
</div>
</div>
</div>
</form>
{% endif %}
{% endblock %}
{% block body_end %}
......
<?php
namespace Dj3c1t\CmsBundle\Service;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
class Config {
private $container;
public function __construct(Container $container) {
$this->container = $container;
}
public function getAddRootPagesToHeaderMenu() {
$em = $this->container->get('doctrine')->getManager();
$configurationRepo = $em->getRepository("Dj3c1tAppBundle:Configuration");
$addRootPagesToHeaderMenu = $configurationRepo->getConfiguration("dj3c1t_cms.header_menu.root_pages");
return isset($addRootPagesToHeaderMenu) ? ($addRootPagesToHeaderMenu ? true : false) : false;
}
public function setAddRootPagesToHeaderMenu($addRootPagesToHeaderMenu) {
$em = $this->container->get('doctrine')->getManager();
$configurationRepo = $em->getRepository("Dj3c1tAppBundle:Configuration");
$em->persist(
$configurationRepo->setConfiguration(
"dj3c1t_cms.header_menu.root_pages",
$addRootPagesToHeaderMenu ? "1" : "0"
)
);
$em->flush();
}
}
......@@ -13,16 +13,20 @@ class Menus {
}
public function getItemsFromFirstLevelCmsPages() {
$pm = $this->container->get('dj3c1t_cms.page_manager');
$items = array();
foreach($pm->getPages('/') as $page) {
$items[] = array(
"route" => "cms_page_view",
"parameters" => array(
"path" => $page->getName(),
),
"label" => $page->getTitle(),
);
$cms_config = $this->container->get('dj3c1t_cms.config');
if($cms_config->getAddRootPagesToHeaderMenu()) {
$pm = $this->container->get('dj3c1t_cms.page_manager');
foreach($pm->getPages('/') as $page) {
$items[] = array(
"route" => "cms_page_view",
"parameters" => array(
"path" => $page->getName(),
),
"label" => $page->getTitle(),
);
}
}
return $items;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment