Module: FlexiAdmin::Controllers::ResourcesController
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/flexi_admin/controllers/resources_controller.rb
Instance Method Summary collapse
- #append_toasts ⇒ Object
- #autocomplete(includes: nil) ⇒ Object
- #bulk_action ⇒ Object
- #context_params ⇒ Object
- #context_permitted_params ⇒ Object
- #create ⇒ Object
- #datalist ⇒ Object
- #edit ⇒ Object
- #handle_runtime_error(error) ⇒ Object
- #redirect_to_path(path) ⇒ Object
-
#reload_page ⇒ Object
Deprecated.
- #render_edit_resource_form(disabled: true) ⇒ Object
- #render_index(resources, target: nil) ⇒ Object
- #render_new_resource_form(resource) ⇒ Object
- #render_toasts ⇒ Object
- #show ⇒ Object
- #update ⇒ Object
Instance Method Details
#append_toasts ⇒ Object
27 28 29 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 27 def append_toasts turbo_stream.append('toasts', partial: 'shared/toasts') end |
#autocomplete(includes: nil) ⇒ Object
174 175 176 177 178 179 180 181 182 183 184 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 174 def autocomplete(includes: nil) base_query = resource_class.with_parent(parent_instance) .fulltext(params[:q]) base_query = base_query.includes(includes) if includes.present? results_count = base_query.count results = base_query.limit(100) render FlexiAdmin::Components::Shared::Autocomplete::ResultsComponent.new(results:, results_count:, context_params:), layout: false end |
#bulk_action ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 156 def bulk_action ids = JSON.parse(params[:ids]) # Unscoped is needed to get the resources that are not deleted, archived, etc. # It should be ok, since we control the ids in the frontend @resources = resource_class.unscoped.where(id: ids) :edit, @resources bulk_processor = "#{params[:processor].gsub('-', '/').camelize}::Processor".constantize.new(@resources, params) result = bulk_processor.perform redirect_to_path result.path and return if result.result == :redirect flash[result.result] = FlexiAdmin::Models::Toast.new(result.) reload_page end |
#context_params ⇒ Object
58 59 60 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 58 def context_params @context_params ||= FlexiAdmin::Models::ContextParams.new(context_permitted_params) end |
#context_permitted_params ⇒ Object
62 63 64 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 62 def context_permitted_params @context_permitted_params ||= params.permit(*FlexiAdmin::Models::ContextParams.permitted_params_keys) end |
#create ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 75 def create :create, resource_class create_service = begin "#{resource_class.model_name.plural.camelize}::Services::Create".constantize rescue NameError FlexiAdmin::Services::CreateResource end result = create_service.run(resource_class:, params: create_params) if result.valid? redirect_to_path polymorphic_path([:admin, result.resource]) else render_new_resource_form(result.resource) end end |
#datalist ⇒ Object
186 187 188 189 190 191 192 193 194 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 186 def datalist results = resource_class.fulltext(params[:q]) .limit(100) .order(*context_params.params[:ac_fields].map(&:to_sym)) .pluck(*context_params.params[:ac_fields].map(&:to_sym)) .uniq render FlexiAdmin::Components::Shared::Autocomplete::ResultsComponent.new(results:, context_params:), layout: false end |
#edit ⇒ Object
108 109 110 111 112 113 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 108 def edit @resource = resource_class.find(params[:id]) :update, @resource render_edit_resource_form(disabled: disabled?(context_params.form_disabled)) end |
#handle_runtime_error(error) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 67 def handle_runtime_error(error) return BugTracker.notify(error) if true flash[:error] = FlexiAdmin::Models::Toast.new(error.) render_toasts end |
#redirect_to_path(path) ⇒ Object
54 55 56 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 54 def redirect_to_path(path) render turbo_stream: turbo_stream.append('system', partial: 'shared/redirect', locals: { path: }) end |
#reload_page ⇒ Object
Deprecated
47 48 49 50 51 52 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 47 def reload_page render turbo_stream: [ turbo_stream.append('system', partial: 'shared/reload'), turbo_stream.append('toasts', partial: 'shared/toasts') ] end |
#render_edit_resource_form(disabled: true) ⇒ Object
134 135 136 137 138 139 140 141 142 143 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 134 def render_edit_resource_form(disabled: true) respond_to do |format| format.html do render turbo_stream: turbo_stream.replace(@resource.form_id, edit_form_component_instance(disabled?(disabled))) end format.turbo_stream do render turbo_stream: turbo_stream.replace(@resource.form_id, edit_form_component_instance(disabled?(disabled))) end end end |
#render_index(resources, target: nil) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 31 def render_index(resources, target: nil) target ||= context_params.frame respond_to do |format| format.html do component_class = "Admin::#{resource_class.name}::IndexPageComponent".constantize puts "component_class: #{component_class}" render component_class.new(resources, context_params:, scope: resource_class.to_s.downcase) end format.turbo_stream do component_class = "Admin::#{resource_class.name}::ResourcesComponent".constantize render turbo_stream: turbo_stream.replace(target, component_class.new(resources, context_params:, scope: resource_class.to_s.downcase)) end end end |
#render_new_resource_form(resource) ⇒ Object
145 146 147 148 149 150 151 152 153 154 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 145 def render_new_resource_form(resource) respond_to do |format| format.html do render new_form_component_instance(resource) end format.turbo_stream do render turbo_stream: turbo_stream.replace(context_params.frame, new_form_component_instance(resource)) end end end |
#render_toasts ⇒ Object
23 24 25 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 23 def render_toasts render turbo_stream: turbo_stream.append('toasts', partial: 'shared/toasts') end |
#show ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 93 def show @resource = resource_class.find(params[:id]) :show, @resource respond_to do |format| format.html do component ||= "Admin::#{resource_class.name}::Show::PageComponent".constantize render component.new(@resource, context_params:, scope: resource_class.to_s.downcase) end format.turbo_stream do render turbo_stream: turbo_stream.replace(context_params.frame) end end end |
#update ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/flexi_admin/controllers/resources_controller.rb', line 115 def update @resource = resource_class.find(params[:id]) :update, @resource update_service = begin "#{resource_class.model_name.plural.camelize}::Services::Update".constantize rescue NameError FlexiAdmin::Services::UpdateResource end result = update_service.run(resource: @resource, params: resource_params) if result.valid? render_edit_resource_form(disabled: disabled?(true)) else render_edit_resource_form(disabled: disabled?(false)) end end |