|
4 | 4 |
|
5 | 5 | use Illuminate\Support\Facades\Route; |
6 | 6 | use Illuminate\Support\Str; |
| 7 | +use Javaabu\Cms\Enums\PostTypeFeatures; |
7 | 8 | use Javaabu\Cms\Http\Controllers\PostsController; |
8 | 9 | use Javaabu\Cms\Http\Controllers\Admin\PostsController as AdminPostsController; |
9 | 10 | use Javaabu\Cms\Models\CategoryType; |
| 11 | +use Javaabu\Cms\Models\Post; |
10 | 12 | use Javaabu\Cms\Models\PostType; |
| 13 | +use Javaabu\MenuBuilder\Menu\MenuItem; |
11 | 14 | use Javaabu\Translatable\Facades\Languages; |
12 | 15 |
|
13 | 16 | class Cms { |
@@ -112,4 +115,38 @@ public function registerTranslatableAdminRoutes() |
112 | 115 | $this->registerAdminRoutes(); |
113 | 116 | }); |
114 | 117 | } |
| 118 | + |
| 119 | + public function addToSidebar($menus) |
| 120 | + { |
| 121 | + $all_post_types = PostType::all(); |
| 122 | + |
| 123 | + foreach ($all_post_types as $post_type) { |
| 124 | + $name = Str::title($post_type->name_en); |
| 125 | + $children = [ |
| 126 | + MenuItem::make($name) |
| 127 | + ->can('view_' . $post_type->permission_slug) |
| 128 | + ->active(optional(request()->route('post_type'))->slug == $post_type->slug) |
| 129 | + ->url(translate_route('admin.posts.index', $post_type->slug)) |
| 130 | + ->icon('zmdi-' . $post_type->icon) |
| 131 | + ->count(Post::query()->userVisibleForPostType($post_type)->postType($post_type->slug)->pending()), |
| 132 | + ]; |
| 133 | + |
| 134 | + if ($post_type->hasFeature(PostTypeFeatures::CATEGORIES)) { |
| 135 | + $children[] = MenuItem::make(_d(':name Categories', ['name' => Str::singular($name)])) |
| 136 | + ->can('view_' . Str::singular($post_type->permission_slug) . '_categories') |
| 137 | + ->url(translate_route('admin.categories.index', Str::singular($post_type->slug) . '-categories')) |
| 138 | + ->active(optional(request()->route('category_type'))->slug == Str::singular($post_type->slug) . '-categories'); |
| 139 | + |
| 140 | + $menus[] = |
| 141 | + MenuItem::make($name) |
| 142 | + ->icon('zmdi-' . $post_type->icon) |
| 143 | + ->can('view_' . $post_type->permission_slug) |
| 144 | + ->children($children); |
| 145 | + } else { |
| 146 | + $menus = array_merge($menus, $children); |
| 147 | + } |
| 148 | + } |
| 149 | + |
| 150 | + return $menus; |
| 151 | + } |
115 | 152 | } |
0 commit comments