MenuController.php 2.3 KB
Newer Older
Nicolas Widart's avatar
Nicolas Widart committed
1 2
<?php namespace Modules\Menu\Http\Controllers\Admin;

3
use Illuminate\Routing\Redirector;
Nicolas Widart's avatar
Nicolas Widart committed
4
use Illuminate\Support\Facades\View;
Nicolas Widart's avatar
Nicolas Widart committed
5
use Laracasts\Flash\Flash;
Nicolas Widart's avatar
Nicolas Widart committed
6
use Modules\Core\Http\Controllers\Admin\AdminBaseController;
7
use Modules\Menu\Entities\Menu;
8
use Modules\Menu\Http\Requests\CreateMenuRequest;
Nicolas Widart's avatar
Nicolas Widart committed
9
use Modules\Menu\Http\Requests\UpdateMenuRequest;
10
use Modules\Menu\Repositories\MenuItemRepository;
11
use Modules\Menu\Repositories\MenuRepository;
12
use Modules\Menu\Services\MenuRenderer;
Nicolas Widart's avatar
Nicolas Widart committed
13 14 15

class MenuController extends AdminBaseController
{
16 17 18 19
    /**
     * @var MenuRepository
     */
    private $menu;
20
    /**
21
     * @var Redirector
22
     */
23
    private $redirector;
24 25 26 27
    /**
     * @var MenuItemRepository
     */
    private $menuItem;
28 29 30 31
    /**
     * @var MenuRenderer
     */
    private $menuRenderer;
32

33 34 35 36 37 38
    public function __construct(
        MenuRepository $menu,
        MenuItemRepository $menuItem,
        Redirector $redirector,
        MenuRenderer $menuRenderer
    ) {
39 40
        parent::__construct();
        $this->menu = $menu;
41
        $this->redirector = $redirector;
42
        $this->menuItem = $menuItem;
43
        $this->menuRenderer = $menuRenderer;
44
    }
Nicolas Widart's avatar
Nicolas Widart committed
45

Nicolas Widart's avatar
Nicolas Widart committed
46 47
    public function index()
    {
48 49 50
        $menus = $this->menu->all();

        return View::make('menu::admin.menus.index', compact('menus'));
Nicolas Widart's avatar
Nicolas Widart committed
51
    }
52 53 54

    public function create()
    {
55
        return View::make('menu::admin.menus.create');
56 57
    }

58
    public function store(CreateMenuRequest $request)
59
    {
60 61 62
        $this->menu->create($request->all());

        Flash::success('Menu created!');
63
        return $this->redirector->route('dashboard.menu.index');
64 65 66 67
    }

    public function edit(Menu $menu)
    {
68
        $menuItems = $this->menuItem->rootsForMenu($menu->id);
69

70 71 72
        $menuStructure = $this->menuRenderer->renderForMenu($menu->id, $menuItems);

        return View::make('menu::admin.menus.edit', compact('menu', 'menuStructure'));
73
    }
74

Nicolas Widart's avatar
Nicolas Widart committed
75 76 77 78 79 80 81 82
    public function update(Menu $menu, UpdateMenuRequest $request)
    {
        $this->menu->update($menu, $request->all());

        Flash::success('Menu updated!');
        return $this->redirector->route('dashboard.menu.index');
    }

83 84 85 86 87 88 89
    public function destroy(Menu $menu)
    {
        $this->menu->destroy($menu);

        Flash::success('Menu destroyed');
        return $this->redirector->route('dashboard.menu.index');
    }
Nicolas Widart's avatar
Nicolas Widart committed
90
}