module Newsletter

Constants

PLUGIN_ROOT

an easy way to get the root of the gem's directory structure

VERSION

Public Class Methods

abilities() click to toggle source
# File lib/newsletter/engine.rb, line 87
  def self.abilities
    <<-EOT
      if ::Newsletter.authorized?(user, ::Newsletter::Design)
        can :manage, [
          ::Newsletter::Design,
          ::Newsletter::Element,
          ::Newsletter::Area,
          ::Newsletter::Field
        ]
      end
      if ::Newsletter.authorized?(user, ::Newsletter::Newsletter)
        can :manage, [
          ::Newsletter::Newsletter,
          ::Newsletter::Piece,
          ::Newsletter::FieldValue
        ]
        can :read, [
          ::Newsletter::Design,
          ::Newsletter::Element,
          ::Newsletter::Area,
          ::Newsletter::Field
        ]
        can [:sort,:publish,:unpublish], ::Newsletter::Newsletter
        can :sort, ::Newsletter::Area
      end
      can :read, [
        ::Newsletter::Newsletter,
        ::Newsletter::Piece,
        ::Newsletter::FieldValue
      ]
      can :archive, ::Newsletter::Newsletter
    EOT
  end
assets_path() click to toggle source

an easy way to get the root of the gem's assets

# File lib/newsletter/engine.rb, line 124
def self.assets_path
  File.join(PLUGIN_ROOT,'assets')
end
authorized?(user, object=nil) click to toggle source
# File lib/newsletter/engine.rb, line 71
def self.authorized?(user, object=nil)
  if object.eql?(::Newsletter::Design)
    return true unless ::Newsletter.designs_require_authentication 
    return false if user.blank?
    return true unless ::Newsletter.design_authorized_roles.present? 
    authorized_for_roles?(user, ::Newsletter.design_authorized_roles)
  elsif object.eql?(::Newsletter::Newsletter)
    return true unless ::Newsletter.newsletters_require_authentication 
    return false if user.blank?
    return true unless ::Newsletter.newsletter_authorized_roles.present? 
    authorized_for_roles?(user, ::Newsletter.newsletter_authorized_roles)
  else
    false
  end
end
authorized_for_roles?(user,roles=[]) click to toggle source
# File lib/newsletter/engine.rb, line 57
def self.authorized_for_roles?(user,roles=[])
  user_roles = if ::Newsletter.roles_method.present?
    user.send(::Newsletter.roles_method)
  elsif user.respond_to?(:roles)
    user.roles
  elsif user.respond_to?(:role)
    [user.role]
  else
    []
  end
  user_roles = [user_roles] unless user_roles.is_a?(Array)
  roles.detect{|role| user_roles.map(&:to_sym).map(&:to_s).include?(role.to_s)}.present?
end
initialize_with_config(conf) click to toggle source

initializes the configuration options pulled from config/newsletter.yml and overrides with config/newsletter.local.yml if it exists

# File lib/newsletter/engine.rb, line 129
def self.initialize_with_config(conf)
  if conf.params.has_key?('table_prefix')
    ::Newsletter.table_prefix ||= conf.table_prefix.to_s # allow empty
  else
    ::Newsletter.table_prefix ||= 'newsletter_'
  end
  ::Newsletter.designs_path ||= conf.designs_path || "#{Rails.root}/designs" rescue "#{Rails.root}/designs"
  default_url_options = ActionController::Base.default_url_options
  default_site_url = "#{default_url_options[:protocol]||'http'}://#{default_url_options[:domain]}" 
  ::Newsletter.site_url ||= conf.site_url || default_site_url rescue default_site_url
  ::Newsletter.site_path ||= conf.site_path || '/' rescue '/'
  ::Newsletter.layout ||= conf.layout || 'application' rescue 'application'
  ::Newsletter.archive_layout ||= conf.archive_layout || 'application' rescue 'application'    
  ::Newsletter.use_show_for_resources ||= conf.use_show_for_resources || false rescue false
  ::Newsletter.asset_path ||= conf.asset_path || 'newsletter_assets' rescue 'newsletter_assets'
  ::Newsletter.show_title ||= conf.show_title || true rescue true
  ::Newsletter.designs_require_authentication ||= conf.designs_require_authentication || false rescue false
  ::Newsletter.newsletters_require_authentication ||= conf.newsletters_require_authentication || false rescue false
  ::Newsletter.design_authorized_roles ||= conf.design_authorized_roles || [] rescue []
  ::Newsletter.newsletter_authorized_roles ||= conf.newsletter_authorized_roles || [] rescue []
  ::Newsletter.roles_method ||= conf.roles_method || '' rescue ''
end