Module: Newsletter

Defined in:
app/models/newsletter/area.rb,
lib/newsletter.rb,
app/models/newsletter.rb,
lib/newsletter/engine.rb,
lib/newsletter/version.rb,
app/models/newsletter/asset.rb,
app/models/newsletter/field.rb,
app/models/newsletter/piece.rb,
app/models/newsletter/design.rb,
app/models/newsletter/element.rb,
app/models/newsletter/field/text.rb,
app/models/newsletter/newsletter.rb,
app/models/newsletter/field_value.rb,
app/helpers/newsletter/areas_helper.rb,
app/helpers/newsletter/assets_helper.rb,
app/helpers/newsletter/fields_helper.rb,
app/helpers/newsletter/layout_helper.rb,
app/helpers/newsletter/pieces_helper.rb,
app/helpers/newsletter/designs_helper.rb,
app/models/newsletter/field/text_area.rb,
app/helpers/newsletter/elements_helper.rb,
app/models/newsletter/field/inline_asset.rb,
app/helpers/newsletter/application_helper.rb,
app/helpers/newsletter/newsletters_helper.rb,
app/helpers/newsletter/field_values_helper.rb,
app/controllers/newsletter/areas_controller.rb,
app/controllers/newsletter/fields_controller.rb,
app/controllers/newsletter/pieces_controller.rb,
app/controllers/newsletter/designs_controller.rb,
app/controllers/newsletter/elements_controller.rb,
app/controllers/newsletter/newsletters_controller.rb

Overview

Author

Chris Hauboldt ([email protected])

Copyright

2009 Lone Star Internet Inc.

InlineAsset is a Newsletter::Field that allows either a url or an uploaded asset(image/document) to be used in a Newsletter.

Defined Under Namespace

Modules: ApplicationHelper, AreasHelper, AssetsHelper, DesignsHelper, ElementsHelper, FieldValuesHelper, FieldsHelper, LayoutHelper, NewslettersHelper, PiecesHelper Classes: ApplicationController, Area, AreasController, Asset, AssetUploader, Design, DesignsController, Element, ElementsController, Engine, Field, FieldValue, FieldsController, Newsletter, NewslettersController, Piece, PiecesController, Settings

Constant Summary collapse

PLUGIN_ROOT =

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

File.expand_path(File.join(File.dirname(__FILE__),'..','..'))
VERSION =
"3.2.5"

Class Method Summary collapse

Class Method Details

.abilitiesObject



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/newsletter/engine.rb', line 87

def self.abilities
  "    if ::Newsletter.authorized?(user, ::Newsletter::Design)\n      can :manage, [\n        ::Newsletter::Design,\n        ::Newsletter::Element,\n        ::Newsletter::Area,\n        ::Newsletter::Field\n      ]\n    end\n    if ::Newsletter.authorized?(user, ::Newsletter::Newsletter)\n      can :manage, [\n        ::Newsletter::Newsletter,\n        ::Newsletter::Piece,\n        ::Newsletter::FieldValue\n      ]\n      can :read, [\n        ::Newsletter::Design,\n        ::Newsletter::Element,\n        ::Newsletter::Area,\n        ::Newsletter::Field\n      ]\n    end\n    can :read, [\n      ::Newsletter::Newsletter,\n      ::Newsletter::Piece,\n      ::Newsletter::FieldValue\n    ]\n    can :archive, ::Newsletter::Newsletter\n  EOT\nend\n"

.assets_pathObject

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



122
123
124
# File 'lib/newsletter/engine.rb', line 122

def self.assets_path
  File.join(PLUGIN_ROOT,'assets')
end

.authorized?(user, object = nil) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# 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 = []) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
63
64
65
66
67
68
69
# 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) ⇒ Object

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



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/newsletter/engine.rb', line 127

def self.initialize_with_config(conf)
  ::Newsletter.table_prefix ||= conf.table_prefix || 'newsletter_' rescue 'newsletter_'
  ::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