From 2b3daf2977a14c227c7f0993cc9af8fc56099b57 Mon Sep 17 00:00:00 2001 From: preimpression Date: Tue, 4 Aug 2020 23:28:28 -0400 Subject: [PATCH 1/6] Fixes 500 error when attempting to credit or debit currency from a non-user owned character: a character owned by someone only connected via a deviantArt Alias. --- app/Services/CurrencyManager.php | 84 +++++++++++++++++--------------- 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/app/Services/CurrencyManager.php b/app/Services/CurrencyManager.php index 01a004efe0..4f7e8e14c5 100644 --- a/app/Services/CurrencyManager.php +++ b/app/Services/CurrencyManager.php @@ -46,7 +46,7 @@ public function grantUserCurrencies($data, $staff) if(!$currency) throw new \Exception("Invalid currency selected."); if(!$currency->is_user_owned) throw new \Exception("This currency cannot be held by users."); - if($data['quantity'] < 0) + if($data['quantity'] < 0) foreach($users as $user) { $this->debitCurrency($user, $staff, 'Staff Removal', $data['data'], $currency, -$data['quantity']); Notifications::create('CURRENCY_REMOVAL', $user, [ @@ -68,7 +68,7 @@ public function grantUserCurrencies($data, $staff) } return $this->commitReturn(true); - } catch(\Exception $e) { + } catch(\Exception $e) { $this->setError('error', $e->getMessage()); } return $this->rollbackReturn(false); @@ -98,34 +98,38 @@ public function grantCharacterCurrencies($data, $character, $staff) if(!$currency->is_character_owned) throw new \Exception("This currency cannot be held by characters."); if($data['quantity'] < 0) { $this->debitCurrency($character, $staff, 'Staff Removal', $data['data'], $currency, -$data['quantity']); - Notifications::create('CHARACTER_CURRENCY_REMOVAL', $character->user, [ - 'currency_name' => $currency->name, - 'currency_quantity' => -$data['quantity'], - 'sender_url' => $staff->url, - 'sender_name' => $staff->name, - 'character_name' => $character->fullName, - 'character_slug' => $character->slug - ]); + if(isset($character->user)) { + Notifications::create('CHARACTER_CURRENCY_REMOVAL', $character->user, [ + 'currency_name' => $currency->name, + 'currency_quantity' => -$data['quantity'], + 'sender_url' => $staff->url, + 'sender_name' => $staff->name, + 'character_name' => $character->fullName, + 'character_slug' => $character->slug + ]); + } } else{ $this->creditCurrency($staff, $character, 'Staff Grant', $data['data'], $currency, $data['quantity']); - Notifications::create('CHARACTER_CURRENCY_GRANT', $character->user, [ - 'currency_name' => $currency->name, - 'currency_quantity' => $data['quantity'], - 'sender_url' => $staff->url, - 'sender_name' => $staff->name, - 'character_name' => $character->fullName, - 'character_slug' => $character->slug - ]); + if(isset($character->user)) { + Notifications::create('CHARACTER_CURRENCY_GRANT', $character->user, [ + 'currency_name' => $currency->name, + 'currency_quantity' => $data['quantity'], + 'sender_url' => $staff->url, + 'sender_name' => $staff->name, + 'character_name' => $character->fullName, + 'character_slug' => $character->slug + ]); + } } return $this->commitReturn(true); - } catch(\Exception $e) { + } catch(\Exception $e) { $this->setError('error', $e->getMessage()); } return $this->rollbackReturn(false); } - + /** * Transfers currency between users. * @@ -148,10 +152,10 @@ public function transferCurrency($sender, $recipient, $currency, $quantity) if($this->debitCurrency($sender, $recipient, null, null, $currency, $quantity) && - $this->creditCurrency($sender, $recipient, null, null, $currency, $quantity)) + $this->creditCurrency($sender, $recipient, null, null, $currency, $quantity)) { $this->createLog($sender->id, $sender->logType, $recipient->id, $recipient->logType, 'User Transfer', null, $currency->id, $quantity); - + Notifications::create('CURRENCY_TRANSFER', $recipient, [ 'currency_name' => $currency->name, 'currency_quantity' => $quantity, @@ -160,12 +164,12 @@ public function transferCurrency($sender, $recipient, $currency, $quantity) ]); return $this->commitReturn(true); } - } catch(\Exception $e) { + } catch(\Exception $e) { $this->setError('error', $e->getMessage()); } return $this->rollbackReturn(false); } - + /** * Transfers currency between a user and character. * @@ -189,23 +193,23 @@ public function transferCharacterCurrency($sender, $recipient, $currency, $quant if($this->debitCurrency($sender, $recipient, null, null, $currency, $quantity) && - $this->creditCurrency($sender, $recipient, null, null, $currency, $quantity)) + $this->creditCurrency($sender, $recipient, null, null, $currency, $quantity)) { $this->createLog($sender->id, $sender->logType, $recipient->id, $recipient->logType, $sender->logType == 'User' ? 'User → Character Transfer' : 'Character → User Transfer', null, $currency->id, $quantity); return $this->commitReturn(true); } - } catch(\Exception $e) { + } catch(\Exception $e) { $this->setError('error', $e->getMessage()); } return $this->rollbackReturn(false); } - + /** * Credits currency to a user or character. * * @param \App\Models\User\User|\App\Models\Character\Character $sender * @param \App\Models\User\User|\App\Models\Character\Character $recipient - * @param string $type + * @param string $type * @param string $data * @param \App\Models\Currency\Currency $currency * @param int $quantity @@ -237,23 +241,23 @@ public function creditCurrency($sender, $recipient, $type, $data, $currency, $qu $record = CharacterCurrency::create(['character_id' => $recipient->id, 'currency_id' => $currency->id, 'quantity' => $quantity]); } } - if($type && !$this->createLog($sender ? $sender->id : null, $sender ? $sender->logType : null, - $recipient ? $recipient->id : null, $recipient ? $recipient->logType : null, + if($type && !$this->createLog($sender ? $sender->id : null, $sender ? $sender->logType : null, + $recipient ? $recipient->id : null, $recipient ? $recipient->logType : null, $type, $data, $currency->id, $quantity)) throw new \Exception("Failed to create log."); return $this->commitReturn(true); - } catch(\Exception $e) { + } catch(\Exception $e) { $this->setError('error', $e->getMessage()); } return $this->rollbackReturn(false); } - + /** * Debits currency from a user or character. * * @param \App\Models\User\User|\App\Models\Character\Character $sender * @param \App\Models\User\User|\App\Models\Character\Character $recipient - * @param string $type + * @param string $type * @param string $data * @param \App\Models\Currency\Currency $currency * @param int $quantity @@ -278,18 +282,18 @@ public function debitCurrency($sender, $recipient, $type, $data, $currency, $qua // Laravel doesn't support composite primary keys, so directly updating the DB row here DB::table('character_currencies')->where('character_id', $sender->id)->where('currency_id', $currency->id)->update(['quantity' => $record->quantity - $quantity]); } - - if($type && !$this->createLog($sender ? $sender->id : null, $sender ? $sender->logType : null, - $recipient ? $recipient->id : null, $recipient ? $recipient->logType : null, + + if($type && !$this->createLog($sender ? $sender->id : null, $sender ? $sender->logType : null, + $recipient ? $recipient->id : null, $recipient ? $recipient->logType : null, $type, $data, $currency->id, -$quantity)) throw new \Exception("Failed to create log."); return $this->commitReturn(true); - } catch(\Exception $e) { + } catch(\Exception $e) { $this->setError('error', $e->getMessage()); } return $this->rollbackReturn(false); } - + /** * Creates a currency log. * @@ -297,7 +301,7 @@ public function debitCurrency($sender, $recipient, $type, $data, $currency, $qua * @param string $senderType * @param int $recipientId * @param string $recipientType - * @param string $type + * @param string $type * @param string $data * @param int $currencyId * @param int $quantity @@ -321,4 +325,4 @@ public function createLog($senderId, $senderType, $recipientId, $recipientType, ] ); } -} \ No newline at end of file +} From 708ef72dd403faf69b7ca4f57150b5b73ce81722 Mon Sep 17 00:00:00 2001 From: preimpression Date: Tue, 4 Aug 2020 23:41:23 -0400 Subject: [PATCH 2/6] Only allow staff who have the powers to actually affect queues, view queues on the admin panel page. --- resources/views/admin/index.blade.php | 187 ++++++++++++++------------ 1 file changed, 101 insertions(+), 86 deletions(-) diff --git a/resources/views/admin/index.blade.php b/resources/views/admin/index.blade.php index 14c93c5698..d95556fdac 100644 --- a/resources/views/admin/index.blade.php +++ b/resources/views/admin/index.blade.php @@ -7,92 +7,107 @@

Admin Dashboard

-
-
-
-
Prompt Submissions @if($submissionCount){{ $submissionCount }}@endif
-

- @if($submissionCount) - {{ $submissionCount }} submission{{ $submissionCount == 1 ? '' : 's' }} awaiting processing. - @else - The submission queue is clear. Hooray! - @endif -

- -
-
-
-
-
-
-
Claims @if($claimCount){{ $claimCount }}@endif
-

- @if($claimCount) - {{ $claimCount }} claim{{ $claimCount == 1 ? '' : 's' }} awaiting processing. - @else - The claim queue is clear. Hooray! - @endif -

- -
-
-
-
-
-
-
Design Updates @if($designCount){{ $designCount }}@endif
-

- @if($designCount) - {{ $designCount }} design update{{ $designCount == 1 ? '' : 's' }} awaiting processing. - @else - The design update approval queue is clear. Hooray! - @endif -

- -
-
-
-
-
-
-
MYO Approvals @if($myoCount){{ $myoCount }}@endif
-

- @if($myoCount) - {{ $myoCount }} MYO slot{{ $myoCount == 1 ? '' : 's' }} awaiting processing. - @else - The MYO slot approval queue is clear. Hooray! - @endif -

- -
-
-
- @if($openTransfersQueue) -
-
-
-
Character Transfers @if($transferCount + $tradeCount){{ $transferCount + $tradeCount }}@endif
-

- @if($transferCount + $tradeCount) - {{ $transferCount + $tradeCount }} character transfer{{$transferCount + $tradeCount == 1 ? '' : 's' }} and/or trade{{$transferCount + $tradeCount == 1 ? '' : 's' }} awaiting processing. - @else - The character transfer/trade queue is clear. Hooray! - @endif -

- -
-
-
+ @if (Auth::user()->hasPower('manage_submissions')) +
+
+
+
Prompt Submissions @if($submissionCount){{ $submissionCount }}@endif
+

+ @if($submissionCount) + {{ $submissionCount }} submission{{ $submissionCount == 1 ? '' : 's' }} awaiting processing. + @else + The submission queue is clear. Hooray! + @endif +

+ +
+
+
+
+
+
+
Claims @if($claimCount){{ $claimCount }}@endif
+

+ @if($claimCount) + {{ $claimCount }} claim{{ $claimCount == 1 ? '' : 's' }} awaiting processing. + @else + The claim queue is clear. Hooray! + @endif +

+ +
+
+
+ @endif + @if (Auth::user()->hasPower('manage_characters')) +
+
+
+
Design Updates @if($designCount){{ $designCount }}@endif
+

+ @if($designCount) + {{ $designCount }} design update{{ $designCount == 1 ? '' : 's' }} awaiting processing. + @else + The design update approval queue is clear. Hooray! + @endif +

+ +
+
+
+
+
+
+
MYO Approvals @if($myoCount){{ $myoCount }}@endif
+

+ @if($myoCount) + {{ $myoCount }} MYO slot{{ $myoCount == 1 ? '' : 's' }} awaiting processing. + @else + The MYO slot approval queue is clear. Hooray! + @endif +

+ +
+
+
+ @if($openTransfersQueue) +
+
+
+
Character Transfers @if($transferCount + $tradeCount){{ $transferCount + $tradeCount }}@endif
+

+ @if($transferCount + $tradeCount) + {{ $transferCount + $tradeCount }} character transfer{{$transferCount + $tradeCount == 1 ? '' : 's' }} and/or trade{{$transferCount + $tradeCount == 1 ? '' : 's' }} awaiting processing. + @else + The character transfer/trade queue is clear. Hooray! + @endif +

+ +
+
+
+ @endif + @endif + @if (!Auth::user()->hasPower('manage_submissions') && !Auth::user()->hasPower('manage_characters')) +
+
You do not have a rank that allows you to access any queues.
+

+ Refer to the sidebar for what you can access as a staff member. +

+

+ If you believe this to be in error, contact your site administrator. +

+
@endif
@endsection From c0d840b87b8d4806f4f67b5aaf7ea210726a70ba Mon Sep 17 00:00:00 2001 From: preimpression Date: Wed, 12 Aug 2020 16:46:04 -0400 Subject: [PATCH 3/6] Functioning for Edit Features Modal --- .../Characters/CharacterImageController.php | 19 ++++++-- .../admin/_edit_features_modal.blade.php | 13 +++++- .../admin/_edit_features_subtype.blade.php | 2 + routes/lorekeeper/admin.php | 46 ++++++++++--------- 4 files changed, 52 insertions(+), 28 deletions(-) create mode 100644 resources/views/character/admin/_edit_features_subtype.blade.php diff --git a/app/Http/Controllers/Admin/Characters/CharacterImageController.php b/app/Http/Controllers/Admin/Characters/CharacterImageController.php index f3fc01f3aa..5b483850b3 100644 --- a/app/Http/Controllers/Admin/Characters/CharacterImageController.php +++ b/app/Http/Controllers/Admin/Characters/CharacterImageController.php @@ -83,11 +83,13 @@ public function postNewImage(Request $request, CharacterManager $service, $slug) */ public function getEditImageFeatures($id) { + $image = CharacterImage::find($id); + return view('character.admin._edit_features_modal', [ - 'image' => CharacterImage::find($id), + 'image' => $image, 'rarities' => ['0' => 'Select Rarity'] + Rarity::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), 'specieses' => ['0' => 'Select Species'] + Species::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), - 'subtypes' => ['0' => 'Select Subtype'] + Subtype::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + 'subtypes' => ['0' => 'Select Subtype'] + Subtype::where('species_id','=',$image->species_id)->orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), 'features' => Feature::orderBy('name')->pluck('name', 'id')->toArray() ]); } @@ -114,6 +116,15 @@ public function postEditImageFeatures(Request $request, CharacterManager $servic return redirect()->back()->withInput(); } + public function getEditImageSubtype(Request $request) { + $species = $request->input('species'); + $id = $request->input('id'); + return view('character.admin._edit_features_subtype', [ + 'image' => CharacterImage::find($id), + 'subtypes' => ['0' => 'Select Subtype'] + Subtype::where('species_id','=',$species)->orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + ]); + } + /** * Shows the edit image notes modal. * @@ -253,7 +264,7 @@ public function getImageActive($id) 'image' => CharacterImage::find($id), ]); } - + /** * Sets an image to be the character's active image. @@ -288,7 +299,7 @@ public function getImageDelete($id) 'image' => CharacterImage::find($id), ]); } - + /** * Deletes an image. * diff --git a/resources/views/character/admin/_edit_features_modal.blade.php b/resources/views/character/admin/_edit_features_modal.blade.php index b6b14c4f22..b042696f05 100644 --- a/resources/views/character/admin/_edit_features_modal.blade.php +++ b/resources/views/character/admin/_edit_features_modal.blade.php @@ -4,7 +4,7 @@ {!! Form::select('species_id', $specieses, $image->species_id, ['class' => 'form-control', 'id' => 'species']) !!} -
+
{!! Form::label('Subtype (Optional)') !!} {!! Form::select('subtype_id', $subtypes, $image->subtype_id, ['class' => 'form-control', 'id' => 'subtype']) !!}
@@ -65,4 +65,13 @@ function removeFeatureRow($trigger) { } }); - \ No newline at end of file + $( "#species" ).change(function() { + var species = $('#species').val(); + var id = 'id); ?>'; + $.ajax({ + type: "GET", url: "{{ url('admin/character/image/traits/subtype') }}?species="+species+"&id="+id, dataType: "text" + }).done(function (res) { $("#subtypes").html(res); }).fail(function (jqXHR, textStatus, errorThrown) { alert("AJAX call failed: " + textStatus + ", " + errorThrown); }); + + }); + + diff --git a/resources/views/character/admin/_edit_features_subtype.blade.php b/resources/views/character/admin/_edit_features_subtype.blade.php new file mode 100644 index 0000000000..dd9c410468 --- /dev/null +++ b/resources/views/character/admin/_edit_features_subtype.blade.php @@ -0,0 +1,2 @@ +{!! Form::label('Subtype (Optional)') !!} +{!! Form::select('subtype_id', $subtypes, $image->subtype_id, ['class' => 'form-control', 'id' => 'subtype']) !!} diff --git a/routes/lorekeeper/admin.php b/routes/lorekeeper/admin.php index c62d79db45..f857e84d80 100644 --- a/routes/lorekeeper/admin.php +++ b/routes/lorekeeper/admin.php @@ -16,7 +16,7 @@ # USER LIST Route::group(['middleware' => 'power:edit_user_info'], function() { Route::get('/', 'UserController@getIndex'); - + Route::get('{name}/edit', 'UserController@getUser'); Route::post('{name}/basic', 'UserController@postUserBasicInfo'); Route::post('{name}/alias', 'UserController@postUserAlias'); @@ -95,7 +95,7 @@ Route::post('rarities/edit/{id?}', 'RarityController@postCreateEditRarity'); Route::post('rarities/delete/{id}', 'RarityController@postDeleteRarity'); Route::post('rarities/sort', 'RarityController@postSortRarity'); - + # SPECIES Route::get('species', 'SpeciesController@getIndex'); Route::get('species/create', 'SpeciesController@getCreateSpecies'); @@ -113,7 +113,7 @@ Route::post('subtypes/edit/{id?}', 'SpeciesController@postCreateEditSubtype'); Route::post('subtypes/delete/{id}', 'SpeciesController@postDeleteSubtype'); Route::post('subtypes/sort', 'SpeciesController@postSortSubtypes'); - + # ITEMS Route::get('item-categories', 'ItemController@getIndex'); Route::get('item-categories/create', 'ItemController@getCreateItemCategory'); @@ -123,7 +123,7 @@ Route::post('item-categories/edit/{id?}', 'ItemController@postCreateEditItemCategory'); Route::post('item-categories/delete/{id}', 'ItemController@postDeleteItemCategory'); Route::post('item-categories/sort', 'ItemController@postSortItemCategory'); - + Route::get('items', 'ItemController@getItemIndex'); Route::get('items/create', 'ItemController@getCreateItem'); Route::get('items/edit/{id}', 'ItemController@getEditItem'); @@ -138,7 +138,7 @@ Route::post('items/tag/{id}/{tag}', 'ItemController@postEditItemTag'); Route::get('items/tag/{id}', 'ItemController@getAddItemTag'); Route::post('items/tag/{id}', 'ItemController@postAddItemTag'); - + # SHOPS Route::get('shops', 'ShopController@getIndex'); Route::get('shops/create', 'ShopController@getCreateShop'); @@ -149,7 +149,7 @@ Route::post('shops/stock/{id}', 'ShopController@postEditShopStock'); Route::post('shops/delete/{id}', 'ShopController@postDeleteShop'); Route::post('shops/sort', 'ShopController@postSortShop'); - + # FEATURES (TRAITS) Route::get('trait-categories', 'FeatureController@getIndex'); Route::get('trait-categories/create', 'FeatureController@getCreateFeatureCategory'); @@ -159,7 +159,7 @@ Route::post('trait-categories/edit/{id?}', 'FeatureController@postCreateEditFeatureCategory'); Route::post('trait-categories/delete/{id}', 'FeatureController@postDeleteFeatureCategory'); Route::post('trait-categories/sort', 'FeatureController@postSortFeatureCategory'); - + Route::get('traits', 'FeatureController@getFeatureIndex'); Route::get('traits/create', 'FeatureController@getCreateFeature'); Route::get('traits/edit/{id}', 'FeatureController@getEditFeature'); @@ -177,7 +177,7 @@ Route::post('character-categories/edit/{id?}', 'CharacterCategoryController@postCreateEditCharacterCategory'); Route::post('character-categories/delete/{id}', 'CharacterCategoryController@postDeleteCharacterCategory'); Route::post('character-categories/sort', 'CharacterCategoryController@postSortCharacterCategory'); - + # LOOT TABLES Route::get('loot-tables', 'LootTableController@getIndex'); Route::get('loot-tables/create', 'LootTableController@getCreateLootTable'); @@ -187,7 +187,7 @@ Route::post('loot-tables/create', 'LootTableController@postCreateEditLootTable'); Route::post('loot-tables/edit/{id?}', 'LootTableController@postCreateEditLootTable'); Route::post('loot-tables/delete/{id}', 'LootTableController@postDeleteLootTable'); - + # PROMPTS Route::get('prompt-categories', 'PromptController@getIndex'); Route::get('prompt-categories/create', 'PromptController@getCreatePromptCategory'); @@ -197,7 +197,7 @@ Route::post('prompt-categories/edit/{id?}', 'PromptController@postCreateEditPromptCategory'); Route::post('prompt-categories/delete/{id}', 'PromptController@postDeletePromptCategory'); Route::post('prompt-categories/sort', 'PromptController@postSortPromptCategory'); - + Route::get('prompts', 'PromptController@getPromptIndex'); Route::get('prompts/create', 'PromptController@getCreatePrompt'); Route::get('prompts/edit/{id}', 'PromptController@getEditPrompt'); @@ -252,14 +252,14 @@ Route::group(['prefix' => 'masterlist', 'namespace' => 'Characters', 'middleware' => 'power:manage_characters'], function() { Route::get('create-character', 'CharacterController@getCreateCharacter'); Route::post('create-character', 'CharacterController@postCreateCharacter'); - + Route::get('get-number', 'CharacterController@getPullNumber'); - + Route::get('transfers/{type}', 'CharacterController@getTransferQueue'); Route::get('transfer/{id}', 'CharacterController@getTransferInfo'); Route::get('transfer/act/{id}/{type}', 'CharacterController@getTransferModal'); Route::post('transfer/{id}', 'CharacterController@postTransferQueue'); - + Route::get('trades/{type}', 'CharacterController@getTradeQueue'); Route::get('trade/{id}', 'CharacterController@getTradeInfo'); Route::get('trade/act/{id}/{type}', 'CharacterController@getTradeModal'); @@ -280,6 +280,8 @@ Route::get('image/{id}/traits', 'CharacterImageController@getEditImageFeatures'); Route::post('image/{id}/traits', 'CharacterImageController@postEditImageFeatures'); + Route::get('image/traits/subtype', 'CharacterImageController@getEditImageSubtype'); + Route::get('image/{id}/notes', 'CharacterImageController@getEditImageNotes'); Route::post('image/{id}/notes', 'CharacterImageController@postEditImageNotes'); @@ -288,7 +290,7 @@ Route::get('image/{id}/reupload', 'CharacterImageController@getImageReupload'); Route::post('image/{id}/reupload', 'CharacterImageController@postImageReupload'); - + Route::post('image/{id}/settings', 'CharacterImageController@postImageSettings'); Route::get('image/{id}/active', 'CharacterImageController@getImageActive'); @@ -296,7 +298,7 @@ Route::get('image/{id}/delete', 'CharacterImageController@getImageDelete'); Route::post('image/{id}/delete', 'CharacterImageController@postImageDelete'); - + Route::post('{slug}/images/sort', 'CharacterImageController@postSortImages'); # CHARACTER @@ -311,12 +313,12 @@ Route::get('{slug}/delete', 'CharacterController@getCharacterDelete'); Route::post('{slug}/delete', 'CharacterController@postCharacterDelete'); - + Route::post('{slug}/settings', 'CharacterController@postCharacterSettings'); - + Route::post('{slug}/transfer', 'CharacterController@postTransfer'); }); -// Might rewrite these parts eventually so there's less code duplication... +// Might rewrite these parts eventually so there's less code duplication... Route::group(['prefix' => 'myo', 'namespace' => 'Characters', 'middleware' => 'power:manage_characters'], function() { # CHARACTER Route::get('{id}/stats', 'CharacterController@getEditMyoStats'); @@ -330,9 +332,9 @@ Route::get('{id}/delete', 'CharacterController@getMyoDelete'); Route::post('{id}/delete', 'CharacterController@postMyoDelete'); - + Route::post('{id}/settings', 'CharacterController@postMyoSettings'); - + Route::post('{id}/transfer', 'CharacterController@postMyoTransfer'); }); @@ -347,7 +349,7 @@ Route::get('view/{id}', 'RaffleController@getRaffleTickets'); Route::post('view/ticket/{id}', 'RaffleController@postCreateRaffleTickets'); Route::post('view/ticket/delete/{id}', 'RaffleController@postDeleteRaffleTicket'); - + Route::get('roll/raffle/{id}', 'RaffleController@getRollRaffle'); Route::post('roll/raffle/{id}', 'RaffleController@postRollRaffle'); Route::get('roll/group/{id}', 'RaffleController@getRollRaffleGroup'); @@ -375,4 +377,4 @@ Route::get('edit/{id}/{action}', 'DesignController@getDesignConfirmation')->where('action', 'cancel|approve|reject'); Route::post('edit/{id}/{action}', 'DesignController@postDesign')->where('action', 'cancel|approve|reject'); }); -Route::get('{type}/{status}', 'DesignController@getDesignIndex')->where('type', 'myo-approvals|design-approvals')->where('status', 'pending|approved|rejected'); \ No newline at end of file +Route::get('{type}/{status}', 'DesignController@getDesignIndex')->where('type', 'myo-approvals|design-approvals')->where('status', 'pending|approved|rejected'); From 63583a201cf9e01cc955c644329931fc7c54068f Mon Sep 17 00:00:00 2001 From: preimpression Date: Wed, 12 Aug 2020 17:06:13 -0400 Subject: [PATCH 4/6] Add functionality for Character Creation --- .../Admin/Characters/CharacterController.php | 55 +++++++++++++------ .../_create_character_subtype.blade.php | 2 + .../masterlist/create_character.blade.php | 35 ++++++++---- routes/lorekeeper/admin.php | 3 +- 4 files changed, 65 insertions(+), 30 deletions(-) create mode 100644 resources/views/admin/masterlist/_create_character_subtype.blade.php diff --git a/app/Http/Controllers/Admin/Characters/CharacterController.php b/app/Http/Controllers/Admin/Characters/CharacterController.php index 33cb7317b5..a2fe280681 100644 --- a/app/Http/Controllers/Admin/Characters/CharacterController.php +++ b/app/Http/Controllers/Admin/Characters/CharacterController.php @@ -59,7 +59,7 @@ public function getCreateCharacter() 'userOptions' => User::query()->orderBy('name')->pluck('name', 'id')->toArray(), 'rarities' => ['0' => 'Select Rarity'] + Rarity::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), 'specieses' => ['0' => 'Select Species'] + Species::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), - 'subtypes' => ['0' => 'Select Subtype'] + Subtype::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + 'subtypes' => ['0' => 'Pick a Species First'], 'features' => Feature::orderBy('name')->pluck('name', 'id')->toArray(), 'isMyo' => false ]); @@ -76,12 +76,33 @@ public function getCreateMyo() 'userOptions' => User::query()->orderBy('name')->pluck('name', 'id')->toArray(), 'rarities' => ['0' => 'Select Rarity'] + Rarity::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), 'specieses' => ['0' => 'Select Species'] + Species::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), - 'subtypes' => ['0' => 'Select Subtype'] + Subtype::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + 'subtypes' => ['0' => 'Pick a Species First'], 'features' => Feature::orderBy('name')->pluck('name', 'id')->toArray(), 'isMyo' => true ]); } - + + + + + + /** + * Shows the edit image subtype portion of the modal + * + * @param Request $request + * @return \Illuminate\Contracts\Support\Renderable + */ + public function getCreateCharacterMyoSubtype(Request $request) { + $species = $request->input('species'); + return view('admin.masterlist._create_character_subtype', [ + 'subtypes' => ['0' => 'Select Subtype'] + Subtype::where('species_id','=',$species)->orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + 'isMyo' => $request->input('myo') + ]); + } + + + + /** * Creates a character. * @@ -111,7 +132,7 @@ public function postCreateCharacter(Request $request, CharacterManager $service) } return redirect()->back()->withInput(); } - + /** * Creates an MYO slot. * @@ -246,7 +267,7 @@ public function getEditCharacterDescription($slug) { $this->character = Character::where('slug', $slug)->first(); if(!$this->character) abort(404); - + return view('character.admin._edit_description_modal', [ 'character' => $this->character, 'isMyo' => false @@ -263,7 +284,7 @@ public function getEditMyoDescription($id) { $this->character = Character::where('is_myo_slot', 1)->where('id', $id)->first(); if(!$this->character) abort(404); - + return view('character.admin._edit_description_modal', [ 'character' => $this->character, 'isMyo' => true @@ -448,7 +469,7 @@ public function postMyoDelete(Request $request, CharacterManager $service, $id) foreach($service->errors()->getMessages()['error'] as $error) flash($error)->error(); } return redirect()->back(); - } + } /** * Transfers a character. @@ -462,7 +483,7 @@ public function postTransfer(Request $request, CharacterManager $service, $slug) { $this->character = Character::where('slug', $slug)->first(); if(!$this->character) abort(404); - + if($service->adminTransfer($request->only(['recipient_id', 'recipient_alias', 'cooldown', 'reason']), $this->character, Auth::user())) { flash('Character transferred successfully.')->success(); } @@ -471,7 +492,7 @@ public function postTransfer(Request $request, CharacterManager $service, $slug) } return redirect()->back(); } - + /** * Transfers an MYO slot. * @@ -484,7 +505,7 @@ public function postMyoTransfer(Request $request, CharacterManager $service, $id { $this->character = Character::where('is_myo_slot', 1)->where('id', $id)->first(); if(!$this->character) abort(404); - + if($service->adminTransfer($request->only(['recipient_id', 'cooldown', 'reason']), $this->character, Auth::user())) { flash('Character transferred successfully.')->success(); } @@ -519,7 +540,7 @@ public function getTransferQueue($type) 'tradeCount' => $openTransfersQueue ? Trade::where('status', 'Pending')->count() : 0 ]); } - + /** * Shows the character transfer action modal. * @@ -538,7 +559,7 @@ public function getTransferModal($id, $action) 'cooldown' => Settings::get('transfer_cooldown'), ]); } - + /** * Acts on a transfer in the transfer queue. * @@ -552,7 +573,7 @@ public function postTransferQueue(Request $request, CharacterManager $service, $ if(!Auth::check()) abort(404); $action = $request->get('action'); - + if($service->processTransferQueue($request->only(['action', 'cooldown', 'reason']) + ['transfer_id' => $id], Auth::user())) { flash('Transfer ' . strtolower($action) . 'ed.')->success(); } @@ -578,7 +599,7 @@ public function getTradeQueue($type) else abort(404); $openTransfersQueue = Settings::get('open_transfers_queue'); - + return view('admin.masterlist.character_trades', [ 'trades' => $trades->orderBy('id', 'DESC')->paginate(20), 'tradesQueue' => Settings::get('open_transfers_queue'), @@ -587,7 +608,7 @@ public function getTradeQueue($type) 'tradeCount' => $openTransfersQueue ? Trade::where('status', 'Pending')->count() : 0 ]); } - + /** * Shows the character trade action modal. * @@ -606,7 +627,7 @@ public function getTradeModal($id, $action) 'cooldown' => Settings::get('transfer_cooldown'), ]); } - + /** * Acts on a trade in the trade queue. * @@ -631,7 +652,7 @@ public function postTradeQueue(Request $request, TradeManager $service, $id) } return redirect()->back(); } - + /** * Shows a list of all existing MYO slots. diff --git a/resources/views/admin/masterlist/_create_character_subtype.blade.php b/resources/views/admin/masterlist/_create_character_subtype.blade.php new file mode 100644 index 0000000000..c8f51b9184 --- /dev/null +++ b/resources/views/admin/masterlist/_create_character_subtype.blade.php @@ -0,0 +1,2 @@ +{!! Form::label('Subtype (Optional)') !!} @if($isMyo) {!! add_help('This will lock the slot into a particular subtype. Leave it blank if you would like to give the user a choice, or not select a subtype. The subtype must match the species selected above, and if no species is specified, the subtype will not be applied.') !!} @endif +{!! Form::select('subtype_id', $subtypes, old('subtype_id'), ['class' => 'form-control', 'id' => 'subtype']) !!} diff --git a/resources/views/admin/masterlist/create_character.blade.php b/resources/views/admin/masterlist/create_character.blade.php index 6301ca33f6..b367cc6135 100644 --- a/resources/views/admin/masterlist/create_character.blade.php +++ b/resources/views/admin/masterlist/create_character.blade.php @@ -11,7 +11,7 @@
Creating characters requires at least one character category to be created first, as character categories are used to generate the character code.
-@else +@else {!! Form::open(['url' => 'admin/masterlist/create-'.($isMyo ? 'myo' : 'character'), 'files' => true]) !!} @@ -37,7 +37,7 @@
- {!! Form::label('Owner Alias (Optional)') !!} + {!! Form::label('Owner Alias (Optional)') !!} {!! Form::text('owner_alias', old('owner_alias'), ['class' => 'form-control']) !!}
@@ -61,7 +61,7 @@ {!! Form::label('Number') !!} {!! add_help('This number helps to identify the character and should preferably be unique either within the category, or among all characters.') !!}
{!! Form::text('number', old('number'), ['class' => 'form-control mr-2', 'id' => 'number']) !!} - Pull Next Number + Pull Next Number
@@ -74,7 +74,7 @@ @endif
- {!! Form::label('Description (Optional)') !!} + {!! Form::label('Description (Optional)') !!} @if($isMyo) {!! add_help('This section is for making additional notes about the MYO slot. If there are restrictions for the character that can be created by this slot that cannot be expressed with the options below, use this section to describe them.') !!} @else @@ -91,7 +91,7 @@

Transfer Information

- These are displayed on the {{ $isMyo ? 'MYO slot' : 'character' }}'s profile, but don't have any effect on site functionality except for the following: + These are displayed on the {{ $isMyo ? 'MYO slot' : 'character' }}'s profile, but don't have any effect on site functionality except for the following:
  • If all switches are off, the {{ $isMyo ? 'MYO slot' : 'character' }} cannot be transferred by the user (directly or through trades).
  • If a transfer cooldown is set, the {{ $isMyo ? 'MYO slot' : 'character' }} also cannot be transferred by the user (directly or through trades) until the cooldown is up.
  • @@ -116,17 +116,17 @@
- {!! Form::label('On Transfer Cooldown Until (Optional)') !!} + {!! Form::label('On Transfer Cooldown Until (Optional)') !!} {!! Form::text('transferrable_at', old('transferrable_at'), ['class' => 'form-control', 'id' => 'datepicker']) !!}

Image Upload

- {!! Form::label('Image') !!} + {!! Form::label('Image') !!} @if($isMyo) {!! add_help('This is a cover image for the MYO slot. If left blank, a default image will be used.') !!} - @else + @else {!! add_help('This is the full masterlist image. Note that the image is not protected in any way, so take precautions to avoid art/design theft.') !!} @endif
{!! Form::file('image', ['id' => 'mainImage']) !!}
@@ -191,7 +191,7 @@ {!! Form::textarea('image_description', old('image_description'), ['class' => 'form-control wysiwyg']) !!}
@endif - +

Traits

@@ -199,9 +199,9 @@ {!! Form::select('species_id', $specieses, old('species_id'), ['class' => 'form-control', 'id' => 'species']) !!}
-
+
{!! Form::label('Subtype (Optional)') !!} @if($isMyo) {!! add_help('This will lock the slot into a particular subtype. Leave it blank if you would like to give the user a choice, or not select a subtype. The subtype must match the species selected above, and if no species is specified, the subtype will not be applied.') !!} @endif - {!! Form::select('subtype_id', $subtypes, old('subtype_id'), ['class' => 'form-control', 'id' => 'subtype']) !!} + {!! Form::select('subtype_id', $subtypes, old('subtype_id'), ['class' => 'form-control disabled', 'id' => 'subtype']) !!}
@@ -236,4 +236,15 @@ @if(!$isMyo) @include('widgets._character_code_js') @endif -@endsection \ No newline at end of file + + + +@endsection diff --git a/routes/lorekeeper/admin.php b/routes/lorekeeper/admin.php index f857e84d80..aa64c026fb 100644 --- a/routes/lorekeeper/admin.php +++ b/routes/lorekeeper/admin.php @@ -267,6 +267,8 @@ Route::get('create-myo', 'CharacterController@getCreateMyo'); Route::post('create-myo', 'CharacterController@postCreateMyo'); + + Route::get('check-subtype', 'CharacterController@getCreateCharacterMyoSubtype'); }); Route::group(['prefix' => 'character', 'namespace' => 'Characters', 'middleware' => 'power:edit_inventories'], function() { Route::post('{slug}/grant', 'GrantController@postCharacterCurrency'); @@ -279,7 +281,6 @@ Route::get('image/{id}/traits', 'CharacterImageController@getEditImageFeatures'); Route::post('image/{id}/traits', 'CharacterImageController@postEditImageFeatures'); - Route::get('image/traits/subtype', 'CharacterImageController@getEditImageSubtype'); Route::get('image/{id}/notes', 'CharacterImageController@getEditImageNotes'); From 57c9ec54f3c74c0034f3c09e4548ea89023ba147 Mon Sep 17 00:00:00 2001 From: preimpression Date: Wed, 12 Aug 2020 19:12:33 -0400 Subject: [PATCH 5/6] New Image and Design Update --- .../Characters/CharacterImageController.php | 23 +++++++++- .../Characters/DesignController.php | 45 +++++++++++++------ .../admin/_upload_image_subtype.blade.php | 2 + .../character/admin/upload_image.blade.php | 27 +++++++---- .../design/_features_subtype.blade.php | 1 + .../views/character/design/features.blade.php | 34 +++++++++----- resources/views/layouts/app.blade.php | 17 +++---- routes/lorekeeper/admin.php | 1 + routes/lorekeeper/members.php | 21 ++++----- 9 files changed, 120 insertions(+), 51 deletions(-) create mode 100644 resources/views/character/admin/_upload_image_subtype.blade.php create mode 100644 resources/views/character/design/_features_subtype.blade.php diff --git a/app/Http/Controllers/Admin/Characters/CharacterImageController.php b/app/Http/Controllers/Admin/Characters/CharacterImageController.php index 5b483850b3..f0573935fb 100644 --- a/app/Http/Controllers/Admin/Characters/CharacterImageController.php +++ b/app/Http/Controllers/Admin/Characters/CharacterImageController.php @@ -45,12 +45,27 @@ public function getNewImage($slug) 'character' => $this->character, 'rarities' => ['0' => 'Select Rarity'] + Rarity::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), 'specieses' => ['0' => 'Select Species'] + Species::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), - 'subtypes' => ['0' => 'Select Subtype'] + Subtype::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + 'subtypes' => ['0' => 'Select Subtype'] + Subtype::where('species_id','=',$this->character->image->species_id)->orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), 'features' => Feature::orderBy('name')->pluck('name', 'id')->toArray(), 'isMyo' => false ]); } + /** + * Shows the edit image subtype portion of the modal + * + * @param Request $request + * @return \Illuminate\Contracts\Support\Renderable + */ + public function getNewImageSubtype(Request $request) { + $species = $request->input('species'); + $id = $request->input('id'); + return view('character.admin._upload_image_subtype', [ + 'subtypes' => ['0' => 'Select Subtype'] + Subtype::where('species_id','=',$species)->orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + 'subtype' => $id + ]); + } + /** * Creates a new image for a character. * @@ -116,6 +131,12 @@ public function postEditImageFeatures(Request $request, CharacterManager $servic return redirect()->back()->withInput(); } + /** + * Shows the edit image subtype portion of the modal + * + * @param Request $request + * @return \Illuminate\Contracts\Support\Renderable + */ public function getEditImageSubtype(Request $request) { $species = $request->input('species'); $id = $request->input('id'); diff --git a/app/Http/Controllers/Characters/DesignController.php b/app/Http/Controllers/Characters/DesignController.php index cb2eb3fe96..0a8e4c7eb3 100644 --- a/app/Http/Controllers/Characters/DesignController.php +++ b/app/Http/Controllers/Characters/DesignController.php @@ -21,7 +21,7 @@ use App\Http\Controllers\Controller; class DesignController extends Controller -{ +{ /** * Shows the index of character design update submissions. * @@ -83,7 +83,7 @@ public function postComments(Request $request, CharacterManager $service, $id) $r = CharacterDesignUpdate::find($id); if(!$r) abort(404); if($r->user_id != Auth::user()->id) abort(404); - + if($service->saveRequestComment($request->only(['comments']), $r)) { flash('Request edited successfully.')->success(); } @@ -107,7 +107,7 @@ public function getImage($id) 'request' => $r ]); } - + /** * Edits a design update request's image upload section. * @@ -122,7 +122,7 @@ public function postImage(Request $request, CharacterManager $service, $id) if(!$r) abort(404); if($r->user_id != Auth::user()->id && !Auth::user()->hasPower('manage_characters')) abort(404); $request->validate(CharacterDesignUpdate::$imageRules); - + $useAdmin = ($r->status != 'Draft' || $r->user_id != Auth::user()->id) && Auth::user()->hasPower('manage_characters'); if($service->saveRequestImage($request->all(), $r, $useAdmin)) { flash('Request edited successfully.')->success(); @@ -132,7 +132,7 @@ public function postImage(Request $request, CharacterManager $service, $id) } return redirect()->back(); } - + /** * Shows a design update request's addons section. * @@ -143,13 +143,13 @@ public function getAddons($id) { $r = CharacterDesignUpdate::find($id); if(!$r || ($r->user_id != Auth::user()->id && !Auth::user()->hasPower('manage_characters'))) abort(404); - if($r->status == 'Draft' && $r->user_id == Auth::user()->id) + if($r->status == 'Draft' && $r->user_id == Auth::user()->id) $inventory = UserItem::with('item')->whereNull('deleted_at')->where('user_id', $r->user_id)->where(function($query) use ($id) { $query->whereNull('holding_id')->orWhere(function($query) use ($id) { $query->where('holding_type', 'Update')->where('holding_id', $id); }); })->get(); - else + else $inventory = UserItem::with('item')->whereNull('deleted_at')->where('user_id', $r->user_id)->where('holding_id', $id)->where('holding_type', 'Update')->get(); return view('character.design.addons', [ 'request' => $r, @@ -171,7 +171,7 @@ public function postAddons(Request $request, CharacterManager $service, $id) $r = CharacterDesignUpdate::find($id); if(!$r) abort(404); if($r->user_id != Auth::user()->id) abort(404); - + if($service->saveRequestAddons($request->all(), $r)) { flash('Request edited successfully.')->success(); } @@ -191,15 +191,32 @@ public function getFeatures($id) { $r = CharacterDesignUpdate::find($id); if(!$r || ($r->user_id != Auth::user()->id && !Auth::user()->hasPower('manage_characters'))) abort(404); + return view('character.design.features', [ 'request' => $r, 'specieses' => ['0' => 'Select Species'] + Species::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), - 'subtypes' => ['0' => 'No Subtype'] + Subtype::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + 'subtypes' => ['0' => 'No Subtype'] + Subtype::where('species_id','=',$r->species_id)->orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), 'rarities' => ['0' => 'Select Rarity'] + Rarity::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), 'features' => Feature::orderBy('name')->pluck('name', 'id')->toArray() ]); } + /** + * Shows the edit image subtype portion of the modal + * + * @param Request $request + * @return \Illuminate\Contracts\Support\Renderable + */ + public function getFeaturesSubtype(Request $request) { + + $species = $request->input('species'); + $id = $request->input('id'); + return view('character.design._features_subtype', [ + 'subtypes' => ['0' => 'Select Subtype'] + Subtype::where('species_id','=',$species)->orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(), + 'subtype' => $id + ]); + } + /** * Edits a design update request's features section. * @@ -213,7 +230,7 @@ public function postFeatures(Request $request, CharacterManager $service, $id) $r = CharacterDesignUpdate::find($id); if(!$r) abort(404); if($r->user_id != Auth::user()->id) abort(404); - + if($service->saveRequestFeatures($request->all(), $r)) { flash('Request edited successfully.')->success(); } @@ -222,7 +239,7 @@ public function postFeatures(Request $request, CharacterManager $service, $id) } return redirect()->back(); } - + /** * Shows the design update request submission confirmation modal. * @@ -250,7 +267,7 @@ public function postSubmit(CharacterManager $service, $id) $r = CharacterDesignUpdate::find($id); if(!$r) abort(404); if($r->user_id != Auth::user()->id) abort(404); - + if($service->submitRequest($r)) { flash('Request submitted successfully.')->success(); } @@ -259,7 +276,7 @@ public function postSubmit(CharacterManager $service, $id) } return redirect()->back(); } - + /** * Shows the design update request deletion confirmation modal. * @@ -287,7 +304,7 @@ public function postDelete(CharacterManager $service, $id) $r = CharacterDesignUpdate::find($id); if(!$r) abort(404); if($r->user_id != Auth::user()->id) abort(404); - + if($service->deleteRequest($r)) { flash('Request deleted successfully.')->success(); } diff --git a/resources/views/character/admin/_upload_image_subtype.blade.php b/resources/views/character/admin/_upload_image_subtype.blade.php new file mode 100644 index 0000000000..ea467f395c --- /dev/null +++ b/resources/views/character/admin/_upload_image_subtype.blade.php @@ -0,0 +1,2 @@ +{!! Form::label('Subtype (Optional)') !!} +{!! Form::select('subtype_id', $subtypes, old('subtype_id') ? : $subtype, ['class' => 'form-control', 'id' => 'subtype']) !!} diff --git a/resources/views/character/admin/upload_image.blade.php b/resources/views/character/admin/upload_image.blade.php index be3eb23123..f65ae924d5 100644 --- a/resources/views/character/admin/upload_image.blade.php +++ b/resources/views/character/admin/upload_image.blade.php @@ -7,7 +7,7 @@ @include('character._header', ['character' => $character]) -

This will add a new image to the character's gallery. The character's active image will be changed to the new one automatically. If the character is marked as visible, the owner of the character will be notified of the upload.

+

This will add a new image to the character's gallery. The character's active image will be changed to the new one automatically. If the character is marked as visible, the owner of the character will be notified of the upload.

{!! Form::open(['url' => 'admin/character/'.$character->slug.'/image', 'files' => true]) !!} @@ -94,8 +94,8 @@ {!! Form::select('species_id', $specieses, old('species_id') ? : $character->image->species_id, ['class' => 'form-control', 'id' => 'species']) !!}
-
- {!! Form::label('Subtype (Optional)') !!} +
+ {!! Form::label('Subtype (Optional)') !!} {!! Form::select('subtype_id', $subtypes, old('subtype_id') ? : $character->image->subtype_id, ['class' => 'form-control', 'id' => 'subtype']) !!}
@@ -172,7 +172,7 @@ function addDesignerRow($trigger) { }) $trigger.css({ visibility: 'hidden' }); } - + $('.add-artist').on('click', function(e) { e.preventDefault(); addArtistRow($(this)); @@ -190,7 +190,7 @@ function addArtistRow($trigger) { } // Traits ///////////////////////////////////////////////////////////////////////////////////// - + $('#add-feature').on('click', function(e) { e.preventDefault(); addFeatureRow(); @@ -261,8 +261,19 @@ function updateCropValues() { $y1.val(values.points[3]); } - + }); - + + + +$( "#species" ).change(function() { + var species = $('#species').val(); + var id = 'image->id); ?>'; + $.ajax({ + type: "GET", url: "{{ url('admin/character/image/subtype') }}?species="+species+"&id="+id, dataType: "text" + }).done(function (res) { $("#subtypes").html(res); }).fail(function (jqXHR, textStatus, errorThrown) { alert("AJAX call failed: " + textStatus + ", " + errorThrown); }); + +}); + -@endsection \ No newline at end of file +@endsection diff --git a/resources/views/character/design/_features_subtype.blade.php b/resources/views/character/design/_features_subtype.blade.php new file mode 100644 index 0000000000..ed64cc6147 --- /dev/null +++ b/resources/views/character/design/_features_subtype.blade.php @@ -0,0 +1 @@ +{!! Form::select('subtype_id', $subtypes, $subtype, ['class' => 'form-control', 'id' => 'subtype']) !!} diff --git a/resources/views/character/design/features.blade.php b/resources/views/character/design/features.blade.php index 55919b3d45..a6af69a4bc 100644 --- a/resources/views/character/design/features.blade.php +++ b/resources/views/character/design/features.blade.php @@ -14,27 +14,29 @@ {!! Form::open(['url' => 'designs/'.$request->id.'/traits']) !!}
{!! Form::label('species_id', 'Species') !!} - @if($request->character->is_myo_slot && $request->character->image->species_id) + @if($request->character->is_myo_slot && $request->character->image->species_id)
{!! $request->character->image->species->displayName !!}
@else {!! Form::select('species_id', $specieses, $request->species_id, ['class' => 'form-control', 'id' => 'species']) !!} @endif - +
{!! Form::label('subtype_id', 'Species Subtype') !!} - @if($request->character->is_myo_slot && $request->character->image->subtype_id) + @if($request->character->is_myo_slot && $request->character->image->subtype_id)
{!! $request->character->image->subtype->displayName !!}
@else - {!! Form::select('subtype_id', $subtypes, $request->subtype_id, ['class' => 'form-control', 'id' => 'subtype']) !!} +
+ {!! Form::select('subtype_id', $subtypes, $request->subtype_id, ['class' => 'form-control', 'id' => 'subtype']) !!} +
@endif - +
{!! Form::label('rarity_id', 'Character Rarity') !!} - @if($request->character->is_myo_slot && $request->character->image->rarity_id) + @if($request->character->is_myo_slot && $request->character->image->rarity_id)
{!! $request->character->image->rarity->displayName !!}
@else {!! Form::select('rarity_id', $rarities, $request->rarity_id, ['class' => 'form-control', 'id' => 'rarity']) !!} @@ -42,7 +44,7 @@
- {!! Form::label('Traits') !!} + {!! Form::label('Traits') !!}
{{-- Add in the compulsory traits for MYO slots --}} @if($request->character->is_myo_slot && $request->character->image->features) @@ -92,11 +94,11 @@
@if($request->character && $request->character->is_myo_slot && $request->character->image->features) @foreach($request->character->image->features as $feature) -
@if($feature->feature->feature_category_id) {!! $feature->feature->category->displayName !!}: @endif {!! $feature->feature->displayName !!} @if($feature->data) ({{ $feature->data }}) @endif *Required
+
@if($feature->feature->feature_category_id) {!! $feature->feature->category->displayName !!}: @endif {!! $feature->feature->displayName !!} @if($feature->data) ({{ $feature->data }}) @endif *Required
@endforeach @endif @foreach($request->features as $feature) -
@if($feature->feature->feature_category_id) {!! $feature->feature->category->displayName !!}: @endif {!! $feature->feature->displayName !!} @if($feature->data) ({{ $feature->data }}) @endif
+
@if($feature->feature->feature_category_id) {!! $feature->feature->category->displayName !!}: @endif {!! $feature->feature->displayName !!} @if($feature->data) ({{ $feature->data }}) @endif
@endforeach
@endif @@ -105,4 +107,16 @@ @section('scripts') @include('widgets._image_upload_js') -@endsection \ No newline at end of file + + + +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 1fb7ac85bc..f5e7b87c19 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -39,16 +39,17 @@ {{-- Bootstrap Toggle --}} - + - - @if(file_exists(public_path(). '/css/custom.css')) + + +
@@ -60,7 +61,7 @@
- + @@ -74,16 +75,16 @@ @include('flash::message') @yield('content')
- +
- + - +