1
+ <?php namespace Darryldecode \Backend ;
2
+
3
+ use Darryldecode \Backend \Base \Registrar \ComponentLoader ;
4
+ use Darryldecode \Backend \Base \Registrar \Registrar ;
5
+ use Darryldecode \Backend \Base \Registrar \WidgetLoader ;
6
+ use Illuminate \Filesystem \Filesystem ;
7
+ use Illuminate \Support \ServiceProvider ;
8
+ use Darryldecode \Backend \Base \Services \Bus \Dispatcher ;
9
+
10
+ class BackendServiceProvider extends ServiceProvider {
11
+
12
+ /**
13
+ * Register the service provider.
14
+ */
15
+ public function boot ()
16
+ {
17
+ $ this ->loadViewsFrom (__DIR__ .'/Base/Views ' , 'backend ' );
18
+ $ this ->bootBackend ();
19
+
20
+ // $this->app['router']->middleware(
21
+ // 'backend.guest',
22
+ // 'Darryldecode\Backend\Base\Middleware\RedirectIfAuthenticated'
23
+ // );
24
+ //
25
+ // $this->app['router']->middleware(
26
+ // 'backend.authenticated',
27
+ // 'Darryldecode\Backend\Base\Middleware\Authenticate'
28
+ // );
29
+
30
+ $ this ->publishes ([
31
+ __DIR__ .'/Public/backend/cb ' => public_path ('darryldecode/backend/cb ' ),
32
+ __DIR__ .'/Public/backend/vendor ' => public_path ('darryldecode/backend/vendor ' ),
33
+ ], 'public ' );
34
+
35
+ $ this ->publishes ([
36
+ __DIR__ .'/Config ' => config_path ('backend ' ),
37
+ ], 'config ' );
38
+
39
+ $ this ->publishes ([
40
+ __DIR__ .'/Database/Migrations ' => database_path ('migrations ' ),
41
+ __DIR__ .'/Database/Seeders ' => database_path ('seeds ' ),
42
+ ], 'migrations ' );
43
+
44
+ $ this ->publishes ([
45
+ __DIR__ .'/Components/Auth/Views ' => base_path ('resources/views/backend/auth ' ),
46
+ ], 'views ' );
47
+ }
48
+
49
+ /**
50
+ * boot backend
51
+ */
52
+ public function bootBackend ()
53
+ {
54
+ // load built-in components
55
+ $ componentLoader = new ComponentLoader (__DIR__ .'/Components ' , new Filesystem ());
56
+ $ builtInComponents = $ componentLoader ->getAvailableComponentInstances ();
57
+
58
+ // load custom components
59
+ $ componentLoader = new ComponentLoader (app_path ().'/Backend/Components ' , new Filesystem ());
60
+ $ customComponents = $ componentLoader ->getAvailableComponentInstances ();
61
+
62
+ // add those loaded components to backend registrar
63
+ $ backendRegistrar = new Registrar ();
64
+
65
+ $ backendRegistrar ->addComponent (array (
66
+ $ builtInComponents
67
+ ));
68
+ $ backendRegistrar ->addComponent (array (
69
+ $ customComponents
70
+ ));
71
+
72
+ // this should be in-order
73
+ $ backendRegistrar ->initRoutes ();
74
+ $ backendRegistrar ->initViews ();
75
+ $ backendRegistrar ->initNavigation ();
76
+ $ backendRegistrar ->initPermissions ();
77
+ $ backendRegistrar ->initAddHeaderScripts ();
78
+ $ backendRegistrar ->initAddFooterScripts ();
79
+
80
+ // load views
81
+ foreach ($ backendRegistrar ->getViewsPaths () as $ view )
82
+ {
83
+ $ this ->loadViewsFrom ($ view ['dir ' ], $ view ['namespace ' ]);
84
+ }
85
+
86
+ // load built-in widgets
87
+ $ builtInWidgetsLoader = new WidgetLoader (__DIR__ .'/Widgets ' , new Filesystem ());
88
+ $ customWidgetsLoader = new WidgetLoader (app_path ().'/Backend/Widgets ' , new Filesystem ());
89
+
90
+ // add widgets
91
+ $ backendRegistrar ->addWidget ($ builtInWidgetsLoader ->getAvailableWidgetInstances ());
92
+ $ backendRegistrar ->addWidget ($ customWidgetsLoader ->getAvailableWidgetInstances ());
93
+
94
+ $ this ->app ['backend ' ] = $ backendRegistrar ;
95
+ }
96
+
97
+ /**
98
+ * Register the service provider.
99
+ *
100
+ * @return void
101
+ */
102
+ public function register ()
103
+ {
104
+ $ this ->app ->singleton ('Darryldecode\Backend\Base\Services\Bus\Dispatcher ' , function ($ app ) {
105
+ return new Dispatcher ($ app );
106
+ });
107
+ $ this ->app ->alias (
108
+ 'Darryldecode\Backend\Base\Services\Bus\Dispatcher ' , 'Darryldecode\Backend\Base\Contracts\Bus\Dispatcher '
109
+ );
110
+ }
111
+ }
0 commit comments