spree_core 0.30.1 → 0.30.2

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.
@@ -1,6 +1,8 @@
1
1
  class Admin::BaseController < Spree::BaseController
2
2
  ssl_required
3
3
 
4
+ before_filter :check_alerts if Rails.env.production?
5
+
4
6
  helper :search
5
7
  helper 'admin/navigation'
6
8
  layout 'admin'
@@ -8,6 +10,35 @@ class Admin::BaseController < Spree::BaseController
8
10
  before_filter :parse_date_params
9
11
 
10
12
  protected
13
+ def check_alerts
14
+ return unless current_user and should_check_alerts?
15
+
16
+ unless session.has_key? :alerts
17
+ begin
18
+ session[:alerts] = Spree::Alert.current(request.host)
19
+ filter_dismissed_alerts
20
+ Spree::Config.set :last_check_for_spree_alerts => DateTime.now.to_s
21
+ rescue
22
+ session[:alerts] = nil
23
+ end
24
+ end
25
+ end
26
+
27
+ def should_check_alerts?
28
+ return false if not Spree::Config[:check_for_spree_alerts]
29
+
30
+ last_check = Spree::Config[:last_check_for_spree_alerts]
31
+ return true if last_check.blank?
32
+
33
+ DateTime.parse(last_check) < 12.hours.ago
34
+ end
35
+
36
+ def filter_dismissed_alerts
37
+ return unless session[:alerts]
38
+ dismissed = (Spree::Config[:dismissed_spree_alerts] || '').split(',')
39
+ session[:alerts].reject! { |a| dismissed.include? a.id.to_s }
40
+ end
41
+
11
42
  def render_js_for_destroy
12
43
  render :partial => "/admin/shared/destroy"
13
44
  flash.notice = nil
@@ -35,6 +35,9 @@ class AppConfiguration < Configuration
35
35
  preference :cache_static_content, :boolean, :default => true
36
36
  preference :use_content_controller, :boolean, :default => true
37
37
  preference :allow_checkout_on_gateway_error, :boolean, :default => false
38
+ preference :check_for_spree_alerts, :boolean, :default => true
39
+ preference :dismissed_spree_alerts, :string, :default => ''
40
+ preference :last_check_for_spree_alerts, :string, :default => nil
38
41
 
39
42
  validates :name, :presence => true, :uniqueness => true
40
43
 
@@ -90,10 +90,14 @@ class ProductGroup < ActiveRecord::Base
90
90
  end
91
91
 
92
92
  def add_scope(scope_name, arguments=[])
93
- self.product_scopes << ProductScope.new({
94
- :name => scope_name.to_s,
95
- :arguments => [*arguments]
96
- })
93
+ if scope_name.to_s !~ /eval|send|system|[^a-z0-9_!?]/
94
+ self.product_scopes << ProductScope.new({
95
+ :name => scope_name.to_s,
96
+ :arguments => [*arguments]
97
+ })
98
+ else
99
+ raise ArgumentError.new("'#{scope_name}` can't be used as scope")
100
+ end
97
101
  self
98
102
  end
99
103
 
@@ -0,0 +1,13 @@
1
+ class Spree::Alert < ActiveResource::Base
2
+ self.site = "http://alerts.spreecommerce.com/"
3
+ self.format = :json
4
+
5
+ def self.current(host)
6
+ find(:all, :params => { :version => Spree.version,
7
+ :name => Spree::Config[:site_name],
8
+ :host => host,
9
+ :rails_env => Rails.env,
10
+ :rails_version => Rails.version })
11
+ end
12
+ end
13
+
@@ -28,6 +28,14 @@
28
28
  </label>
29
29
  </p>
30
30
 
31
+ <p>
32
+ <label>
33
+ <input name="preferences[check_for_spree_alerts]" type="hidden" value="0" />
34
+ <%= check_box_tag('preferences[check_for_spree_alerts]', "1", Spree::Config[:check_for_spree_alerts]) %>
35
+ <%= t('spree_alert_checking') %>
36
+ </label>
37
+ </p>
38
+
31
39
  <p class="form-buttons">
32
40
  <%= button t('update') %>
33
41
  <%= t("or") %> <%= link_to t("cancel"), admin_general_settings_url %>
@@ -4,25 +4,30 @@
4
4
 
5
5
  <table>
6
6
  <tr>
7
- <th scope="row"><%= t("site_name") %>:</th>
7
+ <th scope="row"><%= t("site_name") %>:</th>
8
8
  <td><%= Spree::Config[:site_name] %></td>
9
9
  </tr>
10
10
  <tr>
11
- <th scope="row"><%= t("site_url") %>:</th>
11
+ <th scope="row"><%= t("site_url") %>:</th>
12
12
  <td><%= Spree::Config[:site_url] %></td>
13
13
  </tr>
14
14
  <tr>
15
15
  <td colspan="2">
16
- <%= (Spree::Config[:allow_ssl_in_production] ? t("ssl_will_be_used_in_production_mode") : t("ssl_will_not_be_used_in_production_mode")) %>
16
+ <%= (Spree::Config[:allow_ssl_in_production] ? t("ssl_will_be_used_in_production_mode") : t("ssl_will_not_be_used_in_production_mode")) %>
17
17
  </td>
18
18
  </tr>
19
19
  <tr>
20
20
  <td colspan="2">
21
21
  <%= (Spree::Config[:allow_ssl_in_development_and_test] ? t("ssl_will_be_used_in_development_and_test_modes") : t("ssl_will_not_be_used_in_development_and_test_modes")) %>
22
- </td>
22
+ </td>
23
+ </tr>
24
+ <tr>
25
+ <td colspan="2">
26
+ <%= (Spree::Config[:check_for_spree_alerts] ? t("spree_alert_checking") : t("spree_alert_not_checking")) %>
27
+ </td>
23
28
  </tr>
24
29
  </table>
25
30
 
26
- <p><%= link_to_with_icon 'edit', t("edit"), edit_admin_general_settings_path %></p>
31
+ <p><%= link_to_with_icon 'edit', t("edit"), edit_admin_general_settings_path, :id => 'admin_general_settings_link' %></p>
27
32
 
28
33
 
@@ -0,0 +1,6 @@
1
+ <div class="alert <%= alert.severity.downcase %>">
2
+ <%= alert.message %> <%= link_to alert.url_name, alert.url if alert.url %>
3
+ <%= link_to 'X', dismiss_alert_admin_general_settings_path(:alert_id => alert.id),
4
+ :remote => true, :method => :post, :class => 'dismiss' %>
5
+ </div>
6
+
@@ -50,6 +50,7 @@
50
50
  <div class="flash notice"><%= self.notice %></div>
51
51
  <% end %>
52
52
 
53
+ <%= render :partial => 'admin/shared/alert', :collection => session[:alerts] %>
53
54
 
54
55
  <%= yield %>
55
56
 
@@ -880,6 +880,8 @@ en:
880
880
  ssl_will_be_used_in_production_mode: "SSL will be used in production mode"
881
881
  ssl_will_not_be_used_in_development_and_test_modes: "SSL will not be used in development and test mode if necessary."
882
882
  ssl_will_not_be_used_in_production_mode: "SSL will not be used in production mode"
883
+ spree_alert_checking: "Check for Spree security and release alerts"
884
+ spree_alert_not_checking: "Not checking for Spree security and release alerts"
883
885
  start: Start
884
886
  start_date: Valid from
885
887
  state: State
data/config/routes.rb CHANGED
@@ -149,7 +149,11 @@ Rails.application.routes.draw do
149
149
  end
150
150
  end
151
151
 
152
- resource :general_settings
152
+ resource :general_settings do
153
+ collection do
154
+ post :dismiss_alert
155
+ end
156
+ end
153
157
 
154
158
  resources :taxonomies do
155
159
  member do
data/lib/spree_core.rb CHANGED
@@ -65,7 +65,7 @@ end
65
65
 
66
66
  module Spree
67
67
  def self.version
68
- "0.30.1"
68
+ "0.30.2"
69
69
  end
70
70
  end
71
71
 
@@ -224,3 +224,9 @@ jQuery(".observe_field").live('change', function() {
224
224
  }
225
225
  );
226
226
  });
227
+
228
+ jQuery(document).ready(function() {
229
+ $('div.alert a.dismiss').click(function() {
230
+ $(this).parent().fadeOut();
231
+ });
232
+ });
@@ -577,3 +577,37 @@ table#product_scopes tr td table tr td {
577
577
  }
578
578
 
579
579
 
580
+ span.handle{
581
+ background-image: url(../../images/reorder.jpg);
582
+ display: inline-block;
583
+ width:14px;
584
+ height:15px;
585
+ }
586
+
587
+ .alert {
588
+ -moz-border-radius: 5px;
589
+ -webkit-border-radius: 5px;
590
+ border-radius: 5px;
591
+ font-size: 1.3em;
592
+ margin-bottom: 1em;
593
+ padding: 0.8em;
594
+ }
595
+ .alert a.dismiss {
596
+ float:right;
597
+ font-size: 0.8em;
598
+ }
599
+ .alert.release {
600
+ background: #ccddff url(../images/shadow_top.png) 0px -50px repeat-x;
601
+ color: #556699;
602
+ border: 1px solid #99aacc;
603
+ }
604
+ .alert.security {
605
+ background: #f4b4b4 url(../images/shadow_top.png) 0px -50px repeat-x;
606
+ color: #000000;
607
+ border: 1px solid #e75b5b;
608
+ }
609
+ .alert.news {
610
+ background: #ccffd4 url(../images/shadow_top.png) 0px -50px repeat-x;
611
+ color: #000000;
612
+ border: 1px solid #66ff7e;
613
+ }
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 99
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 30
8
- - 1
9
- version: 0.30.1
9
+ - 2
10
+ version: 0.30.2
10
11
  platform: ruby
11
12
  authors:
12
13
  - Sean Schofield
@@ -14,16 +15,17 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-11-17 00:00:00 -05:00
18
- default_executable:
18
+ date: 2011-10-23 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: acts_as_list
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
- - - ">="
26
+ - - "="
26
27
  - !ruby/object:Gem::Version
28
+ hash: 31
27
29
  segments:
28
30
  - 0
29
31
  - 1
@@ -35,9 +37,11 @@ dependencies:
35
37
  name: rd_awesome_nested_set
36
38
  prerelease: false
37
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
38
41
  requirements:
39
- - - ">="
42
+ - - "="
40
43
  - !ruby/object:Gem::Version
44
+ hash: 15
41
45
  segments:
42
46
  - 1
43
47
  - 4
@@ -49,9 +53,11 @@ dependencies:
49
53
  name: rd_unobtrusive_date_picker
50
54
  prerelease: false
51
55
  requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
52
57
  requirements:
53
- - - ">="
58
+ - - "="
54
59
  - !ruby/object:Gem::Version
60
+ hash: 27
55
61
  segments:
56
62
  - 0
57
63
  - 1
@@ -63,9 +69,11 @@ dependencies:
63
69
  name: highline
64
70
  prerelease: false
65
71
  requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
66
73
  requirements:
67
- - - ">="
74
+ - - "="
68
75
  - !ruby/object:Gem::Version
76
+ hash: 1
69
77
  segments:
70
78
  - 1
71
79
  - 5
@@ -77,9 +85,11 @@ dependencies:
77
85
  name: stringex
78
86
  prerelease: false
79
87
  requirement: &id005 !ruby/object:Gem::Requirement
88
+ none: false
80
89
  requirements:
81
- - - ">="
90
+ - - "="
82
91
  - !ruby/object:Gem::Version
92
+ hash: 17
83
93
  segments:
84
94
  - 1
85
95
  - 0
@@ -91,9 +101,11 @@ dependencies:
91
101
  name: state_machine
92
102
  prerelease: false
93
103
  requirement: &id006 !ruby/object:Gem::Requirement
104
+ none: false
94
105
  requirements:
95
- - - ">="
106
+ - - "="
96
107
  - !ruby/object:Gem::Version
108
+ hash: 51
97
109
  segments:
98
110
  - 0
99
111
  - 9
@@ -105,9 +117,11 @@ dependencies:
105
117
  name: faker
106
118
  prerelease: false
107
119
  requirement: &id007 !ruby/object:Gem::Requirement
120
+ none: false
108
121
  requirements:
109
- - - ">="
122
+ - - "="
110
123
  - !ruby/object:Gem::Version
124
+ hash: 17
111
125
  segments:
112
126
  - 0
113
127
  - 3
@@ -119,9 +133,11 @@ dependencies:
119
133
  name: paperclip
120
134
  prerelease: false
121
135
  requirement: &id008 !ruby/object:Gem::Requirement
136
+ none: false
122
137
  requirements:
123
- - - ">="
138
+ - - "="
124
139
  - !ruby/object:Gem::Version
140
+ hash: 113
125
141
  segments:
126
142
  - 2
127
143
  - 3
@@ -134,9 +150,11 @@ dependencies:
134
150
  name: rd_resource_controller
135
151
  prerelease: false
136
152
  requirement: &id009 !ruby/object:Gem::Requirement
153
+ none: false
137
154
  requirements:
138
155
  - - ">="
139
156
  - !ruby/object:Gem::Version
157
+ hash: 3
140
158
  segments:
141
159
  - 0
142
160
  version: "0"
@@ -146,14 +164,17 @@ dependencies:
146
164
  name: rd_searchlogic
147
165
  prerelease: false
148
166
  requirement: &id010 !ruby/object:Gem::Requirement
167
+ none: false
149
168
  requirements:
150
- - - ">="
169
+ - - "="
151
170
  - !ruby/object:Gem::Version
171
+ hash: 15424115
152
172
  segments:
153
173
  - 3
154
174
  - 0
155
175
  - 0
156
- - rc3
176
+ - rc
177
+ - 3
157
178
  version: 3.0.0.rc3
158
179
  type: :runtime
159
180
  version_requirements: *id010
@@ -161,9 +182,11 @@ dependencies:
161
182
  name: activemerchant
162
183
  prerelease: false
163
184
  requirement: &id011 !ruby/object:Gem::Requirement
185
+ none: false
164
186
  requirements:
165
- - - ">="
187
+ - - "="
166
188
  - !ruby/object:Gem::Version
189
+ hash: 9
167
190
  segments:
168
191
  - 1
169
192
  - 7
@@ -175,9 +198,11 @@ dependencies:
175
198
  name: will_paginate
176
199
  prerelease: false
177
200
  requirement: &id012 !ruby/object:Gem::Requirement
201
+ none: false
178
202
  requirements:
179
- - - ">="
203
+ - - "="
180
204
  - !ruby/object:Gem::Version
205
+ hash: 961915916
181
206
  segments:
182
207
  - 3
183
208
  - 0
@@ -189,23 +214,27 @@ dependencies:
189
214
  name: rails
190
215
  prerelease: false
191
216
  requirement: &id013 !ruby/object:Gem::Requirement
217
+ none: false
192
218
  requirements:
193
- - - ">="
219
+ - - "="
194
220
  - !ruby/object:Gem::Version
221
+ hash: 15
195
222
  segments:
196
223
  - 3
197
224
  - 0
198
- - 1
199
- version: 3.0.1
225
+ - 4
226
+ version: 3.0.4
200
227
  type: :runtime
201
228
  version_requirements: *id013
202
229
  - !ruby/object:Gem::Dependency
203
230
  name: jquery-rails
204
231
  prerelease: false
205
232
  requirement: &id014 !ruby/object:Gem::Requirement
233
+ none: false
206
234
  requirements:
207
- - - ">="
235
+ - - "="
208
236
  - !ruby/object:Gem::Version
237
+ hash: 19
209
238
  segments:
210
239
  - 0
211
240
  - 2
@@ -343,6 +372,7 @@ files:
343
372
  - app/models/shipment.rb
344
373
  - app/models/shipping_category.rb
345
374
  - app/models/shipping_method.rb
375
+ - app/models/spree/alert.rb
346
376
  - app/models/state.rb
347
377
  - app/models/state_event.rb
348
378
  - app/models/state_monitor.rb
@@ -471,6 +501,7 @@ files:
471
501
  - app/views/admin/shared/_address.html.erb
472
502
  - app/views/admin/shared/_address_form.html.erb
473
503
  - app/views/admin/shared/_adjustments_table.html.erb
504
+ - app/views/admin/shared/_alert.html.erb
474
505
  - app/views/admin/shared/_calculator_fields.html.erb
475
506
  - app/views/admin/shared/_configuration_menu.html.erb
476
507
  - app/views/admin/shared/_destroy.js.erb
@@ -1032,7 +1063,6 @@ files:
1032
1063
  - public/stylesheets/jquery.autocomplete.css
1033
1064
  - public/stylesheets/scaffold.css
1034
1065
  - public/stylesheets/screen.css
1035
- has_rdoc: true
1036
1066
  homepage: http://spreecommerce.com
1037
1067
  licenses: []
1038
1068
 
@@ -1042,25 +1072,29 @@ rdoc_options: []
1042
1072
  require_paths:
1043
1073
  - lib
1044
1074
  required_ruby_version: !ruby/object:Gem::Requirement
1075
+ none: false
1045
1076
  requirements:
1046
1077
  - - ">="
1047
1078
  - !ruby/object:Gem::Version
1079
+ hash: 57
1048
1080
  segments:
1049
1081
  - 1
1050
1082
  - 8
1051
1083
  - 7
1052
1084
  version: 1.8.7
1053
1085
  required_rubygems_version: !ruby/object:Gem::Requirement
1086
+ none: false
1054
1087
  requirements:
1055
1088
  - - ">="
1056
1089
  - !ruby/object:Gem::Version
1090
+ hash: 3
1057
1091
  segments:
1058
1092
  - 0
1059
1093
  version: "0"
1060
1094
  requirements:
1061
1095
  - none
1062
1096
  rubyforge_project: spree_core
1063
- rubygems_version: 1.3.6
1097
+ rubygems_version: 1.8.10
1064
1098
  signing_key:
1065
1099
  specification_version: 3
1066
1100
  summary: Core e-commerce functionality for the Spree project.