spree_banner 1.1.3 → 1.1.4

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.
data/README.md CHANGED
@@ -9,7 +9,7 @@ Basic Installation
9
9
 
10
10
  1. Add the following to your Gemfile
11
11
  <pre>
12
- gem 'spree_banner', '~> 1.1.3'
12
+ gem 'spree_banner', '~> 1.1.4'
13
13
  </pre>
14
14
  2. Run `bundle install`
15
15
  3. To copy and apply migrations run:
@@ -0,0 +1,31 @@
1
+ $(document).ready(function() {
2
+
3
+ $('.destroy_banner_style').on("click", function() {
4
+ $(this).parent().remove();
5
+ });
6
+
7
+ // Handle adding new styles
8
+ var styles_hash_index = 1;
9
+ $('.add_banner_style').click(function() {
10
+ $('#styles_list').append(generate_html_for_hash("new_banner_styles", styles_hash_index));
11
+ });
12
+
13
+ // Generates html for new paperclip styles form fields
14
+ generate_html_for_hash = function(hash_name, index) {
15
+ var html = '<li>';
16
+ html += '<label for="' + hash_name + '_' + index + '_name">';
17
+ html += 'Name</label>';
18
+ html += '<input id="' + hash_name + '_' + index + '_name" name="' + hash_name + '[' + index + '][name]" type="text">';
19
+ html += '<label for="' + hash_name + '_' + index + '_value">';
20
+ html += 'Value</label>';
21
+ html += '<input id="' + hash_name + '_' + index + '_value" name="' + hash_name + '[' + index + '][value]" type="text">';
22
+ html += '<a href="#" alt="Destroy" class="destroy_banner_style">&nbsp;x</a>';
23
+ html += '</li>';
24
+
25
+ index += 1;
26
+ return html;
27
+ };
28
+
29
+
30
+
31
+ });
@@ -1 +1 @@
1
- //= require admin/spree_core
1
+ //= require admin/banner_settings
@@ -1,7 +1,3 @@
1
- /*
2
- *= require store/spree_core
3
- */
4
-
5
1
  .banner {
6
2
  background: none;
7
3
  }
@@ -0,0 +1,49 @@
1
+ module Spree
2
+ module Admin
3
+ class BannerSettingsController < Spree::Admin::BaseController
4
+ def show
5
+ styles = ActiveSupport::JSON.decode(Spree::Config[:banner_styles])
6
+ @styles_list = styles.collect { |k, v| k }.join(", ")
7
+ end
8
+
9
+ def edit
10
+ @styles = ActiveSupport::JSON.decode(Spree::Config[:banner_styles])
11
+ end
12
+
13
+ def update
14
+ update_styles(params)
15
+
16
+ Spree::Config.set(params[:preferences])
17
+ update_paperclip_settings
18
+
19
+ respond_to do |format|
20
+ format.html {
21
+ flash[:notice] = t(:banner_settings_updated)
22
+ redirect_to admin_banner_settings_path
23
+ }
24
+ end
25
+ end
26
+
27
+
28
+ private
29
+
30
+ def update_styles(params)
31
+ params[:new_banner_styles].each do |index, style|
32
+ params[:banner_styles][style[:name]] = style[:value] unless style[:value].empty?
33
+ end if params[:new_banner_styles].present?
34
+
35
+ styles = params[:banner_styles]
36
+
37
+ Spree::Config[:banner_styles] = ActiveSupport::JSON.encode(styles) unless styles.nil?
38
+ end
39
+
40
+ def update_paperclip_settings
41
+ Spree::Banner.attachment_definitions[:attachment][:styles] = ActiveSupport::JSON.decode(Spree::Config[:banner_styles])
42
+ Spree::Banner.attachment_definitions[:attachment][:path] = Spree::Config[:banner_path]
43
+ Spree::Banner.attachment_definitions[:attachment][:default_url] = Spree::Config[:banner_default_url]
44
+ Spree::Banner.attachment_definitions[:attachment][:default_style] = Spree::Config[:banner_default_style]
45
+ end
46
+ end
47
+ end
48
+ end
49
+
@@ -1,23 +1,21 @@
1
1
  module Spree
2
2
  module Admin
3
3
  class BannersController < ResourceController
4
- before_filter :load_data
4
+
5
+ def show
6
+ redirect_to(:action => :edit)
7
+ end
5
8
 
6
9
  def update_positions
7
10
  params[:positions].each do |id, index|
8
- Spree::Banner.update_all(['position=?', index], ['id=?', id])
11
+ Spree::Banner.where(:id => id).update_all(:position => index)
9
12
  end
10
13
 
11
14
  respond_to do |format|
12
- format.html { redirect_to admin_banners_url() }
13
15
  format.js { render :text => 'Ok' }
14
16
  end
15
17
  end
16
18
 
17
- def load_data
18
- @banners = Spree::Banner.all
19
- end
20
-
21
19
  private
22
20
  def location_after_save
23
21
  edit_admin_banner_url(@banner)
@@ -0,0 +1,8 @@
1
+ Spree::AppConfiguration.class_eval do
2
+ # Preferences related to banner settings
3
+ preference :banner_default_url, :string, :default => '/spree/banners/:id/:style/:basename.:extension'
4
+ preference :banner_path, :string, :default => ':rails_root/public/spree/banners/:id/:style/:basename.:extension'
5
+ preference :banner_url, :string, :default => '/spree/banners/:id/:style/:basename.:extension'
6
+ preference :banner_styles, :string, :default => "{\"mini\":\"80x80#\",\"small\":\"120x120#\"}"
7
+ preference :banner_default_style, :string, :default => 'small'
8
+ end
@@ -1,22 +1,24 @@
1
1
  module Spree
2
2
  class Banner < ActiveRecord::Base
3
- attr_accessible :title, :url, :category, :position, :enabled, :attachment, :attachment_width, :attachment_height
3
+ attr_accessible :title, :url, :category, :position, :enabled, :attachment
4
4
 
5
5
  has_attached_file :attachment,
6
- :url => "/spree/banner/:id/:style_:basename.:extension",
7
- :path => ":rails_root/public/spree/banner/:id/:style_:basename.:extension",
6
+ :url => "/spree/banners/:id/:style_:basename.:extension",
7
+ :path => ":rails_root/public/spree/banners/:id/:style_:basename.:extension",
8
8
  :styles => lambda {|a| {
9
- :thumbnail => "80x80#",
9
+ :mini => "80x80#",
10
+ :small => "120x120#",
10
11
  :custom => "#{a.instance.attachment_width}x#{a.instance.attachment_height}#"
11
12
  }},
12
13
  :convert_options => {
13
- :thumbnail => "-gravity center",
14
+ :mini => "-gravity center",
15
+ :small => "-gravity center",
14
16
  :custom => "-gravity center"
15
17
  }
16
18
 
17
19
  after_post_process :find_dimensions
18
20
 
19
- validates_presence_of :category, :attachment_width, :attachment_height
21
+ validates_presence_of :category
20
22
  validates_attachment_presence :attachment
21
23
  validates_attachment_content_type :attachment, :content_type => ['image/jpeg', 'image/png', 'image/gif', 'image/jpg', 'image/x-png', 'image/pjpeg'], :message => "deve essere JPG, JPEG, PNG o GIF"
22
24
 
@@ -31,6 +33,12 @@ module Spree
31
33
  Spree::Banner.attachment_definitions[:attachment][:bucket] = Spree::Config[:s3_bucket]
32
34
  Spree::Banner.attachment_definitions[:attachment][:s3_protocol] = Spree::Config[:s3_protocol] unless Spree::Config[:s3_protocol].blank?
33
35
  end
36
+
37
+ Spree::Banner.attachment_definitions[:attachment][:styles] = ActiveSupport::JSON.decode(Spree::Config[:banner_styles])
38
+ Spree::Banner.attachment_definitions[:attachment][:path] = Spree::Config[:banner_path]
39
+ Spree::Banner.attachment_definitions[:attachment][:url] = Spree::Config[:banner_url]
40
+ Spree::Banner.attachment_definitions[:attachment][:default_url] = Spree::Config[:banner_default_url]
41
+ Spree::Banner.attachment_definitions[:attachment][:default_style] = Spree::Config[:banner_default_style]
34
42
 
35
43
  def initialize(*args)
36
44
  super(*args)
@@ -39,14 +47,12 @@ module Spree
39
47
  end
40
48
 
41
49
  def find_dimensions
42
- if self.attachment_width.blank? && self.attachment_height.blank?
43
- temporary = attachment.queued_for_write[:original]
44
- filename = temporary.path unless temporary.nil?
45
- filename = attachment.path if filename.blank?
46
- geometry = Paperclip::Geometry.from_file(filename)
47
- self.attachment_width = geometry.width
48
- self.attachment_height = geometry.height
49
- end
50
+ temporary = attachment.queued_for_write[:original]
51
+ filename = temporary.path unless temporary.nil?
52
+ filename = attachment.path if filename.blank?
53
+ geometry = Paperclip::Geometry.from_file(filename)
54
+ self.attachment_width = geometry.width
55
+ self.attachment_height = geometry.height
50
56
  end
51
57
 
52
58
  end
@@ -2,4 +2,9 @@ Deface::Override.new(:virtual_path => "spree/layouts/admin",
2
2
  :name => "banner_admin_tab",
3
3
  :insert_bottom => "[data-hook='admin_tabs'], #admin_tabs[data-hook]",
4
4
  :text => "<%= tab(:banners, :url => spree.admin_banners_path) %>",
5
- :disabled => false)
5
+ :disabled => false)
6
+
7
+ Deface::Override.new(:virtual_path => "spree/admin/configurations/index",
8
+ :name => "add_banner_setting_to_configuration_menu",
9
+ :insert_bottom => "[data-hook='admin_configurations_menu']",
10
+ :partial => "spree/admin/shared/banner_setting_configurations_menu")
@@ -0,0 +1,48 @@
1
+ <%= render :partial => 'spree/admin/shared/configuration_menu' %>
2
+
3
+ <h1><%= t(:banner_settings) %></h1>
4
+
5
+ <p><span class="warning"><%= t(:banner_settings_warning) %></span></p>
6
+
7
+ <%= form_tag admin_banner_settings_path, :method => :put do %>
8
+
9
+ <p data-hook="banner_path">
10
+ <label>
11
+ <%= label_tag 'preferences[banner_path]', t(:banner_path) %>
12
+ <%= preference_field_tag 'preferences[banner_path]', Spree::Config[:banner_path], :type => :string %>
13
+ </label>
14
+ </p>
15
+
16
+ <p data-hook="banner_default_url">
17
+ <label>
18
+ <%= label_tag 'preferences[banner_default_url]', t(:banner_default_url) %>
19
+ <%= preference_field_tag 'preferences[banner_default_url]', Spree::Config[:banner_default_url], :type => :string %>
20
+ </label>
21
+ </p>
22
+
23
+ <p data-hook="banner_default_style">
24
+ <label>
25
+ <%= label_tag 'preferences[banner_default_style]', t(:banner_default_style) %>
26
+ <%= collection_select 'preferences', 'banner_default_style', @styles, :first, :first, {:selected => Spree::Config[:banner_default_style] } %>
27
+ </label>
28
+ </p>
29
+
30
+ <div id="banner_styles" data-hook="banner_styles">
31
+ <h2><%= t(:banner_styles) %></h2>
32
+ <ul id="styles_list">
33
+ <% @styles.each do |style_name, style_value| %>
34
+ <li>
35
+ <%= label_tag "banner_styles[#{style_name}]", style_name %>
36
+ <%= text_field_tag "banner_styles[#{style_name}]", style_value %>
37
+ <a href="#" alt="Destroy" class="destroy_banner_style">x</a>
38
+ </li>
39
+ <% end %>
40
+ </ul>
41
+ <p><a href="#" alt="Add Style" class="add_banner_style"><%= t(:add_new_style) %></a></p>
42
+ </div>
43
+
44
+ <p class="form-buttons" data-hook="buttons">
45
+ <%= button t(:update) %>
46
+ </p>
47
+
48
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <%= render :partial => 'spree/admin/shared/configuration_menu' %>
2
+
3
+ <h1><%= t(:banner_settings) %></h1>
4
+
5
+ <h4><%= t(:banner_path) %>: <%= Spree::Config[:banner_path] %></h4>
6
+ <h4><%= t(:banner_default_url) %>: <%= Spree::Config[:banner_default_url] %></h4>
7
+ <h4><%= t(:banner_default_style) %>: <%= Spree::Config[:banner_default_style] %></h4>
8
+ <h4><%= t(:defined_paperclip_styles) %>: <%= @styles_list %></h4>
9
+
10
+ <%= link_to_with_icon 'edit', t(:edit), edit_admin_banner_settings_path, :id => 'admin_banner_settings_link' %>
@@ -1,6 +1,6 @@
1
- <div data-hook="admin_slideshow_form_fields">
1
+ <div data-hook="admin_banner_form_fields">
2
2
  <div class="clearfix">
3
- <div class="left" data-hook="admin_product_form_left">
3
+ <div class="left" data-hook="admin_banner_form_left">
4
4
  <%= f.field_container :category do %>
5
5
  <%= f.label :category, t(:category) %> <span class="required">*</span><br />
6
6
  <%= f.text_field :category, :class => 'fullwidth title' %>
@@ -19,7 +19,7 @@
19
19
  <%= f.error_message_on :attachment %>
20
20
  <% end %>
21
21
  </div>
22
- <div class="right" data-hook="admin_product_form_right">
22
+ <div class="right" data-hook="admin_banner_form_right">
23
23
  <%= f.field_container :attachment_width do %>
24
24
  <%= f.label :attachment_width, t(:attachment_width) %> <span class="required">*</span><br />
25
25
  <%= f.text_field :attachment_width, :class => 'fullwidth title' %>
@@ -1,16 +1,8 @@
1
- <h1><%= t("banner.new_banner") %></h1>
2
- <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @banner } %>
3
-
4
- <%= semantic_form_for([:admin, @banner], :html => { :enctype => "multipart/form-data" }) do |f| %>
5
- <%= render :partial => "form", :locals => { :f => f } %>
6
- <%= render :partial => 'spree/admin/shared/new_resource_links' %>
7
- <% end %>
8
-
9
1
  <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @banner } %>
10
2
 
11
3
  <%= form_for [:admin, @banner], :html => { :multipart => true } do |f| %>
12
- <fieldset data-hook="new_slideshow_type">
13
- <div class="clearfix" data-hook="new_product_attrs">
4
+ <fieldset data-hook="new_banner">
5
+ <div class="clearfix" data-hook="new_banner_attrs">
14
6
  <div class="left">
15
7
  <%= f.field_container :category do %>
16
8
  <%= f.label :category, t(:category) %> <span class="required">*</span><br />
@@ -0,0 +1,4 @@
1
+ <tr>
2
+ <td><%= link_to t(:banner_settings), admin_banner_settings_path %></td>
3
+ <td><%= t(:banner_settings_description) %></td>
4
+ </tr>
data/config/routes.rb CHANGED
@@ -5,5 +5,6 @@ Spree::Core::Engine.routes.prepend do
5
5
  post :update_positions
6
6
  end
7
7
  end
8
+ resource :banner_settings
8
9
  end
9
10
  end
@@ -8,7 +8,7 @@ class CreateBanners < ActiveRecord::Migration
8
8
 
9
9
  t.string :attachment_content_type, :attachment_file_name
10
10
  t.datetime :attachment_updated_at
11
- t.integer :attachment_width, :attachment_height, :default => 100
11
+ t.integer :attachment_width, :attachment_height
12
12
  t.integer :attachment_size
13
13
 
14
14
  t.timestamps
@@ -2,8 +2,11 @@ module SpreeBanner
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
4
 
5
+ def add_javascripts
6
+ append_file "app/assets/javascripts/admin/all.js", "//= require admin/spree_banner\n"
7
+ end
8
+
5
9
  def add_stylesheets
6
- inject_into_file "app/assets/stylesheets/admin/all.css", " *= require admin/spree_banner\n", :before => /\*\//, :verbose => true
7
10
  inject_into_file "app/assets/stylesheets/store/all.css", " *= require store/spree_banner\n", :before => /\*\//, :verbose => true
8
11
  end
9
12
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_banner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-22 00:00:00.000000000 Z
12
+ date: 2013-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: spree_core
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 1.1.3
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 1.1.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: paperclip
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -59,22 +59,6 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: rspec-rails
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
62
  description:
79
63
  email: damiano.giacomello@diginess.it
80
64
  executables: []
@@ -86,19 +70,25 @@ files:
86
70
  - lib/generators/spree_banner/install/install_generator.rb
87
71
  - lib/spree_banner/engine.rb
88
72
  - lib/spree_banner.rb
73
+ - app/assets/javascripts/admin/banner_settings.js
89
74
  - app/assets/javascripts/admin/spree_banner.js
90
75
  - app/assets/javascripts/store/spree_banner.js
91
76
  - app/assets/stylesheets/admin/spree_banner.css
92
77
  - app/assets/stylesheets/store/spree_banner.css
78
+ - app/controllers/spree/admin/banner_settings_controller.rb
93
79
  - app/controllers/spree/admin/banners_controller.rb
94
80
  - app/helpers/spree/banners_helper.rb
81
+ - app/models/spree/app_configuration_decorator.rb
95
82
  - app/models/spree/banner.rb
96
83
  - app/overrides/banner_admin_tab.rb
84
+ - app/views/spree/admin/banner_settings/edit.html.erb
85
+ - app/views/spree/admin/banner_settings/show.html.erb
97
86
  - app/views/spree/admin/banners/_form.html.erb
98
87
  - app/views/spree/admin/banners/edit.html.erb
99
88
  - app/views/spree/admin/banners/index.html.erb
100
89
  - app/views/spree/admin/banners/new.html.erb
101
90
  - app/views/spree/admin/banners/new.js.erb
91
+ - app/views/spree/admin/shared/_banner_setting_configurations_menu.html.erb
102
92
  - db/migrate/20120116204313_create_banners.rb
103
93
  - db/migrate/20120323174800_banner_namespace.rb
104
94
  - config/locales/en.yml