Commit 88e6388f423f8ec0dcb6e2bad2b1a87e94f61485
1 parent
72d90efd
Exists in
ratings_minor_fixes
and in
3 other branches
responsive: fix html_safe issues
Showing
11 changed files
with
279 additions
and
236 deletions
Show diff stats
app/helpers/application_helper.rb
... | ... | @@ -593,8 +593,8 @@ module ApplicationHelper |
593 | 593 | end |
594 | 594 | |
595 | 595 | if block |
596 | - field_html ||= '' | |
597 | - field_html += capture(&block) | |
596 | + field_html ||= ''.html_safe | |
597 | + field_html = [field_html, capture(&block)].safe_join | |
598 | 598 | end |
599 | 599 | |
600 | 600 | if controller.action_name == 'signup' || controller.action_name == 'new_community' || (controller.controller_name == "enterprise_registration" && controller.action_name == 'index') || (controller.controller_name == 'home' && controller.action_name == 'index' && user.nil?) |
... | ... | @@ -603,7 +603,9 @@ module ApplicationHelper |
603 | 603 | end |
604 | 604 | else |
605 | 605 | if profile.active_fields.include?(name) |
606 | - result = content_tag('div', field_html + profile_field_privacy_selector(profile, name), :class => 'field-with-privacy-selector') | |
606 | + result = content_tag :div, class: 'field-with-privacy-selector' do | |
607 | + [field_html, profile_field_privacy_selector(profile, name)].safe_join | |
608 | + end | |
607 | 609 | end |
608 | 610 | end |
609 | 611 | |
... | ... | @@ -611,10 +613,6 @@ module ApplicationHelper |
611 | 613 | result = required(result) |
612 | 614 | end |
613 | 615 | |
614 | - if block | |
615 | - concat(result) | |
616 | - end | |
617 | - | |
618 | 616 | result |
619 | 617 | end |
620 | 618 | ... | ... |
plugins/responsive/lib/ext/application_helper.rb
... | ... | @@ -5,7 +5,7 @@ module ApplicationHelper |
5 | 5 | protected |
6 | 6 | |
7 | 7 | module ResponsiveMethods |
8 | - FORM_CONTROL_CLASS = "form-control" | |
8 | + FORM_CONTROL_CLASS = 'form-control' | |
9 | 9 | |
10 | 10 | def button(type, label, url, html_options = {}) |
11 | 11 | return super unless theme_responsive? |
... | ... | @@ -13,15 +13,14 @@ module ApplicationHelper |
13 | 13 | option = html_options.delete(:option) || 'default' |
14 | 14 | size = html_options.delete(:size) || 'xs' |
15 | 15 | the_class = "with-text btn btn-#{size} btn-#{option} icon-#{type}" |
16 | - if html_options.has_key?(:class) | |
17 | - the_class << ' ' << html_options[:class] | |
18 | - end | |
19 | - #button_without_text type, label, url, html_options.merge(:class => the_class) | |
16 | + the_class << ' ' << html_options[:class] if html_options.has_key?(:class) | |
17 | + | |
18 | + #button_without_text type, label, url, html_options.merge(class: the_class) | |
20 | 19 | the_title = html_options[:title] || label |
21 | 20 | if html_options[:disabled] |
22 | - content_tag('a', content_tag('span', label), html_options.merge(class: the_class, title: the_title)) | |
21 | + content_tag(:a, content_tag(:span, label), html_options.merge(class: the_class, title: the_title)) | |
23 | 22 | else |
24 | - link_to(content_tag('span', label), url, html_options.merge(class: the_class, title: the_title)) | |
23 | + link_to(content_tag(:span, label), url, html_options.merge(class: the_class, title: the_title)) | |
25 | 24 | end |
26 | 25 | end |
27 | 26 | |
... | ... | @@ -36,7 +35,7 @@ module ApplicationHelper |
36 | 35 | end |
37 | 36 | the_title = html_options[:title] || label |
38 | 37 | if html_options[:disabled] |
39 | - content_tag('a', '', html_options.merge(class: the_class, title: the_title)) | |
38 | + content_tag(:a, '', html_options.merge(class: the_class, title: the_title)) | |
40 | 39 | else |
41 | 40 | link_to('', url, html_options.merge(class: the_class, title: the_title)) |
42 | 41 | end |
... | ... | @@ -91,7 +90,7 @@ module ApplicationHelper |
91 | 90 | if html_options.has_key?(:class) |
92 | 91 | the_class << ' ' << html_options[:class] |
93 | 92 | end |
94 | - content_tag('div', '', html_options.merge(class: the_class)) | |
93 | + content_tag(:div, '', html_options.merge(class: the_class)) | |
95 | 94 | end |
96 | 95 | |
97 | 96 | def icon_button(type, text, url, html_options = {}) |
... | ... | @@ -104,16 +103,21 @@ module ApplicationHelper |
104 | 103 | the_class << ' ' << html_options[:class] |
105 | 104 | end |
106 | 105 | |
107 | - link_to(content_tag('span', text), url, html_options.merge(class: the_class, title: text)) | |
106 | + link_to(content_tag(:span, text), url, html_options.merge(class: the_class, title: text)) | |
108 | 107 | end |
109 | 108 | |
110 | - def button_bar(options = {}, &block) | |
109 | + def button_bar options = {}, &block | |
111 | 110 | return super unless theme_responsive? |
112 | 111 | |
113 | - options[:class].nil? ? | |
114 | - options[:class]='button-bar' : | |
115 | - options[:class]+=' button-bar' | |
116 | - concat(content_tag('div', capture(&block).to_s + tag('br', style: 'clear: left;'), options)) | |
112 | + options[:class] ||= '' | |
113 | + options[:class] << 'button-bar' | |
114 | + | |
115 | + content_tag :div, options do | |
116 | + [ | |
117 | + capture(&block).to_s, | |
118 | + tag('br', style: 'clear: left;'), | |
119 | + ].safe_join | |
120 | + end | |
117 | 121 | end |
118 | 122 | |
119 | 123 | def expirable_button(content, action, text, url, html_options = {}) |
... | ... | @@ -128,143 +132,93 @@ module ApplicationHelper |
128 | 132 | def search_contents_menu |
129 | 133 | return super unless theme_responsive? |
130 | 134 | |
131 | - host = environment.default_hostname | |
132 | - | |
133 | - output = '<li class="dropdown">' | |
134 | - output += link_to(_('Contents'), '#', :class=>"dropdown-toggle icon-menu-articles", title: _('Contents'), :'data-toggle'=>"dropdown", :'data-hover'=>"dropdown") | |
135 | - output += '<ul class="dropdown-menu" role="menu">' | |
136 | - | |
137 | - output += '<li>' + link_to(_('All contents'), {host: host, controller: "search", action: 'contents', category_path: ''}) + '</li>' | |
138 | - | |
135 | + host = environment.default_hostname | |
139 | 136 | links = [ |
140 | - {s_('contents|More recent') => {:href => url_for({host: host, :controller => 'search', :action => 'contents', :filter => 'more_recent'})}}, | |
141 | - {s_('contents|More viewed') => {:href => url_for({host: host, :controller => 'search', :action => 'contents', :filter => 'more_popular'})}}, | |
142 | - {s_('contents|Most commented') => {:href => url_for({host: host, :controller => 'search', :action => 'contents', :filter => 'more_comments'})}} | |
137 | + [_('All contents'), {host: host, controller: :search, action: :contents, category_path: ''}], | |
138 | + [s_('contents|More recent'), {host: host, controller: :search, action: :contents, filter: 'more_recent'}], | |
139 | + [s_('contents|More viewed'), {host: host, controller: :search, action: :contents, filter: 'more_popular'}], | |
140 | + [s_('contents|Most commented'), {host: host, controller: :search, action: :contents, filter: 'more_comments'}], | |
143 | 141 | ] |
144 | 142 | if logged_in? |
145 | - links.push(_('New content') => modal_options({href: url_for({controller: 'cms', action: 'new', profile: current_user.login, cms: true})})) | |
143 | + links.push [_('New content'), '', modal_options({href: url_for({controller: 'cms', action: 'new', profile: current_user.login, cms: true})})] | |
146 | 144 | end |
147 | 145 | |
148 | - links.each do |link| | |
149 | - link.each do |name, options| | |
150 | - output += content_tag(:li,content_tag(:a,name,options)) | |
151 | - end | |
146 | + content_tag :li, class: 'dropdown' do | |
147 | + [ | |
148 | + link_to('#', class: 'dropdown-toggle icon-menu-articles', title: _('Contents'), data: {toggle: 'dropdown', hover: 'dropdown'}) do | |
149 | + content_tag :span, _('Contents') | |
150 | + end, | |
151 | + content_tag(:ul, class: 'dropdown-menu', role: 'menu') do | |
152 | + links.map do |(name, url)| | |
153 | + content_tag :li do | |
154 | + link_to name, url | |
155 | + end | |
156 | + end.safe_join | |
157 | + end, | |
158 | + ].safe_join | |
152 | 159 | end |
153 | - | |
154 | - output += '</ul>' | |
155 | - output += '</li>' | |
156 | - output | |
157 | 160 | end |
158 | 161 | |
159 | 162 | def search_people_menu |
160 | 163 | return super unless theme_responsive? |
161 | 164 | |
162 | - host = environment.default_hostname | |
163 | - | |
164 | - output = '<li class="dropdown">' | |
165 | - output += link_to(_('People'), '#', :class=>"dropdown-toggle icon-menu-people", title: _('People'), :'data-toggle'=>"dropdown", :'data-hover'=>"dropdown") | |
166 | - output += '<ul class="dropdown-menu" role="menu">' | |
167 | - | |
168 | - output += '<li>' + link_to(_('All people'), {host: host, controller: "search", action: 'people', category_path: ''}) + '</li>' | |
169 | - | |
165 | + host = environment.default_hostname | |
170 | 166 | links = [ |
171 | - {s_('people|More recent') => {:href => url_for({host: host, :controller => 'search', :action => 'people', :filter => 'more_recent'})}}, | |
172 | - {s_('people|More active') => {:href => url_for({host: host, :controller => 'search', :action => 'people', :filter => 'more_active'})}}, | |
173 | - {s_('people|More popular') => {:href => url_for({host: host, :controller => 'search', :action => 'people', :filter => 'more_popular'})}} | |
167 | + [_('All people'), {host: host, controller: :search, action: :people, category_path: ''}], | |
168 | + [s_('people|More recent'), {host: host, controller: :search, action: :people, filter: 'more_recent'}], | |
169 | + [s_('people|More active'), {host: host, controller: :search, action: :people, filter: 'more_active'}], | |
170 | + [s_('people|More popular'), {host: host, controller: :search, action: :people, filter: 'more_popular'}], | |
174 | 171 | ] |
175 | 172 | if logged_in? |
176 | - links.push(_('My friends') => {href: url_for({profile: current_user.login, controller: 'friends'})}) | |
177 | - links.push(_('Invite friends') => {href: url_for({profile: current_user.login, controller: 'invite', action: 'friends'})}) | |
173 | + links.push [_('My friends'), {profile: current_user.login, controller: 'friends'}] | |
174 | + links.push [_('Invite friends'), {profile: current_user.login, controller: 'invite', action: 'friends'}] | |
178 | 175 | end |
179 | 176 | |
180 | - links.each do |link| | |
181 | - link.each do |name, url| | |
182 | - output += '<li><a href="'+url[:href]+'">' + name + '</a></li>' | |
183 | - end | |
177 | + content_tag :li, class: 'dropdown' do | |
178 | + [ | |
179 | + link_to('#', class: "dropdown-toggle icon-menu-people", title: _('People'), data: {toggle: 'dropdown', hover: 'dropdown'}) do | |
180 | + content_tag :span, _('People') | |
181 | + end, | |
182 | + content_tag(:ul, class: 'dropdown-menu', role: 'menu') do | |
183 | + links.map do |params| | |
184 | + content_tag :li do | |
185 | + link_to *params | |
186 | + end | |
187 | + end.safe_join | |
188 | + end | |
189 | + ].safe_join | |
184 | 190 | end |
185 | - | |
186 | - output += '</ul>' | |
187 | - output += '</li>' | |
188 | - output | |
189 | 191 | end |
190 | 192 | |
191 | 193 | def search_communities_menu |
192 | 194 | return super unless theme_responsive? |
193 | 195 | |
194 | - host = environment.default_hostname | |
195 | - | |
196 | - output = '<li class="dropdown">' | |
197 | - output += link_to(_('Communities'), '#', :class=>"dropdown-toggle icon-menu-community", title: _('Communities'), :'data-toggle'=>"dropdown", :'data-hover'=>"dropdown") | |
198 | - output += '<ul class="dropdown-menu" role="menu">' | |
199 | - | |
200 | - output += '<li>' + link_to(_('All communities'), {host: host, controller: "search", action: 'communities', category_path: ''}) + '</li>' | |
201 | - | |
196 | + host = environment.default_hostname | |
202 | 197 | links = [ |
203 | - {s_('communities|More recent') => {:href => url_for({host: host, :controller => 'search', :action => 'communities', :filter => 'more_recent'})}}, | |
204 | - {s_('communities|More active') => {:href => url_for({host: host, :controller => 'search', :action => 'communities', :filter => 'more_active'})}}, | |
205 | - {s_('communities|More popular') => {:href => url_for({host: host, :controller => 'search', :action => 'communities', :filter => 'more_popular'})}} | |
198 | + [_('All communities'), {host: host, controller: :search, action: :communities, category_path: ''}], | |
199 | + [s_('communities|More recent'), {host: host, controller: :search, action: :communities, filter: 'more_recent'}], | |
200 | + [s_('communities|More active'), {host: host, controller: :search, action: :communities, filter: 'more_active'}], | |
201 | + [s_('communities|More popular'), {host: host, controller: :search, action: :communities, filter: 'more_popular'}], | |
206 | 202 | ] |
207 | 203 | if logged_in? |
208 | - links.push(_('My communities') => {href: url_for({profile: current_user.login, controller: 'memberships'})}) | |
209 | - links.push(_('New community') => {href: url_for({profile: current_user.login, controller: 'memberships', action: 'new_community'})}) | |
204 | + links.push [_('My communities'), {profile: current_user.login, controller: 'memberships'}] | |
205 | + links.push [_('New community'), {profile: current_user.login, controller: 'memberships', action: 'new_community'}] | |
210 | 206 | end |
211 | 207 | |
212 | - links.each do |link| | |
213 | - link.each do |name, url| | |
214 | - output += '<li><a href="'+url[:href]+'">' + name + '</a></li>' | |
215 | - end | |
216 | - end | |
217 | - | |
218 | - output += '</ul>' | |
219 | - output += '</li>' | |
220 | - output | |
221 | - end | |
222 | - | |
223 | - def usermenu_logged_in | |
224 | - return super unless theme_responsive? | |
225 | - | |
226 | - output = '<li class="dropdown">' | |
227 | - | |
228 | - pending_tasks_count = '' | |
229 | - count = user ? Task.to(user).pending.count : -1 | |
230 | - if count > 0 | |
231 | - pending_tasks_count = "<span class=\"badge\" onclick=\"document.location='#{url_for(user.tasks_url)}'\" title=\"#{_("Manage your pending tasks")}\">" + count.to_s + '</span>' | |
208 | + content_tag :li, class: 'dropdown' do | |
209 | + [ | |
210 | + link_to('#', class: 'dropdown-toggle icon-menu-community', title: _('Communities'), data: {toggle: 'dropdown', hover: 'dropdown'}) do | |
211 | + content_tag :span, _('Communities') | |
212 | + end, | |
213 | + content_tag(:ul, class: 'dropdown-menu', role: 'menu') do | |
214 | + links.map do |params| | |
215 | + content_tag :li do | |
216 | + link_to *params | |
217 | + end | |
218 | + end.safe_join | |
219 | + end | |
220 | + ].safe_join | |
232 | 221 | end |
233 | - | |
234 | - output += link_to("<img class=\"menu-user-gravatar\" src=\"#{user.profile_custom_icon(gravatar_default)}\"><strong>#{user.identifier}</strong> #{pending_tasks_count}", '#', id: "homepage-link", title: _('Go to your homepage'), :class=>"dropdown-toggle", :'data-toggle'=>"dropdown", :'data-target'=>"", :'data-hover'=>"dropdown") | |
235 | - | |
236 | - | |
237 | - output += '<ul class="dropdown-menu" role="menu">' | |
238 | - output += '<li>' + link_to('<span class="icon-person">'+_('Profile')+'</span>', user.public_profile_url, id: "homepage-link", title: _('Go to your homepage')) + '</li>' | |
239 | - | |
240 | - output += '<li class="divider"></li>' | |
241 | - | |
242 | - #TODO | |
243 | - #render_environment_features(:usermenu) + | |
244 | - | |
245 | - #admin_link | |
246 | - admin_link_str = admin_link | |
247 | - output += admin_link_str.present? ? '<li>' + admin_link_str + '</li>' : '' | |
248 | - | |
249 | - #control_panel link | |
250 | - output += '<li>' + link_to('<i class="icon-menu-ctrl-panel"></i><strong>' + _('Control panel') + '</strong>', user.admin_url, class: 'ctrl-panel', title: _("Configure your personal account and content")) + '</li>' | |
251 | - | |
252 | - output += chat_user_status_menu('icon-menu-offline', _('Offline')) | |
253 | - | |
254 | - #manage_enterprises | |
255 | - manage_enterprises_str = manage_enterprises | |
256 | - output += manage_enterprises_str.present? ? '<li>' + manage_enterprises_str + '</li>' : '' | |
257 | - | |
258 | - #manage_communities | |
259 | - manage_communities_str = manage_communities | |
260 | - output += manage_communities_str.present? ? '<li>' + manage_communities_str + '</li>' : '' | |
261 | - | |
262 | - output += '<li class="divider"></li>' | |
263 | - | |
264 | - output += '<li>' + link_to('<i class="icon-menu-logout"></i><strong>' + _('Logout') + '</strong>', { controller: 'account', action: 'logout'} , id: "logout", title: _("Leave the system")) + '</li>' | |
265 | - | |
266 | - output += '</ul>' | |
267 | - output | |
268 | 222 | end |
269 | 223 | |
270 | 224 | def manage_link(list, kind, title) |
... | ... | @@ -274,17 +228,22 @@ module ApplicationHelper |
274 | 228 | link_to_all = nil |
275 | 229 | if list.count > 5 |
276 | 230 | list = list.first(5) |
277 | - link_to_all = link_to(content_tag('strong', _('See all')), :controller => 'memberships', :profile => user.identifier) | |
231 | + link_to_all = link_to(content_tag(:strong, _('See all')), controller: 'memberships', profile: user.identifier) | |
278 | 232 | end |
279 | 233 | link = list.map do |element| |
280 | - link_to(content_tag('strong', element.short_name(25)), element.admin_url, :class => "icon-menu-"+element.class.identification.underscore, :title => _('Manage %s') % element.short_name) | |
234 | + link_to(content_tag(:strong, element.short_name(25)), element.admin_url, class: "icon-menu-"+element.class.identification.underscore, title: _('Manage %s') % element.short_name) | |
281 | 235 | end |
282 | 236 | if link_to_all |
283 | 237 | link << link_to_all |
284 | 238 | end |
285 | - content_tag('li', nil, class: 'divider') + | |
286 | - content_tag('li', title, class: 'dropdown-header') + | |
287 | - link.map{ |l| content_tag 'li', l }.join | |
239 | + | |
240 | + [ | |
241 | + content_tag(:li, nil, class: 'divider'), | |
242 | + content_tag(:li, title, class: 'dropdown-header'), | |
243 | + link.map do |l| | |
244 | + content_tag :li, l | |
245 | + end.safe_join | |
246 | + ].safe_join | |
288 | 247 | end |
289 | 248 | end |
290 | 249 | |
... | ... | @@ -301,15 +260,24 @@ module ApplicationHelper |
301 | 260 | unless html_options[:style].present? and html_options[:style] =~ /display *: *none/ |
302 | 261 | menu_content << '<br/>' unless first |
303 | 262 | first = false |
304 | - menu_content << content_tag(:a,link_label,html_options) | |
263 | + menu_content << content_tag(:a, link_label,html_options) | |
305 | 264 | end |
306 | 265 | end |
307 | 266 | end |
308 | 267 | end |
309 | 268 | |
310 | 269 | option = html_options.delete(:option) || 'default' |
311 | - size = html_options.delete(:size) || 'xs' | |
312 | - "<button class='btn btn-#{size} btn-#{option} btn-popover-menu icon-parent-folder' data-toggle='popover' data-html='true' data-placement='top' data-trigger='focus' data-content=\""+CGI::escapeHTML(menu_content)+'" data-title="'+menu_title+'"></button>' | |
270 | + size = html_options.delete(:size) || 'xs' | |
271 | + button_tag '', | |
272 | + class: "btn btn-#{size} btn-#{option} btn-popover-menu icon-parent-folder", | |
273 | + data: { | |
274 | + html: 'true', | |
275 | + toggle: 'popover', | |
276 | + placement: 'top', | |
277 | + trigger: 'focus', | |
278 | + content: menu_content, | |
279 | + title: menu_title, | |
280 | + } | |
313 | 281 | end |
314 | 282 | |
315 | 283 | |
... | ... | @@ -406,12 +374,7 @@ module ApplicationHelper |
406 | 374 | end |
407 | 375 | |
408 | 376 | include ResponsiveChecks |
409 | - if RUBY_VERSION >= '2.0.0' | |
410 | - prepend ResponsiveMethods | |
411 | - else | |
412 | - extend ActiveSupport::Concern | |
413 | - included { include ResponsiveMethods } | |
414 | - end | |
377 | + prepend ResponsiveMethods | |
415 | 378 | |
416 | 379 | # TODO: apply theme_responsive? condition |
417 | 380 | class NoosferoFormBuilder |
... | ... | @@ -440,13 +403,16 @@ module ApplicationHelper |
440 | 403 | |
441 | 404 | if options[:horizontal] |
442 | 405 | label_html = content_tag :label, gettext(text), class: 'control-label col-sm-3 col-md-2 col-lg-2', for: field_id |
443 | - result = content_tag :div, label_html + content_tag('div',field_html, class: 'col-sm-9 col-md-6 col-lg-6'), class: 'form-group' | |
406 | + content = [ | |
407 | + label_html, | |
408 | + content_tag(:div, field_html.html_safe, class: 'col-sm-9 col-md-6 col-lg-6'), | |
409 | + ].safe_join | |
410 | + content_tag :div, content, class: 'form-group' | |
444 | 411 | else |
445 | 412 | label_html = content_tag :label, gettext(text), class: 'control-label', for: field_id |
446 | - result = content_tag :div, label_html + field_html, class: 'form-group' | |
413 | + content = [label_html, field_html.html_safe].safe_join | |
414 | + content_tag :div, content, class: 'form-group' | |
447 | 415 | end |
448 | - | |
449 | - result | |
450 | 416 | end |
451 | 417 | end |
452 | 418 | ... | ... |
plugins/responsive/lib/ext/boxes_helper.rb
... | ... | @@ -62,12 +62,16 @@ module BoxesHelper |
62 | 62 | end |
63 | 63 | |
64 | 64 | include ResponsiveChecks |
65 | +<<<<<<< HEAD | |
65 | 66 | if RUBY_VERSION >= '2.0.0' |
66 | 67 | prepend ResponsiveMethods |
67 | 68 | else |
68 | 69 | extend ActiveSupport::Concern |
69 | 70 | included { include ResponsiveMethods } |
70 | 71 | end |
72 | +======= | |
73 | + prepend ResponsiveMethods | |
74 | +>>>>>>> 2ef3a43... responsive: fix html_safe issues | |
71 | 75 | |
72 | 76 | end |
73 | 77 | ... | ... |
plugins/responsive/lib/ext/chat_helper.rb
... | ... | @@ -23,12 +23,7 @@ module ChatHelper |
23 | 23 | end |
24 | 24 | |
25 | 25 | include ResponsiveChecks |
26 | - if RUBY_VERSION >= '2.0.0' | |
27 | - prepend ResponsiveMethods | |
28 | - else | |
29 | - extend ActiveSupport::Concern | |
30 | - included { include ResponsiveMethods } | |
31 | - end | |
26 | + prepend ResponsiveMethods | |
32 | 27 | |
33 | 28 | end |
34 | 29 | ... | ... |
plugins/responsive/lib/ext/forms_helper.rb
... | ... | @@ -11,8 +11,20 @@ module FormsHelper |
11 | 11 | return super unless theme_responsive? |
12 | 12 | |
13 | 13 | options[:id] ||= 'radio-' + FormsHelper.next_id_number |
14 | +<<<<<<< HEAD | |
14 | 15 | content_tag( 'label', radio_button_tag( name, value, checked, options ) + ' ' + |
15 | 16 | human_name, for: options[:id], class: 'radio-inline' ) |
17 | +======= | |
18 | + content_tag :div, class:'radio-inline' do | |
19 | + content_tag :label, for: options[:id] do | |
20 | + [ | |
21 | + radio_button_tag(name, value, checked, options), | |
22 | + ' ', | |
23 | + human_name, | |
24 | + ].safe_join | |
25 | + end | |
26 | + end | |
27 | +>>>>>>> 2ef3a43... responsive: fix html_safe issues | |
16 | 28 | end |
17 | 29 | |
18 | 30 | # add -inline class |
... | ... | @@ -20,8 +32,23 @@ module FormsHelper |
20 | 32 | return super unless theme_responsive? |
21 | 33 | |
22 | 34 | options[:id] ||= 'checkbox-' + FormsHelper.next_id_number |
35 | +<<<<<<< HEAD | |
23 | 36 | hidden_field_tag(name, '0') + |
24 | 37 | content_tag( 'label', check_box_tag( name, value, checked, options ) + ' ' + human_name, for: options[:id], class: 'checkbox-inline') |
38 | +======= | |
39 | + [ | |
40 | + hidden_field_tag(name, '0'), | |
41 | + content_tag(:div, class:'checkbox-inline') do | |
42 | + content_tag :label, for: options[:id] do | |
43 | + [ | |
44 | + check_box_tag(name, value, checked, options), | |
45 | + ' ', | |
46 | + human_name, | |
47 | + ].safe_join | |
48 | + end | |
49 | + end | |
50 | + ].safe_join | |
51 | +>>>>>>> 2ef3a43... responsive: fix html_safe issues | |
25 | 52 | end |
26 | 53 | |
27 | 54 | def submit_button(type, label, html_options = {}) |
... | ... | @@ -42,10 +69,17 @@ module FormsHelper |
42 | 69 | |
43 | 70 | html_options.delete(:cancel) |
44 | 71 | bt_submit = button_tag(label, html_options.merge(class: the_class)) |
72 | +<<<<<<< HEAD | |
73 | +======= | |
74 | + | |
75 | + [bt_submit + bt_cancel].safe_join | |
76 | + end | |
77 | +>>>>>>> 2ef3a43... responsive: fix html_safe issues | |
45 | 78 | |
46 | 79 | bt_submit + bt_cancel |
47 | 80 | end |
48 | 81 | |
82 | +<<<<<<< HEAD | |
49 | 83 | %w[select select_tag text_field_tag number_field_tag password_field_tag].each do |method| |
50 | 84 | define_method method do |*args, &block| |
51 | 85 | #return super(*args, &block) unless theme_responsive? |
... | ... | @@ -57,28 +91,39 @@ module FormsHelper |
57 | 91 | options[:class] = "#{options[:class]} form-control" |
58 | 92 | end |
59 | 93 | super(*(args << options), &block) |
94 | +======= | |
95 | + %w[ | |
96 | + select_tag | |
97 | + text_field_tag text_area_tag | |
98 | + number_field_tag password_field_tag url_field_tag email_field_tag | |
99 | + month_field_tag date_field_tag | |
100 | + ].each do |method| | |
101 | + define_method method do |name, value=nil, options={}, &block| | |
102 | + responsive_add_field_class! options | |
103 | + super(name, value, options, &block).html_safe | |
104 | +>>>>>>> 2ef3a43... responsive: fix html_safe issues | |
60 | 105 | end |
61 | 106 | end |
62 | 107 | %w[select_month select_year].each do |method| |
63 | 108 | define_method method do |date, options={}, html_options={}| |
109 | +<<<<<<< HEAD | |
64 | 110 | if html_options['class'] |
65 | 111 | html_options['class'] = "#{html_options['class']} form-control" |
66 | 112 | else |
67 | 113 | html_options[:class] = "#{html_options[:class]} form-control" |
68 | 114 | end |
69 | 115 | super date, options, html_options |
116 | +======= | |
117 | + responsive_add_field_class! html_options | |
118 | + super(date, options, html_options).html_safe | |
119 | +>>>>>>> 2ef3a43... responsive: fix html_safe issues | |
70 | 120 | end |
71 | 121 | end |
72 | 122 | |
73 | 123 | end |
74 | 124 | |
75 | 125 | include ResponsiveChecks |
76 | - if RUBY_VERSION >= '2.0.0' | |
77 | - prepend ResponsiveMethods | |
78 | - else | |
79 | - extend ActiveSupport::Concern | |
80 | - included { include ResponsiveMethods } | |
81 | - end | |
126 | + prepend ResponsiveMethods | |
82 | 127 | |
83 | 128 | end |
84 | 129 | ... | ... |
plugins/responsive/lib/ext/input_helper.rb
... | ... | @@ -4,16 +4,29 @@ module InputHelper |
4 | 4 | protected |
5 | 5 | |
6 | 6 | def input_group_addon addon, options = {}, &block |
7 | +<<<<<<< HEAD | |
7 | 8 | content_tag :div, |
8 | 9 | content_tag(:span, addon, class: 'input-group-addon') + yield, |
9 | 10 | class: 'input-group' |
11 | +======= | |
12 | + content_tag :div, class: 'input-group' do | |
13 | + [ | |
14 | + content_tag(:span, addon, class: 'input-group-addon'), | |
15 | + capture(&block), | |
16 | + ].safe_join | |
17 | + end | |
18 | +>>>>>>> 2ef3a43... responsive: fix html_safe issues | |
10 | 19 | end |
11 | 20 | |
12 | 21 | end |
13 | 22 | |
23 | +<<<<<<< HEAD | |
14 | 24 | module ApplicationHelper |
15 | 25 | |
16 | 26 | include InputHelper |
17 | 27 | |
18 | 28 | end |
29 | +======= | |
30 | +ApplicationHelper.include InputHelper | |
31 | +>>>>>>> 2ef3a43... responsive: fix html_safe issues | |
19 | 32 | ... | ... |
plugins/responsive/lib/responsive_plugin.rb
... | ... | @@ -13,7 +13,7 @@ class ResponsivePlugin < Noosfero::Plugin |
13 | 13 | end |
14 | 14 | |
15 | 15 | def head_ending |
16 | - '<meta name="viewport" content="width=device-width, initial-scale=1">' | |
16 | + '<meta name="viewport" content="width=device-width, initial-scale=1">'.html_safe | |
17 | 17 | end |
18 | 18 | |
19 | 19 | def body_ending | ... | ... |
plugins/responsive/views/layouts/_menu_responsive.html.erb
... | ... | @@ -1,71 +0,0 @@ |
1 | -<div> | |
2 | -<nav id="top-bar" class="navbar navbar-default" role="navigation"> | |
3 | - <div class="container"> | |
4 | - <!-- Brand and toggle get grouped for better mobile display --> | |
5 | - <div class="navbar-header"> | |
6 | - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-user-collapse"> | |
7 | - <span class="sr-only"><%= _('User menu') %></span> | |
8 | - <span class="fa fa-user navbar-toggle-icon"></span> | |
9 | - </button> | |
10 | - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-search-collapse"> | |
11 | - <span class="sr-only"><%= _('Search') %></span> | |
12 | - <span class="fa fa-search navbar-toggle-icon"></span> | |
13 | - </button> | |
14 | - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-navigation-collapse"> | |
15 | - <span class="sr-only"><%= _('Navigation') %></span> | |
16 | - <span class="icon-bar"></span> | |
17 | - <span class="icon-bar"></span> | |
18 | - <span class="icon-bar"></span> | |
19 | - </button> | |
20 | - | |
21 | - </div> | |
22 | - | |
23 | - <!-- Collect the nav links, forms, and other content for toggling --> | |
24 | - <div class="collapse navbar-collapse" id="navbar-navigation-collapse"> | |
25 | - <ul class="nav navbar-nav menu-navigation"> | |
26 | - <%= theme_extra_navigation %> | |
27 | - <li class="dropdown" id="search-dropdown-menu"> | |
28 | - <a href="#" class="dropdown-toggle icon-search" data-hover="dropdown" data-toggle="dropdown" title="<%= _('Search') %>"><span><%= _('Search') %></span></a> | |
29 | - <ul class="dropdown-menu" role="menu"> | |
30 | - <li> | |
31 | - <form action="/search" id="top-search" method="get" role="search"> | |
32 | - <div class="form-group col-lg-12 col-md-12 col-sm-12"> | |
33 | - <input name="query" title="<%=_('Search...')%>" placeholder="<%=_('Search...')%>" type="text" class="form-control input-sm"/> | |
34 | - </div> | |
35 | - </form> | |
36 | - </li> | |
37 | - </ul> | |
38 | - </li> | |
39 | - </ul> | |
40 | - </div> | |
41 | - <div class="collapse navbar-collapse" id="navbar-search-collapse"> | |
42 | - <form action="/search" id="top-search" class="navbar-form navbar-left" method="get" role="search"> | |
43 | - <div class="form-group"> | |
44 | - <input name="query" title="<%=_('Search...')%>" placeholder="<%=_('Search...')%>" type="text" class="form-control"/> | |
45 | - </div> | |
46 | - </form> | |
47 | - </div> | |
48 | - <div class="collapse navbar-collapse" id="navbar-user-collapse"> | |
49 | - <ul class="nav navbar-nav pull-right"> | |
50 | - <% if user.present? %> | |
51 | - <%= usermenu_logged_in %> | |
52 | - <% else %> | |
53 | - <li> | |
54 | - <%= modal_inline_link_to('<i class="icon-menu-login"></i><strong>' + _('Login') + '</strong>', login_url, '#inlineLoginBox', :id => 'link_login') %> | |
55 | - <%= @plugins.dispatch(:alternative_authentication_link).collect { |content| instance_exec(&content) }.join("") #TODO review this | |
56 | - %> | |
57 | - </li> | |
58 | - <% unless @plugins.dispatch(:allow_user_registration).include?(false) %> | |
59 | - <li> | |
60 | - <%= link_to('<strong>' + _('Sign up') + '</strong>', :controller => 'account', :action => 'signup')%> | |
61 | - </li> | |
62 | - <% end %> | |
63 | - <% end %> | |
64 | - </ul> | |
65 | - </div><!-- /.navbar-collapse --> | |
66 | - </div><!-- /.container-fluid --> | |
67 | -</nav> | |
68 | -</div> | |
69 | -<div id='inlineLoginBox' style='display: none;'> | |
70 | - <%= render :file => 'account/login', :locals => { :is_thickbox => true } %> | |
71 | -</div> |
plugins/responsive/views/layouts/_menu_responsive.html.slim
0 → 100644
... | ... | @@ -0,0 +1,54 @@ |
1 | +div | |
2 | + nav#top-bar.navbar.navbar-default.navbar-static-top role="navigation" | |
3 | + .container | |
4 | + /! Brand and toggle get grouped for better mobile display | |
5 | + .navbar-header | |
6 | + button.navbar-toggle data-target="#navbar-user-collapse" data-toggle="collapse" type="button" | |
7 | + span.sr-only= _('User menu') | |
8 | + span.fa.fa-user.navbar-toggle-icon | |
9 | + | |
10 | + button.navbar-toggle data-target="#navbar-search-collapse" data-toggle="collapse" type="button" | |
11 | + span.sr-only= _('Search') | |
12 | + span.fa.fa-search.navbar-toggle-icon | |
13 | + | |
14 | + button.navbar-toggle data-target="#navbar-navigation-collapse" data-toggle="collapse" type="button" | |
15 | + span.sr-only= _('Navigation') | |
16 | + span.icon-bar | |
17 | + span.icon-bar | |
18 | + span.icon-bar | |
19 | + a.navbar-brand href="#{environment.top_url}" | |
20 | + = theme_site_title | |
21 | + span#navbar-brand-site-title | |
22 | + = h @environment.name | |
23 | + | |
24 | + /! Collect the nav links, forms, and other content for toggling | |
25 | + #navbar-navigation-collapse.collapse.navbar-collapse | |
26 | + ul.nav.navbar-nav.menu-navigation | |
27 | + = theme_extra_navigation | |
28 | + li#search-dropdown-menu.dropdown | |
29 | + a.dropdown-toggle.icon-search data-hover="dropdown" data-toggle="dropdown" href="#" title="#{_('Search')}" | |
30 | + span= _('Search') | |
31 | + ul.dropdown-menu role="menu" | |
32 | + li | |
33 | + form#top-search action="/search" method="get" role="search" | |
34 | + .form-group.col-lg-12.col-md-12.col-sm-12 | |
35 | + input.form-control.input-sm name="query" placeholder="#{_('Search...')}" title="#{_('Search...')}" type="text" / | |
36 | + | |
37 | + #navbar-search-collapse.collapse.navbar-collapse | |
38 | + form#top-search.navbar-form.navbar-left action="/search" method="get" role="search" | |
39 | + .form-group | |
40 | + input.form-control name="query" placeholder="#{_('Search...')}" title="#{_('Search...')}" type="text" / | |
41 | + | |
42 | + #navbar-user-collapse.collapse.navbar-collapse | |
43 | + ul.nav.navbar-nav.pull-right | |
44 | + - if user.present? | |
45 | + = render 'layouts/usermenu_logged_in' | |
46 | + - else | |
47 | + li | |
48 | + = modal_inline_link_to "<i class='icon-menu-login'></i><strong>#{_('Login')}</strong>".html_safe, login_url, '#inlineLoginBox', id: 'link_login' | |
49 | + = @plugins.dispatch(:alternative_authentication_link).collect{ |content| instance_exec(&content) }.safe_join | |
50 | + - unless @plugins.dispatch(:allow_user_registration).include? false | |
51 | + li= link_to content_tag(:strong, _('Sign up')), controller: :account, action: :signup | |
52 | + | |
53 | +#inlineLoginBox style="display: none;" | |
54 | + = render file: 'account/login', locals: {is_thickbox: true} | ... | ... |
plugins/responsive/views/layouts/_usermenu_logged_in.html.slim
0 → 100644
... | ... | @@ -0,0 +1,39 @@ |
1 | +- pending_tasks_count = Task.to(user).pending.count if user | |
2 | + | |
3 | +li.dropdown | |
4 | + = link_to '#', id: "homepage-link", title: _('Go to your homepage'), class: 'dropdown-toggle', data: {toggle: 'dropdown', hover: 'dropdown'} | |
5 | + = image_tag user.profile_custom_icon(gravatar_default), class: 'menu-user-gravatar' | |
6 | + = content_tag :strong, user.identifier | |
7 | + - if pending_tasks_count | |
8 | + span class='badge' onclick="document.location='#{url_for(user.tasks_url)}'" title="#{_("Manage your pending tasks")}" | |
9 | + count | |
10 | + | |
11 | + ul class='dropdown-menu' role='menu' | |
12 | + li | |
13 | + = link_to user.public_profile_url, id: "homepage-link", title: _('Go to your homepage') | |
14 | + span class='icon-person' = _('Profile') | |
15 | + li.divider | |
16 | + | |
17 | + /TODO | |
18 | + /= render_environment_features(:usermenu) | |
19 | + | |
20 | + li = admin_link | |
21 | + | |
22 | + li | |
23 | + = link_to user.admin_url, class: 'ctrl-panel', title: _("Configure your personal account and content") | |
24 | + i class='icon-menu-ctrl-panel' | |
25 | + strong = _('Control panel') | |
26 | + | |
27 | + - if environment.enabled? 'xmpp_chat' | |
28 | + = responsive_chat_user_status_menu 'icon-menu-offline', _('Offline') | |
29 | + | |
30 | + li = manage_enterprises | |
31 | + li = manage_communities | |
32 | + | |
33 | + li.divider | |
34 | + | |
35 | + li | |
36 | + = link_to({controller: 'account', action: 'logout'}, id: "logout", title: _("Leave the system")) | |
37 | + i class='icon-menu-logout' | |
38 | + strong = _('Logout') | |
39 | + | ... | ... |
plugins/responsive/views/layouts/application-responsive.html.erb
1 | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
2 | 2 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>" class="<%= h html_tag_classes %>"> |
3 | 3 | <head> |
4 | - <title><%= h page_title %></title> | |
4 | + <title><%= h page_title.html_safe %></title> | |
5 | 5 | <%= yield(:feeds) %> |
6 | 6 | <!--<meta http-equiv="refresh" content="1"/>--> |
7 | 7 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 | <%= |
23 | 23 | @plugins.dispatch(:head_ending).map do |content| |
24 | 24 | if content.respond_to?(:call) then instance_exec(&content).to_s.html_safe else content.to_s.html_safe end |
25 | - end.join("\n") | |
25 | + end.safe_join | |
26 | 26 | %> |
27 | 27 | |
28 | 28 | <script type="text/javascript"> |
... | ... | @@ -68,7 +68,7 @@ |
68 | 68 | <%= |
69 | 69 | @plugins.dispatch(:body_ending).map do |content| |
70 | 70 | if content.respond_to?(:call) then instance_exec(&content).html_safe else content.html_safe end |
71 | - end.join("\n") | |
71 | + end.safe_join | |
72 | 72 | %> |
73 | 73 | </body> |
74 | 74 | </html> | ... | ... |