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