class ErpApp::Widgets::Loader
Public Class Methods
load_compass_ae_widgets(config, engine)
click to toggle source
# File lib/erp_app/widgets/loader.rb, line 5 def load_compass_ae_widgets(config, engine) ErpBaseErpSvcs.setup_compass_ae_callback(config, engine) do |engine| ::ErpApp::Widgets::Loader.require_widgets_and_helpers(engine.root) ::ErpApp::Widgets::Loader.load_widget_extensions(engine) end end
load_root_widgets(config)
click to toggle source
# File lib/erp_app/widgets/loader.rb, line 12 def load_root_widgets(config) ErpBaseErpSvcs.setup_compass_ae_callback(config, nil) do |engine| ::ErpApp::Widgets::Loader.require_widgets_and_helpers(Rails.root.to_s) end end
load_widget_extensions(engine)
click to toggle source
# File lib/erp_app/widgets/loader.rb, line 49 def load_widget_extensions(engine) widgets_path = File.join(engine.root,"lib",engine.railtie_name,"extensions/widgets") widgets = File.directory?(widgets_path) ? Dir.entries(widgets_path) : [] widgets.delete_if{|name| name =~ /^\./} widgets.each do |widget_name| widget_hash = Rails.application.config.erp_app.widgets.find{|item| item[:name] == widget_name} #load any extensions to existing widgets Dir.glob(File.join(widgets_path,widget_name,"*.rb")).each do |file| load file end #add any additional view paths to widgets if File.directory?(File.join(widgets_path,widget_name,'views')) view_path = File.join(widgets_path,widget_name,'views') widget_hash[:view_paths].push(view_path) #get all view files for theme generation get_widget_view_files(widget_hash, view_path) end #overwrite with any extensions in rails root load_root_widget_extensions(widget_hash) end end
require_widgets_and_helpers(path)
click to toggle source
# File lib/erp_app/widgets/loader.rb, line 18 def require_widgets_and_helpers(path) widgets = [] widgets_path = File.join(path,"/app/widgets/") widgets = Dir.entries(widgets_path) if File.exists? widgets_path widgets.delete_if{|name| name =~ /^\./} widgets.each do |widget_name| widget_hash = Rails.application.config.erp_app.widgets.find{|item| item[:name] == widget_name} if widget_hash.nil? widget_hash = { :name => widget_name, :path => File.join(widgets_path,widget_name), :view_paths => [File.join(widgets_path,widget_name,'views')], :view_files => [] } Rails.application.config.erp_app.widgets << widget_hash end load File.join(widget_hash[:path],'base.rb') #load helpers if File.exists? File.join(widget_hash[:path],'helpers') load_widget_view_helpers File.join(widget_hash[:path],'helpers','view') if File.directory? File.join(widget_hash[:path],'helpers','view') load_widget_controller_helpers(File.join(widget_hash[:path],'helpers','controller'),widget_hash) if File.directory? File.join(widget_hash[:path],'helpers','controller') end #get all view files for theme generation get_widget_view_files(widget_hash, widget_hash[:view_paths].first) #load root widget extensions that should override this widget load_root_widget_extensions(widget_hash) end end
Private Class Methods
get_widget_view_files(widget_hash, view_path)
click to toggle source
# File lib/erp_app/widgets/loader.rb, line 95 def get_widget_view_files(widget_hash, view_path) file_support = ErpTechSvcs::FileSupport::Base.new file_support.build_tree(view_path)[:children].each do |node| if node[:leaf] view_file = widget_hash[:view_files].find{|item| item[:name] == node[:text]} if view_file.nil? widget_hash[:view_files] << {:name => node[:text], :path => node[:id]} else view_file[:path] = node[:id] end else get_widget_view_files(widget_hash, node[:id]) end end end
load_root_widget_extensions(widget_hash)
click to toggle source
# File lib/erp_app/widgets/loader.rb, line 111 def load_root_widget_extensions(widget_hash) if File.directory?(File.join(Rails.root,"lib/extensions/widgets",widget_hash[:name])) Dir.glob(File.join(Rails.root,"lib/extensions/widgets",widget_hash[:name],"*.rb")).each do |file| load file end #add any additional view paths to widgets if File.directory?(File.join(Rails.root,"lib/extensions/widgets",widget_hash[:name],'views')) view_path = File.join(Rails.root,"lib/extensions/widgets",widget_hash[:name],'views') widget_hash = Rails.application.config.erp_app.widgets.find{|item| item[:name] == widget_hash[:name]} widget_hash[:view_paths].push(view_path) #get all view files for theme generation get_widget_view_files(widget_hash, view_path) end end#make sure folder exists end
load_widget_controller_helpers(path, widget_hash)
click to toggle source
# File lib/erp_app/widgets/loader.rb, line 86 def load_widget_controller_helpers(path, widget_hash) helpers = Dir.entries(path) helpers.delete_if{|name| name =~ /^\./} helpers.each do |helper| load File.join(path,helper) "Widgets::#{widget_hash[:name].camelize}::Base".constantize.send(:include, File.basename(helper, ".rb").camelize.constantize) end end
load_widget_view_helpers(path)
click to toggle source
# File lib/erp_app/widgets/loader.rb, line 77 def load_widget_view_helpers(path) helpers = Dir.entries(path) helpers.delete_if{|name| name =~ /^\./} helpers.each do |helper| load File.join(path,helper) ActionView::Base.send(:include, File.basename(helper, ".rb").camelize.constantize) end end