/**
  * On update, update children uris.
  *
  * @param Page $model
  *
  * @return void
  */
 public function updating(Page $model)
 {
     if ($model->isDirty('parent_id')) {
         foreach (config('translatable.locales') as $locale) {
             $model->translate($locale)->uri = '';
         }
     }
 }
 /**
  * Recursive method for emptying children’s uri
  * UriObserver will rebuild uris.
  *
  * @param Page $page
  *
  * @return void
  */
 public function resetChildrenUri(Page $page)
 {
     foreach ($page->children as $childPage) {
         foreach (config('translatable.locales') as $locale) {
             if (is_null($page->translate($locale)->uri)) {
                 $childPage->translate($locale)->uri = null;
             } else {
                 $childPage->translate($locale)->uri = '';
             }
         }
         $childPage->save();
         $this->resetChildrenUri($childPage);
     }
 }
 /**
  * If a new homepage is defined, cancel previous homepage.
  *
  * @param Model $model eloquent
  *
  * @return void
  */
 public function saving(Page $model)
 {
     if ($model->is_home) {
         $query = Page::withoutGlobalScopes()->where('is_home', 1);
         if ($model->id) {
             $query->where('id', '!=', $model->id);
         }
         $query->update(['is_home' => 0]);
     }
 }
 public function boot()
 {
     $this->mergeConfigFrom(__DIR__ . '/../config/config.php', 'typicms.pages');
     $modules = $this->app['config']['typicms']['modules'];
     $this->app['config']->set('typicms.modules', array_merge(['pages' => []], $modules));
     $this->loadViewsFrom(__DIR__ . '/../resources/views/', 'pages');
     $this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'pages');
     $this->publishes([__DIR__ . '/../resources/views' => base_path('resources/views/vendor/pages')], 'views');
     $this->publishes([__DIR__ . '/../database' => base_path('database')], 'migrations');
     AliasLoader::getInstance()->alias('Pages', 'TypiCMS\\Modules\\Pages\\Shells\\Facades\\Facade');
     // Observers
     Page::observe(new FileObserver());
     Page::observe(new HomePageObserver());
     Page::observe(new SortObserver());
     Page::observe(new AddToMenuObserver());
     PageTranslation::observe(new UriObserver());
 }