- the 7 catalog admin files (softwares, releases, external_links, platform_links, images, files page, downloads) move to the engine's app/admin; the host ActiveAdmin instance loads them via ActiveAdmin.application.load_paths (single admin, URLs unchanged) - engine initializers: Zeitwerk ignore for app/admin (production eager load) and load_paths + watchable_dirs registration, guarded by defined?(ActiveAdmin) so the admin-less dummy app boots - images admin reads image owners from WarpEngine.config.image_owners; the host registers the Member owner in config/initializers/warp_engine.rb; the interim ImageUsage registry is gone - fix: SoftwareImage.distinct.pluck clashed with its order(:position) default scope on MySQL (unscope(:order)) — introduced in phase 0, caught by the first authenticated /admin/images smoke test - files page: download links use the public /file/ URL instead of the raw container path; the picker's stored path comes from config Verified: both suites green, zeitwerk:check (production) clean, JSON baselines intact, authenticated admin smoke test on every page incl. the 3-level nested software form and Files picker mode. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
35 lines
618 B
Ruby
35 lines
618 B
Ruby
ActiveAdmin.register WarpEngine::ExternalLink, as: "External Link" do
|
|
permit_params :software_id, :label, :url
|
|
|
|
menu false
|
|
|
|
belongs_to :software
|
|
|
|
index do
|
|
selectable_column
|
|
id_column
|
|
column :label
|
|
column(:url) { |el| link_to el.url, el.url, target: "_blank" }
|
|
column :created_at
|
|
actions
|
|
end
|
|
|
|
form do |f|
|
|
f.inputs do
|
|
f.input :label
|
|
f.input :url
|
|
end
|
|
f.actions
|
|
end
|
|
|
|
show do
|
|
attributes_table do
|
|
row :id
|
|
row :label
|
|
row(:url) { |el| link_to el.url, el.url, target: "_blank" }
|
|
row :created_at
|
|
row :updated_at
|
|
end
|
|
end
|
|
end
|