Commit 13a8c19489e3ee0320f378ee71b9f95f2fed825c
1 parent
ae14ca6c
Exists in
master
and in
29 other branches
ActionItem8: better interface for using help.
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@121 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
4 changed files
with
101 additions
and
20 deletions
Show diff stats
app/helpers/application_helper.rb
@@ -76,39 +76,71 @@ module ApplicationHelper | @@ -76,39 +76,71 @@ module ApplicationHelper | ||
76 | end | 76 | end |
77 | end | 77 | end |
78 | 78 | ||
79 | - # Displays context help. Pass the content of the help message in the block | ||
80 | - # passed to this method. Example: | 79 | + # Displays context help. You can pass the content of the help message as the |
80 | + # first parameter or using template code inside a block passed to this | ||
81 | + # method. *Note*: the block is ignored if <tt>content</tt> is not | ||
82 | + # <tt>nil</tt> | ||
83 | + # | ||
84 | + # The method returns the text generated, so you can also use it inside a | ||
85 | + # <%= ... %> | ||
86 | + # | ||
87 | + # Follow some examples ... | ||
88 | + # | ||
89 | + # Passing the text as argument: | ||
90 | + # | ||
91 | + # <% help 'This your help message' %> | ||
92 | + # | ||
93 | + # Using a block: | ||
81 | # | 94 | # |
82 | # <% help do %> | 95 | # <% help do %> |
83 | # This is the help message to be displayed. It can contain any HTML you | 96 | # 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. | 97 | + # want: <strong>bold</strong>, <em>italic</em>. It can also contain calls |
98 | + # to any Rails helper, like <%= link_to 'home', :controller => 'home' %>. | ||
86 | # <% end %> | 99 | # <% end %> |
87 | # | 100 | # |
88 | # You can also pass an optional argument to force the use of textile in your | 101 | # You can also pass an optional argument to force the use of textile in your |
89 | # help message: | 102 | # help message: |
90 | # | 103 | # |
91 | - # <% help :textile do %> | 104 | + # <% help nil, :textile do %> |
92 | # You can also use *textile*! | 105 | # You can also use *textile*! |
93 | # <% end %> | 106 | # <% end %> |
94 | # | 107 | # |
108 | + # or, using the return of the method: | ||
109 | + # | ||
110 | + # <%= help 'this is your help message' %> | ||
111 | + # | ||
95 | # Formally, the <tt>type</tt> argument can be <tt>:html</tt> or | 112 | # Formally, the <tt>type</tt> argument can be <tt>:html</tt> or |
96 | # <tt>:textile</tt>. It defaults to <tt>:html</tt>. | 113 | # <tt>:textile</tt>. It defaults to <tt>:html</tt>. |
97 | # | 114 | # |
98 | # TODO: implement correcly the 'Help' button click | 115 | # TODO: implement correcly the 'Help' button click |
99 | - def help(type = :html, &block) | ||
100 | - content = capture(&block) | 116 | + def help(content = nil, type = :html, &block) |
117 | + | ||
118 | + if content.nil? | ||
119 | + return '' if block.nil? | ||
120 | + content = capture(&block) | ||
121 | + end | ||
122 | + | ||
101 | if type == :textile | 123 | if type == :textile |
102 | content = RedCloth.new(content).to_html | 124 | content = RedCloth.new(content).to_html |
103 | end | 125 | end |
126 | + | ||
127 | + # TODO: implement this button, and add style='display: none' to the help | ||
128 | + # message DIV | ||
104 | button = link_to_function(_('Help'), "alert('change me, Leandro!')") | 129 | 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) | 130 | + |
131 | + text = content_tag('div', button + content_tag('div', content, :class => 'help_message'), :class => 'help_box') | ||
132 | + | ||
133 | + unless block.nil? | ||
134 | + concat(text, block.binding) | ||
135 | + end | ||
136 | + | ||
137 | + text | ||
106 | end | 138 | end |
107 | 139 | ||
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) | 140 | + # alias for <tt>help(content, :textile)</tt>. You can pass a block in the |
141 | + # same way you would do if you called <tt>help</tt> directly. | ||
142 | + def help_textile(content = nil, &block) | ||
143 | + help(content, :textile, &block) | ||
112 | end | 144 | end |
113 | 145 | ||
114 | end | 146 | end |
app/views/features/index.rhtml
1 | <h2><%= _('Enable/Disable features') %></h2> | 1 | <h2><%= _('Enable/Disable features') %></h2> |
2 | 2 | ||
3 | <%= render :partial => 'features_table' %> | 3 | <%= render :partial => 'features_table' %> |
4 | + | ||
5 | +<%= help_textile _(' | ||
6 | +Here you can enable or disable several features of your virtual community. Each feature represents some funcionality that your virtual community can use you enable it. | ||
7 | +') %> |
test/functional/application_controller_test.rb
@@ -53,8 +53,8 @@ class ApplicationControllerTest < Test::Unit::TestCase | @@ -53,8 +53,8 @@ class ApplicationControllerTest < Test::Unit::TestCase | ||
53 | assert_not_nil assigns(:chosen_icons_theme) | 53 | assert_not_nil assigns(:chosen_icons_theme) |
54 | end | 54 | end |
55 | 55 | ||
56 | - def test_should_generate_help_box | ||
57 | - get :help | 56 | + def test_should_generate_help_box_when_passing_string |
57 | + get :help_with_string | ||
58 | assert_tag({ | 58 | assert_tag({ |
59 | :tag => 'div', | 59 | :tag => 'div', |
60 | :attributes => { :class => 'help_box'}, | 60 | :attributes => { :class => 'help_box'}, |
@@ -66,8 +66,37 @@ class ApplicationControllerTest < Test::Unit::TestCase | @@ -66,8 +66,37 @@ class ApplicationControllerTest < Test::Unit::TestCase | ||
66 | }) | 66 | }) |
67 | end | 67 | end |
68 | 68 | ||
69 | - def test_should_generate_help_box_expanding_textile_markup | ||
70 | - get :help_textile | 69 | + def test_should_generate_help_box_when_passing_block |
70 | + get :help_with_block | ||
71 | + assert_tag({ | ||
72 | + :tag => 'div', | ||
73 | + :attributes => { :class => 'help_box'}, | ||
74 | + :descendant => { | ||
75 | + :tag => 'div', | ||
76 | + :content => /my_help_message/, | ||
77 | + :attributes => { :class => 'help_message'} | ||
78 | + } | ||
79 | + }) | ||
80 | + end | ||
81 | + | ||
82 | + def test_should_generate_help_box_expanding_textile_markup_when_passing_string | ||
83 | + get :help_textile_with_string | ||
84 | + assert_tag({ | ||
85 | + :tag => 'div', | ||
86 | + :attributes => { :class => 'help_box'}, | ||
87 | + :descendant => { | ||
88 | + :tag => 'div', | ||
89 | + :attributes => { :class => 'help_message'}, | ||
90 | + :descendant => { | ||
91 | + :tag => 'strong', | ||
92 | + :content => /my_bold_help_message/ | ||
93 | + } | ||
94 | + } | ||
95 | + }) | ||
96 | + end | ||
97 | + | ||
98 | + def test_should_generate_help_box_expanding_textile_markup_when_passing_block | ||
99 | + get :help_textile_with_block | ||
71 | assert_tag({ | 100 | assert_tag({ |
72 | :tag => 'div', | 101 | :tag => 'div', |
73 | :attributes => { :class => 'help_box'}, | 102 | :attributes => { :class => 'help_box'}, |
test/mocks/test/test_controller.rb
@@ -8,12 +8,28 @@ class TestController < ApplicationController | @@ -8,12 +8,28 @@ class TestController < ApplicationController | ||
8 | render :text => '<span>post_only</span>' | 8 | render :text => '<span>post_only</span>' |
9 | end | 9 | end |
10 | 10 | ||
11 | - def help | ||
12 | - render :inline => '<% help { %> my_help_message <% } %>' | 11 | + def help_with_string |
12 | + render :inline => '<%= help "my_help_message" %>' | ||
13 | end | 13 | end |
14 | 14 | ||
15 | - def help_textile | ||
16 | - render :inline => '<% help_textile { %> *my_bold_help_message* <% } %>' | 15 | + def help_with_block |
16 | + render :inline => ' | ||
17 | + <% help do %> | ||
18 | + my_help_message | ||
19 | + <% end %> | ||
20 | + ' | ||
21 | + end | ||
22 | + | ||
23 | + def help_textile_with_string | ||
24 | + render :inline => '<%= help_textile "*my_bold_help_message*" %>' | ||
25 | + end | ||
26 | + | ||
27 | + def help_textile_with_block | ||
28 | + render :inline => ' | ||
29 | + <% help_textile do %> | ||
30 | + *my_bold_help_message* | ||
31 | + <% end %> | ||
32 | + ' | ||
17 | end | 33 | end |
18 | 34 | ||
19 | end | 35 | end |