*/ namespace Modules\MMFCustomersGroups\Providers; use Eventy; use View; use Illuminate\Support\ServiceProvider; use Modules\MMFCustomersGroups\Entities\Mailbox; class MMFCustomersGroupsServiceProvider extends ServiceProvider { /** * Indicates if loading of the provider is deferred. * * @var bool */ protected $defer = false; /** * Boot the application events. * * @return void */ public function boot() { $this->registerConfig(); $this->registerViews(); $this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); $this->hooks(); } /** * Register config. * * @return void */ protected function registerConfig() { $this->publishes([ __DIR__.'/../Config/config.php' => config_path('mmfcustomersgroups.php'), ], 'config'); $this->mergeConfigFrom( __DIR__.'/../Config/config.php', 'mmfcustomersgroups' ); } /** * Get the services provided by the provider. * * @return array */ public function provides() { return []; } /** * Register views. * * @return void */ public function registerViews() { $viewPath = resource_path('views/modules/mmfcustomersgroups'); $sourcePath = __DIR__.'/../Resources/views'; $this->publishes([ $sourcePath => $viewPath, ],'views'); $this->loadViewsFrom(array_merge(array_map(function ($path) { return $path . '/modules/mmfcustomersgroups'; }, \Config::get('view.paths')), [$sourcePath]), 'mmfcustomersgroups'); } /** * Module hooks. */ public function hooks() { // Add a menu entry to manage the customer groups. Eventy::addAction('menu.manage.after_mailboxes', function() { echo View::make('mmfcustomersgroups::partials/menu', [])->render(); }); // Add a list of customer groups to select from when writing a new conversation. Eventy::addAction('conversation.create_form.before_subject', function($conversation, $mailbox, $thread) { // We must fetch a fresh Mailbox instance, // as the one that has been passed does not have a "groups" relationship. $mailbox = Mailbox::find($mailbox->id); $groups = $mailbox->groups; echo View::make( 'mmfcustomersgroups::conversations/partials/groups-selection', [ 'groups' => $groups, ], )->render(); }, 20, 3); } }