simply_messages 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +23 -14
- data/Rakefile +8 -1
- data/lib/simply_messages/action_view_extension.rb +33 -30
- data/lib/simply_messages/railtie.rb +0 -1
- data/lib/simply_messages/version.rb +1 -1
- data/simply_messages.gemspec +3 -0
- metadata +46 -4
data/README.rdoc
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
= simply_messages
|
2
2
|
|
3
3
|
simply_messages is a Rails plugin providing a unified notice/alert messages handling (like those: flash.now[:notice] = 'Yeah').
|
4
|
-
Based on the message_block
|
4
|
+
Based on the message_block by Ben Hughes (http://github.com/railsgarden/message_block).
|
5
5
|
|
6
6
|
|
7
7
|
== Requirements
|
@@ -20,17 +20,26 @@ Then bundle:
|
|
20
20
|
bundle
|
21
21
|
|
22
22
|
|
23
|
-
|
23
|
+
simply_messages uses standard I18n translations to display errors and as such requires at least the following keys to be present:
|
24
24
|
|
25
|
-
|
25
|
+
activerecord:
|
26
|
+
errors:
|
27
|
+
template:
|
28
|
+
header:
|
29
|
+
one: "1 error prohibited this %{model} from being saved"
|
30
|
+
other: "%{count} errors prohibited this %{model} from being saved"
|
31
|
+
|
32
|
+
|
33
|
+
== Usage
|
26
34
|
|
35
|
+
In `app/views/layouts/application.html.erb`:
|
27
36
|
|
28
|
-
|
37
|
+
<%= messages_block %>
|
29
38
|
|
30
|
-
Will also display appropriate messages for :success and :error flash keys.
|
31
39
|
|
40
|
+
By default the messages_block function will display all flash[:notice] and flash[:alert] messages and all errors for model object associated by name with the current controller (so it will display all model errors for @user model when 'users' is the current controller). Will also display appropriate messages for :success and :error flash keys.
|
32
41
|
|
33
|
-
We can also
|
42
|
+
We can also explicitly set the model we would like to display errors for, like this:
|
34
43
|
|
35
44
|
<%= messages_block :for => :comment %>
|
36
45
|
|
@@ -52,27 +61,27 @@ view:
|
|
52
61
|
will result in:
|
53
62
|
|
54
63
|
<div class="notice">
|
55
|
-
<p>Post saved
|
64
|
+
<p>Post saved</p>
|
56
65
|
</div>
|
57
66
|
|
58
67
|
|
59
68
|
=== EXAMPLE 2
|
60
69
|
|
61
|
-
|
70
|
+
Given a User model instance with one validation error:
|
62
71
|
|
63
|
-
|
64
|
-
|
72
|
+
user.errors
|
73
|
+
=> #<OrderedHash {:name=>["can't be blank"]}>
|
65
74
|
|
66
|
-
view:
|
75
|
+
and this in view in the users controller:
|
67
76
|
|
68
77
|
<%= messages_block %>
|
69
78
|
|
70
|
-
will
|
79
|
+
will render:
|
71
80
|
|
72
81
|
<div class="alert">
|
73
|
-
<p>
|
82
|
+
<p>1 error prohibited this User from being saved:</p>
|
74
83
|
<ul>
|
75
|
-
<li>
|
84
|
+
<li>Name can't be blank</li>
|
76
85
|
</ul>
|
77
86
|
</div>
|
78
87
|
|
data/Rakefile
CHANGED
@@ -3,10 +3,17 @@
|
|
3
3
|
require 'bundler'
|
4
4
|
Bundler::GemHelper.install_tasks
|
5
5
|
|
6
|
+
require 'rspec/core'
|
7
|
+
require 'rspec/core/rake_task'
|
8
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
9
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
10
|
+
end
|
11
|
+
|
12
|
+
task :default => :spec
|
13
|
+
|
6
14
|
require 'rake/rdoctask'
|
7
15
|
Rake::RDocTask.new do |rdoc|
|
8
16
|
require 'simply_messages/version'
|
9
|
-
|
10
17
|
rdoc.rdoc_dir = 'rdoc'
|
11
18
|
rdoc.title = "simply_messages #{SimplyMessages::VERSION}"
|
12
19
|
rdoc.rdoc_files.include('README*')
|
@@ -5,8 +5,8 @@ module SimplyMessages
|
|
5
5
|
extend ::ActiveSupport::Concern
|
6
6
|
|
7
7
|
module InstanceMethods
|
8
|
-
def messages_block(options = {})
|
9
8
|
|
9
|
+
def messages_block(options = {})
|
10
10
|
# make options[:for] an array
|
11
11
|
options[:for] ||= []
|
12
12
|
options[:for] = [options[:for]] unless options[:for].is_a?(Array)
|
@@ -21,48 +21,51 @@ module SimplyMessages
|
|
21
21
|
else
|
22
22
|
model_object
|
23
23
|
end
|
24
|
-
end.select {|m|
|
25
|
-
|
26
|
-
# all models errors
|
27
|
-
models_errors = []
|
28
|
-
model_objects.each do |m|
|
29
|
-
errors = m.errors.entries.collect {|field, message| message}.select {|m| m.present?}
|
30
|
-
models_errors.concat(errors) if errors.any?
|
31
|
-
end
|
24
|
+
end.select { |m| m.present? }.uniq
|
32
25
|
|
33
26
|
# messages_block
|
34
27
|
messages_block = ''
|
35
28
|
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
29
|
+
# notice/success
|
30
|
+
flash_msg = ''
|
31
|
+
[:notice, :success].each do |key|
|
32
|
+
if flash[key].present?
|
33
|
+
flash_msg += content_tag(:p, flash[key])
|
34
|
+
messages_block += content_tag(:div, flash_msg.html_safe, :class => key.to_s)
|
35
|
+
end
|
43
36
|
end
|
44
37
|
|
45
|
-
#
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
38
|
+
# alert/error
|
39
|
+
flash_msg = ''
|
40
|
+
html_class = ''
|
41
|
+
[:alert, :error].each do |key|
|
50
42
|
if flash[key].present?
|
51
|
-
|
43
|
+
flash_msg += content_tag(:p, flash[key])
|
44
|
+
html_class += key.to_s
|
52
45
|
end
|
46
|
+
end
|
53
47
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
48
|
+
# all models errors
|
49
|
+
errors = ''
|
50
|
+
model_objects.each do |model|
|
51
|
+
if model.errors.any?
|
52
|
+
errors += content_tag(:p, I18n.translate(
|
53
|
+
model.errors.count > 1 ? :other : :one,
|
54
|
+
:count => model.errors.count,
|
55
|
+
:model => model.class.model_name.human,
|
56
|
+
:scope => [:activerecord, :errors, :template, :header]) + ':')
|
57
|
+
|
58
|
+
msg = ''
|
59
|
+
model.errors.full_messages.each do |e|
|
60
|
+
msg += content_tag(:li, e)
|
58
61
|
end
|
59
|
-
|
62
|
+
errors += content_tag(:ul, msg.html_safe)
|
60
63
|
end
|
61
|
-
|
62
|
-
messages_block += content_tag(:div, msg, :class => key.to_s)
|
63
64
|
end
|
64
65
|
|
65
|
-
messages_block
|
66
|
+
messages_block += content_tag(:div, flash_msg.html_safe + errors.html_safe, :class => (html_class.presence || 'alert'))
|
67
|
+
|
68
|
+
messages_block.html_safe
|
66
69
|
end
|
67
70
|
|
68
71
|
end
|
data/simply_messages.gemspec
CHANGED
@@ -25,4 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_dependency 'rails', ['>= 3.0.0']
|
26
26
|
s.add_development_dependency 'bundler', ['>= 1.0.0']
|
27
27
|
s.add_development_dependency 'sqlite3', ['>= 0']
|
28
|
+
s.add_development_dependency 'rspec', ['>= 0']
|
29
|
+
s.add_development_dependency 'rspec-rails', ['>= 0']
|
30
|
+
s.add_development_dependency 'webrat', ['>= 0']
|
28
31
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simply_messages
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Pawe\xC5\x82 Go\xC5\x9Bcicki"
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-15 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -64,6 +64,48 @@ dependencies:
|
|
64
64
|
version: "0"
|
65
65
|
type: :development
|
66
66
|
version_requirements: *id003
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rspec
|
69
|
+
prerelease: false
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
type: :development
|
80
|
+
version_requirements: *id004
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rspec-rails
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 3
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
version: "0"
|
93
|
+
type: :development
|
94
|
+
version_requirements: *id005
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: webrat
|
97
|
+
prerelease: false
|
98
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
hash: 3
|
104
|
+
segments:
|
105
|
+
- 0
|
106
|
+
version: "0"
|
107
|
+
type: :development
|
108
|
+
version_requirements: *id006
|
67
109
|
description: simply_messages is a unified flash and error messages display solution
|
68
110
|
email:
|
69
111
|
- pawel.goscicki@gmail.com
|