lib/engine2/meta.rb in engine2-1.0.1 vs lib/engine2/meta.rb in engine2-1.0.2

- old
+ new

@@ -138,17 +138,17 @@ end end class DummyMeta < Meta meta_type :dummy - - # def invoke handler - # {} - # end end module MetaAPISupport + def reload_routes! + @meta[:reload_routes] = true + end + def info @meta[:info] ||= {} end def config @@ -164,10 +164,14 @@ info[field] = false end end end + def loc! hash + hash.each{|k, v| info! k, loc: v} + end + def decorate list list.each do |f| m = (info[f] ||= {}) m[:loc] ||= LOCS[f] end @@ -418,17 +422,14 @@ super if @meta[:panel] panel_panel_template 'menu_m' unless panel[:panel_template] == false # modal_action false if panel[:panel_template] == false panel_class '' unless panel[:class] + footer true unless panel[:footer] == false end end - def glyphicon name - "<span class='glyphicon glyphicon-#{name}'></span>" - end - def panel @meta[:panel] ||= {} end def modal_action modal = true @@ -448,10 +449,14 @@ end def panel_title tle panel[:title] = tle end + + def footer ftr + panel[:footer] = ftr + end end class MenuMeta < Meta include MetaMenuSupport meta_type :menu @@ -541,20 +546,18 @@ # modal_action self.class != ListMeta panel_template 'scaffold/list' panel_panel_template 'panels/menu_m' unless action.parent.*.assets[:model] search_template 'scaffold/search' - panel_title "#{glyphicon('list')} #{LOCS[assets[:model].name.to_sym]}" + panel_title "#{:list.icon} #{LOCS[assets[:model].name.to_sym]}" menu(:panel_menu).option :cancel, icon: "remove" menu :menu do properties break: 2, group_class: "btn-group-xs" option :search_toggle, icon: "search", show: "action.meta.search_fields", class: "action.ui_state.search_active && 'active'", button_loc: false - # divider option :refresh, icon: "refresh", button_loc: false option :default_order, icon: "signal", button_loc: false - option :select_toggle, icon: "check", enabled: "action.meta.config.selectable", button_loc: false divider option :debug_info, icon: "list-alt" do option :show_meta, icon: "eye-open" end end @@ -564,10 +567,17 @@ end @meta[:state] = [:query, :ui_state] end + def select_toggle_menu + m = menu :menu + unless m.option_index(:select_toggle, false) + m.option_after :default_order, :select_toggle, icon: "check", enabled: "action.meta.config.selectable", button_loc: false + end + end + def post_run unless panel[:class] panel_class case @meta[:fields].size when 1..3; '' when 4..6; 'modal-large' @@ -664,10 +674,14 @@ module MetaApproveSupport include MetaModelSupport attr_reader :validations + def self.included meta + meta.http_method :post + end + def validate_fields *fields if fields.empty? @validate_fields else @validate_fields = assets[:model].type_info.keys & (fields + assets[:model].primary_keys).uniq @@ -734,10 +748,14 @@ end module MetaViewSupport include MetaModelSupport, MetaAPISupport, MetaTabSupport, MetaPanelSupport, MetaMenuSupport + def self.included meta + meta.meta_type :view + end + def pre_run super panel_template 'scaffold/view' panel_title LOCS[:view_title] @@ -756,9 +774,38 @@ proc.(self, name, type_info) if proc end end super + end + end + + module MetaDeleteSupport + include MetaModelSupport + + def self.included meta + meta.http_method :delete + meta.meta_type :delete + end + + def pre_run + super + action.parent.parent.*.menu(:item_menu).option :confirm_delete, icon: "trash", show: "action.selected_size() == 0", button_loc: false + end + end + + module MetaBulkDeleteSupport + include MetaModelSupport + + def self.included meta + meta.http_method :delete + meta.meta_type :bulk_delete + end + + def pre_run + super + action.parent.parent.*.select_toggle_menu + action.parent.parent.*.menu(:menu).option_after :default_order, :confirm_bulk_delete, icon: "trash", show: "action.selected_size() > 0" end end (FormRendererPostProcessors ||= {}).merge!( boolean: lambda{|meta, field, info|