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