class ErpApp::Widgets::Base
Constants
- IGNORED_PARAMS
Attributes
div_id[RW]
html[RW]
name[RW]
proxy_controller[RW]
state_name[R]
uuid[RW]
view[RW]
widget_params[RW]
Public Class Methods
new(proxy_controller=nil, name=nil, view=nil, uuid=nil, widget_params=nil)
click to toggle source
# File lib/erp_app/widgets/base.rb, line 33 def initialize(proxy_controller=nil, name=nil, view=nil, uuid=nil, widget_params=nil) ErpApp::Widgets::Base.view_resolver_cache = [] if ErpApp::Widgets::Base.view_resolver_cache.nil? self.name = name self.proxy_controller = proxy_controller self.view = view self.uuid = uuid self.widget_params = widget_params add_view_paths store_widget_params merge_params end
Private Class Methods
installed_widgets()
click to toggle source
# File lib/erp_app/widgets/base.rb, line 157 def installed_widgets self.locate_widgets end
locate_widgets()
click to toggle source
# File lib/erp_app/widgets/base.rb, line 163 def locate_widgets widgets = [] #get all widgets in root widget_path = File.join(Rails.root.to_s,"/app/widgets/") widgets = widgets | Dir.entries(widget_path) if File.exists? widget_path #get all widgets in engines Rails::Application::Railties.engines.each do |engine| #exclude widgets path in erp_app it defines are widgets next if engine.engine_name == "erp_app" widget_path = File.join(engine.root.to_s,"/app/widgets/") widgets = widgets | Dir.entries(widget_path) if File.exists? widget_path end #remove .svn .git etc files widgets.delete_if{|name| name =~ /^\./} widgets end
render_template(view, locals={})
click to toggle source
# File lib/erp_app/widgets/base.rb, line 146 def render_template(view, locals={}) widget = Rails.application.config.erp_app.widgets.find{|item| item[:name] == self.widget_name} paths = widget[:view_paths] ActionView::Base.new(paths).render(:template => view, :locals => locals) end
widget_name()
click to toggle source
# File lib/erp_app/widgets/base.rb, line 153 def widget_name File.basename(File.dirname(__FILE__)) end
Public Instance Methods
_prefixes()
click to toggle source
override default behavior of nesting views by controller namespace.…
The prefixes used in render "foo" shortcuts.
# File lib/erp_app/widgets/base.rb, line 47 def _prefixes @_prefixes ||= [] end
render(*args)
click to toggle source
# File lib/erp_app/widgets/base.rb, line 55 def render(*args) render_view_for(self.action_name, *args) end
widget_result_id()
click to toggle source
# File lib/erp_app/widgets/base.rb, line 51 def widget_result_id "#{self.uuid}_result" end
Protected Instance Methods
get_views_full_path(view)
click to toggle source
get the full file path for a view file relative to the widgets view path
# File lib/erp_app/widgets/base.rb, line 66 def get_views_full_path(view) self.lookup_context.find_template(view).virtual_path end
locate()
click to toggle source
get location of this class that is being executed
# File lib/erp_app/widgets/base.rb, line 61 def locate File.dirname(__FILE__) end
redirect_to(options = {}, response_status = {})
click to toggle source
# File lib/erp_app/widgets/base.rb, line 82 def redirect_to(options = {}, response_status = {}) proxy_controller.redirect_to(options, response_status) {redirect_to: true} end
send_data(data, options = {})
click to toggle source
# File lib/erp_app/widgets/base.rb, line 76 def send_data(data, options = {}) proxy_controller.send_data(data, options) {send_data: true} end
send_file(path, options = {})
click to toggle source
# File lib/erp_app/widgets/base.rb, line 70 def send_file(path, options = {}) proxy_controller.send_file(path, options) {send_file: true} end
Private Instance Methods
add_view_paths()
click to toggle source
# File lib/erp_app/widgets/base.rb, line 130 def add_view_paths widget = Rails.application.config.erp_app.widgets.find{|item| item[:name] == self.name} widget[:view_paths].each do |view_path| cached_resolver = ErpApp::Widgets::Base.view_resolver_cache.find{|resolver| resolver.to_path == view_path} if cached_resolver.nil? resolver = ActionView::OptimizedFileSystemResolver.new(view_path) prepend_view_path(resolver) ErpApp::Widgets::Base.view_resolver_cache << resolver else prepend_view_path(cached_resolver) end end end
merge_params()
click to toggle source
# File lib/erp_app/widgets/base.rb, line 118 def merge_params stored_widget_params = session[:widgets][self.uuid] unless stored_widget_params.nil? self.params.merge! stored_widget_params.merge self.params end end
process_opts_for(opts, view)
click to toggle source
# File lib/erp_app/widgets/base.rb, line 114 def process_opts_for(opts, view) opts[:action] = opts[:view] || view end
render_view_for(view, *args)
click to toggle source
# File lib/erp_app/widgets/base.rb, line 90 def render_view_for(view, *args) opts = args.first.is_a?(::Hash) ? args.shift : {} return "" if opts[:nothing] if opts[:update] update_opts = opts[:update] if update_opts[:text] js = update_opts[:text] else opts = {:view => update_opts[:view]} process_opts_for(opts, view) js = render_to_string(opts).html_safe end extra_params = update_opts[:extraParams] || {} return {:json => {:htmlId => update_opts[:id], :html => js, :success => true, :extraParams => extra_params}} elsif (opts.keys & [:text, :inline, :file]).blank? process_opts_for(opts, view) return render_to_string(opts).html_safe # ActionView::Template::Text doesn't do that for us. else return opts end end
store_widget_params()
click to toggle source
# File lib/erp_app/widgets/base.rb, line 125 def store_widget_params session[:widgets] = {} if session[:widgets].nil? session[:widgets][self.uuid] = self.widget_params if (!self.widget_params.nil? and !self.widget_params.empty?) end