simple_resource 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ 0.3.0 (January 15, 2013)
4
+
5
+ * Devise support
6
+ * Twitter Bootstrap support
7
+
3
8
  0.2.0 (January 15, 2013)
4
9
 
5
10
  * CanCan support
@@ -4,7 +4,11 @@ module SimpleResource
4
4
  load_and_authorize_resource
5
5
 
6
6
  rescue_from CanCan::AccessDenied do |exception|
7
- redirect_to root_url, alert: exception.message
7
+ if !current_user && respond_to?(:new_user_session_url)
8
+ redirect_to new_user_session_url, alert: exception.message
9
+ else
10
+ redirect_to root_url, alert: exception.message
11
+ end
8
12
  end
9
13
  end
10
14
 
@@ -26,7 +26,7 @@ module SimpleResource
26
26
  end
27
27
 
28
28
  def new_resource_link
29
- link_to(new_resource_link_title, new_resource_path)
29
+ link_to(icon_for(:new) + new_resource_link_title, new_resource_path, class: button_classes_for(:new))
30
30
  end
31
31
 
32
32
  def edit_resource_title
@@ -67,10 +67,10 @@ module SimpleResource
67
67
  def link_to_action(action_name, title, path)
68
68
  action_name = action_name.to_sym
69
69
  if action_name == :delete
70
- link_to(t("simple_resource.#{action_name.to_s}", default: title), path,
70
+ link_to(icon_for(action_name) + t("simple_resource.#{action_name.to_s}", default: title), path, class: button_classes_for(action_name, true),
71
71
  method: :delete, confirm: t("simple_resource.messages.delete_confirmation"))
72
72
  else
73
- link_to(t("simple_resource.#{action_name.to_s}", default: title), path)
73
+ link_to(icon_for(action_name) + t("simple_resource.#{action_name.to_s}", default: title), path, class: button_classes_for(action_name, true))
74
74
  end
75
75
  end
76
76
 
@@ -82,6 +82,25 @@ module SimpleResource
82
82
  html.join("\n").html_safe
83
83
  end
84
84
 
85
+ def icon_for(action)
86
+ return "" if !SimpleResource::Configuration.respond_to?("icon_classes_for_#{action.to_s}")
87
+ icon_classes = Array.new
88
+ icon_classes << SimpleResource::Configuration.icon_classes
89
+ icon_classes << SimpleResource::Configuration.send("icon_classes_for_#{action.to_s}")
90
+ content_tag(:i, "", class: icon_classes.join(" ").strip).html_safe + " "
91
+ end
92
+
93
+ def button_classes_for(action, mini = false)
94
+ button_classes = Array.new
95
+ button_classes << SimpleResource::Configuration.button_classes
96
+ button_classes << SimpleResource::Configuration.mini_button_classes if mini
97
+ button_classes << (
98
+ SimpleResource::Configuration.respond_to?("button_classes_for_#{action.to_s}") ?
99
+ SimpleResource::Configuration.send("button_classes_for_#{action.to_s}") :
100
+ "")
101
+ button_classes.join(" ").strip
102
+ end
103
+
85
104
  def controller_namespaces
86
105
  namespaces = controller_path.split("/")
87
106
  namespaces.pop
@@ -0,0 +1,40 @@
1
+ module SimpleResource
2
+ module Configuration
3
+ mattr_accessor :button_classes
4
+ self.button_classes = "btn"
5
+
6
+ mattr_accessor :mini_button_classes
7
+ self.mini_button_classes = "btn-mini"
8
+
9
+ mattr_accessor :button_classes_for_new
10
+ self.button_classes_for_new = ""
11
+
12
+ mattr_accessor :button_classes_for_show
13
+ self.button_classes_for_show = ""
14
+
15
+ mattr_accessor :button_classes_for_edit
16
+ self.button_classes_for_edit = ""
17
+
18
+ mattr_accessor :button_classes_for_delete
19
+ self.button_classes_for_delete = "btn-danger"
20
+
21
+ mattr_accessor :icon_classes
22
+ self.icon_classes = ""
23
+
24
+ mattr_accessor :icon_classes_for_new
25
+ self.icon_classes_for_new = "icon-plus-sign"
26
+
27
+ mattr_accessor :icon_classes_for_show
28
+ self.icon_classes_for_show = "icon-zoom-in"
29
+
30
+ mattr_accessor :icon_classes_for_edit
31
+ self.icon_classes_for_edit = "icon-edit"
32
+
33
+ mattr_accessor :icon_classes_for_delete
34
+ self.icon_classes_for_delete = "icon-trash icon-white"
35
+
36
+ def configure
37
+ yield self if block_given?
38
+ end
39
+ end
40
+ end
@@ -1,3 +1,3 @@
1
1
  module SimpleResource
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -1,6 +1,8 @@
1
1
  require "inherited_resources"
2
+ require "simple_resource/configuration"
2
3
  require "simple_resource/engine"
3
4
  require "simple_resource/version"
4
5
 
5
6
  module SimpleResource
7
+ include Configuration
6
8
  end
@@ -74,12 +74,12 @@ describe SimpleResource::BaseHelper do
74
74
 
75
75
  describe "#new_resource_link" do
76
76
  it "returns default version of new resource link" do
77
- helper.new_resource_link.should eq('<a href="/languages/new">New Language</a>')
77
+ helper.new_resource_link.should eq('<a href="/languages/new" class="btn"><i class="icon-plus-sign"></i> New Language</a>')
78
78
  end
79
79
 
80
80
  it "returns translated version of new resource link" do
81
81
  set_locale
82
- helper.new_resource_link.should eq('<a href="/languages/new">Uusi Kieli</a>')
82
+ helper.new_resource_link.should eq('<a href="/languages/new" class="btn"><i class="icon-plus-sign"></i> Uusi Kieli</a>')
83
83
  reset_locale
84
84
  end
85
85
  end
@@ -176,43 +176,43 @@ describe SimpleResource::BaseHelper do
176
176
  describe "#link_to_action" do
177
177
  context "with action :show" do
178
178
  it "returns show link" do
179
- helper.link_to_action(:show, "Show", "/languages/1").should eq('<a href="/languages/1">Show</a>')
179
+ helper.link_to_action(:show, "Show", "/languages/1").should eq('<a href="/languages/1" class="btn btn-mini"><i class="icon-zoom-in"></i> Show</a>')
180
180
  end
181
181
 
182
182
  it "returns translated show link" do
183
183
  set_locale
184
- helper.link_to_action(:show, "Näytä", "/languages/1").should eq('<a href="/languages/1">Näytä</a>')
184
+ helper.link_to_action(:show, "Näytä", "/languages/1").should eq('<a href="/languages/1" class="btn btn-mini"><i class="icon-zoom-in"></i> Näytä</a>')
185
185
  reset_locale
186
186
  end
187
187
  end
188
188
 
189
189
  context "with action :edit" do
190
190
  it "returns edit link" do
191
- helper.link_to_action(:edit, "Edit", "/languages/1/edit").should eq('<a href="/languages/1/edit">Edit</a>')
191
+ helper.link_to_action(:edit, "Edit", "/languages/1/edit").should eq('<a href="/languages/1/edit" class="btn btn-mini"><i class="icon-edit"></i> Edit</a>')
192
192
  end
193
193
 
194
194
  it "returns translated edit link" do
195
195
  set_locale
196
- helper.link_to_action(:edit, "Muokkaa", "/languages/1/edit").should eq('<a href="/languages/1/edit">Muokkaa</a>')
196
+ helper.link_to_action(:edit, "Muokkaa", "/languages/1/edit").should eq('<a href="/languages/1/edit" class="btn btn-mini"><i class="icon-edit"></i> Muokkaa</a>')
197
197
  reset_locale
198
198
  end
199
199
  end
200
200
 
201
201
  context "with action :delete" do
202
202
  it "returns delete link" do
203
- helper.link_to_action(:delete, "Delete", "/languages/1").should eq('<a href="/languages/1" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Delete</a>')
203
+ helper.link_to_action(:delete, "Delete", "/languages/1").should eq('<a href="/languages/1" class="btn btn-mini btn-danger" data-confirm="Are you sure?" data-method="delete" rel="nofollow"><i class="icon-trash icon-white"></i> Delete</a>')
204
204
  end
205
205
 
206
206
  it "returns translated delete link" do
207
207
  set_locale
208
- helper.link_to_action(:delete, "Poista", "/languages/1").should eq('<a href="/languages/1" data-confirm="Oletko varma?" data-method="delete" rel="nofollow">Poista</a>')
208
+ helper.link_to_action(:delete, "Poista", "/languages/1").should eq('<a href="/languages/1" class="btn btn-mini btn-danger" data-confirm="Oletko varma?" data-method="delete" rel="nofollow"><i class="icon-trash icon-white"></i> Poista</a>')
209
209
  reset_locale
210
210
  end
211
211
  end
212
212
 
213
213
  context "with custom action" do
214
214
  it "returns link to custom action" do
215
- helper.link_to_action(:children, "Children", "/languages/1/children").should eq('<a href="/languages/1/children">Children</a>')
215
+ helper.link_to_action(:children, "Children", "/languages/1/children").should eq('<a href="/languages/1/children" class="btn btn-mini">Children</a>')
216
216
  end
217
217
  end
218
218
  end
@@ -222,10 +222,10 @@ describe SimpleResource::BaseHelper do
222
222
 
223
223
  it "returns default actions for given resource" do
224
224
  collection.each do |resource|
225
- expected = %Q(<a href="/languages/#{resource.id}">Show</a>\n)
226
- expected += %Q(<a href="/languages/#{resource.id}/edit">Edit</a>\n)
227
- expected += %Q(<a href="/languages/#{resource.id}" data-confirm="Are you sure?")
228
- expected += %Q( data-method="delete" rel="nofollow">Delete</a>)
225
+ expected = %Q(<a href="/languages/#{resource.id}" class="btn btn-mini"><i class="icon-zoom-in"></i> Show</a>\n)
226
+ expected += %Q(<a href="/languages/#{resource.id}/edit" class="btn btn-mini"><i class="icon-edit"></i> Edit</a>\n)
227
+ expected += %Q(<a href="/languages/#{resource.id}" class="btn btn-mini btn-danger" data-confirm="Are you sure?")
228
+ expected += %Q( data-method="delete" rel="nofollow"><i class="icon-trash icon-white"></i> Delete</a>)
229
229
  helper.default_actions_for(resource).should eq(expected)
230
230
  end
231
231
  end
@@ -315,10 +315,10 @@ describe SimpleResource::BaseHelper do
315
315
 
316
316
  it "returns actions for given resource in HTML" do
317
317
  collection.each do |resource|
318
- expected = %Q(<a href="/languages/#{resource.id}">Show</a>\n)
319
- expected += %Q(<a href="/languages/#{resource.id}/edit">Edit</a>\n)
320
- expected += %Q(<a href="/languages/#{resource.id}" data-confirm="Are you sure?")
321
- expected += %Q( data-method="delete" rel="nofollow">Delete</a>\n)
318
+ expected = %Q(<a href="/languages/#{resource.id}" class="btn btn-mini"><i class="icon-zoom-in"></i> Show</a>\n)
319
+ expected += %Q(<a href="/languages/#{resource.id}/edit" class="btn btn-mini"><i class="icon-edit"></i> Edit</a>\n)
320
+ expected += %Q(<a href="/languages/#{resource.id}" class="btn btn-mini btn-danger" data-confirm="Are you sure?")
321
+ expected += %Q( data-method="delete" rel="nofollow"><i class="icon-trash icon-white"></i> Delete</a>\n)
322
322
  helper.render_actions_for(resource).should eq(expected)
323
323
  end
324
324
  end
@@ -337,10 +337,10 @@ describe SimpleResource::BaseHelper do
337
337
 
338
338
  collection.each do |resource|
339
339
  expected += %Q(<tr><td>#{resource.name}</td><td class="actions">)
340
- expected += %Q(<a href="/languages/#{resource.id}">Show</a>)
341
- expected += %Q(<a href="/languages/#{resource.id}/edit">Edit</a>)
342
- expected += %Q(<a href="/languages/#{resource.id}" data-confirm="Are you sure?")
343
- expected += %Q( data-method="delete" rel="nofollow">Delete</a>)
340
+ expected += %Q(<a href="/languages/#{resource.id}" class="btn btn-mini"><i class="icon-zoom-in"></i> Show</a>)
341
+ expected += %Q(<a href="/languages/#{resource.id}/edit" class="btn btn-mini"><i class="icon-edit"></i> Edit</a>)
342
+ expected += %Q(<a href="/languages/#{resource.id}" class="btn btn-mini btn-danger" data-confirm="Are you sure?")
343
+ expected += %Q( data-method="delete" rel="nofollow"><i class="icon-trash icon-white"></i> Delete</a>)
344
344
  expected += %Q(</td></tr>)
345
345
  end
346
346
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -249,6 +249,7 @@ files:
249
249
  - app/views/simple_resource/builders/_simple_form.html.erb
250
250
  - config/locales/en.yml
251
251
  - lib/simple_resource.rb
252
+ - lib/simple_resource/configuration.rb
252
253
  - lib/simple_resource/engine.rb
253
254
  - lib/simple_resource/version.rb
254
255
  - script/rails
@@ -316,7 +317,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
316
317
  version: '0'
317
318
  segments:
318
319
  - 0
319
- hash: 1479618243370591090
320
+ hash: 2164673244938550078
320
321
  required_rubygems_version: !ruby/object:Gem::Requirement
321
322
  none: false
322
323
  requirements:
@@ -325,7 +326,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
325
326
  version: '0'
326
327
  segments:
327
328
  - 0
328
- hash: 1479618243370591090
329
+ hash: 2164673244938550078
329
330
  requirements: []
330
331
  rubyforge_project:
331
332
  rubygems_version: 1.8.24