-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathThemeServiceProvider.php
99 lines (88 loc) · 2.14 KB
/
ThemeServiceProvider.php
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
<?php
namespace Litepie\Theme;
use Illuminate\Support\ServiceProvider;
class ThemeServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = false;
/**
* Bootstrap the application events.
*
* @return void
*/
public function boot()
{
if ($this->app->runningInConsole()) {
$this->commands([
\Litepie\Theme\Console\ThemePublishCommand::class,
]);
}
$this->publishResources();
$this->app['view.finder']->prependLocation(base_path($this->app['theme']->path().'/view'));
}
/**
* Register service provider.
*
* @return void
*/
public function register()
{
$this->mergeConfigFrom(__DIR__.'/config.php', 'theme');
$this->app->singleton('view.finder', function ($app) {
return new \Litepie\Theme\ThemeViewFinder(
$app['files'],
$app['config']['view.paths'],
null
);
});
$this->app['view']->setFinder($this->app['view.finder']);
// Register providers.
$this->registerAsset();
$this->registerTheme();
}
/**
* Register asset provider.
*
* @return void
*/
public function registerAsset()
{
$this->app->singleton('asset', function ($app) {
return new Asset();
});
}
/**
* Register theme provider.
*
* @return void
*/
public function registerTheme()
{
$this->app->singleton('theme', function ($app) {
return new Theme($app['events'], $app['asset'], $app['files']);
});
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return ['asset', 'theme'];
}
/**
* Publish resources.
*
* @return void
*/
private function publishResources()
{
// Publish configuration file
$this->publishes([__DIR__.'/config.php' => config_path('theme.php')], 'config');
}
}