/** * 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()); }