Commit 0b2d24fcf800d48813413fd82bb0716c8d65e889
1 parent
ab04315e
Exists in
master
and in
23 other branches
ActionItem8: adding code for generating help boxes
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@119 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
3 changed files
with
72 additions
and
0 deletions
Show diff stats
app/helpers/application_helper.rb
| ... | ... | @@ -76,5 +76,39 @@ module ApplicationHelper |
| 76 | 76 | end |
| 77 | 77 | end |
| 78 | 78 | |
| 79 | + # Displays context help. Pass the content of the help message in the block | |
| 80 | + # passed to this method. Example: | |
| 81 | + # | |
| 82 | + # <% help do %> | |
| 83 | + # This is the help message to be displayed. It can contain any HTML you | |
| 84 | + # want: <strong>bold</strong>, <em>italic</em>, and even | |
| 85 | + # <%= link_to '', 'links' %> using Rails helpers. | |
| 86 | + # <% end %> | |
| 87 | + # | |
| 88 | + # You can also pass an optional argument to force the use of textile in your | |
| 89 | + # help message: | |
| 90 | + # | |
| 91 | + # <% help :textile do %> | |
| 92 | + # You can also use *textile*! | |
| 93 | + # <% end %> | |
| 94 | + # | |
| 95 | + # Formally, the <tt>type</tt> argument can be <tt>:html</tt> or | |
| 96 | + # <tt>:textile</tt>. It defaults to <tt>:html</tt>. | |
| 97 | + # | |
| 98 | + # TODO: implement correcly the 'Help' button click | |
| 99 | + def help(type = :html, &block) | |
| 100 | + content = capture(&block) | |
| 101 | + if type == :textile | |
| 102 | + content = RedCloth.new(content).to_html | |
| 103 | + end | |
| 104 | + button = link_to_function(_('Help'), "alert('change me, Leandro!')") | |
| 105 | + concat(content_tag('div', button + content_tag('div', content, :class => 'help_message'), :class => 'help_box'), block.binding) | |
| 106 | + end | |
| 107 | + | |
| 108 | + # alias for <tt>help(:textile)</tt>. Pass a block in the same way you would | |
| 109 | + # do if you called <tt>help</tt> directly. | |
| 110 | + def help_textile(&block) | |
| 111 | + help(:textile, &block) | |
| 112 | + end | |
| 79 | 113 | |
| 80 | 114 | end | ... | ... |
test/functional/application_controller_test.rb
| ... | ... | @@ -53,4 +53,33 @@ class ApplicationControllerTest < Test::Unit::TestCase |
| 53 | 53 | assert_not_nil assigns(:chosen_icons_theme) |
| 54 | 54 | end |
| 55 | 55 | |
| 56 | + def test_should_generate_help_box | |
| 57 | + get :help | |
| 58 | + assert_tag({ | |
| 59 | + :tag => 'div', | |
| 60 | + :attributes => { :class => 'help_box'}, | |
| 61 | + :descendant => { | |
| 62 | + :tag => 'div', | |
| 63 | + :content => /my_help_message/, | |
| 64 | + :attributes => { :class => 'help_message'} | |
| 65 | + } | |
| 66 | + }) | |
| 67 | + end | |
| 68 | + | |
| 69 | + def test_should_generate_help_box_expanding_textile_markup | |
| 70 | + get :help_textile | |
| 71 | + assert_tag({ | |
| 72 | + :tag => 'div', | |
| 73 | + :attributes => { :class => 'help_box'}, | |
| 74 | + :descendant => { | |
| 75 | + :tag => 'div', | |
| 76 | + :attributes => { :class => 'help_message'}, | |
| 77 | + :descendant => { | |
| 78 | + :tag => 'strong', | |
| 79 | + :content => /my_bold_help_message/ | |
| 80 | + } | |
| 81 | + } | |
| 82 | + }) | |
| 83 | + end | |
| 84 | + | |
| 56 | 85 | end | ... | ... |
test/mocks/test/test_controller.rb
| ... | ... | @@ -7,4 +7,13 @@ class TestController < ApplicationController |
| 7 | 7 | def post_only |
| 8 | 8 | render :text => '<span>post_only</span>' |
| 9 | 9 | end |
| 10 | + | |
| 11 | + def help | |
| 12 | + render :inline => '<% help { %> my_help_message <% } %>' | |
| 13 | + end | |
| 14 | + | |
| 15 | + def help_textile | |
| 16 | + render :inline => '<% help_textile { %> *my_bold_help_message* <% } %>' | |
| 17 | + end | |
| 18 | + | |
| 10 | 19 | end | ... | ... |