diff --git a/app/Http/Controllers/WorldController.php b/app/Http/Controllers/WorldController.php index e2488573da..81d030f74f 100644 --- a/app/Http/Controllers/WorldController.php +++ b/app/Http/Controllers/WorldController.php @@ -475,6 +475,35 @@ public function getFeatureDetail($id) { ]); } + /** + * Shows the visual trait list for all traits. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function getKitchenSinkFeatures(Request $request) { + $categories = FeatureCategory::orderBy('sort', 'DESC')->get(); + $rarities = Rarity::orderBy('sort', 'ASC')->get(); + + $features = count($categories) ? + $query = Feature::visible(Auth::user() ?? null)->orderByRaw('FIELD(feature_category_id,'.implode(',', $categories->pluck('id')->toArray()).')') + ->orderByRaw('FIELD(rarity_id,'.implode(',', $rarities->pluck('id')->toArray()).')') + ->orderBy('has_image', 'DESC') + ->orderBy('name') + ->get() + ->groupBy(['feature_category_id', 'id']) : + $query = Feature::visible(Auth::user() ?? null)->orderByRaw('FIELD(rarity_id,'.implode(',', $rarities->pluck('id')->toArray()).')') + ->orderBy('has_image', 'DESC') + ->orderBy('name') + ->get() + ->groupBy(['feature_category_id', 'id']); + + return view('world.kitchensink_features', [ + 'categories' => $categories->keyBy('id'), + 'rarities' => $rarities->keyBy('id'), + 'features' => $features, + ]); + } + /** * Shows the items page. * diff --git a/config/lorekeeper/extensions.php b/config/lorekeeper/extensions.php index 69b65bde8b..57b88f9cc6 100644 --- a/config/lorekeeper/extensions.php +++ b/config/lorekeeper/extensions.php @@ -27,12 +27,14 @@ * Species Trait Index - Mercury * Subtype Trait Index - Speedy * Universal Trait Index - CHERVB + * All Traits Index (Kitchen Sink Index) - Speedy * Trait Modals addition - Moif */ 'visual_trait_index' => [ 'enable_species_index' => 0, // Enables the Species Trait Index 'enable_subtype_index' => 0, // Enables the Subtype Trait Index 'enable_universal_index' => 0, // Enables the Universal Trait Index + 'enable_all_trait_index' => 0, // Enables the All Traits Index 'trait_modals' => 0, // Enables modals when you click on a trait for more info instead of linking to the traits page ], diff --git a/package-lock.json b/package-lock.json index 40cf12f902..16a90ea2d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "lk-fork", + "name": "lorekeeper", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/resources/views/pages/credits.blade.php b/resources/views/pages/credits.blade.php index 6d85800732..6dcdf11efe 100644 --- a/resources/views/pages/credits.blade.php +++ b/resources/views/pages/credits.blade.php @@ -92,6 +92,10 @@ Aliases on Userpage by Speedy ({{ config('lorekeeper.extensions.aliases_on_userpage') ? 'Enabled' : 'Disabled' }})
++ All Trait Index by Speedy + ({{ config('lorekeeper.extensions.visual_trait_index.enable_all_trait_index') ? 'Enabled' : 'Disabled' }}) +
Auto-populate New Image Traits by itinerare ({{ config('lorekeeper.extensions.autopopulate_image_features') ? 'Enabled' : 'Disabled' }}) diff --git a/resources/views/world/_sidebar.blade.php b/resources/views/world/_sidebar.blade.php index 13a6f5ec4d..c5b7bb8433 100644 --- a/resources/views/world/_sidebar.blade.php +++ b/resources/views/world/_sidebar.blade.php @@ -10,6 +10,9 @@ @if (config('lorekeeper.extensions.visual_trait_index.enable_universal_index'))
@endif + @if (config('lorekeeper.extensions.visual_trait_index.enable_all_trait_index')) + + @endifThis is a visual index of all traits. Click a trait to view more info on it!
+ + @include('world._features_index', ['features' => $features, 'showSubtype' => true]) +@endsection + +@section('scripts') + @if (config('lorekeeper.extensions.visual_trait_index.trait_modals')) + @include('world._features_index_modal_js') + @endif +@endsection diff --git a/routes/lorekeeper/browse.php b/routes/lorekeeper/browse.php index 6d00e32dd3..c3a254a998 100644 --- a/routes/lorekeeper/browse.php +++ b/routes/lorekeeper/browse.php @@ -111,6 +111,7 @@ Route::get('species/{id}/traits', 'WorldController@getSpeciesFeatures'); Route::get('subtypes/{id}/traits', 'WorldController@getSubtypeFeatures'); Route::get('universaltraits', 'WorldController@getUniversalFeatures'); + Route::get('kitchensink', 'WorldController@getKitchenSinkFeatures'); Route::get('item-categories', 'WorldController@getItemCategories'); Route::get('items', 'WorldController@getItems'); Route::get('items/{id}', 'WorldController@getItem');