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|