tb_banners 1.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 (83) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.markdown +144 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/images/spud/admin/banners/banners.png +0 -0
  6. data/app/assets/images/spud/admin/banners/banners@2x.png +0 -0
  7. data/app/assets/javascripts/spud/admin/banners/application.js +2 -0
  8. data/app/assets/javascripts/spud/admin/banners/banner_sets.js +102 -0
  9. data/app/assets/javascripts/spud/admin/banners/banners.js +187 -0
  10. data/app/assets/stylesheets/spud/admin/banners/application.css +4 -0
  11. data/app/assets/stylesheets/spud/admin/banners/banner_sets.css +27 -0
  12. data/app/assets/stylesheets/spud/admin/banners/banners.css +36 -0
  13. data/app/controllers/spud/admin/banner_sets_controller.rb +68 -0
  14. data/app/controllers/spud/admin/banners_controller.rb +104 -0
  15. data/app/helpers/spud/admin/banner_sets_helper.rb +2 -0
  16. data/app/helpers/spud/admin/banners_helper.rb +2 -0
  17. data/app/helpers/spud_banners_helper.rb +38 -0
  18. data/app/models/spud_banner.rb +35 -0
  19. data/app/models/spud_banner_set.rb +30 -0
  20. data/app/observers/spud_banner_sweeper.rb +52 -0
  21. data/app/views/spud/admin/banner_sets/_banner_set.html.erb +8 -0
  22. data/app/views/spud/admin/banner_sets/_form.html.erb +38 -0
  23. data/app/views/spud/admin/banner_sets/create.html.erb +1 -0
  24. data/app/views/spud/admin/banner_sets/edit.html.erb +1 -0
  25. data/app/views/spud/admin/banner_sets/index.html.erb +12 -0
  26. data/app/views/spud/admin/banner_sets/new.html.erb +1 -0
  27. data/app/views/spud/admin/banner_sets/show.html.erb +11 -0
  28. data/app/views/spud/admin/banners/_banner.html.erb +7 -0
  29. data/app/views/spud/admin/banners/_form.html.erb +59 -0
  30. data/app/views/spud/admin/banners/edit.html.erb +1 -0
  31. data/app/views/spud/admin/banners/legacy.js.erb +5 -0
  32. data/app/views/spud/admin/banners/new.html.erb +1 -0
  33. data/app/views/spud/admin/banners/show.html.erb +1 -0
  34. data/config/routes.rb +14 -0
  35. data/db/migrate/20121116195139_create_spud_banners.rb +15 -0
  36. data/db/migrate/20121116195312_create_spud_banner_sets.rb +12 -0
  37. data/db/migrate/20130614132846_add_rich_text_to_spud_banners.rb +6 -0
  38. data/lib/spud_banners/configuration.rb +10 -0
  39. data/lib/spud_banners/engine.rb +25 -0
  40. data/lib/spud_banners/liquid_tags.rb +32 -0
  41. data/lib/spud_banners/version.rb +5 -0
  42. data/lib/tasks/spud_banners_tasks.rake +4 -0
  43. data/lib/tb_banners.rb +7 -0
  44. data/spec/controllers/spud/admin/banner_sets_controller_spec.rb +100 -0
  45. data/spec/dummy/README.rdoc +261 -0
  46. data/spec/dummy/Rakefile +7 -0
  47. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  48. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  49. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  50. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  51. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  52. data/spec/dummy/config/application.rb +59 -0
  53. data/spec/dummy/config/boot.rb +10 -0
  54. data/spec/dummy/config/database.yml +14 -0
  55. data/spec/dummy/config/environment.rb +5 -0
  56. data/spec/dummy/config/environments/development.rb +37 -0
  57. data/spec/dummy/config/environments/production.rb +67 -0
  58. data/spec/dummy/config/environments/test.rb +37 -0
  59. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  60. data/spec/dummy/config/initializers/inflections.rb +15 -0
  61. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  62. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  63. data/spec/dummy/config/initializers/session_store.rb +8 -0
  64. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  65. data/spec/dummy/config/locales/en.yml +5 -0
  66. data/spec/dummy/config/routes.rb +3 -0
  67. data/spec/dummy/config.ru +4 -0
  68. data/spec/dummy/db/migrate/20121127192246_create_spud_admin_permissions.spud_core.rb +12 -0
  69. data/spec/dummy/db/migrate/20121127192247_create_spud_users.spud_core.rb +30 -0
  70. data/spec/dummy/db/migrate/20121127192248_add_time_zone_to_spud_user.spud_core.rb +7 -0
  71. data/spec/dummy/db/migrate/20121127192249_add_scope_to_spud_admin_permissions.spud_core.rb +7 -0
  72. data/spec/dummy/db/migrate/20121127192250_create_spud_user_settings.spud_core.rb +12 -0
  73. data/spec/dummy/db/schema.rb +87 -0
  74. data/spec/dummy/log/development.log +72 -0
  75. data/spec/dummy/log/test.log +9059 -0
  76. data/spec/dummy/public/404.html +26 -0
  77. data/spec/dummy/public/422.html +26 -0
  78. data/spec/dummy/public/500.html +25 -0
  79. data/spec/dummy/public/favicon.ico +0 -0
  80. data/spec/dummy/script/rails +6 -0
  81. data/spec/spec_helper.rb +40 -0
  82. data/spec/support/authlogic_helper.rb +2 -0
  83. metadata +331 -0
@@ -0,0 +1,104 @@
1
+ class Spud::Admin::BannersController < Spud::Admin::ApplicationController
2
+
3
+ include RespondsToParent
4
+
5
+ cache_sweeper :spud_banner_sweeper, :only => [:create, :update, :destroy]
6
+ before_filter :get_set, :only => [:new, :create]
7
+ before_filter :get_record, :only => [:edit, :update, :destroy]
8
+ respond_to :html
9
+ layout false
10
+
11
+ def new
12
+ @banner = @banner_set.banners.new
13
+ respond_with @banner
14
+ end
15
+
16
+ def create
17
+ @banner = @banner_set.banners.build
18
+ @banner.attributes = params[:spud_banner]
19
+
20
+ last_banner = SpudBanner.select('sort_order').where(:spud_banner_set_id => @banner_set.id).order('sort_order desc').first
21
+ if last_banner
22
+ @banner.sort_order = last_banner.sort_order + 1
23
+ end
24
+
25
+ if request.xhr?
26
+ if @banner.save
27
+ flash.now[:notice] = 'SpudBanner created successfully'
28
+ render 'show'
29
+ else
30
+ render 'new', :status => 422
31
+ end
32
+ else
33
+ @banner.save
34
+ respond_to_parent do
35
+ render 'legacy', :formats => [:js]
36
+ end
37
+ end
38
+ end
39
+
40
+ def edit
41
+ respond_with @banner
42
+ end
43
+
44
+ def update
45
+ if request.xhr?
46
+ if @banner.update_attributes(params[:spud_banner])
47
+ flash.now[:notice] = 'SpudBanner created successfully'
48
+ render 'show'
49
+ else
50
+ render 'edit', :status => 422
51
+ end
52
+ else
53
+ @banner.update_attributes(params[:spud_banner])
54
+ respond_to_parent do
55
+ render 'legacy', :formats => [:js]
56
+ end
57
+ end
58
+ end
59
+
60
+ def destroy
61
+ if @banner.destroy
62
+ flash.now[:notice] = 'SpudBanner deleted successfully'
63
+ status = 200
64
+ else
65
+ status = 422
66
+ end
67
+ render :nothing => true, :status => status
68
+ end
69
+
70
+ def sort
71
+ banner_ids = params[:spud_banner_ids]
72
+ banners = SpudBanner.where(:id => banner_ids).to_a
73
+ SpudBanner.transaction do
74
+ banner_ids.each_with_index do |id, index|
75
+ banner = banners.select{ |b| b.id == id.to_i }.first
76
+ banner.update_attribute(:sort_order, index)
77
+ end
78
+ end
79
+ render :nothing => true, :status => 200
80
+ end
81
+
82
+ private
83
+
84
+ def get_set
85
+ begin
86
+ @banner_set = SpudBannerSet.find(params[:banner_set_id])
87
+ rescue ActiveRecord::RecordNotFound => e
88
+ flash.now[:error] = "Could not find the requested SpudBannerSet"
89
+ render :nothing => true, :status => 404
90
+ return false
91
+ end
92
+ end
93
+
94
+ def get_record
95
+ begin
96
+ @banner = SpudBanner.find(params[:id])
97
+ rescue ActiveRecord::RecordNotFound => e
98
+ flash.now[:error] = "Could not find the requested SpudBanner"
99
+ redirect_to spud_admin_banner_sets_path
100
+ return false
101
+ end
102
+ end
103
+
104
+ end
@@ -0,0 +1,2 @@
1
+ module Spud::Admin::BannerSetsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Spud::Admin::BannersHelper
2
+ end
@@ -0,0 +1,38 @@
1
+ module SpudBannersHelper
2
+
3
+ def spud_banners_for_set(set_or_identifier, options = {})
4
+ limit = options[:limit] || false
5
+ if set_or_identifier.is_a?(SpudBannerSet)
6
+ banner_set = set_or_identifier
7
+ else
8
+ banner_set = SpudBannerSet.find_by_identifier(set_or_identifier)
9
+ end
10
+ return '' if banner_set.blank?
11
+ if block_given?
12
+ banner_set.banners.limit(limit).each do |banner|
13
+ yield(banner)
14
+ end
15
+ else
16
+ content_tag(:div, :class => 'spud_banner_set', 'data-id' => banner_set.id) do
17
+ banner_set.banners.limit(limit).map do |banner|
18
+ concat(content_tag(:div, :class => 'spud_banner_set_banner', 'data-id' => banner.id){ spud_banner_tag(banner) })
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ def spud_banner_tag(banner)
25
+ if banner.link_to.blank?
26
+ spud_banner_image_tag(banner)
27
+ else
28
+ link_to(banner.link_to, :target => banner.link_target) do
29
+ spud_banner_image_tag(banner)
30
+ end
31
+ end
32
+ end
33
+
34
+ def spud_banner_image_tag(banner)
35
+ image_tag(banner.banner.url(:banner), :alt => banner.alt, :title => banner.title)
36
+ end
37
+
38
+ end
@@ -0,0 +1,35 @@
1
+ class SpudBanner < ActiveRecord::Base
2
+ attr_accessible :banner, :link_to, :link_target, :title, :alt, :sort_order, :rich_text
3
+ belongs_to :owner, :class_name => 'SpudBannerSet', :foreign_key => 'spud_banner_set_id', :inverse_of => :banners
4
+
5
+ has_attached_file :banner,
6
+ :styles => lambda { |attachment| attachment.instance.dynamic_styles },
7
+ :convert_options => {
8
+ :admin_small => '-strip -density 72x72',
9
+ :banner => '-strip -density 72x72'
10
+ },
11
+ :storage => Spud::Banners.paperclip_storage,
12
+ :s3_credentials => Spud::Banners.s3_credentials,
13
+ :url => Spud::Banners.storage_url,
14
+ :path => Spud::Banners.storage_path
15
+
16
+ validates_attachment_presence :banner
17
+
18
+ def dynamic_styles
19
+ styles = {
20
+ :spud_admin_small => '300x150'
21
+ }
22
+ owner_style = nil
23
+ if self.owner
24
+ owner_style = "#{self.owner.width}x#{self.owner.height}"
25
+ owner_style += '#' if self.owner.cropped
26
+ styles[:banner] = owner_style
27
+ end
28
+ return styles
29
+ end
30
+
31
+ def set_name
32
+ return owner.name
33
+ end
34
+
35
+ end
@@ -0,0 +1,30 @@
1
+ class SpudBannerSet < ActiveRecord::Base
2
+ attr_accessible :cropped, :height, :name, :short_name, :width, :has_rich_text
3
+ has_many :banners, :class_name => 'SpudBanner', :order => 'sort_order asc', :dependent => :destroy, :inverse_of => :owner
4
+
5
+ validates_presence_of :name
6
+ validates_uniqueness_of :name
7
+ validates_numericality_of :width, :height
8
+
9
+ def self.find_by_identifier(identifier)
10
+ if identifier.class == String
11
+ banner_set = SpudBannerSet.find_by_name(identifier)
12
+ elsif identifier.class == Symbol
13
+ banner_set = SpudBannerSet.find_by_name(identifier.to_s.titleize)
14
+ else
15
+ banner_set = SpudBannerSet.find(identifier)
16
+ end
17
+ return banner_set
18
+ end
19
+
20
+ def reprocess_banners!
21
+ self.banners.each do |banner|
22
+ banner.banner.reprocess!
23
+ end
24
+ end
25
+
26
+ def set_name
27
+ return name
28
+ end
29
+
30
+ end
@@ -0,0 +1,52 @@
1
+ class SpudBannerSweeper < ActionController::Caching::Sweeper
2
+ observe :spud_banner, :spud_banner_set
3
+
4
+ def before_save(record)
5
+ if record.is_a?(SpudBannerSet)
6
+ @old_name = record.name
7
+ end
8
+ end
9
+
10
+ def after_save(record)
11
+ if record.is_a?(SpudBanner)
12
+ expire_cache_for(record.owner)
13
+ else
14
+ expire_cache_for(record)
15
+ end
16
+ end
17
+
18
+ def after_destroy(record)
19
+ if record.is_a?(SpudBanner)
20
+ expire_cache_for(record.owner)
21
+ else
22
+ expire_cache_for(record)
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def expire_cache_for(record)
29
+ # lazy full page cache clear
30
+ cache_path = ActionController::Base.page_cache_directory
31
+ if cache_path != Rails.root && cache_path != Rails.public_path && File.directory?(cache_path)
32
+ FileUtils.rm_rf(cache_path)
33
+ end
34
+
35
+ # reprocess cached liquid tags
36
+ if defined?(Spud::Cms)
37
+ values = [record.set_name]
38
+ values << @old_name if !@old_name.blank?
39
+ SpudPageLiquidTag.where(:tag_name => "banner_set",:value => values).includes(:attachment).each do |tag|
40
+ partial = tag.attachment
41
+ partial.postprocess_content
42
+ partial.save
43
+ page = partial.try(:spud_page)
44
+ if page.blank? == false
45
+ page.updated_at = Time.now.utc
46
+ page.save
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ end
@@ -0,0 +1,8 @@
1
+ <%= content_tag :li, :class => 'spud_admin_banner_sets_list_item', 'data-id' => banner_set.id do %>
2
+ <%= banner_set.name %>
3
+ <span class="spud_admin_banner_sets_list_item_actions">
4
+ <%= link_to 'Manage Banners', spud_admin_banner_set_path(banner_set), :class => 'btn btn-small' %>
5
+ <%= link_to 'Edit Configuration', edit_spud_admin_banner_set_path(banner_set), :class => 'btn btn-small spud_banner_sets_edit' %>
6
+ <%= link_to 'Delete', spud_admin_banner_set_path(banner_set), :class => 'btn btn-small btn-danger spud_banner_sets_delete' %>
7
+ </span>
8
+ <% end %>
@@ -0,0 +1,38 @@
1
+ <%= form_for @banner_set, :url => path, :html => {:class => 'form-horizontal spud_banner_set_form'} do |f| %>
2
+
3
+ <%= error_messages_for(f.object) %>
4
+
5
+ <fieldset>
6
+ <div class="control-group">
7
+ <%= f.label :name, "Name",:class => "control-label" %>
8
+ <div class="controls">
9
+ <%= f.text_field :name %>
10
+ </div>
11
+ </div>
12
+ <div class="control-group">
13
+ <%= f.label :width, "Width", :class => "control-label" %>
14
+ <div class="controls">
15
+ <%= f.text_field :width %>
16
+ </div>
17
+ </div>
18
+ <div class="control-group">
19
+ <%= f.label :height, "Height", :class => "control-label" %>
20
+ <div class="controls">
21
+ <%= f.text_field :height %>
22
+ </div>
23
+ </div>
24
+ <div class="control-group">
25
+ <%= f.label :cropped, "Cropped", :class => "control-label" %>
26
+ <div class="controls">
27
+ <%= f.check_box :cropped %>
28
+ </div>
29
+ </div>
30
+ <div class="control-group">
31
+ <%= f.label :has_rich_text, "Allow Rich Text", :class => "control-label" %>
32
+ <div class="controls">
33
+ <%= f.check_box :has_rich_text %>
34
+ </div>
35
+ </div>
36
+ </fieldset>
37
+
38
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'banner_set', :locals => {:banner_set => @banner_set} %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'form', :locals => {:path => spud_admin_banner_set_path(@banner_set)} %>
@@ -0,0 +1,12 @@
1
+ <% content_for :data_controls do %>
2
+ <%= link_to "New Banner Set", new_spud_admin_banner_set_path, :class => "btn btn-primary spud_banner_sets_add_new", :title => "New Banner Set" %>
3
+ <% end %>
4
+
5
+ <% content_for :detail do %>
6
+ <ul class="spud_admin_banner_sets_list">
7
+ <%= render :partial => 'banner_set', :collection => @banner_sets %>
8
+ </ul>
9
+ <script>
10
+ $(document).ready(spud.admin.banner_sets.init);
11
+ </script>
12
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'form', :locals => {:path => spud_admin_banner_sets_path} %>
@@ -0,0 +1,11 @@
1
+ <% content_for :data_controls do %>
2
+ <%= link_to 'Upload Banner', new_spud_admin_banner_set_banner_path(@banner_set), :class => 'btn btn-primary spud_banner_add_new' %>
3
+ <% end %>
4
+
5
+ <div class="spud_banner_set_banners_container">
6
+ <%= render :partial => 'spud/admin/banners/banner', :collection => @banner_set.banners %>
7
+ </div>
8
+
9
+ <script>
10
+ $(document).ready(spud.admin.banners.init);
11
+ </script>
@@ -0,0 +1,7 @@
1
+ <%= content_tag :div, 'data-id' => banner.id, :class => 'spud_banner_set_banner_item' do %>
2
+ <%= image_tag banner.banner.url(:spud_admin_small) %>
3
+ <div class="spud_banner_set_banner_item_actions">
4
+ <%= link_to 'Edit', edit_spud_admin_banner_path(banner), :class => 'spud_banner_set_banner_item_edit' %>
5
+ <%= link_to 'Delete', spud_admin_banner_path(banner), :class => 'spud_banner_set_banner_item_delete' %>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,59 @@
1
+ <%= form_for @banner, :url => path, :html => {:class => 'spud_banner_form', :target => 'spud_banners_upload_target'} do |f| %>
2
+
3
+ <%= error_messages_for(f.object) %>
4
+
5
+ <fieldset>
6
+ <div class="control-group">
7
+ <%= f.label :link_to, 'Link to', :class => 'control-label' %>
8
+ <div class="controls">
9
+ <%= f.text_field :link_to %>
10
+ </div>
11
+ </div>
12
+ <div class="control-group">
13
+ <%= f.label :link_target, 'Open Link in', :class => 'control-label' %>
14
+ <div class="controls">
15
+ <%= f.select :link_target, options_for_select([
16
+ ['Same Window', '_self'],
17
+ ['New Window', '_blank']
18
+ ], @banner.link_target) %>
19
+ </div>
20
+ </div>
21
+ <div class="control-group">
22
+ <%= f.label :title, 'Image Title', :class => 'control-label' %>
23
+ <div class="controls">
24
+ <%= f.text_field :title %>
25
+ </div>
26
+ </div>
27
+ <div class="control-group">
28
+ <%= f.label :alt, 'Alt Text', :class => 'control-label' %>
29
+ <div class="controls">
30
+ <%= f.text_field :alt %>
31
+ </div>
32
+ </div>
33
+ <div class="control-group">
34
+ <%= f.label :banner, 'Banner', :class => 'control-label' %>
35
+ <div class="controls">
36
+ <%= f.file_field :banner %>
37
+ </div>
38
+ </div>
39
+ <% if @banner.owner.has_rich_text? %>
40
+ <div class="control-group">
41
+ <%= f.label :rich_text, 'Rich Text', :class => 'control-label' %>
42
+ <div class="controls">
43
+ <%= f.text_area :rich_text, :class => 'spud_banner_rich_text' %>
44
+ </div>
45
+ </div>
46
+ <% end %>
47
+ </fieldset>
48
+
49
+ <div class="progress progress-striped active spud_banner_upload_progress">
50
+ <div class="bar"></div>
51
+ </div>
52
+
53
+ <% end %>
54
+
55
+ <iframe id="spud_banners_upload_target" name="spud_banners_upload_target" style="display:none;"></iframe>
56
+
57
+ <script>
58
+ $(document).ready(spud.admin.banners.form);
59
+ </script>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'form', :locals => {:path => spud_admin_banner_path(@banner)} %>
@@ -0,0 +1,5 @@
1
+ <% if @banner.errors.any? %>
2
+ spud.admin.banners.onLegacyUploadError("<%= escape_javascript(render :partial => 'form', :locals => {:path => spud_admin_banner_set_banners_path(@banner_set)}) %>");
3
+ <% else %>
4
+ spud.admin.banners.onLegacyUploadComplete("<%= escape_javascript(render :partial => 'banner', :locals => {:banner => @banner}) %>");
5
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'form', :locals => {:path => spud_admin_banner_set_banners_path(@banner_set)} %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'banner', :locals => {:banner => @banner} %>
data/config/routes.rb ADDED
@@ -0,0 +1,14 @@
1
+ Rails.application.routes.draw do
2
+
3
+ namespace :spud do
4
+ namespace :admin do
5
+ resources :banner_sets do
6
+ resources :banners, :only => [:new, :create]
7
+ end
8
+ resources :banners, :only => [:show, :edit, :update, :destroy] do
9
+ put :sort, :on => :collection
10
+ end
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,15 @@
1
+ class CreateSpudBanners < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_banners do |t|
4
+ t.integer :spud_banner_set_id, :null => false
5
+ t.string :link_to
6
+ t.string :link_target, :default => '_self'
7
+ t.string :title
8
+ t.string :alt
9
+ t.integer :sort_order, :default => 0
10
+ t.attachment :banner
11
+ t.timestamps
12
+ end
13
+ add_index :spud_banners, :spud_banner_set_id, :unique => false
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ class CreateSpudBannerSets < ActiveRecord::Migration
2
+ def change
3
+ create_table :spud_banner_sets do |t|
4
+ t.string :name, :null => false
5
+ t.integer :width, :null => false
6
+ t.integer :height, :null => false
7
+ t.boolean :cropped, :default => true
8
+ t.timestamps
9
+ end
10
+ add_index :spud_banner_sets, :name, :unique => true
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ class AddRichTextToSpudBanners < ActiveRecord::Migration
2
+ def change
3
+ add_column :spud_banner_sets, :has_rich_text, :boolean, :default => false
4
+ add_column :spud_banners, :rich_text, :text
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ module Spud
2
+ module Banners
3
+ include ActiveSupport::Configurable
4
+ config_accessor :paperclip_storage, :s3_credentials, :storage_path, :storage_url
5
+ self.paperclip_storage = :filesystem
6
+ self.s3_credentials = "#{Rails.root}/config/s3.yml"
7
+ self.storage_path = ":rails_root/public/system/spud_banners/:id/:style/:basename.:extension"
8
+ self.storage_url = "/system/spud_banners/:id/:style/:basename.:extension"
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ require 'tb_core'
2
+ require 'paperclip'
3
+ require 'liquid'
4
+
5
+ module Spud
6
+ module Banners
7
+ class Engine < Rails::Engine
8
+ engine_name :tb_banners
9
+ Spud::Core.append_admin_stylesheets('spud/admin/banners/application')
10
+ Spud::Core.append_admin_javascripts('spud/admin/banners/application')
11
+ initializer :admin do
12
+ Spud::Core.config.admin_applications += [{
13
+ :name => 'Banner Sets',
14
+ :thumbnail => 'spud/admin/banners/banners.png',
15
+ :retina => true,
16
+ :url => '/spud/admin/banner_sets',
17
+ :order => 120
18
+ }]
19
+ end
20
+ initializer :liquid do
21
+ Liquid::Template.register_tag('spud_banner_set', Spud::Banners::BannerSetTag) if defined?(Liquid::Template)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ require 'liquid'
2
+ require_relative '../../app/helpers/spud_banners_helper'
3
+
4
+ module Spud
5
+ module Banners
6
+ class BannerSetTag < Liquid::Tag
7
+
8
+ include Sprockets::Helpers::RailsHelper
9
+ include Sprockets::Helpers::IsolatedHelper
10
+ include ActionView::Helpers
11
+ include ActionView::Context
12
+ include SpudBannersHelper
13
+
14
+ def initialize(tag_name, set_identifer, tokens)
15
+ @banner_set = SpudBannerSet.find_by_identifier(set_identifer)
16
+ end
17
+
18
+ def tag_name
19
+ return 'banner_set'
20
+ end
21
+
22
+ def tag_value
23
+ return @banner_set.name
24
+ end
25
+
26
+ def render(context)
27
+ return spud_banners_for_set(@banner_set)
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,5 @@
1
+ module Spud
2
+ module Banners
3
+ VERSION = "1.0"
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :spud_banners do
3
+ # # Task goes here
4
+ # end
data/lib/tb_banners.rb ADDED
@@ -0,0 +1,7 @@
1
+ module Spud
2
+ module Banners
3
+ require 'spud_banners/configuration'
4
+ require 'spud_banners/liquid_tags'
5
+ require "spud_banners/engine" if defined?(Rails)
6
+ end
7
+ end