locale_flash 0.0.3 → 0.0.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.markdown +10 -2
- data/lib/locale_flash/action_controller.rb +1 -1
- data/lib/locale_flash/action_view.rb +19 -6
- data/lib/locale_flash/version.rb +1 -1
- data/spec/locale_flash/action_controller_spec.rb +11 -0
- data/spec/locale_flash/action_view_spec.rb +40 -0
- data/spec/support/controllers.rb +18 -2
- metadata +2 -2
data/README.markdown
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# locale_flash
|
2
2
|
|
3
|
-
##
|
3
|
+
## Installation
|
4
4
|
|
5
5
|
Add locale_flash to your Gemfile :
|
6
6
|
|
@@ -76,8 +76,16 @@ Given that I call *locale_notice* from the create action in a UsersController, t
|
|
76
76
|
controllers.flash.create.notice # fallback to the notice message for all create actions
|
77
77
|
controllers.flash.notice # fallback to the generic notice message
|
78
78
|
|
79
|
+
Given a nested Admin::UsersController, the order of fallbacks will be as follows :
|
80
|
+
|
81
|
+
controllers.admin.users.create.flash.notice
|
82
|
+
controllers.admin.create.flash.show.notice
|
83
|
+
controllers.admin.create.flash.notice
|
84
|
+
controllers.admin.flash.notice
|
85
|
+
controllers.flash.create.notice
|
86
|
+
controllers.flash.notice
|
87
|
+
|
79
88
|
## TODO
|
80
89
|
+ Add an option to configure the wrapping html tags/classes
|
81
|
-
+ Make sure that nested controllers have the correct fallbacks
|
82
90
|
+ Allow options to be passed to the I18n.t call (like :locale => :fr for example)
|
83
91
|
+ Add the option of predefining common messages (like resource_created for example)
|
@@ -21,14 +21,27 @@ module LocaleFlash
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def locale_flash_key(key, value)
|
24
|
-
['controllers', value[:controller], value[:action], 'flash', key].join('.').to_sym
|
24
|
+
['controllers', value[:controller].split('/').join('.'), value[:action], 'flash', key].join('.').to_sym
|
25
25
|
end
|
26
26
|
|
27
|
-
def locale_flash_default(
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
def locale_flash_default(type, msg)
|
28
|
+
controllers = msg[:controller].split('/')
|
29
|
+
|
30
|
+
if controllers.size > 1
|
31
|
+
defaults = []
|
32
|
+
controllers.each_with_index do |controller, i|
|
33
|
+
controller = controllers[0, (controllers.size - i)].join('.')
|
34
|
+
parent = controllers[0, (controllers.size - i - 1)].join('.')
|
35
|
+
defaults << ['controllers', controller, 'flash', type]
|
36
|
+
defaults << ['controllers', parent, 'flash', msg[:action], type] unless parent.empty?
|
37
|
+
end
|
38
|
+
else
|
39
|
+
defaults = [['controllers', controllers.first, 'flash', type]]
|
40
|
+
end
|
41
|
+
|
42
|
+
defaults << ['controllers', 'flash', msg[:action], type]
|
43
|
+
defaults << ['controllers', 'flash', type]
|
44
|
+
defaults.map { |i| i.join('.').to_sym }
|
32
45
|
end
|
33
46
|
|
34
47
|
end
|
data/lib/locale_flash/version.rb
CHANGED
@@ -11,6 +11,17 @@ describe ActionController::Base do
|
|
11
11
|
@controller.edit
|
12
12
|
@controller.flash.should == {:warning => {:controller => 'users', :action => 'create'}}
|
13
13
|
end
|
14
|
+
|
15
|
+
context "when the controller is nested" do
|
16
|
+
before(:each) do
|
17
|
+
@controller = Admin::UsersController.new
|
18
|
+
end
|
19
|
+
|
20
|
+
it "sets the flash[key] to a hash containing the full path to the controller and the action name" do
|
21
|
+
@controller.show
|
22
|
+
@controller.flash.should == {:alert => {:controller => 'admin/users', :action => 'show'}}
|
23
|
+
end
|
24
|
+
end
|
14
25
|
end
|
15
26
|
|
16
27
|
describe '#locale_notice' do
|
@@ -49,6 +49,46 @@ describe ActionView::Base do
|
|
49
49
|
@template.locale_flash.should == %Q{<div class="notice">Found in controllers.flash.notice</div>}
|
50
50
|
end
|
51
51
|
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "#locale_flash_default(type, msg)" do
|
55
|
+
it "should be correct for simple controllers" do
|
56
|
+
@template.send(
|
57
|
+
:locale_flash_default,
|
58
|
+
:notice, {:controller => 'users', :action => 'show'}
|
59
|
+
).should == [
|
60
|
+
:"controllers.users.flash.notice",
|
61
|
+
:"controllers.flash.show.notice",
|
62
|
+
:"controllers.flash.notice"
|
63
|
+
]
|
64
|
+
end
|
52
65
|
|
66
|
+
it "should be correct for nested controllers" do
|
67
|
+
@template.send(
|
68
|
+
:locale_flash_default,
|
69
|
+
:notice, {:controller => 'admin/users', :action => 'show'}
|
70
|
+
).should == [
|
71
|
+
:"controllers.admin.users.flash.notice",
|
72
|
+
:"controllers.admin.flash.show.notice",
|
73
|
+
:"controllers.admin.flash.notice",
|
74
|
+
:"controllers.flash.show.notice",
|
75
|
+
:"controllers.flash.notice"
|
76
|
+
]
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should be correct for multiply nested controllers" do
|
80
|
+
@template.send(
|
81
|
+
:locale_flash_default,
|
82
|
+
:notice, {:controller => 'admin/users/projects', :action => 'show'}
|
83
|
+
).should == [
|
84
|
+
:"controllers.admin.users.projects.flash.notice",
|
85
|
+
:"controllers.admin.users.flash.show.notice",
|
86
|
+
:"controllers.admin.users.flash.notice",
|
87
|
+
:"controllers.admin.flash.show.notice",
|
88
|
+
:"controllers.admin.flash.notice",
|
89
|
+
:"controllers.flash.show.notice",
|
90
|
+
:"controllers.flash.notice"
|
91
|
+
]
|
92
|
+
end
|
53
93
|
end
|
54
94
|
end
|
data/spec/support/controllers.rb
CHANGED
@@ -9,7 +9,6 @@ module ActionController
|
|
9
9
|
end
|
10
10
|
|
11
11
|
class UsersController < ActionController::Base
|
12
|
-
|
13
12
|
def edit
|
14
13
|
locale_flash(:warning)
|
15
14
|
end
|
@@ -24,11 +23,28 @@ class UsersController < ActionController::Base
|
|
24
23
|
|
25
24
|
private
|
26
25
|
|
27
|
-
def
|
26
|
+
def controller_path
|
28
27
|
'users'
|
29
28
|
end
|
30
29
|
|
31
30
|
def action_name
|
32
31
|
'create'
|
33
32
|
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module Admin
|
36
|
+
end
|
37
|
+
|
38
|
+
class Admin::UsersController < ActionController::Base
|
39
|
+
def show
|
40
|
+
locale_alert
|
41
|
+
end
|
42
|
+
|
43
|
+
def controller_path
|
44
|
+
'admin/users'
|
45
|
+
end
|
46
|
+
|
47
|
+
def action_name
|
48
|
+
'show'
|
49
|
+
end
|
34
50
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: locale_flash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Christopher Dell
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-13 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|