effective_pages 3.14.5 → 3.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/admin/banner_ads_controller.rb +15 -0
  3. data/app/controllers/effective/banner_ads_controller.rb +13 -0
  4. data/app/datatables/admin/effective_banner_ads_datatable.rb +50 -0
  5. data/app/datatables/effective_pages_menu_datatable.rb +1 -1
  6. data/app/helpers/effective_banner_ads_helper.rb +23 -0
  7. data/app/models/effective/banner_ad.rb +55 -0
  8. data/app/models/effective/carousel_item.rb +2 -2
  9. data/app/models/effective/page.rb +3 -3
  10. data/app/models/effective/page_banner.rb +1 -1
  11. data/app/models/effective/permalink.rb +7 -4
  12. data/app/views/admin/alerts/_form.html.haml +1 -1
  13. data/app/views/admin/banner_ads/_form.html.haml +12 -0
  14. data/app/views/admin/banner_ads/_form_banner_ad.html.haml +14 -0
  15. data/app/views/admin/carousel_items/_form.html.haml +1 -1
  16. data/app/views/admin/page_banners/_form.html.haml +1 -1
  17. data/app/views/admin/page_sections/_form.html.haml +1 -1
  18. data/app/views/admin/pages/_form.html.haml +1 -1
  19. data/app/views/admin/pages/_form_menu.html.haml +4 -1
  20. data/app/views/admin/permalinks/_form.html.haml +1 -1
  21. data/app/views/admin/tags/_form.html.haml +1 -1
  22. data/app/views/admin/tags/_form_tag.html.haml +1 -1
  23. data/app/views/effective/banner_ads/_banner_ad.html.haml +6 -0
  24. data/config/effective_pages.rb +5 -0
  25. data/config/locales/effective_pages.en.yml +1 -0
  26. data/config/routes.rb +4 -1
  27. data/db/migrate/101_create_effective_pages.rb +20 -0
  28. data/lib/effective_pages/version.rb +1 -1
  29. data/lib/effective_pages.rb +7 -3
  30. metadata +10 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c4c5c010eb0062bb4d36b19ab478e5e64c53bc187e40a05f86474653efe16cbb
4
- data.tar.gz: 5efeb5d54ae12c0bb645543a2be34384d501bae3dbba777fe085906f3fd9a034
3
+ metadata.gz: e0b5fff4b2c3aa603eaa0662c480e200c64c31fa0b71754b6fce98ee946b26b2
4
+ data.tar.gz: 907df11e88aa7bd545146dcd60ba3f3b4bd5874d52d883b196ff5cb70cec0b09
5
5
  SHA512:
6
- metadata.gz: 635d94a58f8b5940e9176215c43fcff111a27c355a599859e1e4aea47a5127fea8ce6ea5fdc7d2e32563a4a36cce44b8f4a023fc5bca6edb3e2a8044e6e4dd79
7
- data.tar.gz: 3fd3d0e922af563574c46034c7ba111e4935b0cde3b840b9f26af85ccb77e5c9f1f19deb7160a9837852f87b65fe3263e72c1775c4cea2d1d9a309a0cf76fa73
6
+ metadata.gz: 4806598309444219cff8af959ff90ff1ab1817a59caa7acd727f6f345f54f6578eabe4bf914baa3729073b528e1da7b4ad3f149ce1d22b59abee1484577716bb
7
+ data.tar.gz: 16757879d021e4442c189740c3e586246169ebbf547cc51562db18fd795b86a44ccc9f924a6274ca53609e767fe4dba885ad3e6c7df4cf33cef648ec1fe13450
@@ -0,0 +1,15 @@
1
+ module Admin
2
+ class BannerAdsController < ApplicationController
3
+ before_action(:authenticate_user!) if defined?(Devise)
4
+ before_action { EffectiveResources.authorize!(self, :admin, :effective_pages) }
5
+
6
+ include Effective::CrudController
7
+
8
+ private
9
+
10
+ def permitted_params
11
+ params.require(:effective_banner_ad).permit!
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ module Effective
2
+ class BannerAdsController < ApplicationController
3
+ include Effective::CrudController
4
+
5
+ def show
6
+ @banner_ad = Effective::BannerAd.find_by!(slug: params[:slug])
7
+
8
+ authorize! :show, @banner_ad
9
+
10
+ redirect_to @banner_ad.url, allow_other_host: true
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,50 @@
1
+ module Admin
2
+ class EffectiveBannerAdsDatatable < Effective::Datatable
3
+ filters do
4
+ scope :all
5
+ scope :published
6
+ scope :draft
7
+ end
8
+
9
+ datatable do
10
+ order :updated_at
11
+
12
+ col :updated_at, visible: false
13
+ col :created_at, visible: false
14
+ col :id, visible: false
15
+
16
+ col :published?, as: :boolean
17
+ col :published_start_at, label: "Published start", visible: false
18
+ col :published_end_at, label: "Published end", visible: false
19
+
20
+ col :location, search: EffectivePages.banner_ads
21
+ col :name
22
+
23
+ col :file, label: 'Image' do |banner_ad|
24
+ if banner_ad.file.attached?
25
+ image_tag(url_for(banner_ad.file), style: 'max-width: 200px;')
26
+ end
27
+ end
28
+
29
+ col :caption, visible: false
30
+
31
+ col(:path) do |banner_ad|
32
+ if banner_ad.redirect_path.present?
33
+ url = (root_url.chomp('/') + banner_ad.redirect_path)
34
+ link_to(url, url, target: '_blank')
35
+ end
36
+ end
37
+
38
+ col :url, visible: false
39
+ col :slug, visible: false
40
+
41
+ col :tracks_count, label: 'Clicks'
42
+
43
+ actions_col
44
+ end
45
+
46
+ collection do
47
+ Effective::BannerAd.deep.all
48
+ end
49
+ end
50
+ end
@@ -8,7 +8,7 @@ class EffectivePagesMenuDatatable < Effective::Datatable
8
8
  end
9
9
 
10
10
  col :title do |page|
11
- link_to(page, effective_pages.edit_admin_page_path(page))
11
+ link_to(page.menu_to_s, effective_pages.edit_admin_page_path(page))
12
12
  end
13
13
 
14
14
  col :menu_url, label: 'Redirect Url'
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EffectiveBannerAdsHelper
4
+
5
+ def effective_banner_ads
6
+ @_effective_banner_ads ||= Effective::BannerAd.published.deep.all
7
+ end
8
+
9
+ def render_banner_ad(location, opts = {}, &block)
10
+ location = EffectivePages.banner_ads.find { |obj| obj == location }
11
+ raise("unknown banner ad location: #{location.presence || 'nil'}. Please add it to EffectivePages.banner_ads config option") if location.blank?
12
+
13
+ banner_ads = effective_banner_ads.select { |ba| ba.location == location }
14
+ banner_ad = banner_ads.sample
15
+
16
+ if block_given?
17
+ yield(banner_ad); nil
18
+ else
19
+ render('effective/banner_ads/banner_ad', banner_ad: banner_ad, banner_ad_opts: opts)
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,55 @@
1
+ # Banner ads have an image attachment, title, location, and optional external URL
2
+ # Ads are assigned to a named location.
3
+ # If more than one published ad is assigned to a location, randomly select an ad when rendering the page. If there is only one ad for the location and date/time, always show the one ad.
4
+ module Effective
5
+ class BannerAd < ActiveRecord::Base
6
+ self.table_name = (EffectivePages.banner_ads_table_name || :banner_ads).to_s
7
+
8
+ acts_as_published
9
+ acts_as_slugged
10
+
11
+ acts_as_trackable if respond_to?(:acts_as_trackable)
12
+ log_changes if respond_to?(:log_changes)
13
+
14
+ has_one_attached :file
15
+
16
+ effective_resource do
17
+ name :string
18
+ location :string
19
+
20
+ published_start_at :datetime
21
+ published_end_at :datetime
22
+
23
+ caption :string
24
+ url :string
25
+
26
+ # acts_as_slugged
27
+ slug :string
28
+
29
+ # acts_as_trackable
30
+ tracks_count :integer
31
+
32
+ timestamps
33
+ end
34
+
35
+ validates :name, presence: true
36
+ validates :location, presence: true
37
+ validates :file, presence: true
38
+ validates :url, url: true
39
+
40
+ scope :deep, -> { with_attached_file }
41
+ scope :sorted, -> { order(:name) }
42
+
43
+ def to_s
44
+ name.presence || model_name.human
45
+ end
46
+
47
+ def redirect_path
48
+ "/ad/#{slug}" if url.present?
49
+ end
50
+
51
+ def track!(action: 'click', user: nil, details: nil)
52
+ tracks.create!(action: action, user: user, details: details)
53
+ end
54
+ end
55
+ end
@@ -47,12 +47,12 @@ module Effective
47
47
 
48
48
  validate(if: -> { carousel.present? && EffectivePages.carousels? }) do
49
49
  unless (carousels = EffectivePages.carousels).find { |c| c.to_s == carousel.to_s }.present?
50
- self.errors.add(:carousel, "must be one of #{carousels.to_sentence}")
50
+ errors.add(:carousel, "must be one of #{carousels.to_sentence}")
51
51
  end
52
52
  end
53
53
 
54
54
  validate(if: -> { file.attached? }) do
55
- self.errors.add(:file, 'must be an image') unless file.image?
55
+ errors.add(:file, 'must be an image') unless file.image?
56
56
  end
57
57
 
58
58
  def to_s
@@ -115,7 +115,7 @@ module Effective
115
115
 
116
116
  validate(if: -> { menu_url.present? }) do
117
117
  unless menu_url.start_with?('http://') || menu_url.start_with?('https://') || menu_url.start_with?('/')
118
- self.errors.add(:menu_url, "must start with http(s):// or /")
118
+ errors.add(:menu_url, "must start with http(s):// or /")
119
119
  end
120
120
  end
121
121
 
@@ -132,8 +132,8 @@ module Effective
132
132
 
133
133
  validate(if: -> { banner? && EffectivePages.banners? }) do
134
134
  unless (page_banner.present? ^ banner_random? ^ EffectivePages.banners_force_randomize) # xor
135
- self.errors.add(:page_banner_id, "please select a page banner or random")
136
- self.errors.add(:banner_random, "please select a page banner or random")
135
+ errors.add(:page_banner_id, "please select a page banner or random")
136
+ errors.add(:banner_random, "please select a page banner or random")
137
137
  end
138
138
  end
139
139
 
@@ -32,7 +32,7 @@ module Effective
32
32
  validates :file, presence: true, content_type: :image, size: { less_than: 1.megabyte }
33
33
 
34
34
  validate(if: -> { file.attached? }) do
35
- self.errors.add(:file, 'must be an image') unless file.image?
35
+ errors.add(:file, 'must be an image') unless file.image?
36
36
  end
37
37
 
38
38
  def to_s
@@ -25,12 +25,15 @@ module Effective
25
25
 
26
26
  effective_resource do
27
27
  title :string
28
- slug :string
29
-
30
28
  url :string
31
-
32
29
  summary :text
33
30
 
31
+ # acts_as_slugged
32
+ slug :string
33
+
34
+ # acts_as_trackable
35
+ tracks_count :integer
36
+
34
37
  timestamps
35
38
  end
36
39
 
@@ -62,7 +65,7 @@ module Effective
62
65
 
63
66
  def attachment_and_url_cannot_both_be_present
64
67
  if url.present? && (attachment.attached? && !attachment.marked_for_destruction?)
65
- self.errors.add(:base, 'Attachment and URL cannot both be present')
68
+ errors.add(:base, 'Attachment and URL cannot both be present')
66
69
  end
67
70
  end
68
71
  end
@@ -1,5 +1,5 @@
1
1
  = tabs do
2
- = tab 'Alert' do
2
+ = tab(alert) do
3
3
  = render '/admin/alerts/form_alert', alert: alert
4
4
 
5
5
  - if alert.persisted?
@@ -0,0 +1,12 @@
1
+ = tabs do
2
+ = tab(banner_ad) do
3
+ = render '/admin/banner_ads/form_banner_ad', banner_ad: banner_ad
4
+
5
+ - if banner_ad.persisted?
6
+ - if banner_ad.class.respond_to?(:acts_as_trackable?)
7
+ = tab 'Tracks' do
8
+ - datatable = Admin::EffectiveTracksDatatable.new(owner: banner_ad)
9
+ = render_datatable(datatable, inline: true, namespace: :admin)
10
+
11
+ = tab 'Logs' do
12
+ = render_datatable(banner_ad.log_changes_datatable, inline: true, namespace: :admin)
@@ -0,0 +1,14 @@
1
+ = effective_form_with(model: [:admin, banner_ad], engine: true) do |f|
2
+ = f.text_field :name
3
+ = acts_as_slugged_fields(f, url: (effective_pages.banner_ad_url(f.object) rescue nil))
4
+
5
+ = f.select :location, EffectivePages.banner_ads, label: 'Location', hint: 'Each location will display one random banner ad. Please contact us to add more locations.'
6
+ = acts_as_published_fields(f)
7
+
8
+ = f.file_field :file, label: 'Image attachment', hint: EffectivePages.banner_ads_hint_text
9
+ = f.text_field :caption, hint: 'Optional. Displayed alongside the image'
10
+
11
+ .row
12
+ .col-md-6= f.url_field :url, label: 'Redirect url', hint: 'Optional. When present clicking the banner ad will redirect to this url and track clicks.'
13
+
14
+ = effective_submit(f)
@@ -1,5 +1,5 @@
1
1
  = tabs do
2
- = tab 'Carousel Item' do
2
+ = tab(carousel_item) do
3
3
  = render '/admin/carousel_items/form_carousel_item', carousel_item: carousel_item
4
4
 
5
5
  - if carousel_item.persisted?
@@ -1,5 +1,5 @@
1
1
  = tabs do
2
- = tab 'Page Banner' do
2
+ = tab(page_banner) do
3
3
  = render '/admin/page_banners/form_page_banner', page_banner: page_banner
4
4
 
5
5
  - if page_banner.persisted?
@@ -1,5 +1,5 @@
1
1
  = tabs do
2
- = tab 'Page Section' do
2
+ = tab(page_section) do
3
3
  = render '/admin/page_sections/form_page_section', page_section: page_section
4
4
 
5
5
  - if page_section.persisted?
@@ -3,7 +3,7 @@
3
3
 
4
4
  - else
5
5
  = tabs do
6
- = tab 'Page' do
6
+ = tab(page) do
7
7
  = render '/admin/pages/form_page', page: page
8
8
 
9
9
  - if page.persisted?
@@ -27,7 +27,10 @@
27
27
  = f.text_field :menu_url, label: "Redirect to path or url instead of displaying page",
28
28
  hint: "Must start with http(s):// or /"
29
29
 
30
- = effective_submit(f)
30
+ - if inline_datatable?
31
+ = f.submit 'Save'
32
+ - else
33
+ = effective_submit(f)
31
34
 
32
35
  - if page.menu_parent.present?
33
36
  .mb-4
@@ -1,5 +1,5 @@
1
1
  = tabs do
2
- = tab 'Permalink' do
2
+ = tab(permalink) do
3
3
  = render '/admin/permalinks/form_permalink', permalink: permalink
4
4
 
5
5
  - if permalink.persisted?
@@ -1,5 +1,5 @@
1
1
  = tabs do
2
- = tab 'Tag' do
2
+ = tab(tag) do
3
3
  = render '/admin/tags/form_tag', tag: tag
4
4
 
5
5
  - if tag.persisted?
@@ -1,4 +1,4 @@
1
1
  = effective_form_with(model: [:admin, tag], engine: true) do |f|
2
- = f.text_field :name, hint: 'Tag name'
2
+ = f.text_field :name
3
3
 
4
4
  = f.submit 'Save'
@@ -0,0 +1,6 @@
1
+ .effective-banner-ad{banner_ad_opts}
2
+ - if banner_ad.redirect_path.present?
3
+ = link_to(banner_ad.redirect_path) do
4
+ = image_tag(banner_ad.file, alt: banner_ad.caption)
5
+ - else
6
+ = image_tag(banner_ad.file, alt: banner_ad.caption)
@@ -57,6 +57,11 @@ EffectivePages.setup do |config|
57
57
  # Only 2 or 3 are supported right now
58
58
  config.max_menu_depth = 2
59
59
 
60
+ # Banner Ads
61
+ config.banner_ads = false
62
+ # config.banner_ads = [:home, :secondary]
63
+ config.banner_ads_hint_text = 'Hint text that includes required image dimensions'
64
+
60
65
  # Page Banners
61
66
  # Allow a page banner to be selected on the Admin::Pages#edit screen
62
67
  # Banners can be CRUD by the admin
@@ -6,5 +6,6 @@ en:
6
6
  activerecord:
7
7
  models:
8
8
  effective/tagging: 'Taggings'
9
+ effective/banner_ad: 'Banner Ad'
9
10
  effective/page_banner: 'Page Banner'
10
11
  effective/page_section: 'Page Section'
data/config/routes.rb CHANGED
@@ -5,9 +5,11 @@ EffectivePages::Engine.routes.draw do
5
5
  resources :pages, except: [:show]
6
6
  resources :page_sections, only: [:index, :edit, :update]
7
7
  resources :page_banners, except: [:show]
8
+
8
9
  resources :menus, only: [:index]
9
- resources :carousel_items, except: [:show]
10
10
  resources :alerts, except: [:show]
11
+ resources :banner_ads, except: [:show]
12
+ resources :carousel_items, except: [:show]
11
13
  resources :permalinks, except: [:show]
12
14
  resources :tags, except: [:show]
13
15
  resources :taggings, only: [:index]
@@ -15,6 +17,7 @@ EffectivePages::Engine.routes.draw do
15
17
 
16
18
  scope module: 'effective' do
17
19
  get '/link/:slug', to: 'permalinks#show', as: :permalink_redirect
20
+ get '/ad/:slug', to: 'banner_ads#show', as: :banner_ad
18
21
 
19
22
  match '*id', to: 'pages#show', via: :get, as: :page, constraints: lambda { |req|
20
23
  Effective::Page.find_by_slug_or_id(req.path_parameters[:id] || '/').present?
@@ -128,6 +128,26 @@ class CreateEffectivePages < ActiveRecord::Migration[6.0]
128
128
 
129
129
  add_index :taggings, [:taggable_type, :taggable_id], if_not_exists: true
130
130
  add_index :taggings, :tag_id, if_not_exists: true
131
+
132
+ create_table :banner_ads, if_not_exists: true do |t|
133
+ t.string :name
134
+ t.string :location
135
+
136
+ t.datetime :published_start_at
137
+ t.datetime :published_end_at
138
+
139
+ t.string :caption
140
+ t.string :url
141
+
142
+ t.string :slug
143
+ t.integer :tracks_count, default: 0
144
+
145
+ t.timestamps
146
+ end
147
+
148
+ add_index :banner_ads, :name, :unique => true
149
+ add_index :banner_ads, :location, if_not_exists: true
150
+ add_index :banner_ads, [:published_start_at, :published_end_at], if_not_exists: true
131
151
  end
132
152
 
133
153
  end
@@ -1,3 +1,3 @@
1
1
  module EffectivePages
2
- VERSION = '3.14.5'.freeze
2
+ VERSION = '3.15.0'.freeze
3
3
  end
@@ -7,19 +7,19 @@ require 'effective_pages/version'
7
7
  module EffectivePages
8
8
  def self.config_keys
9
9
  [
10
- :pages_table_name, :page_banners_table_name, :page_sections_table_name, :page_segments_table_name,
10
+ :pages_table_name, :page_banners_table_name, :page_sections_table_name, :page_segments_table_name, :banner_ads_table_name,
11
11
  :alerts_table_name, :carousel_items_table_name, :permalinks_table_name, :tags_table_name, :taggings_table_name,
12
12
  :pages_path, :excluded_pages, :layouts_path, :excluded_layouts,
13
13
  :site_og_image, :site_og_image_width, :site_og_image_height,
14
14
  :site_title, :site_title_suffix, :fallback_meta_description, :google_analytics_code,
15
15
  :silence_missing_page_title_warnings, :silence_missing_meta_description_warnings, :silence_missing_canonical_url_warnings,
16
- :use_effective_roles, :layout, :max_menu_depth, :banners_hint_text, :carousels_hint_text, :banners_force_randomize,
16
+ :use_effective_roles, :layout, :max_menu_depth, :banner_ads_hint_text, :banners_hint_text, :carousels_hint_text, :banners_force_randomize,
17
17
 
18
18
  # Booleans
19
19
  :banners, :sidebars,
20
20
 
21
21
  # Hashes
22
- :menus, :carousels
22
+ :menus, :carousels, :banner_ads
23
23
  ]
24
24
  end
25
25
 
@@ -60,6 +60,10 @@ module EffectivePages
60
60
  !!banners
61
61
  end
62
62
 
63
+ def self.banner_ads?
64
+ banner_ads.kind_of?(Array) && banner_ads.present?
65
+ end
66
+
63
67
  def self.carousels?
64
68
  carousels.kind_of?(Array) && carousels.present?
65
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_pages
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.14.5
4
+ version: 3.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-13 00:00:00.000000000 Z
11
+ date: 2025-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -163,6 +163,7 @@ files:
163
163
  - app/assets/javascripts/effective_pages.js
164
164
  - app/assets/javascripts/effective_pages/google_analytics.js
165
165
  - app/controllers/admin/alerts_controller.rb
166
+ - app/controllers/admin/banner_ads_controller.rb
166
167
  - app/controllers/admin/carousel_items_controller.rb
167
168
  - app/controllers/admin/menus_controller.rb
168
169
  - app/controllers/admin/page_banners_controller.rb
@@ -171,8 +172,10 @@ files:
171
172
  - app/controllers/admin/permalinks_controller.rb
172
173
  - app/controllers/admin/taggings_controller.rb
173
174
  - app/controllers/admin/tags_controller.rb
175
+ - app/controllers/effective/banner_ads_controller.rb
174
176
  - app/controllers/effective/pages_controller.rb
175
177
  - app/controllers/effective/permalinks_controller.rb
178
+ - app/datatables/admin/effective_banner_ads_datatable.rb
176
179
  - app/datatables/admin/effective_taggings_datatable.rb
177
180
  - app/datatables/admin/effective_tags_datatable.rb
178
181
  - app/datatables/effective_alerts_datatable.rb
@@ -183,6 +186,7 @@ files:
183
186
  - app/datatables/effective_pages_menu_datatable.rb
184
187
  - app/datatables/effective_permalinks_datatable.rb
185
188
  - app/helpers/effective_alerts_helper.rb
189
+ - app/helpers/effective_banner_ads_helper.rb
186
190
  - app/helpers/effective_carousels_helper.rb
187
191
  - app/helpers/effective_menus_helper.rb
188
192
  - app/helpers/effective_page_banners_helper.rb
@@ -193,6 +197,7 @@ files:
193
197
  - app/helpers/effective_tags_helper.rb
194
198
  - app/models/concerns/acts_as_tagged.rb
195
199
  - app/models/effective/alert.rb
200
+ - app/models/effective/banner_ad.rb
196
201
  - app/models/effective/carousel_item.rb
197
202
  - app/models/effective/page.rb
198
203
  - app/models/effective/page_banner.rb
@@ -203,6 +208,8 @@ files:
203
208
  - app/models/effective/tagging.rb
204
209
  - app/views/admin/alerts/_form.html.haml
205
210
  - app/views/admin/alerts/_form_alert.html.haml
211
+ - app/views/admin/banner_ads/_form.html.haml
212
+ - app/views/admin/banner_ads/_form_banner_ad.html.haml
206
213
  - app/views/admin/carousel_items/_form.html.haml
207
214
  - app/views/admin/carousel_items/_form_carousel_item.html.haml
208
215
  - app/views/admin/carousel_items/index.html.haml
@@ -226,6 +233,7 @@ files:
226
233
  - app/views/admin/tags/_form.html.haml
227
234
  - app/views/admin/tags/_form_tag.html.haml
228
235
  - app/views/effective/alerts/_alert.html.haml
236
+ - app/views/effective/banner_ads/_banner_ad.html.haml
229
237
  - app/views/effective/carousels/_carousel.html.haml
230
238
  - app/views/effective/page_segments/_content.html.haml
231
239
  - app/views/effective/page_segments/_menu.html.haml