From 7401e1fbe5b5f59e1fe38d5c3ac7328103015e95 Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Wed, 5 Nov 2025 10:28:08 +0100 Subject: [PATCH] Allow publishable fields to be disabled not only by abilities but also by option --- app/cells/folio/console/publishable_inputs/item/show.slim | 8 ++++---- app/cells/folio/console/publishable_inputs/item_cell.rb | 4 ++++ app/cells/folio/console/publishable_inputs/show.slim | 7 ++++--- app/cells/folio/console/publishable_inputs_cell.rb | 3 ++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/cells/folio/console/publishable_inputs/item/show.slim b/app/cells/folio/console/publishable_inputs/item/show.slim index c6023884ca..b6ee9dd82b 100644 --- a/app/cells/folio/console/publishable_inputs/item/show.slim +++ b/app/cells/folio/console/publishable_inputs/item/show.slim @@ -3,7 +3,7 @@ div class=class_name data=data = f.input field, hint: false, as: :boolean, - disabled: read_only?, + disabled: disabled?, input_html: input_html('checkbox', checkbox: true), wrapper_html: { class: 'f-c-publishable-inputs-item__group' }, atom_setting: model[:atom_setting] == false ? nil : field @@ -13,7 +13,7 @@ div class=class_name data=data = f.input "#{field}_at", label: false, hint: false, - disabled: read_only?, + disabled: disabled?, wrapper_html:, input_html: input_html('input', placeholder: t('.at')), atom_setting: model[:atom_setting] == false ? nil : "#{field}_at" @@ -23,7 +23,7 @@ div class=class_name data=data = f.input "#{field}_from", label: false, hint: false, - disabled: read_only?, + disabled: disabled?, wrapper_html:, input_html: input_html('input', placeholder: t('.from')), atom_setting: model[:atom_setting] == false ? nil : "#{field}_from" @@ -31,7 +31,7 @@ div class=class_name data=data = f.input "#{field}_until", label: false, hint: false, - disabled: read_only?, + disabled: disabled?, wrapper_html:, input_html: input_html('input', placeholder: t('.to')), atom_setting: model[:atom_setting] == false ? nil : "#{field}_until" diff --git a/app/cells/folio/console/publishable_inputs/item_cell.rb b/app/cells/folio/console/publishable_inputs/item_cell.rb index 1299c3213a..662a226832 100644 --- a/app/cells/folio/console/publishable_inputs/item_cell.rb +++ b/app/cells/folio/console/publishable_inputs/item_cell.rb @@ -30,6 +30,10 @@ def read_only? @read_only end + def disabled? + model[:disabled] || read_only? + end + def date_at? return @date_at unless @date_at.nil? @date_at = f.object.respond_to?("#{field}_at") diff --git a/app/cells/folio/console/publishable_inputs/show.slim b/app/cells/folio/console/publishable_inputs/show.slim index 5c230a6829..57a7abbf1d 100644 --- a/app/cells/folio/console/publishable_inputs/show.slim +++ b/app/cells/folio/console/publishable_inputs/show.slim @@ -1,6 +1,7 @@ .f-c-publishable-inputs class=options[:class_name] - - fields.each do |field| + - fields.each do |field_config| + - field_name = field_config.is_a?(Hash) ? field_config[:field] : field_config + - field_disabled = field_config.is_a?(Hash) ? field_config[:disabled] : nil == cell('folio/console/publishable_inputs/item', - f:, - field:, + { f:, field: field_name, disabled: field_disabled }, atom_setting: options[:atom_setting]) diff --git a/app/cells/folio/console/publishable_inputs_cell.rb b/app/cells/folio/console/publishable_inputs_cell.rb index 85ffd365c9..03cf77f08e 100644 --- a/app/cells/folio/console/publishable_inputs_cell.rb +++ b/app/cells/folio/console/publishable_inputs_cell.rb @@ -28,7 +28,8 @@ def fields ary += options[:additional_fields] if options[:additional_fields] ary.filter do |field| - f.object.respond_to?(field) + field_name = field.is_a?(Hash) ? field[:field] : field + f.object.respond_to?(field_name) end end end