app/presenters/blacklight/document_presenter.rb in blacklight-7.11.1 vs app/presenters/blacklight/document_presenter.rb in blacklight-7.12.0

- old
+ new

@@ -47,15 +47,40 @@ fields = Array.wrap(view_config.title_field) + [configuration.document_model.unique_key] f = fields.lazy.map { |field| field_config(field) }.detect { |field_config| field_presenter(field_config).any? } f ? field_value(f, except_operations: [Rendering::HelperMethod]) : "" end + ## + # Get the document's "title" to display in the <title> element. + # (by default, use the #document_heading) + # + # @see #document_heading + # @return [String] + def html_title + return field_value(view_config.html_title_field) if view_config.html_title_field.is_a? Blacklight::Configuration::Field + + if view_config.html_title_field + fields = Array.wrap(view_config.html_title_field) + [configuration.document_model.unique_key] + f = fields.lazy.map { |field| field_config(field) }.detect { |field_config| field_presenter(field_config).any? } + field_value(f) + else + heading + end + end + def display_type(base_name = nil, default: nil) fields = [] fields += Array.wrap(view_config[:"#{base_name}_display_type_field"]) if base_name && view_config.key?(:"#{base_name}_display_type_field") fields += Array.wrap(view_config.display_type_field) + if fields.empty? + fields += Array.wrap(configuration.show[:"#{base_name}_display_type_field"]) if base_name && configuration.show.key?(:"#{base_name}_display_type_field") + fields += Array.wrap(configuration.show.display_type_field) + end + + fields += ['format'] if fields.empty? # backwards compatibility with the old default value for display_type_field + display_type = fields.lazy.map { |field| field_presenter(field_config(field)) }.detect(&:any?)&.values display_type ||= Array(default) if default display_type || [] end @@ -74,10 +99,22 @@ def thumbnail @thumbnail ||= thumbnail_presenter.new(document, view_context, view_config) end + ## + # Create <link rel="alternate"> links from a documents dynamically + # provided export formats. Returns empty string if no links available. + # + # @param [Hash] options + # @option options [Boolean] :unique ensures only one link is output for every + # content type, e.g. as required by atom + # @option options [Array<String>] :exclude array of format shortnames to not include in the output + def link_rel_alternates(options = {}) + LinkAlternatePresenter.new(view_context, document, options).render + end + private def render_field?(field_config) field_presenter(field_config).render_field? end @@ -98,9 +135,13 @@ end deprecation_deprecate retrieve_values: 'Use FieldPresenter#values' def field_presenter(field_config, options = {}) presenter_class = field_config.presenter || Blacklight::FieldPresenter - presenter_class.new(view_context, document, field_config, options) + presenter_class.new(view_context, document, field_config, options.merge(field_presenter_options)) + end + + def field_presenter_options + {} end end end