flash_messages_helper 0.1.0

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.
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,74 @@
1
+ h1. Flash Messages Helper
2
+
3
+ Ruby on Rails view helper for displaying html flash messages in your Rails applications.
4
+
5
+ h2. Install as a Ruby Gem
6
+
7
+ <pre>sudo gem install flash_messages_helper</pre>
8
+
9
+ p. Then add the following line to your _environment.rb_
10
+
11
+ <pre>config.gem 'flash_messages_helper'</pre>
12
+
13
+ h2. Installation as a Ruby on Rails Plugin
14
+
15
+ <pre>./script/plugin install git://github.com/mdeering/flash_messages_helper.git</pre>
16
+
17
+ h2. Usage
18
+
19
+ Once you have installed it as a plugin/gem in your rails app usage is simple. Just call the flash_messages function within you Rails layout or view file
20
+
21
+ <pre>flash_messages</pre>
22
+
23
+ h2. Configuration Points
24
+
25
+ h3. Changing the default id of the flash elements
26
+
27
+ By default the id of the flash message element will come through as flash-_error-type_
28
+
29
+ * flash-error
30
+ * flash-notice
31
+ * flash-warning
32
+ * _ect..._
33
+
34
+ To change this you can pass set a lambda that will get called with the key of the message type.
35
+
36
+ <pre># config/initializers/flash_messages_helper_settings.rb
37
+ ActionView::Base.flash_message_id_proc = lambda {|key| "#{key}-message"}</pre>
38
+
39
+ A _error_ message will now displayed with the dom element id of _error-message_ rather then _flash-error_ throughout the application
40
+
41
+ <pre><div class="error" id="error-message">There was an error!</div></pre>
42
+
43
+ h3. Changing the default class of the flash elements
44
+
45
+ By default the class of the flash message element will come through as _error-type_
46
+
47
+ * error
48
+ * notice
49
+ * warning
50
+ * _ect..._
51
+
52
+ To change this you can pass set a lambda that will get called with the key of the message type.
53
+
54
+ <pre># config/initializers/flash_messages_helper_settings.rb
55
+ ActionView::Base.flash_message_class_proc = lambda {|key| "#{key} hideable"}</pre>
56
+
57
+ A _error_ message will now displayed with the dom element class of _error hideable rather then _error_ throughout the application
58
+
59
+ <pre><div class="error hideable" id="flash-error">There was an error!</div></pre>
60
+
61
+ h3. Changing the default html tag type of the flash elements
62
+
63
+ As a default the html tag used to wrap the flash messages is a div element. This can be easily globally changed with the following setting.
64
+
65
+ <pre># config/initializers/flash_messages_helper_settings.rb
66
+ ActionView::Base.flash_message_tag = :p</pre>
67
+
68
+ With the above setting flash messages will be wrapped inside of a paragraph tag rather then a div.
69
+
70
+ <pre><p class="error" id="flash-error">There was an error!</p></pre>
71
+
72
+ h2. Credits
73
+
74
+ p. Copyright (c) 2009 "Michael Deering(Ruby on Rails Development Edmonton)":http://mdeering.com, released under the MIT license
@@ -0,0 +1,50 @@
1
+ require 'rake'
2
+ require 'rake/rdoctask'
3
+ require 'spec/rake/spectask'
4
+
5
+ begin
6
+ AUTHOR = "Michael Deering"
7
+ EMAIL = "mdeering@mdeering.com"
8
+ GEM = "flash_messages_helper"
9
+ HOMEPAGE = "http://github.com/mdeering/flash_messages_helper"
10
+ SUMMARY = "A simple yet configurable rails view helper for displaying flash messages."
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |s|
14
+ s.author = AUTHOR
15
+ s.email = EMAIL
16
+ s.files = %w(install.rb install.txt MIT-LICENSE README.textile Rakefile) + Dir.glob("{rails,lib,spec}/**/*")
17
+ s.homepage = HOMEPAGE
18
+ s.name = GEM
19
+ s.require_path = 'lib'
20
+ s.summary = SUMMARY
21
+ end
22
+ Jeweler::GemcutterTasks.new
23
+ rescue LoadError
24
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
25
+ end
26
+
27
+ desc 'Default: spec tests.'
28
+ task :default => :spec
29
+
30
+ desc 'Test the flash_messages_helper gem.'
31
+ Spec::Rake::SpecTask.new('spec') do |t|
32
+ t.spec_files = FileList['spec/**/*_spec.rb']
33
+ t.spec_opts = ["-c"]
34
+ end
35
+
36
+ desc "Run all examples with RCov"
37
+ Spec::Rake::SpecTask.new('rcov') do |t|
38
+ t.spec_files = FileList['spec/**/*_spec.rb']
39
+ t.rcov = true
40
+ t.rcov_opts = ['--exclude', '/opt,spec,Library']
41
+ end
42
+
43
+ desc 'Generate documentation for the flash_messages_helper plugin.'
44
+ Rake::RDocTask.new(:rdoc) do |rdoc|
45
+ rdoc.rdoc_dir = 'rdoc'
46
+ rdoc.title = 'FlashMessagesHelper'
47
+ rdoc.options << '--line-numbers' << '--inline-source'
48
+ rdoc.rdoc_files.include('README')
49
+ rdoc.rdoc_files.include('lib/**/*.rb')
50
+ end
@@ -0,0 +1 @@
1
+ puts IO.read(File.join(File.dirname(__FILE__), 'install.txt'))
@@ -0,0 +1,12 @@
1
+ -----------------------------------------------------------------------
2
+ Flash Messages Helper:
3
+
4
+ Thank you for using Flash Messages Helper. You will find full
5
+ documentation on usage and configuration options here:
6
+ http://github.com/mdeering/flash_messages_helper
7
+
8
+ All comments, suggestions, and pull requests are welcome.
9
+
10
+ Cheers,
11
+ Michael Deering http://mdeering.com
12
+ -----------------------------------------------------------------------
@@ -0,0 +1,29 @@
1
+ module FlashMessagesHelper
2
+
3
+ def self.included(target)
4
+ target.cattr_accessor :flash_message_class_proc
5
+ target.flash_message_class_proc = lambda { |key| "#{key}" }
6
+ target.cattr_accessor :flash_message_id_proc
7
+ target.flash_message_id_proc = lambda { |key| "flash-#{key}" }
8
+ target.cattr_accessor :flash_message_tag
9
+ target.flash_message_tag = :div
10
+ target.send :include, InstanceMethods
11
+ end
12
+
13
+ module InstanceMethods
14
+ def flash_messages(options = {})
15
+ ret = []
16
+ flash.each do |key, value|
17
+ ret << content_tag(ActionView::Base.flash_message_tag, value, {
18
+ :class => ActionView::Base.flash_message_class_proc.call(key),
19
+ :id => ActionView::Base.flash_message_id_proc.call(key)
20
+ }.merge(options)
21
+ )
22
+ end
23
+ return ret.join("\n")
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ ActionView::Base.send(:include, FlashMessagesHelper)
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__), *%w[.. lib flash_messages_helper])
@@ -0,0 +1,47 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ require 'flash_messages_helper'
4
+
5
+ ActionView::Base.send(:include, FlashMessagesHelper)
6
+
7
+ describe FlashMessagesHelper do
8
+
9
+ view = ActionView::Base.new
10
+ controller = ActionController::Base.new
11
+ view.controller = controller
12
+
13
+ it 'will have nothing to display of the flash is not set in any way' do
14
+ controller.stub!(:flash).and_return({})
15
+ view.flash_messages.should == ''
16
+ end
17
+
18
+ it 'will return a div with the error message' do
19
+ controller.stub!(:flash).and_return({:error => 'There was an error'})
20
+ view.flash_messages.should == "<div class=\"error\" id=\"flash-error\">There was an error</div>"
21
+ end
22
+
23
+ {
24
+ :flash_message_class_proc => lambda { |key| "#{key}-message hiddable"},
25
+ :flash_message_id_proc => lambda { |key| "flash-#{key}-message"},
26
+ :flash_message_tag => :p
27
+ }.each do |singleton_variable, value|
28
+ it "should create flash_messages class (singleton) variable #{singleton_variable} on its included class" do
29
+ ActionView::Base.send(singleton_variable).should_not == nil
30
+ ActionView::Base.send("#{singleton_variable}=", value)
31
+ ActionView::Base.send(singleton_variable).should == value
32
+ end
33
+ end
34
+
35
+ # Now that the defaults have been set
36
+
37
+ it 'will return a p with the error message and the defaults set differently' do
38
+ controller.stub!(:flash).and_return({:error => 'There was an error'})
39
+ view.flash_messages.should == "<p class=\"error-message hiddable\" id=\"flash-error-message\">There was an error</p>"
40
+ end
41
+
42
+ it 'will still honor the html options passed in' do
43
+ controller.stub!(:flash).and_return({:error => 'There was an error'})
44
+ view.flash_messages(:class => 'my-class').should == "<p class=\"my-class\" id=\"flash-error-message\">There was an error</p>"
45
+ end
46
+
47
+ end
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require 'action_view'
4
+ require 'action_controller'
5
+
6
+ Spec::Runner.configure do |config|
7
+ end
8
+
9
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flash_messages_helper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Michael Deering
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-19 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: mdeering@mdeering.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.textile
24
+ files:
25
+ - MIT-LICENSE
26
+ - README.textile
27
+ - Rakefile
28
+ - install.rb
29
+ - install.txt
30
+ - lib/flash_messages_helper.rb
31
+ - rails/init.rb
32
+ - spec/flash_messages_helper_spec.rb
33
+ - spec/test_helper.rb
34
+ has_rdoc: true
35
+ homepage: http://github.com/mdeering/flash_messages_helper
36
+ licenses: []
37
+
38
+ post_install_message:
39
+ rdoc_options:
40
+ - --charset=UTF-8
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ requirements: []
56
+
57
+ rubyforge_project:
58
+ rubygems_version: 1.3.5
59
+ signing_key:
60
+ specification_version: 3
61
+ summary: A simple yet configurable rails view helper for displaying flash messages.
62
+ test_files:
63
+ - spec/flash_messages_helper_spec.rb
64
+ - spec/test_helper.rb