-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPlugin.php
More file actions
122 lines (107 loc) · 3.92 KB
/
Copy pathPlugin.php
File metadata and controls
122 lines (107 loc) · 3.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php namespace Uit\Bmenu;
use Backend\Facades\BackendAuth;
use System\Classes\PluginBase;
use Event;
use BackendMenu;
use Backend;
use Uit\Bmenu\Models\Settings;
class Plugin extends PluginBase
{
use \System\Traits\ViewMaker;
public $user;
public $assets = [
'css' => [
'/plugins/uit/bmenu/assets/css/bmenu.css'
],
'js' => [
'/plugins/uit/bmenu/assets/js/bmenu.js'
]
];
public function registerSettings()
{
return [
'location' => [
'label' => 'Backend menu in frontend',
'description' => 'Toggle backend menu in frontend',
'category' => 'system::lang.system.categories.cms',
'icon' => 'icon-bars',
'class' => 'Uit\Bmenu\Models\Settings',
'order' => 500,
]
];
}
public function boot()
{
if(Settings::get('show_menu')) {
Event::listen('cms.page.postprocess', function ($controller, $url, $page, $dataHolder) {
$this->loadBackendUser();
if (!is_null($this->user)) {
$this->registerBackendNavigations();
$html = '';
$html .= $this->makeLayoutPartial(base_path('plugins/uit/bmenu/partials/menu'));
$html .= $this->makeAssets() . '</body>';
$dataHolder->content = str_replace('</body>', $html, $dataHolder->content);
}
});
}
}
public function loadBackendUser()
{
$this->user = BackendAuth::getUser();
}
public function registerBackendNavigations()
{
BackendMenu::registerCallback(function ($manager) {
$manager->registerMenuItems('October.Backend', [
'dashboard' => [
'label' => 'backend::lang.dashboard.menu_label',
'icon' => 'icon-dashboard',
'iconSvg' => 'modules/backend/assets/images/dashboard-icon.svg',
'url' => Backend::url('backend'),
'permissions' => ['backend.access_dashboard'],
'order' => 10
],
'cms' => [
'label' => 'cms::lang.cms.menu_label',
'icon' => 'icon-magic',
'iconSvg' => 'modules/cms/assets/images/cms-icon.svg',
'url' => Backend::url('cms'),
'order' => 100,
'permissions' => [
'cms.manage_content',
'cms.manage_assets',
'cms.manage_pages',
'cms.manage_layouts',
'cms.manage_partials'
],
],
'media' => [
'label' => 'backend::lang.media.menu_label',
'icon' => 'icon-folder',
'iconSvg' => 'modules/backend/assets/images/media-icon.svg',
'url' => Backend::url('backend/media'),
'permissions' => ['media.*'],
'order' => 200
], 'system' => [
'label' => 'system::lang.settings.menu_label',
'icon' => 'icon-cog',
'iconSvg' => 'modules/system/assets/images/cog-icon.svg',
'url' => Backend::url('system/settings'),
'permissions' => [],
'order' => 1000
]
]);
});
}
public function makeAssets()
{
$assetsHtml = '';
foreach ($this->assets['js'] as $js) {
$assetsHtml .= '<script src="' . url($js) . '"></script>';
}
foreach ($this->assets['css'] as $css) {
$assetsHtml .= '<link rel="stylesheet" href="' . url($css) . '"/>';
}
return $assetsHtml;
}
}