module Avo::Fields::FieldExtensions::VisibleInDifferentViews
def except_on(*where)
def except_on(*where) show_on_all normalize_views(where).flatten.each do |view| show_on_view view end end
def except_on_view(view)
def except_on_view(view) show_on_all hide_on_view view end
def hide_on(*where)
def hide_on(*where) return hide_on_all if where.include? :all normalize_views(where).flatten.each do |view| hide_on_view view end end
def hide_on_all
def hide_on_all @show_on_index = false @show_on_show = false @show_on_edit = false @show_on_new = false end
def hide_on_view(view)
def hide_on_view(view) send("show_on_#{view}=", false) end
def initialize(id, **args, &block)
def initialize(id, **args, &block) @show_on_index = @show_on_index.nil? ? true : @show_on_index @show_on_show = @show_on_show.nil? ? true : @show_on_show @show_on_new = @show_on_new.nil? ? true : @show_on_new @show_on_edit = @show_on_edit.nil? ? true : @show_on_edit end
def normalize_views(*views_and_groups)
def normalize_views(*views_and_groups) forms = views_and_groups.flatten! & [:forms] if forms.present? views_and_groups -= forms views_and_groups += [:new, :edit] end views_and_groups.flatten.uniq end
def only_on(*where)
def only_on(*where) hide_on_all normalize_views(where).flatten.each do |view| show_on_view view end end
def only_on_view(view)
def only_on_view(view) hide_on_all show_on_view view end
def show_on(*where)
def show_on(*where) return show_on_all if where.include? :all normalize_views(where).flatten.each do |view| show_on_view view end end
def show_on_all
def show_on_all @show_on_index = true @show_on_show = true @show_on_edit = true @show_on_new = true end
def show_on_view(view)
def show_on_view(view) send("show_on_#{view}=", true) end