class Object
Public Class Methods
new(proxy_controller=nil, name=nil, view=nil, uuid=nil, widget_params=nil, passed_website=nil)
click to toggle source
adding ability to pass website
# File lib/knitkit/extensions/compass_ae/widgets/base.rb, line 17 def initialize(proxy_controller=nil, name=nil, view=nil, uuid=nil, widget_params=nil, passed_website=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 @website = passed_website add_view_paths store_widget_params merge_params end
Public Instance Methods
activation_needed_email(user)
click to toggle source
# File lib/knitkit/extensions/compass_ae/mailers/user_mailer.rb, line 4 def activation_needed_email(user) # add theme paths if a website is present if user.instance_attributes[:website_id] add_theme_view_paths(Website.find(user.instance_attributes[:website_id])) end @user = user @url = "#{get_domain(user.instance_attributes[:domain])}/users/activate/#{user.activation_token}" @url << "?login_url=#{@user.instance_attributes[:login_url]}" unless @user.instance_attributes[:login_url].nil? @temp_password = @user.instance_attributes[:temp_password] unless @user.instance_attributes[:temp_password].nil? mail(:to => user.email, :subject => "An account has been created and needs activation") end
add_view_paths()
click to toggle source
# File lib/knitkit/extensions/compass_ae/widgets/base.rb, line 37 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 #set overrides by themes current_theme_paths.each do |theme| resolver = case Rails.application.config.erp_tech_svcs.file_storage when :s3 path = File.join(theme[:url],'widgets',self.name,'views') cached_resolver = ErpApp::Widgets::Base.view_resolver_cache.find{|cached_resolver| cached_resolver.to_path == path} if cached_resolver.nil? resolver = ActionView::S3Resolver.new(path) ErpApp::Widgets::Base.view_resolver_cache << resolver resolver else cached_resolver end when :filesystem path = File.join(theme[:path],'widgets',self.name,'views') cached_resolver = ErpApp::Widgets::Base.view_resolver_cache.find{|cached_resolver| cached_resolver.to_path == path} if cached_resolver.nil? resolver = ActionView::CompassAeFileResolver.new(path) ErpApp::Widgets::Base.view_resolver_cache << resolver resolver else cached_resolver end end prepend_view_path(resolver) end end
current_theme_paths()
click to toggle source
# File lib/knitkit/extensions/compass_ae/widgets/base.rb, line 84 def current_theme_paths current_themes ? current_themes.map { |theme| {:path => theme.path.to_s, :url => theme.url.to_s}} : [] end
current_themes()
click to toggle source
# File lib/knitkit/extensions/compass_ae/widgets/base.rb, line 79 def current_themes @website = Website.find_by_host(request.host_with_port) if @website.nil? @website.themes.active if @website end
index()
click to toggle source
# File lib/knitkit/extensions/compass_ae/widgets/widget_proxy_controller.rb, line 5 def index @widget_name = params[:widget_name] @widget_action = params[:widget_action] @uuid = params[:uuid] #get widget params widget_params = nil widget_params = JSON.parse(params[:widget_params]) unless params[:widget_params].blank? widget_obj = "::Widgets::#{@widget_name.camelize}::Base".constantize.new(self, @widget_name, @widget_action, @uuid, widget_params, @website) result = widget_obj.process(@widget_action) #if there was no result just return return if result.nil? if result.is_a?(Hash) if !result[:send_file] and !result[:send_data] and !result[:redirect_to] render result end else render :inline => result end end
render_template(view, locals={}, website=nil)
click to toggle source
# File lib/knitkit/extensions/compass_ae/widgets/base.rb, line 2 def render_template(view, locals={}, website=nil) widget = Rails.application.config.erp_app.widgets.find{|item| item[:name] == self.widget_name} paths = widget[:view_paths] website.themes.active.map{ |theme| {:path => theme.path.to_s, :url => theme.url.to_s}}.each do |theme| path = File.join(theme[:path],'widgets',self.widget_name,'views') paths.unshift(path) unless paths.include?(path) end if website ActionView::Base.new(paths).render(:template => view, :locals => locals) end
reset_password_email(user)
click to toggle source
# File lib/knitkit/extensions/compass_ae/mailers/user_mailer.rb, line 19 def reset_password_email(user) # add theme paths if a website is present if user.instance_attributes[:website_id] add_theme_view_paths(Website.find(user.instance_attributes[:website_id])) end @user = user @reset_password_token = @user.reset_password_token @url = "#{get_domain(user.instance_attributes[:domain])}#{@user.instance_attributes[:reset_password_url]}?token=#{@reset_password_token}" mail(:to => user.email, :subject => "Your password has been reset") end
set_website()
click to toggle source
setting website to pass to widgets
# File lib/knitkit/extensions/compass_ae/widgets/widget_proxy_controller.rb, line 33 def set_website @website = Website.find_by_host(request.host_with_port) end
website()
click to toggle source
adding ability to get website
# File lib/knitkit/extensions/compass_ae/widgets/base.rb, line 31 def website @website end