tb_banners 1.0

Sign up to get free protection for your applications and to get access to all the features.
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