Emi Matchu
b656ccd982
We copy the same feature from alt styles, now that the UI is shared via support form helpers! Easy peasy! This adds a "Then: Go to unlabeled appearance" checkbox next to the submit button on the pet appearance edit form. If checked, it takes you to the first unlabeled appearance in the database, and keeps the box checked for next time. Slam through 'em!
52 lines
1.2 KiB
Ruby
52 lines
1.2 KiB
Ruby
class PetStatesController < ApplicationController
|
|
before_action :find_pet_state
|
|
before_action :support_staff_only
|
|
|
|
def edit
|
|
end
|
|
|
|
def update
|
|
if @pet_state.update(pet_state_params)
|
|
flash[:notice] = "Pet appearance \##{@pet_state.id} successfully saved!"
|
|
redirect_to destination_after_save
|
|
else
|
|
render action: :edit, status: :bad_request
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
def find_pet_state
|
|
@pet_type = PetType.find_by_param!(params[:pet_type_name])
|
|
@pet_state = @pet_type.pet_states.find(params[:id])
|
|
end
|
|
|
|
def pet_state_params
|
|
params.require(:pet_state).permit(:pose, :glitched)
|
|
end
|
|
|
|
def destination_after_save
|
|
if params[:next] == "unlabeled-appearance"
|
|
next_unlabeled_appearance_path
|
|
else
|
|
@pet_type
|
|
end
|
|
end
|
|
|
|
def next_unlabeled_appearance_path
|
|
# Rather than just getting the newest unlabeled pet state, prioritize the
|
|
# newest *pet type*. This better matches the user's perception of what the
|
|
# newest state is, because the Rainbow Pool UI is grouped by pet type!
|
|
unlabeled_appearance = PetState.unlabeled.newest_pet_type.newest.first
|
|
|
|
if unlabeled_appearance
|
|
edit_pet_type_pet_state_path(
|
|
unlabeled_appearance.pet_type,
|
|
unlabeled_appearance,
|
|
next: "unlabeled-appearance"
|
|
)
|
|
else
|
|
@pet_type
|
|
end
|
|
end
|
|
end
|