Refactor and redesign publish modal
* remove the autocomplete menu * use ujs to pre-validate the procedure * tweak the UI
This commit is contained in:
parent
bd1e0aba38
commit
c26a701a17
18 changed files with 148 additions and 292 deletions
|
@ -2,7 +2,7 @@ class Admin::ProceduresController < AdminController
|
|||
include SmartListing::Helper::ControllerExtensions
|
||||
helper SmartListing::Helper
|
||||
|
||||
before_action :retrieve_procedure, only: [:show, :edit, :delete_logo, :delete_deliberation, :delete_notice, :monavis, :update_monavis]
|
||||
before_action :retrieve_procedure, only: [:show, :edit, :delete_logo, :delete_deliberation, :delete_notice, :monavis, :update_monavis, :publish_validate, :publish]
|
||||
|
||||
def index
|
||||
if current_administrateur.procedures.count != 0
|
||||
|
@ -40,7 +40,8 @@ class Admin::ProceduresController < AdminController
|
|||
end
|
||||
|
||||
def show
|
||||
@suggested_path = @procedure.suggested_path(current_administrateur)
|
||||
@procedure.path = @procedure.suggested_path(current_administrateur)
|
||||
@current_administrateur = current_administrateur
|
||||
end
|
||||
|
||||
def edit
|
||||
|
@ -94,33 +95,19 @@ class Admin::ProceduresController < AdminController
|
|||
end
|
||||
end
|
||||
|
||||
def publish
|
||||
path = params[:path]
|
||||
lien_site_web = params[:lien_site_web]
|
||||
procedure = current_administrateur.procedures.find(params[:procedure_id])
|
||||
def publish_validate
|
||||
@procedure.assign_attributes(publish_params)
|
||||
end
|
||||
|
||||
def publish
|
||||
@procedure.assign_attributes(publish_params)
|
||||
|
||||
@procedure.publish_or_reopen!(current_administrateur)
|
||||
|
||||
procedure.publish_or_reopen!(current_administrateur, path, lien_site_web)
|
||||
flash.notice = "Démarche publiée"
|
||||
redirect_to admin_procedures_path
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
errors = e.record.errors
|
||||
if errors.details.key?(:path)
|
||||
path_error = errors.details.dig(:path, 0, :error)
|
||||
case path_error
|
||||
when :invalid
|
||||
@valid = false
|
||||
when :taken
|
||||
@valid = true
|
||||
@mine = false
|
||||
end
|
||||
render '/admin/procedures/publish', formats: 'js'
|
||||
else
|
||||
flash.alert = errors.full_messages
|
||||
return redirect_to admin_procedure_path(procedure)
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = 'Démarche inexistante'
|
||||
redirect_to admin_procedures_path
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
render 'publish_validate', formats: :js
|
||||
end
|
||||
|
||||
def transfer
|
||||
|
@ -214,20 +201,6 @@ class Admin::ProceduresController < AdminController
|
|||
@draft_class = 'active'
|
||||
end
|
||||
|
||||
def path_list
|
||||
json_path_list = Procedure
|
||||
.find_with_path(params[:request])
|
||||
.order(:id)
|
||||
.map do |procedure|
|
||||
{
|
||||
label: procedure.path,
|
||||
mine: current_administrateur.owns?(procedure)
|
||||
}
|
||||
end.to_json
|
||||
|
||||
render json: json_path_list
|
||||
end
|
||||
|
||||
def delete_logo
|
||||
@procedure.logo.purge_later
|
||||
@procedure.logo_active_storage.purge_later
|
||||
|
@ -256,6 +229,10 @@ class Admin::ProceduresController < AdminController
|
|||
params[:from_new_from_existing].present?
|
||||
end
|
||||
|
||||
def publish_params
|
||||
params.permit(:path, :lien_site_web)
|
||||
end
|
||||
|
||||
def procedure_params
|
||||
editable_params = [:libelle, :description, :organisation, :direction, :lien_site_web, :cadre_juridique, :deliberation, :notice, :web_hook_url, :euro_flag, :logo, :auto_archive_on, :monavis_embed]
|
||||
permited_params = if @procedure&.locked?
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue