app/helpers/admin/osuny_helper.rb
module Admin::OsunyHelper def osuny_panel(title = nil, subtitle: nil, action: nil, image: nil, small: false, classes: '', &block) render layout: "admin/application/components/panel", locals: { title: title, subtitle: subtitle, action: action, image: image, small: small, classes: classes } do capture(&block) end end def osuny_label(title, classes: '') raw "<label class=\"form-label #{classes}\">#{title}</label>" end def osuny_separator raw '<hr class="my-5">' end def osuny_thumbnail(object, large: false, cropped: true, classes: '') return if object.nil? image = object.respond_to?(:featured_image) ? object.featured_image : nil render partial: "admin/application/components/thumbnail", locals: { image: image, initials: object.initials, large: large, cropped: cropped, classes: classes } end def osuny_thumbnail_localized(object, large: false, cropped: true, classes: '') l10n = object.best_localization_for(current_language) osuny_thumbnail l10n, large: large, cropped: cropped, classes: classes end def osuny_published(state) raw "<span class=\"osuny__published osuny__published--#{ state }\"></span>" end def osuny_published_localized(object) state = object.published_in?(current_language) osuny_published(state) end def osuny_property_show(object, property, kind, hide_blank: false) render partial: "admin/application/property/#{kind}", locals: { object: object, property: property, hide_blank: hide_blank } end def osuny_property_show_text(object, property, hide_blank: false) osuny_property_show(object, property, 'text', hide_blank: hide_blank) end def osuny_property_show_url(object, property, hide_blank: false) osuny_property_show(object, property, 'url', hide_blank: hide_blank) end def osuny_property_show_boolean(object, property) osuny_property_show(object, property, 'boolean') end def osuny_link_localized(object, path, label_method: :to_s, classes: '') l10n = object.localization_for(current_language) if l10n.present? name = l10n.public_send(label_method) alert = '' else name = object.original_localization.public_send(label_method) classes += ' text-muted fst-italic' alert = t('localization.creation_alert') end osuny_link(name, path, classes: classes, alert: alert) end def osuny_link(name, path, classes: '', alert: '') link_to name.to_s.truncate(45), path, class: classes.strip, data: { confirm: alert } end def osuny_link_localized_if(condition, object, path, label_method: :to_s, classes: '') l10n = object.localization_for(current_language) if l10n.present? name = l10n.public_send(label_method) alert = '' else name = object.original_localization.public_send(label_method) classes += 'text-muted fst-italic' alert = t('localization.creation_alert') end link_to_if condition, name.truncate(45), path, class: classes.strip, data: { confirm: alert } end def osuny_card_classes(horizontal: false) "card card--osuny#{ ' card--horizontal' if horizontal}" end def osuny_collection(list, except: nil, localized: false, label_method: :to_s) collection = list.ordered(current_language).map do |object| [ osuny_object_label(object, localized, label_method), object.id ] end collection = collection.reject { |o| o.last == except.id } unless except.nil? collection end def osuny_collection_tree(list, except: nil, localized: false, label_method: :to_s) collection = osuny_collection_recursive(list, 0, localized, label_method) collection = collection.reject { |o| o.last == except.id } unless except.nil? collection end private def osuny_object_label(object, localized, label_method) object_for_label = localized ? object.best_localization_for(current_language) : object return 'na' if object_for_label.nil? label_method.respond_to?(:call) ? label_method.call(object_for_label) : object_for_label.public_send(label_method) end Method `osuny_collection_recursive` has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring. def osuny_collection_recursive(list, level, localized, label_method) collection = [] list.ordered(current_language).each do |object| object_for_name = localized ? object.best_localization_for(current_language) : object name = label_method.respond_to?(:call) ? label_method.call(object_for_name) : object_for_name.public_send(label_method) label = sanitize(" " * level + name) id = object.id collection << [label, id] collection.concat( osuny_collection_recursive( object.children, level + 1, localized, label_method ) ) end collection end end