admin_suite 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac7ab643c69ac46cf31a6b48734cd58cae60233e8284a738147b419e4982fde3
4
- data.tar.gz: b37617cd8e1f00fef844f95ddb81800f12990d48940c1a7d14cf47de1fd7e64e
3
+ metadata.gz: 3679b3f1b7a2f81d3001c2def3f283c0af6af3ab3c8d593c552fd073f72aaff1
4
+ data.tar.gz: f4087201617ce4d248c4c7727cc7464344e43fed12a50c5a3eb966e86e0d5c61
5
5
  SHA512:
6
- metadata.gz: d845685a1eabba91a371b975f3599bdf282a3940af720a9feb545751e044544a0aa8818611e742ebb37728fe86c5af41bb511462a211e9fcdc8e286649a67a05
7
- data.tar.gz: dcc33dd1079fe5da4357445b939742d7cada340f858deabc45bdc3531dad59fe46a7c77c9ba33d9df5b0bc3ffe9f9c7b163a46b4484c3c99c5825e38f947acf9
6
+ metadata.gz: c303e1f7222b79e6a0dba629b08657078c104beb661338f721285462aabc3319e2546d6a3549921eb648f079d527c42d05954e4dd22f6455ec3c783ddbb9d92f
7
+ data.tar.gz: 21dbc5ae2cd26045afa6f9dfc0a0852fdb82470ee359fbb18236c655e45ca836301d178e8c9e4ad6fab018c3f95286d528152e2426b5cb6d28f6dcb9c07be0bf
@@ -64,9 +64,10 @@ module AdminSuite
64
64
 
65
65
  executor = Admin::Base::ActionExecutor.new(resource_config, action, admin_suite_actor)
66
66
  result = executor.execute_member(@resource, params.to_unsafe_h)
67
+ redirect_target = result.redirect_url.presence || resource_url(@resource)
67
68
 
68
69
  if result.success?
69
- redirect_to resource_url(@resource), notice: result.message
70
+ redirect_to redirect_target, notice: result.message
70
71
  else
71
72
  redirect_to resource_url(@resource), alert: result.message
72
73
  end
@@ -211,8 +212,18 @@ module AdminSuite
211
212
  end
212
213
  end
213
214
 
214
- key = resource_class.model_name.param_key
215
- params.require(key).permit(permitted_fields + array_fields)
215
+ candidate_keys = []
216
+ candidate_keys << @resource.class.model_name.param_key if defined?(@resource) && @resource.present?
217
+ candidate_keys << resource_class.model_name.param_key
218
+ candidate_keys.uniq!
219
+
220
+ candidate_keys.each do |key|
221
+ if params.key?(key) || params.key?(key.to_sym)
222
+ return params.require(key).permit(permitted_fields + array_fields)
223
+ end
224
+ end
225
+
226
+ params.require(resource_class.model_name.param_key).permit(permitted_fields + array_fields)
216
227
  end
217
228
 
218
229
  def toggleable_fields
@@ -109,14 +109,33 @@ module Admin
109
109
 
110
110
  def execute_model_method(record, action, bang: false)
111
111
  method_name = bang ? "#{action.name}!" : action.name
112
- record.public_send(method_name)
113
- success_result("#{action.label} completed successfully")
112
+ action_result = record.public_send(method_name)
113
+ return action_result if action_result.is_a?(Result)
114
+
115
+ success_result(
116
+ "#{action.label} completed successfully",
117
+ redirect_url: redirect_url_for_action(action, action_result)
118
+ )
114
119
  rescue ActiveRecord::RecordInvalid => e
115
120
  failure_result("Validation failed: #{e.record.errors.full_messages.join(', ')}")
116
121
  rescue AASM::InvalidTransition => e
117
122
  failure_result("Invalid state transition: #{e.message}")
118
123
  end
119
124
 
125
+ def redirect_url_for_action(action, action_result)
126
+ return nil unless action.name.to_sym == :duplicate
127
+ return nil unless action_result.respond_to?(:persisted?) && action_result.persisted?
128
+ return nil unless resource_class.respond_to?(:portal_name) && resource_class.respond_to?(:resource_name_plural)
129
+
130
+ AdminSuite::Engine.routes.url_helpers.resource_path(
131
+ portal: resource_class.portal_name,
132
+ resource_name: resource_class.resource_name_plural,
133
+ id: action_result.to_param
134
+ )
135
+ rescue StandardError
136
+ nil
137
+ end
138
+
120
139
  def find_handler_class(action)
121
140
  if defined?(AdminSuite) && AdminSuite.config.resolve_action_handler.present?
122
141
  resolved = AdminSuite.config.resolve_action_handler.call(resource_class, action.name)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module AdminSuite
4
4
  module Version
5
- VERSION = "0.2.4"
5
+ VERSION = "0.2.5"
6
6
  end
7
7
 
8
8
  # Backward-compatible constant.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: admin_suite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - TechWright Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-02-18 00:00:00.000000000 Z
11
+ date: 2026-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails