/**
  * @param \Illuminate\Routing\Router $router
  */
 protected function registerMacros(Router $router)
 {
     $router->macro('redirect', function ($url, $action) use($router) {
         $router->get($url, function () use($action) {
             return redirect()->action($action);
         });
     });
     $router->macro('module', function ($slug, $className, $sortable = false) use($router) {
         if ($sortable) {
             $router->patch("{$slug}/changeOrder", "{$className}Controller@changeOrder");
         }
         $router->resource($slug, "{$className}Controller");
     });
     $router->macro('articleList', function ($technicalNamePrefix, $action) use($router) {
         $articles = Article::getWithTechnicalNameLike($technicalNamePrefix);
         $router->get(app()->getLocale() . '/' . fragment_slug("navigation.{$technicalNamePrefix}"), function () use($articles) {
             return redirect(route("{$articles->first()->technical_name}"));
         })->name($technicalNamePrefix);
         $articles->map(function ($article) use($technicalNamePrefix, $action, $router) {
             $router->get(app()->getLocale() . '/' . fragment_slug("navigation.{$technicalNamePrefix}") . '/' . $article->url, $action)->name("{$article->technical_name}");
         });
     });
 }