Пример #1
0
 /**
  * @param $model
  */
 public function handle($model)
 {
     if ($model instanceof MenuHookable) {
         //find the menu item
         if ($model instanceof Page) {
             $items = MenuItem::where('page_id', $model->id)->get();
         }
         $translations = $model->getMenuLocalisedNames();
         foreach ($items as $item) {
             //foreach locale, see if the translation in the menu item is set
             //if not, update the item with the data from the menu hookable item
             $payload = [];
             foreach ($this->account->locales as $locale) {
                 $translation = $item->translateOrNew($locale->slug);
                 if (empty($translation->name)) {
                     $payload[$locale->slug] = ['name' => $translations[$locale->slug]];
                 }
             }
             $this->menu->updateItem($item, $payload);
         }
     }
 }
Пример #2
0
 public function run()
 {
     foreach (MenuItem::all() as $item) {
         $item->delete();
     }
     foreach (Menu::all() as $menu) {
         $menu->delete();
     }
     foreach ([1, 2] as $account) {
         $menu = Menu::create(['name' => 'primary menu', 'account_id' => $account]);
         Menu::create(['name' => 'footer menu', 'account_id' => $account]);
         MenuItem::create(['menu_id' => $menu->id, 'url' => 'http://google.be', 'target_blank' => true, 'nl' => ['name' => 'test'], 'fr' => ['name' => 'test'], 'de' => ['name' => 'test'], 'en' => ['name' => 'test']]);
         $shop = MenuItem::create(['menu_id' => $menu->id, 'url' => '/shop', 'target_blank' => false, 'nl' => ['name' => 'shop'], 'fr' => ['name' => 'shop'], 'de' => ['name' => 'shop'], 'en' => ['name' => 'shop']]);
         MenuItem::create(['menu_id' => $menu->id, 'url' => '/blog', 'target_blank' => false, 'nl' => ['name' => 'nieuws'], 'fr' => ['name' => 'nieuws'], 'de' => ['name' => 'nieuws'], 'en' => ['name' => 'news']]);
         MenuItem::create(['menu_id' => $menu->id, 'url' => '/portfolio', 'target_blank' => false, 'nl' => ['name' => 'onze werken'], 'fr' => ['name' => 'onze werken'], 'de' => ['name' => 'onze werken'], 'en' => ['name' => 'projects']]);
         MenuItem::create(['menu_id' => $menu->id, 'url' => '/team', 'target_blank' => false, 'nl' => ['name' => 'onze kraks'], 'fr' => ['name' => 'onze kraks'], 'de' => ['name' => 'onze kraks'], 'en' => ['name' => 'about']]);
         MenuItem::create(['menu_id' => $menu->id, 'url' => '/contact', 'target_blank' => false, 'nl' => ['name' => 'contact'], 'fr' => ['name' => 'contact'], 'de' => ['name' => 'contact'], 'en' => ['name' => 'contact']]);
         MenuItem::create(['menu_id' => $menu->id, 'parent_id' => $shop->id, 'url' => '/shop/tv-vision', 'target_blank' => false, 'nl' => ['name' => 'TV / vision'], 'fr' => ['name' => 'TV / vision'], 'de' => ['name' => 'TV / vision'], 'en' => ['name' => 'TV / vision']]);
         MenuItem::create(['menu_id' => $menu->id, 'parent_id' => $shop->id, 'url' => '/shop/telefonie-mobile', 'target_blank' => false, 'nl' => ['name' => 'telefonie / mobile'], 'fr' => ['name' => 'telefonie / mobile'], 'de' => ['name' => 'telefonie / mobile'], 'en' => ['name' => 'phone / mobile']]);
         MenuItem::create(['menu_id' => $menu->id, 'parent_id' => $shop->id, 'url' => '/shop/computer-tablets', 'target_blank' => false, 'nl' => ['name' => 'computer / tablets'], 'fr' => ['name' => 'computer / tablets'], 'de' => ['name' => 'computer / tablets'], 'en' => ['name' => 'computer / tablets']]);
         MenuItem::create(['menu_id' => $menu->id, 'parent_id' => $shop->id, 'url' => '/shop/office-gps', 'target_blank' => false, 'nl' => ['name' => 'office / gps'], 'fr' => ['name' => 'office / gps'], 'de' => ['name' => 'office / gps'], 'en' => ['name' => 'office / gps']]);
         MenuItem::create(['menu_id' => $menu->id, 'parent_id' => $shop->id, 'url' => '/shop/huishoud', 'target_blank' => false, 'nl' => ['name' => 'huishoud'], 'fr' => ['name' => 'huishoud'], 'de' => ['name' => 'huishoud'], 'en' => ['name' => 'household']]);
     }
 }
Пример #3
0
 /**
  * @param Menu $menu
  * @param MenuItem $item
  * @return
  */
 public function destroy(Menu $menu, MenuItem $item)
 {
     //make sure to load the relationships, so we can use them to make that type of resource available again.
     //example: when deleting a menuitem refering to a page,
     //we need to make the page available again in the UI.
     //if we load it, before deleting, the page object will be there in the response.
     $item->load(['page', 'page.translations', 'route', 'route.translations']);
     return $this->menu->deleteItem($item);
 }
Пример #4
0
 /**
  * @param MenuItem $item
  * @return MenuItem
  * @throws \Exception
  */
 public function deleteItem(MenuItem $item)
 {
     if ($item->delete()) {
         //set 0 for angular
         $item->id = 0;
     }
     return $item;
 }