Commit 785b56adcdd6b0a026d4c734063d4705054b0e2f
Exists in
profile_api_improvements
and in
1 other branch
Merge branch 'master' into field-of-interest
Showing
310 changed files
with
2575 additions
and
1519 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 310 files displayed.
app/api/entities.rb
... | ... | @@ -93,7 +93,9 @@ module Api |
93 | 93 | class Box < Entity |
94 | 94 | root 'boxes', 'box' |
95 | 95 | expose :id, :position |
96 | - expose :blocks, :using => Block | |
96 | + expose :blocks, :using => Block do |box, options| | |
97 | + box.blocks.select {|block| block.visible_to_user?(options[:current_person]) } | |
98 | + end | |
97 | 99 | end |
98 | 100 | |
99 | 101 | class Profile < Entity |
... | ... | @@ -200,12 +202,21 @@ module Api |
200 | 202 | expose :accept_comments?, as: :accept_comments |
201 | 203 | end |
202 | 204 | |
205 | + def self.permissions_for_entity(entity, current_person, *method_names) | |
206 | + method_names.map { |method| entity.send(method, current_person) ? method.to_s.gsub(/\?/,'') : nil }.compact | |
207 | + end | |
208 | + | |
203 | 209 | class Article < ArticleBase |
204 | 210 | root 'articles', 'article' |
205 | 211 | expose :parent, :using => ArticleBase |
206 | 212 | expose :children, :using => ArticleBase do |article, options| |
207 | 213 | article.children.published.limit(V1::Articles::MAX_PER_PAGE) |
208 | 214 | end |
215 | + expose :permissions do |article, options| | |
216 | + Entities.permissions_for_entity(article, options[:current_person], | |
217 | + :allow_edit?, :allow_post_content?, :allow_delete?, :allow_create?, | |
218 | + :allow_publish_content?) | |
219 | + end | |
209 | 220 | end |
210 | 221 | |
211 | 222 | class User < Entity | ... | ... |
app/api/helpers.rb
... | ... | @@ -121,7 +121,7 @@ module Api |
121 | 121 | |
122 | 122 | def present_article(asset) |
123 | 123 | article = find_article(asset.articles, params[:id]) |
124 | - present_partial article, :with => Entities::Article, :params => params | |
124 | + present_partial article, with: Entities::Article, params: params, current_person: current_person | |
125 | 125 | end |
126 | 126 | |
127 | 127 | def present_articles_for_asset(asset, method = 'articles') |
... | ... | @@ -130,7 +130,7 @@ module Api |
130 | 130 | end |
131 | 131 | |
132 | 132 | def present_articles(articles) |
133 | - present_partial paginate(articles), :with => Entities::Article, :params => params | |
133 | + present_partial paginate(articles), :with => Entities::Article, :params => params, current_person: current_person | |
134 | 134 | end |
135 | 135 | |
136 | 136 | def find_articles(asset, method = 'articles') |
... | ... | @@ -407,9 +407,11 @@ module Api |
407 | 407 | |
408 | 408 | def parse_content_type(content_type) |
409 | 409 | return nil if content_type.blank? |
410 | - content_type.split(',').map do |content_type| | |
411 | - content_type.camelcase | |
410 | + content_types = content_type.split(',').map do |content_type| | |
411 | + content_type = content_type.camelcase | |
412 | + content_type == 'TextArticle' ? Article.text_article_types : content_type | |
412 | 413 | end |
414 | + content_types.flatten.uniq | |
413 | 415 | end |
414 | 416 | |
415 | 417 | def period(from_date, until_date) | ... | ... |
app/api/v1/activities.rb
1 | 1 | module Api |
2 | 2 | module V1 |
3 | 3 | class Activities < Grape::API |
4 | - before { authenticate! } | |
5 | 4 | |
6 | 5 | resource :profiles do |
7 | 6 | |
... | ... | @@ -9,7 +8,7 @@ module Api |
9 | 8 | profile = Profile.find_by id: params[:id] |
10 | 9 | |
11 | 10 | not_found! if profile.blank? || profile.secret || !profile.visible |
12 | - forbidden! if !profile.secret && profile.visible && !profile.display_private_info_to?(current_person) | |
11 | + forbidden! if !profile.display_private_info_to?(current_person) | |
13 | 12 | |
14 | 13 | activities = profile.activities.map(&:activity) |
15 | 14 | present activities, :with => Entities::Activity, :current_person => current_person | ... | ... |
app/api/v1/articles.rb
... | ... | @@ -54,6 +54,17 @@ module Api |
54 | 54 | present_partial article, :with => Entities::Article |
55 | 55 | end |
56 | 56 | |
57 | + delete ':id' do | |
58 | + article = environment.articles.find(params[:id]) | |
59 | + return forbidden! unless article.allow_delete?(current_person) | |
60 | + begin | |
61 | + article.destroy | |
62 | + { :success => true } | |
63 | + rescue Exception => exception | |
64 | + render_api_error!(_('The article couldn\'t be removed due to some problem. Please contact the administrator.'), 400) | |
65 | + end | |
66 | + end | |
67 | + | |
57 | 68 | desc 'Report a abuse and/or violent content in a article by id' do |
58 | 69 | detail 'Submit a abuse (in general, a content violation) report about a specific article' |
59 | 70 | params Entities::Article.documentation |
... | ... | @@ -262,7 +273,7 @@ module Api |
262 | 273 | article = forbidden! |
263 | 274 | end |
264 | 275 | |
265 | - present_partial article, :with => Entities::Article | |
276 | + present_partial article, :with => Entities::Article, current_person: current_person | |
266 | 277 | else |
267 | 278 | |
268 | 279 | present_articles_for_asset(profile) | ... | ... |
app/api/v1/boxes.rb
... | ... | @@ -12,7 +12,8 @@ module Api |
12 | 12 | resource :boxes do |
13 | 13 | get do |
14 | 14 | profile = environment.send(kind.pluralize).find(params["#{kind}_id"]) |
15 | - present profile.boxes, :with => Entities::Box | |
15 | + return forbidden! unless profile.display_info_to?(current_person) | |
16 | + present profile.boxes, with: Entities::Box, current_person: current_person | |
16 | 17 | end |
17 | 18 | end |
18 | 19 | end |
... | ... | @@ -32,7 +33,7 @@ module Api |
32 | 33 | else |
33 | 34 | env = Environment.find(params[:environment_id]) |
34 | 35 | end |
35 | - present env.boxes, :with => Entities::Box | |
36 | + present env.boxes, with: Entities::Box, current_person: current_person | |
36 | 37 | end |
37 | 38 | end |
38 | 39 | end | ... | ... |
app/api/v1/comments.rb
... | ... | @@ -34,6 +34,7 @@ module Api |
34 | 34 | post ":id/comments" do |
35 | 35 | authenticate! |
36 | 36 | article = find_article(environment.articles, params[:id]) |
37 | + return forbidden! unless article.accept_comments? | |
37 | 38 | options = params.select { |key,v| !['id','private_token'].include?(key) }.merge(:author => current_person, :source => article) |
38 | 39 | begin |
39 | 40 | comment = Comment.create!(options) |
... | ... | @@ -42,6 +43,19 @@ module Api |
42 | 43 | end |
43 | 44 | present comment, :with => Entities::Comment, :current_person => current_person |
44 | 45 | end |
46 | + | |
47 | + delete ":id/comments/:comment_id" do | |
48 | + article = find_article(environment.articles, params[:id]) | |
49 | + comment = article.comments.find_by_id(params[:comment_id]) | |
50 | + return not_found! if comment.nil? | |
51 | + return forbidden! unless comment.can_be_destroyed_by?(current_person) | |
52 | + begin | |
53 | + comment.destroy | |
54 | + present comment, with: Entities::Comment, :current_person => current_person | |
55 | + rescue => e | |
56 | + render_api_error!(e.message, 500) | |
57 | + end | |
58 | + end | |
45 | 59 | end |
46 | 60 | |
47 | 61 | end | ... | ... |
app/api/v1/profiles.rb
... | ... | @@ -22,6 +22,15 @@ module Api |
22 | 22 | not_found! |
23 | 23 | end |
24 | 24 | end |
25 | + | |
26 | + desc "Update profile information" | |
27 | + post ':id' do | |
28 | + authenticate! | |
29 | + profile = environment.profiles.find_by(id: params[:id]) | |
30 | + return forbidden! unless current_person.has_permission?(:edit_profile, profile) | |
31 | + profile.update_attributes!(params[:profile]) | |
32 | + present profile, :with => Entities::Profile, :current_person => current_person | |
33 | + end | |
25 | 34 | |
26 | 35 | delete ':id' do |
27 | 36 | authenticate! | ... | ... |
... | ... | @@ -0,0 +1,169 @@ |
1 | +module AuthenticatedSystem | |
2 | + | |
3 | + protected | |
4 | + | |
5 | + extend ActiveSupport::Concern | |
6 | + | |
7 | + included do | |
8 | + if self < ActionController::Base | |
9 | + around_filter :user_set_current | |
10 | + before_filter :override_user | |
11 | + before_filter :login_from_cookie | |
12 | + end | |
13 | + | |
14 | + # Inclusion hook to make #current_user and #logged_in? | |
15 | + # available as ActionView helper methods. | |
16 | + helper_method :current_user, :logged_in? | |
17 | + end | |
18 | + | |
19 | + # Returns true or false if the user is logged in. | |
20 | + # Preloads @current_user with the user model if they're logged in. | |
21 | + def logged_in? | |
22 | + current_user != nil | |
23 | + end | |
24 | + | |
25 | + # Accesses the current user from the session. | |
26 | + def current_user user_id = session[:user] | |
27 | + @current_user ||= begin | |
28 | + user = User.find_by id: user_id if user_id | |
29 | + user.session = session if user | |
30 | + User.current = user | |
31 | + user | |
32 | + end | |
33 | + end | |
34 | + | |
35 | + # Store the given user in the session. | |
36 | + def current_user=(new_user) | |
37 | + if new_user.nil? | |
38 | + session.delete(:user) | |
39 | + else | |
40 | + session[:user] = new_user.id | |
41 | + new_user.session = session | |
42 | + new_user.register_login | |
43 | + end | |
44 | + @current_user = User.current = new_user | |
45 | + end | |
46 | + | |
47 | + # See impl. from http://stackoverflow.com/a/2513456/670229 | |
48 | + def user_set_current | |
49 | + User.current = current_user | |
50 | + yield | |
51 | + ensure | |
52 | + # to address the thread variable leak issues in Puma/Thin webserver | |
53 | + User.current = nil | |
54 | + end | |
55 | + | |
56 | + # Check if the user is authorized. | |
57 | + # | |
58 | + # Override this method in your controllers if you want to restrict access | |
59 | + # to only a few actions or if you want to check if the user | |
60 | + # has the correct rights. | |
61 | + # | |
62 | + # Example: | |
63 | + # | |
64 | + # # only allow nonbobs | |
65 | + # def authorize? | |
66 | + # current_user.login != "bob" | |
67 | + # end | |
68 | + def authorized? | |
69 | + true | |
70 | + end | |
71 | + | |
72 | + # Filter method to enforce a login requirement. | |
73 | + # | |
74 | + # To require logins for all actions, use this in your controllers: | |
75 | + # | |
76 | + # before_filter :login_required | |
77 | + # | |
78 | + # To require logins for specific actions, use this in your controllers: | |
79 | + # | |
80 | + # before_filter :login_required, :only => [ :edit, :update ] | |
81 | + # | |
82 | + # To skip this in a subclassed controller: | |
83 | + # | |
84 | + # skip_before_filter :login_required | |
85 | + # | |
86 | + def login_required | |
87 | + username, passwd = get_auth_data | |
88 | + if username && passwd | |
89 | + self.current_user ||= User.authenticate(username, passwd) || nil | |
90 | + end | |
91 | + if logged_in? && authorized? | |
92 | + true | |
93 | + else | |
94 | + if params[:require_login_popup] | |
95 | + render :json => { :require_login_popup => true } | |
96 | + else | |
97 | + access_denied | |
98 | + end | |
99 | + end | |
100 | + end | |
101 | + | |
102 | + # Redirect as appropriate when an access request fails. | |
103 | + # | |
104 | + # The default action is to redirect to the login screen. | |
105 | + # | |
106 | + # Override this method in your controllers if you want to have special | |
107 | + # behavior in case the user is not authorized | |
108 | + # to access the requested action. For example, a popup window might | |
109 | + # simply close itself. | |
110 | + def access_denied | |
111 | + respond_to do |accepts| | |
112 | + accepts.html do | |
113 | + if request.xhr? | |
114 | + render :text => _('Access denied'), :status => 401 | |
115 | + else | |
116 | + store_location | |
117 | + redirect_to :controller => '/account', :action => 'login' | |
118 | + end | |
119 | + end | |
120 | + accepts.xml do | |
121 | + headers["Status"] = "Unauthorized" | |
122 | + headers["WWW-Authenticate"] = %(Basic realm="Web Password") | |
123 | + render :text => "Could't authenticate you", :status => '401 Unauthorized' | |
124 | + end | |
125 | + end | |
126 | + false | |
127 | + end | |
128 | + | |
129 | + # Store the URI of the current request in the session. | |
130 | + # | |
131 | + # We can return to this location by calling #redirect_back_or_default. | |
132 | + def store_location(location = request.url) | |
133 | + session[:return_to] = location | |
134 | + end | |
135 | + | |
136 | + # Redirect to the URI stored by the most recent store_location call or | |
137 | + # to the passed default. | |
138 | + def redirect_back_or_default(default) | |
139 | + if session[:return_to] | |
140 | + redirect_to(session.delete(:return_to)) | |
141 | + else | |
142 | + redirect_to(default) | |
143 | + end | |
144 | + end | |
145 | + | |
146 | + def override_user | |
147 | + return if params[:override_user].blank? | |
148 | + return unless logged_in? and user.is_admin? environment | |
149 | + @current_user = nil | |
150 | + current_user params[:override_user] | |
151 | + end | |
152 | + | |
153 | + # When called with before_filter :login_from_cookie will check for an :auth_token | |
154 | + # cookie and log the user back in if apropriate | |
155 | + def login_from_cookie | |
156 | + return if cookies[:auth_token].blank? or logged_in? | |
157 | + user = User.where(remember_token: cookies[:auth_token]).first | |
158 | + self.current_user = user if user and user.remember_token? | |
159 | + end | |
160 | + | |
161 | + private | |
162 | + @@http_auth_headers = %w(X-HTTP_AUTHORIZATION HTTP_AUTHORIZATION Authorization) | |
163 | + # gets BASIC auth info | |
164 | + def get_auth_data | |
165 | + auth_key = @@http_auth_headers.detect { |h| request.env.has_key?(h) } | |
166 | + auth_data = request.env[auth_key].to_s.split unless auth_key.blank? | |
167 | + return auth_data && auth_data[0] == 'Basic' ? Base64.decode64(auth_data[1]).split(':')[0..1] : [nil, nil] | |
168 | + end | |
169 | +end | ... | ... |
app/controllers/application_controller.rb
... | ... | @@ -13,6 +13,13 @@ class ApplicationController < ActionController::Base |
13 | 13 | before_filter :verify_members_whitelist, :if => [:private_environment?, :user] |
14 | 14 | before_filter :redirect_to_current_user |
15 | 15 | |
16 | + before_filter :set_session_theme | |
17 | + def set_session_theme | |
18 | + if params[:theme] | |
19 | + session[:theme] = environment.theme_ids.include?(params[:theme]) ? params[:theme] : nil | |
20 | + end | |
21 | + end | |
22 | + | |
16 | 23 | def require_login_for_environment |
17 | 24 | login_required |
18 | 25 | end | ... | ... |
app/controllers/my_profile/profile_themes_controller.rb
... | ... | @@ -63,12 +63,12 @@ class ProfileThemesController < ThemesController |
63 | 63 | end |
64 | 64 | |
65 | 65 | def start_test |
66 | - session[:theme] = params[:id] | |
66 | + session[:user_theme] = params[:id] | |
67 | 67 | redirect_to :controller => 'content_viewer', :profile => profile.identifier, :action => 'view_page' |
68 | 68 | end |
69 | 69 | |
70 | 70 | def stop_test |
71 | - session[:theme] = nil | |
71 | + session[:user_theme] = nil | |
72 | 72 | redirect_to :action => 'index' |
73 | 73 | end |
74 | 74 | ... | ... |
app/controllers/public/content_viewer_controller.rb
... | ... | @@ -209,7 +209,7 @@ class ContentViewerController < ApplicationController |
209 | 209 | end |
210 | 210 | |
211 | 211 | if @page.published && @page.uploaded_file? |
212 | - redirect_to @page.public_filename | |
212 | + redirect_to "#{Noosfero.root}#{@page.public_filename}" | |
213 | 213 | else |
214 | 214 | send_data data, @page.download_headers |
215 | 215 | end | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -233,13 +233,6 @@ module ApplicationHelper |
233 | 233 | link_to(content_tag('span', text), url, html_options.merge(:class => the_class, :title => text)) |
234 | 234 | end |
235 | 235 | |
236 | - def button_bar(options = {}, &block) | |
237 | - options[:class].nil? ? | |
238 | - options[:class]='button-bar' : | |
239 | - options[:class]+=' button-bar' | |
240 | - concat(content_tag('div', capture(&block).to_s + tag('br', :style => 'clear: left;'), options)) | |
241 | - end | |
242 | - | |
243 | 236 | def render_profile_actions klass |
244 | 237 | name = klass.to_s.underscore |
245 | 238 | begin |
... | ... | @@ -351,7 +344,7 @@ module ApplicationHelper |
351 | 344 | end |
352 | 345 | |
353 | 346 | def is_testing_theme |
354 | - !controller.session[:theme].nil? | |
347 | + !controller.session[:user_theme].nil? | |
355 | 348 | end |
356 | 349 | |
357 | 350 | def theme_owner |
... | ... | @@ -600,8 +593,8 @@ module ApplicationHelper |
600 | 593 | end |
601 | 594 | |
602 | 595 | if block |
603 | - field_html ||= '' | |
604 | - field_html += capture(&block) | |
596 | + field_html ||= ''.html_safe | |
597 | + field_html = [field_html, capture(&block)].safe_join | |
605 | 598 | end |
606 | 599 | |
607 | 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?) |
... | ... | @@ -610,7 +603,9 @@ module ApplicationHelper |
610 | 603 | end |
611 | 604 | else |
612 | 605 | if profile.active_fields.include?(name) |
613 | - 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 | |
614 | 609 | end |
615 | 610 | end |
616 | 611 | |
... | ... | @@ -618,10 +613,6 @@ module ApplicationHelper |
618 | 613 | result = required(result) |
619 | 614 | end |
620 | 615 | |
621 | - if block | |
622 | - concat(result) | |
623 | - end | |
624 | - | |
625 | 616 | result |
626 | 617 | end |
627 | 618 | |
... | ... | @@ -866,7 +857,7 @@ module ApplicationHelper |
866 | 857 | alias :browse_communities_menu :search_communities_menu |
867 | 858 | |
868 | 859 | def pagination_links(collection, options={}) |
869 | - options = {:previous_label => content_tag(:span, '« ', :class => 'previous-arrow') + _('Previous'), :next_label => _('Next') + content_tag(:span, ' »', :class => 'next-arrow'), :inner_window => 1, :outer_window => 0 }.merge(options) | |
860 | + options = {:previous_label => content_tag(:span, '« '.html_safe, :class => 'previous-arrow') + _('Previous'), :next_label => _('Next') + content_tag(:span, ' »'.html_safe, :class => 'next-arrow'), :inner_window => 1, :outer_window => 0 }.merge(options) | |
870 | 861 | will_paginate(collection, options) |
871 | 862 | end |
872 | 863 | |
... | ... | @@ -988,6 +979,7 @@ module ApplicationHelper |
988 | 979 | values = {} |
989 | 980 | values.merge!(task.information[:variables]) if task.information[:variables] |
990 | 981 | values.merge!({:requestor => link_to(task.requestor.name, task.requestor.url)}) if task.requestor |
982 | + values.merge!({:target => link_to(task.target.name, task.target.url)}) if (task.target && task.target.respond_to?(:url)) | |
991 | 983 | values.merge!({:subject => content_tag('span', task.subject, :class=>'task_target')}) if task.subject |
992 | 984 | values.merge!({:linked_subject => link_to(content_tag('span', task.linked_subject[:text], :class => 'task_target'), task.linked_subject[:url])}) if task.linked_subject |
993 | 985 | (task.information[:message] % values).html_safe |
... | ... | @@ -1138,7 +1130,7 @@ module ApplicationHelper |
1138 | 1130 | content_tag(:div, :class => 'errorExplanation', :id => 'errorExplanation') do |
1139 | 1131 | content_tag(:h2, _('Errors while saving')) + |
1140 | 1132 | content_tag(:ul) do |
1141 | - safe_join(errors.map { |err| content_tag(:li, err) }) | |
1133 | + safe_join(errors.map { |err| content_tag(:li, err.html_safe) }) | |
1142 | 1134 | end |
1143 | 1135 | end |
1144 | 1136 | end | ... | ... |
app/helpers/article_helper.rb
... | ... | @@ -187,9 +187,9 @@ module ArticleHelper |
187 | 187 | def following_button(page, user) |
188 | 188 | if !user.blank? and user != page.author |
189 | 189 | if page.is_followed_by? user |
190 | - button :cancel, unfollow_button_text(page), {:controller => 'profile', :action => 'unfollow_article', :article_id => page.id, :profile => page.profile.identifier} | |
190 | + button :cancel, unfollow_button_text(page), {controller: :profile, profile: page.profile.identifier, action: :unfollow_article, article_id: page.id} | |
191 | 191 | else |
192 | - button :add, follow_button_text(page), {:controller => 'profile', :action => 'follow_article', :article_id => page.id, :profile => page.profile.identifier} | |
192 | + button :add, follow_button_text(page), {controller: :profile, profile: page.profile.identifier, action: :follow_article, article_id: page.id} | |
193 | 193 | end |
194 | 194 | end |
195 | 195 | end | ... | ... |
app/helpers/boxes_helper.rb
... | ... | @@ -99,15 +99,10 @@ module BoxesHelper |
99 | 99 | end |
100 | 100 | |
101 | 101 | def render_block_content block |
102 | - # FIXME: this conditional should be removed after all | |
103 | - # block footer from plugins methods get refactored into helpers and views. | |
104 | - # They are a failsafe until all of them are done. | |
105 | - return block.content if block.method(:content).owner != Block | |
106 | 102 | render_block block |
107 | 103 | end |
108 | 104 | |
109 | 105 | def render_block_footer block |
110 | - return block.footer if block.method(:footer).owner != Block | |
111 | 106 | render_block block, 'footers/' |
112 | 107 | end |
113 | 108 | ... | ... |
app/helpers/buttons_helper.rb
1 | 1 | module ButtonsHelper |
2 | + | |
3 | + def button_bar(options = {}, &block) | |
4 | + options[:class] ||= '' | |
5 | + options[:class] << ' button-bar' | |
6 | + | |
7 | + content_tag :div, options do | |
8 | + [ | |
9 | + capture(&block).to_s, | |
10 | + tag(:br, style: 'clear: left;'), | |
11 | + ].safe_join | |
12 | + end | |
13 | + end | |
14 | + | |
2 | 15 | def button(type, label, url, html_options = {}) |
3 | 16 | html_options ||= {} |
4 | 17 | the_class = 'with-text' | ... | ... |
app/helpers/custom_fields_helper.rb
... | ... | @@ -61,6 +61,6 @@ module CustomFieldsHelper |
61 | 61 | |
62 | 62 | def form_for_format(customized_type, format) |
63 | 63 | field = CustomField.new(:format => format, :customized_type => customized_type, :environment => environment) |
64 | - CGI::escapeHTML((render(:partial => 'features/custom_fields/form', :locals => {:field => field}))) | |
64 | + CGI::escapeHTML((render(:partial => 'features/custom_fields/form', :locals => {:field => field}))).html_safe | |
65 | 65 | end |
66 | 66 | end | ... | ... |
app/helpers/theme_loader_helper.rb
... | ... | @@ -2,8 +2,8 @@ module ThemeLoaderHelper |
2 | 2 | def current_theme |
3 | 3 | @current_theme ||= |
4 | 4 | begin |
5 | - if session[:theme] | |
6 | - session[:theme] | |
5 | + if session[:user_theme] | |
6 | + session[:user_theme] | |
7 | 7 | else |
8 | 8 | # utility for developers: set the theme to 'random' in development mode and |
9 | 9 | # you will get a different theme every request. This is interesting for |
... | ... | @@ -11,8 +11,8 @@ module ThemeLoaderHelper |
11 | 11 | if Rails.env.development? && environment.theme == 'random' |
12 | 12 | @random_theme ||= Dir.glob('public/designs/themes/*').map { |f| File.basename(f) }.rand |
13 | 13 | @random_theme |
14 | - elsif Rails.env.development? && respond_to?(:params) && params[:theme] && File.exists?(Rails.root.join('public/designs/themes', params[:theme])) | |
15 | - params[:theme] | |
14 | + elsif Rails.env.development? && respond_to?(:params) && params[:user_theme] && File.exists?(Rails.root.join('public/designs/themes', params[:user_theme])) | |
15 | + params[:user_theme] | |
16 | 16 | else |
17 | 17 | if profile && !profile.theme.nil? |
18 | 18 | profile.theme |
... | ... | @@ -34,8 +34,10 @@ module ThemeLoaderHelper |
34 | 34 | end |
35 | 35 | |
36 | 36 | def theme_path |
37 | - if session[:theme] | |
37 | + if session[:user_theme] | |
38 | 38 | '/user_themes/' + current_theme |
39 | + elsif session[:theme] | |
40 | + '/designs/themes/' + session[:theme] | |
39 | 41 | else |
40 | 42 | '/designs/themes/' + current_theme |
41 | 43 | end | ... | ... |
app/helpers/url_helper.rb
app/helpers/users_helper.rb
1 | 1 | module UsersHelper |
2 | 2 | |
3 | - FILTER_TRANSLATION = { | |
3 | + def filter_translation | |
4 | + { | |
4 | 5 | 'all_users' => _('All users'), |
5 | 6 | 'admin_users' => _('Admin users'), |
6 | 7 | 'activated_users' => _('Activated users'), |
7 | 8 | 'deactivated_users' => _('Deativated users'), |
8 | - } | |
9 | + } | |
10 | + end | |
9 | 11 | |
10 | 12 | def filter_selector(filter, float = 'right') |
11 | - options = options_for_select(FILTER_TRANSLATION.map {|key, name| [name, key]}, :selected => filter) | |
13 | + options = options_for_select(filter_translation.map {|key, name| [name, key]}, :selected => filter) | |
12 | 14 | url_params = url_for(params.merge(:filter => 'FILTER')) |
13 | 15 | onchange = "document.location.href = '#{url_params}'.replace('FILTER', this.value)" |
14 | 16 | select_field = select_tag(:filter, options, :onchange => onchange) |
... | ... | @@ -19,7 +21,7 @@ module UsersHelper |
19 | 21 | end |
20 | 22 | |
21 | 23 | def users_filter_title(filter) |
22 | - FILTER_TRANSLATION[filter] | |
24 | + filter_translation[filter] | |
23 | 25 | end |
24 | 26 | |
25 | 27 | end | ... | ... |
... | ... | @@ -0,0 +1,27 @@ |
1 | +class DownloadReportedImagesJob < Struct.new(:abuse_report, :article) | |
2 | + def perform | |
3 | + images_paths = article.image? ? [File.join(article.profile.environment.top_url, article.public_filename(:display))] : article.body_images_paths | |
4 | + images_paths.each do |image_path| | |
5 | + image = get_image(image_path) | |
6 | + reported_image = ReportedImage.create!( :abuse_report => abuse_report, | |
7 | + :uploaded_data => image, | |
8 | + :filename => File.basename(image_path), | |
9 | + :size => image.size ) | |
10 | + abuse_report.content = parse_content(abuse_report, image_path, reported_image) | |
11 | + end | |
12 | + abuse_report.save! | |
13 | + end | |
14 | + | |
15 | + def get_image(image_path) | |
16 | + image = ActionController::UploadedTempfile.new('reported_image') | |
17 | + image.write(Net::HTTP.get(URI.parse(image_path))) | |
18 | + image.original_path = 'tmp/' + File.basename(image_path) | |
19 | + image.content_type = 'image/' + File.extname(image_path).gsub('.','') | |
20 | + image | |
21 | + end | |
22 | + | |
23 | + def parse_content(report, old_path, image) | |
24 | + old_path = old_path.gsub(report.reporter.environment.top_url, '') | |
25 | + report.content.gsub(/#{old_path}/, image.public_filename) | |
26 | + end | |
27 | +end | ... | ... |
... | ... | @@ -0,0 +1,11 @@ |
1 | +class GetEmailContactsJob < Struct.new(:import_from, :login, :password, :contact_list_id) | |
2 | + def perform | |
3 | + begin | |
4 | + Invitation.get_contacts(import_from, login, password, contact_list_id) | |
5 | + rescue Contacts::AuthenticationError => ex | |
6 | + ContactList.exists?(contact_list_id) && ContactList.find(contact_list_id).register_auth_error | |
7 | + rescue Exception => ex | |
8 | + ContactList.exists?(contact_list_id) && ContactList.find(contact_list_id).register_error | |
9 | + end | |
10 | + end | |
11 | +end | ... | ... |
... | ... | @@ -0,0 +1,10 @@ |
1 | +class InvitationJob < Struct.new(:person_id, :contacts_to_invite, :message, :profile_id, :contact_list_id, :locale) | |
2 | + def perform | |
3 | + Noosfero.with_locale(locale) do | |
4 | + person = Person.find(person_id) | |
5 | + profile = Profile.find(profile_id) | |
6 | + Invitation.invite(person, contacts_to_invite, message, profile) | |
7 | + ContactList.exists?(contact_list_id) && ContactList.find(contact_list_id).destroy | |
8 | + end | |
9 | + end | |
10 | +end | ... | ... |
... | ... | @@ -0,0 +1,22 @@ |
1 | +class LogMemoryConsumptionJob < Struct.new(:last_stat) | |
2 | + # Number of entries do display | |
3 | + N = 20 | |
4 | + | |
5 | + def perform | |
6 | + logpath = File.join(Rails.root, 'log', "#{ENV['RAILS_ENV']}_memory_consumption.log") | |
7 | + logger = Logger.new(logpath) | |
8 | + stats = Hash.new(0) | |
9 | + ObjectSpace.each_object {|o| stats[o.class.to_s] += 1} | |
10 | + i = 1 | |
11 | + | |
12 | + logger << "[#{Time.now.strftime('%F %T %z')}]\n" | |
13 | + stats.sort {|(k1,v1),(k2,v2)| v2 <=> v1}.each do |k,v| | |
14 | + logger << (sprintf "%-60s %10d", k, v) | |
15 | + logger << (sprintf " | delta %10d", (v - last_stat[k])) if last_stat && last_stat[k] | |
16 | + logger << "\n" | |
17 | + break if i > N | |
18 | + i += 1 | |
19 | + end | |
20 | + logger << "\n" | |
21 | + end | |
22 | +end | ... | ... |
... | ... | @@ -0,0 +1,44 @@ |
1 | +class NotifyActivityToProfilesJob < Struct.new(:tracked_action_id) | |
2 | + NOTIFY_ONLY_COMMUNITY = [ | |
3 | + 'add_member_in_community' | |
4 | + ] | |
5 | + | |
6 | + NOT_NOTIFY_COMMUNITY = [ | |
7 | + 'join_community' | |
8 | + ] | |
9 | + def perform | |
10 | + return unless ActionTracker::Record.exists?(tracked_action_id) | |
11 | + tracked_action = ActionTracker::Record.find(tracked_action_id) | |
12 | + return unless tracked_action.user.present? | |
13 | + target = tracked_action.target | |
14 | + if target.is_a?(Community) && ( NOTIFY_ONLY_COMMUNITY.include?(tracked_action.verb) || ! target.public_profile ) | |
15 | + ActionTrackerNotification.create(:profile_id => target.id, :action_tracker_id => tracked_action.id) | |
16 | + return | |
17 | + end | |
18 | + | |
19 | + # Notify the user | |
20 | + ActionTrackerNotification.create(:profile_id => tracked_action.user.id, :action_tracker_id => tracked_action.id) | |
21 | + | |
22 | + # Notify all friends | |
23 | + ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) select f.friend_id, #{tracked_action.id} from friendships as f where person_id=#{tracked_action.user.id} and f.friend_id not in (select atn.profile_id from action_tracker_notifications as atn where atn.action_tracker_id = #{tracked_action.id})") | |
24 | + | |
25 | + if tracked_action.user.is_a? Organization | |
26 | + ActionTrackerNotification.connection.execute "insert into action_tracker_notifications(profile_id, action_tracker_id) " + | |
27 | + "select distinct accessor_id, #{tracked_action.id} from role_assignments where resource_id = #{tracked_action.user.id} and resource_type='Profile' " + | |
28 | + if tracked_action.user.is_a? Enterprise then "union select distinct person_id, #{tracked_action.id} from favorite_enterprise_people where enterprise_id = #{tracked_action.user.id}" else "" end | |
29 | + end | |
30 | + | |
31 | + if target.is_a?(Community) | |
32 | + ActionTrackerNotification.create(:profile_id => target.id, :action_tracker_id => tracked_action.id) unless NOT_NOTIFY_COMMUNITY.include?(tracked_action.verb) | |
33 | + | |
34 | + ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) select distinct profiles.id, #{tracked_action.id} from role_assignments, profiles where profiles.type = 'Person' and profiles.id = role_assignments.accessor_id and profiles.id != #{tracked_action.user.id} and profiles.id not in (select atn.profile_id from action_tracker_notifications as atn where atn.action_tracker_id = #{tracked_action.id}) and role_assignments.resource_type = 'Profile' and role_assignments.resource_id = #{target.id}") | |
35 | + end | |
36 | + | |
37 | + if target.is_a?(Article) && target.profile.is_a?(Community) | |
38 | + ActionTrackerNotification.create(:profile_id => target.profile.id, :action_tracker_id => tracked_action.id) unless NOT_NOTIFY_COMMUNITY.include?(tracked_action.verb) | |
39 | + | |
40 | + ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) select distinct profiles.id, #{tracked_action.id} from role_assignments, profiles where profiles.type = 'Person' and profiles.id = role_assignments.accessor_id and profiles.id != #{tracked_action.user.id} and profiles.id not in (select atn.profile_id from action_tracker_notifications as atn where atn.action_tracker_id = #{tracked_action.id}) and role_assignments.resource_type = 'Profile' and role_assignments.resource_id = #{target.profile.id}") | |
41 | + end | |
42 | + | |
43 | + end | |
44 | +end | ... | ... |
... | ... | @@ -0,0 +1,22 @@ |
1 | +class ProfileSuggestionsJob < Struct.new(:person_id) | |
2 | + | |
3 | + def self.exists?(person_id) | |
4 | + !find(person_id).empty? | |
5 | + end | |
6 | + | |
7 | + def self.find(person_id) | |
8 | + Delayed::Job.by_handler("--- !ruby/struct:ProfileSuggestionsJob\nperson_id: #{person_id}\n") | |
9 | + end | |
10 | + | |
11 | + def perform | |
12 | + logger = Delayed::Worker.logger | |
13 | + begin | |
14 | + person = Person.find(person_id) | |
15 | + ProfileSuggestion.calculate_suggestions(person) | |
16 | + UserMailer.profiles_suggestions_email(person).deliver if person.email_suggestions | |
17 | + rescue Exception => exception | |
18 | + logger.error("Error with suggestions for person ID %d: %s" % [person_id, exception.to_s]) | |
19 | + end | |
20 | + end | |
21 | + | |
22 | +end | ... | ... |
app/models/add_member.rb
... | ... | @@ -37,6 +37,10 @@ class AddMember < Task |
37 | 37 | true |
38 | 38 | end |
39 | 39 | |
40 | + def reject_details | |
41 | + true | |
42 | + end | |
43 | + | |
40 | 44 | def footer |
41 | 45 | true |
42 | 46 | end |
... | ... | @@ -72,8 +76,9 @@ class AddMember < Task |
72 | 76 | end |
73 | 77 | |
74 | 78 | def task_cancelled_message |
75 | - _("Your request to enter community \"%{target} with the profile \"%{requestor}\" was not accepted. Please contact any profile admin from %{url} for more information.") % | |
76 | - {:target => self.target.name, :url => self.target.url, | |
77 | - :requestor => self.requestor.name} | |
79 | + _("Your request to enter community \"%{target}\" with the profile \"%{requestor}\" was not accepted. Please contact any profile admin from %{target} for more information. The following explanation was given: \n\n\"%{explanation}\"") % | |
80 | + {:target => self.target.name, | |
81 | + :requestor => self.requestor.name, | |
82 | + :explanation => self.reject_explanation} | |
78 | 83 | end |
79 | 84 | end | ... | ... |
app/models/article.rb
app/models/block.rb
... | ... | @@ -181,30 +181,6 @@ class Block < ApplicationRecord |
181 | 181 | "/images/block_preview.png" |
182 | 182 | end |
183 | 183 | |
184 | - # Returns the content to be used for this block. | |
185 | - # | |
186 | - # This method can return several types of objects: | |
187 | - # | |
188 | - # * <tt>String</tt>: if the string starts with <tt>http://</tt> or <tt>https://</tt>, then it is assumed to be address of an IFRAME. Otherwise it's is used as regular HTML. | |
189 | - # * <tt>Hash</tt>: the hash is used to build an URL that is used as the address for a IFRAME. | |
190 | - # * <tt>Proc</tt>: the Proc is evaluated in the scope of BoxesHelper. The | |
191 | - # block can then use <tt>render</tt>, <tt>link_to</tt>, etc. | |
192 | - # | |
193 | - # The method can also return <tt>nil</tt>, which means "no content". | |
194 | - # | |
195 | - # See BoxesHelper#extract_block_content for implementation details. | |
196 | - def content(args={}) | |
197 | - "This is block number %d" % self.id | |
198 | - end | |
199 | - | |
200 | - # A footer to be appended to the end of the block. Returns <tt>nil</tt>. | |
201 | - # | |
202 | - # Override in your subclasses. You can return the same types supported by | |
203 | - # #content. | |
204 | - def footer | |
205 | - nil | |
206 | - end | |
207 | - | |
208 | 184 | # Is this block editable? (Default to <tt>true</tt>) |
209 | 185 | def editable?(user=nil) |
210 | 186 | self.edit_modes == "all" | ... | ... |
app/models/comment_handler.rb
1 | -class CommentHandler < Struct.new(:comment_id, :method) | |
1 | +class CommentHandler < Struct.new(:comment_id, :method, :locale) | |
2 | + def initialize(*args) | |
3 | + super | |
4 | + self.locale ||= FastGettext.locale | |
5 | + end | |
2 | 6 | |
3 | 7 | def perform |
8 | + saved_locale = FastGettext.locale | |
9 | + FastGettext.locale = locale | |
10 | + | |
4 | 11 | comment = Comment.find(comment_id) |
5 | 12 | comment.send(method) |
13 | + FastGettext.locale = saved_locale | |
6 | 14 | rescue ActiveRecord::RecordNotFound |
7 | 15 | # just ignore non-existing comments |
8 | 16 | end | ... | ... |
app/models/community.rb
app/models/enterprise.rb
app/models/environment.rb
app/models/link_list_block.rb
... | ... | @@ -81,10 +81,8 @@ class LinkListBlock < Block |
81 | 81 | end |
82 | 82 | end |
83 | 83 | |
84 | - def icons_options | |
85 | - ICONS.map do |i| | |
86 | - "<span title=\"#{i[1]}\" class=\"icon-#{i[0]}\" onclick=\"changeIcon(this, '#{i[0]}')\"></span>".html_safe | |
87 | - end | |
84 | + def icons | |
85 | + ICONS | |
88 | 86 | end |
89 | 87 | |
90 | 88 | end | ... | ... |
app/models/organization.rb
app/models/person.rb
app/models/person_notifier.rb
app/views/account/_login_form.html.erb
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 | <%= hidden_field_tag :terms_accepted, params[:terms_accepted] %> |
12 | 12 | <% end %> |
13 | 13 | |
14 | -<% button_bar do %> | |
14 | +<%= button_bar do %> | |
15 | 15 | <%= submit_button( 'login', _('Log in') )%> |
16 | 16 | <%= modal_close_button _('Cancel') if request.xhr? %> |
17 | 17 | <% end %> | ... | ... |
app/views/account/accept_terms.html.erb
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | <%= hidden_field_tag :answer, params[:answer] %> |
21 | 21 | |
22 | 22 | <%= labelled_check_box(environment.terms_of_use_acceptance_text.blank? ? _('I read the terms of use and accepted them') : environment.terms_of_use_acceptance_text, :terms_accepted, '1', false, :id => 'accept-terms') %> |
23 | - <% button_bar do %> | |
23 | + <%= button_bar do %> | |
24 | 24 | <%= button 'cancel', _('Cancel'), :controller => 'home', :action => 'index' %> |
25 | 25 | <%= submit_button 'forward', _('Continue'), {:disabled => true, :class => 'disabled', :id => 'submit-accept-terms'} %> |
26 | 26 | <% end %> | ... | ... |
app/views/account/activation_question.html.erb
... | ... | @@ -24,7 +24,7 @@ |
24 | 24 | |
25 | 25 | <div class='activation-box'> |
26 | 26 | <h2><%= _('Enterprise activation') + ' - ' + (logged_in? ? _('part 1 of 2') : _('part 1 of 3')) %></h2> |
27 | - <%= form_tag( {:action => 'accept_terms'}, {:method => 'get', :onsubmit => (@question == :foundation_year ? 'return check_valid_year(this)' : 'return check_valid_cnpj(this)')}) do %> | |
27 | + <%= form_tag( {:action => 'accept_terms'}, {:method => 'get', :onsubmit => (@question == :foundation_year ? 'return check_valid_year(this)' : 'return check_valid_cnpj(this)')}) do %> | |
28 | 28 | |
29 | 29 | <p> <strong><%= _('Pay atention! You have only one chance!') %></strong> </p> |
30 | 30 | |
... | ... | @@ -34,7 +34,7 @@ |
34 | 34 | |
35 | 35 | <%= hidden_field_tag :enterprise_code, params[:enterprise_code] %> |
36 | 36 | |
37 | - <% button_bar do %> | |
37 | + <%= button_bar do %> | |
38 | 38 | <%= button 'cancel', _('Cancel'), :action => 'index' %> |
39 | 39 | <%= submit_button 'forward', _('Continue') %> |
40 | 40 | <% end %> | ... | ... |
app/views/account/forgot_password.html.erb
app/views/account/login.html.erb
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 | |
23 | 23 | <%= safe_join(@plugins.dispatch(:login_extra_contents).collect { |content| instance_exec(&content) }, "") %> |
24 | 24 | |
25 | - <% button_bar do %> | |
25 | + <%= button_bar do %> | |
26 | 26 | <%= submit_button( 'login', _('Log in') )%> |
27 | 27 | <% if is_popin %> |
28 | 28 | <%= modal_close_button(_('Cancel')) %> |
... | ... | @@ -31,7 +31,7 @@ |
31 | 31 | |
32 | 32 | <% end %> |
33 | 33 | |
34 | -<% button_bar do %> | |
34 | +<%= button_bar do %> | |
35 | 35 | <% unless @plugins.dispatch(:allow_user_registration).include?(false) %> |
36 | 36 | <%= button :add, _("New user"), :controller => 'account', :action => 'signup' %> |
37 | 37 | <% end %> | ... | ... |
app/views/account/login_block.html.erb
... | ... | @@ -17,7 +17,7 @@ |
17 | 17 | |
18 | 18 | <%= safe_join(@plugins.dispatch(:login_extra_contents).collect { |content| instance_eval(&content) }, "") %> |
19 | 19 | |
20 | - <% button_bar do %> | |
20 | + <%= button_bar do %> | |
21 | 21 | <%= submit_button( 'login', _('Log in') )%> |
22 | 22 | <% unless @plugins.dispatch(:allow_user_registration).include?(false) %> |
23 | 23 | <%= button(:add, _('New user'), { :controller => 'account', :action => 'signup' }) %> | ... | ... |
app/views/account/logout_popup.html.erb
app/views/account/new_password.html.erb
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | |
11 | 11 | <%= labelled_form_field(_('Enter new password'), (f.password_field :password)) %> |
12 | 12 | <%= labelled_form_field(_('Confirm the new password'), (f.password_field :password_confirmation)) %> |
13 | - <% button_bar do %> | |
13 | + <%= button_bar do %> | |
14 | 14 | <%= submit_button(:ok, _('Change password')) %> |
15 | 15 | <% end %> |
16 | 16 | ... | ... |
app/views/account/welcome.html.erb
... | ... | @@ -3,8 +3,8 @@ |
3 | 3 | |
4 | 4 | <%= _('%s was successfuly activated. Now you may go to your control panel or to the control panel of your enterprise') % @enterprise.name %> |
5 | 5 | |
6 | - <% button_bar do %> | |
7 | - <%= button 'forward', _('Go to my control panel'), :action => 'index', :controller => 'profile_editor', :profile => current_user.person.identifier %> | |
6 | + <%= button_bar do %> | |
7 | + <%= button 'forward', _('Go to my control panel'), :action => 'index', :controller => 'profile_editor', :profile => current_user.person.identifier %> | |
8 | 8 | <%= button 'forward', _('Go to my enterprise control panel') % @enterprise.name, :action => 'index', :controller => 'profile_editor', :profile => @enterprise.identifier %> |
9 | 9 | <% end %> |
10 | 10 | <% end %> | ... | ... |
app/views/admin_panel/message_for_disabled_enterprise.html.erb
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | |
7 | 7 | <%= f.text_area :message_for_disabled_enterprise, :cols => 40, :style => 'width: 90%' %> |
8 | 8 | |
9 | - <% button_bar do %> | |
9 | + <%= button_bar do %> | |
10 | 10 | <%= submit_button(:save, _('Save')) %> |
11 | 11 | <%= button(:cancel, _('Cancel'), :action => 'index') %> |
12 | 12 | <% end %> | ... | ... |
app/views/admin_panel/set_portal_community.html.erb
... | ... | @@ -4,14 +4,14 @@ |
4 | 4 | <%= form_tag do %> |
5 | 5 | <%= labelled_form_field(_('Portal identifier'), text_field_tag('portal_community_identifier', @portal_community.identifier, :size => 40) ) %> |
6 | 6 | |
7 | - <% button_bar do %> | |
7 | + <%= button_bar do %> | |
8 | 8 | <%= submit_button 'save', _('Save'), :cancel => { :action => 'index' } %> |
9 | 9 | <% end %> |
10 | 10 | <% end %> |
11 | 11 | <% else %> |
12 | 12 | <%= _('Portal identifier: %s').html_safe % link_to(@portal_community.identifier, @portal_community.url) %> |
13 | 13 | |
14 | - <% button_bar do %> | |
14 | + <%= button_bar do %> | |
15 | 15 | <%if @portal_community.environment.enabled?('use_portal_community') %> |
16 | 16 | <%= button 'cancel', _('Disable'), {:action => 'manage_portal_community', :activate => 0} %> |
17 | 17 | <% else %> | ... | ... |
app/views/admin_panel/set_portal_folders.html.erb
... | ... | @@ -37,7 +37,7 @@ |
37 | 37 | <%= _('The same order in which you arrange the folders here will be used for arranging the boxes in the environment initial page.') %> |
38 | 38 | </p> |
39 | 39 | |
40 | - <% button_bar do %> | |
40 | + <%= button_bar do %> | |
41 | 41 | <%= submit_button 'save', _('Save'), :cancel => {:action => 'index'} %> |
42 | 42 | <% end %> |
43 | 43 | <% end %> | ... | ... |
app/views/admin_panel/set_portal_news_amount.html.erb
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | <%= labelled_form_field _('Number of portal news'), select(:environment, :portal_news_amount, (0..10).to_a) %> |
7 | 7 | <%= labelled_form_field _('Number of news by folder'), select(:environment, :news_amount_by_folder, (1..10).to_a) %> |
8 | 8 | |
9 | - <% button_bar do %> | |
9 | + <%= button_bar do %> | |
10 | 10 | <%= submit_button(:save, _('Save')) %> |
11 | 11 | <%= button(:cancel, _('Cancel'), :action => 'index') %> |
12 | 12 | <% end %> | ... | ... |
app/views/admin_panel/site_info.html.erb
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | <% tabs << {:title => _('Signup introduction text'), :id => 'signup-intro', |
21 | 21 | :content => (render :partial => 'signup_intro', :locals => {:f => f})} %> |
22 | 22 | <%= render_tabs(tabs) %> |
23 | - <% button_bar do %> | |
23 | + <%= button_bar do %> | |
24 | 24 | <%= submit_button(:save, _('Save'), :cancel => {:action => 'index'}) %> |
25 | 25 | <% end %> |
26 | 26 | <% end %> | ... | ... |
app/views/box_organizer/_icon_selector.html.erb
... | ... | @@ -2,6 +2,8 @@ |
2 | 2 | <%= hidden_field_tag 'block[links][][icon]', icon %> |
3 | 3 | <span class='icon-<%= icon %>' style='display:block; width:16px; height:16px;'></span> |
4 | 4 | <div class="icon-selector" style='display:none;'> |
5 | - <%= @block.icons_options.join %> | |
5 | + <% @block.icons.map do |i| %> | |
6 | + <%= content_tag('span', '', :title => i[1], :class => "icon-#{i[0]}", :onclick => "changeIcon(this, '#{i[0]}')") %> | |
7 | + <% end %> | |
6 | 8 | </div> |
7 | 9 | </div> | ... | ... |
app/views/box_organizer/edit.html.erb
app/views/box_organizer/index.html.erb
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | |
4 | 4 | <h1><%= _('Editing sideboxes')%></h1> |
5 | 5 | |
6 | -<% button_bar :class=>'design-menu' do %> | |
6 | +<%= button_bar :class=>'design-menu' do %> | |
7 | 7 | <%= button(:back, _('Back to control panel'), :controller => (profile.nil? ? 'admin_panel': 'profile_editor')) %> |
8 | 8 | <% end %> |
9 | 9 | ... | ... |
app/views/categories/_form.html.erb
app/views/cms/_media_new_folder.html.erb
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | <%= labelled_radio_button _('Folder'), :folder_type, 'Folder', false %> |
10 | 10 | |
11 | 11 | <%= labelled_form_field _('Name:'), text_field_tag(:new_folder, nil, 'data-url' => url_for({:action => 'new', :profile => profile.identifier})) %> |
12 | - <% button_bar do %> | |
12 | + <%= button_bar do %> | |
13 | 13 | <%= submit_button(:newfolder, _('Create')) %> |
14 | 14 | <% end %> |
15 | 15 | <% end %> | ... | ... |
app/views/cms/_text_fields.html.erb
1 | -<%= labelled_form_field(_('Publish date'), date_field('article[published_at]', @article.published_at || DateTime.current, {:max_date => '+0d', :date_format => 'yy-mm-dd'}, {:id => "article_published_at"})) %> | |
1 | +<%= labelled_form_field(_('Publish date'), date_field('article[published_at]', @article.published_at || DateTime.current, {:max_date => '+0d', :time => true}, {:id => "article_published_at"})) %> | ... | ... |
app/views/cms/_upload_file_form.html.erb
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 | |
13 | 13 | <%= hidden_field_tag('back_to', @back_to) %> |
14 | 14 | |
15 | -<% button_bar do %> | |
15 | +<%= button_bar do %> | |
16 | 16 | <%= button_to_function :add, _('More files'), "add_new_file_fields()" %> |
17 | 17 | <% if @back_to %> |
18 | 18 | <%= submit_button :save, _('Upload'), :cancel => @back_to %> | ... | ... |
app/views/cms/destroy.html.erb
app/views/cms/edit.html.erb
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 | </div> |
22 | 22 | <% end %> |
23 | 23 | |
24 | - <% button_bar do %> | |
24 | + <%= button_bar do %> | |
25 | 25 | <%= submit_button :save, _('Save') %> |
26 | 26 | <%= submit_button :save, _('Save and continue'), :name => "continue" %> |
27 | 27 | <% end %> |
... | ... | @@ -48,7 +48,7 @@ |
48 | 48 | <%= options_for_article(@article, @tokenized_children) %> |
49 | 49 | </div> |
50 | 50 | |
51 | - <% button_bar do %> | |
51 | + <%= button_bar do %> | |
52 | 52 | <%= submit_button :save, _('Save') %> |
53 | 53 | |
54 | 54 | <% if @back_to %> | ... | ... |
app/views/cms/publish.html.erb
... | ... | @@ -25,7 +25,7 @@ |
25 | 25 | <%= hidden_field_tag :back_to, @back_to %> |
26 | 26 | <%= labelled_form_field _('Title'), text_field_tag('name', @article.name) %> |
27 | 27 | |
28 | - <% button_bar do %> | |
28 | + <%= button_bar do %> | |
29 | 29 | <%= submit_button 'spread', _('Spread this') %> |
30 | 30 | <% end %> |
31 | 31 | <% end %> |
... | ... | @@ -41,7 +41,7 @@ |
41 | 41 | <% search_action = url_for(:action => 'search_communities_to_publish') %> |
42 | 42 | <%= token_input_field_tag(:q, 'search-communities-to-publish', search_action, { :hint_text => _('Type in a search for your community'), :zindex => 10000, :focus => false }) %> |
43 | 43 | <%= labelled_form_field _('Title'), text_field_tag('name', @article.name) %> |
44 | - <% button_bar do %> | |
44 | + <%= button_bar do %> | |
45 | 45 | <%= submit_button 'spread', _('Spread this') %> |
46 | 46 | <% end %> |
47 | 47 | <% end %> |
... | ... | @@ -58,7 +58,7 @@ |
58 | 58 | <%= hidden_field_tag :back_to, @back_to %> |
59 | 59 | <%= labelled_form_field _('Title'), text_field_tag('name', @article.name) %> |
60 | 60 | |
61 | - <% button_bar do %> | |
61 | + <%= button_bar do %> | |
62 | 62 | <%= submit_button 'spread', _('Spread this') %> |
63 | 63 | <% end %> |
64 | 64 | <% end %> | ... | ... |
app/views/cms/publish_on_portal_community.html.erb
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | <%= hidden_field_tag :back_to, @back_to %> |
6 | 6 | <%= labelled_text_field _('Title') + ': ', :name, @article.name, :style => 'width: 100%' %> |
7 | 7 | |
8 | - <% button_bar do %> | |
8 | + <%= button_bar do %> | |
9 | 9 | <%= submit_button 'spread', _('Spread this'), :cancel => @back_to %> |
10 | 10 | <% end %> |
11 | 11 | <% end %> |
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | <%= _("There is no portal community in this environment.") %> |
15 | 15 | </div> |
16 | 16 | |
17 | - <% button_bar do %> | |
17 | + <%= button_bar do %> | |
18 | 18 | <%= button :back, _('Back'), :controller => 'cms' %> |
19 | 19 | <% end %> |
20 | 20 | <% end %> | ... | ... |
app/views/cms/suggest_an_article.html.erb
... | ... | @@ -23,7 +23,7 @@ |
23 | 23 | |
24 | 24 | <%= recaptcha_tags(:display => { :theme => 'clean' }, :ajax => true) unless logged_in? %> |
25 | 25 | |
26 | - <% button_bar do %> | |
26 | + <%= button_bar do %> | |
27 | 27 | <%= submit_button :save, _('Save') %> |
28 | 28 | <%= button :cancel, _('Cancel'), @back_to %> |
29 | 29 | <% end %> | ... | ... |
app/views/cms/view.html.erb
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | </div> |
15 | 15 | <% end %> |
16 | 16 | |
17 | -<% button_bar(:style => 'margin-bottom: 1em;') do %> | |
17 | +<%= button_bar(:style => 'margin-bottom: 1em;') do %> | |
18 | 18 | <% parent_id = ((@article && @article.allow_children?) ? @article : nil) %> |
19 | 19 | |
20 | 20 | <%= modal_button('new', _('New content'), url_for({:action => 'new', :parent_id => parent_id, :cms => true}).html_safe) %> | ... | ... |
app/views/cms/why_categorize.html.erb
... | ... | @@ -4,6 +4,6 @@ |
4 | 4 | <%= _('By categorizing your content, you increase the possibility that other people access it. When they are looking for, say, articles about Bahia and you categorize your article in "Regions/Bahia", then there is a good change that your article is going to be found.') %> |
5 | 5 | </p> |
6 | 6 | |
7 | -<% button_bar do %> | |
7 | +<%= button_bar do %> | |
8 | 8 | <%= modal_close_button _('Close') %> |
9 | 9 | <% end %> | ... | ... |
app/views/comment/_comment_form.html.erb
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | <div id="recaptcha-container" style="display: none"> |
9 | 9 | <h3><%= _('Please type the two words below') %></h3> |
10 | 10 | <%= recaptcha_tags(:display => { :theme => 'clean' }, :ajax => true) %> |
11 | - <% button_bar do %> | |
11 | + <%= button_bar do %> | |
12 | 12 | <%= button_to_function :add, _('Confirm'), "return false", :id => "confirm-captcha" %> |
13 | 13 | <%= button_to_function :cancel, _('Cancel'), "noosfero.modal.close()" %> |
14 | 14 | <% end %> |
... | ... | @@ -87,7 +87,7 @@ function check_captcha(button, confirm_action) { |
87 | 87 | |
88 | 88 | <%= safe_join(@plugins.dispatch(:comment_form_extra_contents, local_assigns.merge(:comment => @comment)).collect { |content| instance_exec(&content) }, "") %> |
89 | 89 | |
90 | - <% button_bar do %> | |
90 | + <%= button_bar do %> | |
91 | 91 | <%= submit_button('add', _('Post comment'), :onclick => "if(check_captcha(this)) { save_comment(this) } else { check_captcha(this, save_comment)};return false;") %> |
92 | 92 | <% if !edition_mode %> |
93 | 93 | <%= button :cancel, _('Cancel'), '', :id => 'cancel-comment' %> | ... | ... |
app/views/content_viewer/_comment_form.html.erb
... | ... | @@ -36,7 +36,7 @@ function submit_comment_form(button) { |
36 | 36 | <div id="recaptcha-container" style="display: none"> |
37 | 37 | <h3><%= _('Please type the two words below') %></h3> |
38 | 38 | <%= recaptcha_tags(:display => { :theme => 'clean' }, :ajax => true) %> |
39 | - <% button_bar do %> | |
39 | + <%= button_bar do %> | |
40 | 40 | <%= button_to_function :add, _('Confirm'), "return false", :id => "confirm-captcha" %> |
41 | 41 | <%= button_to_function :cancel, _('Cancel'), "noosfero.modal.close()" %> |
42 | 42 | <% end %> |
... | ... | @@ -73,7 +73,7 @@ function submit_comment_form(button) { |
73 | 73 | <%= hidden_field_tag(:confirm, 'false') %> |
74 | 74 | <%= hidden_field_tag(:view, params[:view])%> |
75 | 75 | |
76 | - <% button_bar do %> | |
76 | + <%= button_bar do %> | |
77 | 77 | <%= submit_button('add', _('Post comment'), :onclick => "submit_comment_form(this); return false") %> |
78 | 78 | <% if cancel_triggers_hide %> |
79 | 79 | <%= button :cancel, _('Cancel'), '', :id => 'cancel-comment' %> | ... | ... |
app/views/content_viewer/_confirm_unfollow.html.erb
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | <%= form_tag(@page.view_url.merge({:only_path => true}), {:method => 'post', :class => 'comment_form'}) do %> |
6 | 6 | <%= hidden_field_tag(:unfollow, 'commit') %> |
7 | 7 | <%= labelled_form_field(_('Enter your e-Mail'), text_field_tag(:email, nil, {:size => 40})) %> |
8 | - <% button_bar do %> | |
8 | + <%= button_bar do %> | |
9 | 9 | <%= submit_button(:ok, _('Cancel notifications for e-mail above') ) %> |
10 | 10 | <% end %> |
11 | 11 | <% end %> | ... | ... |
app/views/content_viewer/blog_page.html.erb
app/views/content_viewer/forum_page.html.erb
app/views/enterprise_registration/basic_information.html.erb
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | <%= _('There are no validators to validate the registration of this new enterprise. Contact your administrator for instructions.') %> |
9 | 9 | </div> |
10 | 10 | |
11 | - <% button_bar do %> | |
11 | + <%= button_bar do %> | |
12 | 12 | <%= button :back, _('Go back'), { :profile => current_user.person.identifier, :action=>"enterprises", :controller=>"profile" }%> |
13 | 13 | <% end %> |
14 | 14 | <% else %> |
... | ... | @@ -36,7 +36,7 @@ |
36 | 36 | |
37 | 37 | <%= template_options(:enterprises, 'create_enterprise')%> |
38 | 38 | |
39 | - <% button_bar do %> | |
39 | + <%= button_bar do %> | |
40 | 40 | <%= submit_button('next', _('Next'), :cancel => {:profile => current_user.person.identifier, :action=>"enterprises", :controller=>"profile"}) %> |
41 | 41 | <% end %> |
42 | 42 | <% end %> | ... | ... |
app/views/enterprise_registration/creation.html.erb
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | |
5 | 5 | <%= render :partial => 'shared/template_welcome_page', :locals => {:template => @enterprise.template, :header => _("What can I do with a %s?")} %> |
6 | 6 | |
7 | -<% button_bar do %> | |
7 | +<%= button_bar do %> | |
8 | 8 | <%= button :back, _('Back'), {:controller => 'memberships', :action => 'index', :profile => user.identifier} %> |
9 | 9 | <% end %> |
10 | 10 | ... | ... |
app/views/enterprise_registration/select_validator.html.erb
app/views/enterprise_validation/details.html.erb
... | ... | @@ -15,7 +15,7 @@ |
15 | 15 | <p><%= _('If this enterprise passes the criteria to be considered an solidarity enconomy enterprise, you can approve it by click the button below.') %></p> |
16 | 16 | |
17 | 17 | <%= form_tag :action => 'approve', :id => @pending.code do %> |
18 | - <% button_bar do %> | |
18 | + <%= button_bar do %> | |
19 | 19 | <%= submit_button('approve', _('Approve')) %> |
20 | 20 | <% end %> |
21 | 21 | <% end %> |
... | ... | @@ -27,7 +27,7 @@ |
27 | 27 | <%= form_tag :action => 'reject', :id => @pending.code do %> |
28 | 28 | <%= labelled_form_field(_('Please provide an explanation for the rejection. This explanation will be sent to the requestor (required).'), text_area_tag('reject_explanation'))%> |
29 | 29 | <div> |
30 | - <% button_bar do %> | |
30 | + <%= button_bar do %> | |
31 | 31 | <%= submit_button('reject', _('Reject')) %> |
32 | 32 | <% end %> |
33 | 33 | </div> | ... | ... |
app/views/enterprise_validation/edit_validation_info.html.erb
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | <%= labelled_form_for :info do |f| %> |
6 | 6 | <%= f.text_area(:validation_methodology, :cols => 50, :rows => 10) %> |
7 | 7 | <%= f.text_area(:restrictions, :cols => 50, :rows => 7) %> |
8 | - <% button_bar do %> | |
8 | + <%= button_bar do %> | |
9 | 9 | <%= submit_button('save', _('Save'), :cancel => {:action => 'index'}) %> |
10 | 10 | <% end %> |
11 | 11 | <% end %> | ... | ... |
app/views/enterprise_validation/index.html.erb
app/views/environment_role_manager/affiliate.html.erb
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | <%= form_tag( {:action => 'give_role'}, {:method => :post}) do %> |
4 | 4 | <%= select_tag 'role', options_for_select(@roles.map{|r|[r.name,r.id]}) %> |
5 | 5 | <%= hidden_field_tag 'person', current_user.person.id %> |
6 | - <% button_bar do %> | |
6 | + <%= button_bar do %> | |
7 | 7 | <%= submit_button('affiliate', _('Affiliate', :cancel => {:action => 'index'}) %> |
8 | 8 | <% end %> |
9 | 9 | <% end %> | ... | ... |
app/views/environment_role_manager/change_role.html.erb
app/views/environment_role_manager/make_admin.html.erb
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | <% @roles.each do |r| %> |
10 | 10 | <%= labelled_form_field(r.name, (check_box_tag "roles[]", r.id)) %> |
11 | 11 | <% end %> |
12 | - <% button_bar do %> | |
12 | + <%= button_bar do %> | |
13 | 13 | <%= submit_button( 'save', _('Make'), :cancel => {:action => 'index'} ) %> |
14 | 14 | <% end %> |
15 | 15 | <% end %> | ... | ... |
app/views/environment_themes/index.html.erb
app/views/favorite_enterprises/index.html.erb
app/views/features/_manage_community_fields.html.erb
... | ... | @@ -55,7 +55,7 @@ |
55 | 55 | </script> |
56 | 56 | |
57 | 57 | <div> |
58 | - <% button_bar do %> | |
58 | + <%= button_bar do %> | |
59 | 59 | <%= submit_button('save', _('Save changes'), :id=>"save_community_fields") %> |
60 | 60 | <%= button :back, _('Back to admin panel'), :controller => 'admin_panel', :action => 'index' %> |
61 | 61 | <% end %> | ... | ... |
app/views/features/_manage_custom_fields.html.erb
app/views/features/_manage_enterprise_fields.html.erb
... | ... | @@ -55,7 +55,7 @@ |
55 | 55 | </script> |
56 | 56 | |
57 | 57 | <div> |
58 | - <% button_bar do %> | |
58 | + <%= button_bar do %> | |
59 | 59 | <%= submit_button('save', _('Save changes'), :id=>"save_enterprise_fields") %> |
60 | 60 | <%= button :back, _('Back to admin panel'), :controller => 'admin_panel', :action => 'index' %> |
61 | 61 | <% end %> | ... | ... |
app/views/features/_manage_person_fields.html.erb
... | ... | @@ -55,7 +55,7 @@ |
55 | 55 | </script> |
56 | 56 | |
57 | 57 | <div> |
58 | - <% button_bar do %> | |
58 | + <%= button_bar do %> | |
59 | 59 | <%= submit_button('save', _('Save changes'), :id=>"save_person_fields") %> |
60 | 60 | <%= button :back, _('Back to admin panel'), :controller => 'admin_panel', :action => 'index' %> |
61 | 61 | <% end %> | ... | ... |
app/views/features/custom_fields/_form.html.erb
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 | </tr> |
30 | 30 | </thead> |
31 | 31 | <tfoot> |
32 | - <tr><td colspan=3><%= button(:add, _('Add option'), 'javascript: void()', :id => "btn_opt_#{id}", :onclick => "add_content('##{id} .custom-field-extras', $('#btn_opt_#{id}').attr('value'), 'EXTRAS_ID');", :value => "#{render_extras_field(id)}") %></td></tr> | |
32 | + <tr><td colspan=3><%= button(:add, _('Add option'), 'javascript: void()', :id => "btn_opt_#{id}", :onclick => "add_content('##{id} .custom-field-extras', $('#btn_opt_#{id}').attr('value'), 'EXTRAS_ID');", :value => "#{render_extras_field(id)}".html_safe) %></td></tr> | |
33 | 33 | </tfoot> |
34 | 34 | <tbody class="custom-field-extras"> |
35 | 35 | <% if !field.extras.blank?%> | ... | ... |
app/views/features/index.html.erb
... | ... | @@ -69,7 +69,7 @@ Check all the features you want to enable for your environment, uncheck all the |
69 | 69 | <hr/> |
70 | 70 | |
71 | 71 | <div> |
72 | - <% button_bar do %> | |
72 | + <%= button_bar do %> | |
73 | 73 | <%= submit_button('save', _('Save changes')) %> |
74 | 74 | <%= button :back, _('Back to admin panel'), :controller => 'admin_panel', :action => 'index' %> |
75 | 75 | <% end %> | ... | ... |
app/views/friends/connections.html.erb
app/views/friends/index.html.erb
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 | </p> |
13 | 13 | <% end %> |
14 | 14 | |
15 | - <% button_bar do %> | |
15 | + <%= button_bar do %> | |
16 | 16 | <%= button(:back, _('Back to control panel'), :controller => 'profile_editor') %> |
17 | 17 | <%= button(:search, _('Find people'), :controller => 'search', :action => 'assets', :asset => 'people') %> |
18 | 18 | <% unless @plugins.dispatch(:remove_invite_friends_button).include?(true) %> | ... | ... |
app/views/friends/suggest.html.erb
app/views/invite/_select_address_book.html.erb
... | ... | @@ -34,7 +34,7 @@ |
34 | 34 | <%= labelled_form_field(_("Password") + ":", password_field_tag(:password)) %> |
35 | 35 | </div> |
36 | 36 | |
37 | - <% button_bar do %> | |
37 | + <%= button_bar do %> | |
38 | 38 | <%= submit_button(:forward, _("Next")) %> |
39 | 39 | <% end %> |
40 | 40 | <p><%= _("We won't store your password or contact anyone without your permission.") %></p> | ... | ... |
app/views/invite/invite_friends.html.erb
... | ... | @@ -24,7 +24,7 @@ |
24 | 24 | { :hint_text => _('Type in the person\'s %{search_fields}') % {:search_fields => @search_fields}, |
25 | 25 | :focus => false }) %> |
26 | 26 | |
27 | - <% button_bar do %> | |
27 | + <%= button_bar do %> | |
28 | 28 | <%= submit_button('save', _('Invite'))%> |
29 | 29 | <%= button('cancel', _('Cancel'), profile.url)%> |
30 | 30 | <% end %> | ... | ... |
app/views/invite/select_friends.html.erb
app/views/licenses/_form.html.erb
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | <%= required labelled_form_field(_('Name'), f.text_field(:name)) %> |
6 | 6 | <%= labelled_form_field(_('License url'), f.text_field(:url)) %> |
7 | 7 | |
8 | - <% button_bar do %> | |
8 | + <%= button_bar do %> | |
9 | 9 | <%= submit_button('save', _('Save'))%> |
10 | 10 | <%= button('cancel', _('Cancel'), {:action => 'index'})%> |
11 | 11 | <% end %> | ... | ... |
app/views/licenses/index.html.erb
app/views/mailconf/index.html.erb
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | |
7 | 7 | <p><%= _('You already request activation of your mailbox. Please wait until an administrator approves your request.') %></p> |
8 | 8 | |
9 | - <% button_bar do %> | |
9 | + <%= button_bar do %> | |
10 | 10 | <%= button :back, _('Back to control panel'), :controller => 'profile_editor' %> |
11 | 11 | <% end %> |
12 | 12 | |
... | ... | @@ -21,10 +21,10 @@ |
21 | 21 | <h2><%= _('Configuration') %></h2> |
22 | 22 | <ul> |
23 | 23 | <li> |
24 | - <%= link_to _('Mail configuration for POP and IMAP'), 'http://www.ynternet.org/move/infos-technique-pour-utiliser-multypass-pop3-smtp-imap-ftp-quotas...' %> | |
24 | + <%= link_to _('Mail configuration for POP and IMAP'), 'http://www.ynternet.org/move/infos-technique-pour-utiliser-multypass-pop3-smtp-imap-ftp-quotas...' %> | |
25 | 25 | </li> |
26 | 26 | </ul> |
27 | - <% button_bar do %> | |
27 | + <%= button_bar do %> | |
28 | 28 | <%= button :back, _('Back to control panel'), :controller => 'profile_editor' %> |
29 | 29 | <% end %> |
30 | 30 | |
... | ... | @@ -33,7 +33,7 @@ |
33 | 33 | <h2><%= _("Enable e-Mail account below:") %></h2> |
34 | 34 | <ul><%= safe_join(profile.email_addresses.map{|i| content_tag('li', i)}, "\n") %></ul> |
35 | 35 | <blockquote><%= _("You'll be able to access a webmail from your user menu.") %></blockquote> |
36 | - <% button_bar do %> | |
36 | + <%= button_bar do %> | |
37 | 37 | <%= button(:ok, _('Enable e-Mail'), { :action => 'enable' }, :method => 'post') %> |
38 | 38 | <%= button :back, _('Back to control panel'), :controller => 'profile_editor' %> |
39 | 39 | <% end %> | ... | ... |
app/views/maps/edit_location.html.erb
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 | <%= labelled_form_field _('City'), f.text_field(:city) %> |
12 | 12 | <%= labelled_form_field _('ZIP code'), text_field(:profile_data, :zip_code) %> |
13 | 13 | <%= labelled_form_field _('Address (street and number)'), text_field(:profile_data, :address) %> |
14 | - <% button_bar do %> | |
14 | + <%= button_bar do %> | |
15 | 15 | <%= button_to_function :search, _('Locate in the map'), "addressToPoint()", :title => _("Locate the address informed above in the map below (note that you'll probably need to adjust the marker to get a precise position)") %> |
16 | 16 | <%= submit_button 'save', _('Save') %> |
17 | 17 | <%= button(:back, _('Back to control panel'), :controller => 'profile_editor') %> | ... | ... |
app/views/memberships/connections.html.erb
app/views/memberships/index.html.erb
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | |
3 | 3 | <h1><%= _('Manage my groups') %></h1> |
4 | 4 | |
5 | -<% button_bar do %> | |
5 | +<%= button_bar do %> | |
6 | 6 | <%= button(:add, _('Create a new community'), :controller => 'memberships', :action => 'new_community') %> |
7 | 7 | <%= button :add, _('Register a new enterprise'), :controller => 'enterprise_registration' if environment.enabled?('enterprise_registration') %> |
8 | 8 | <%= button :back, _('Go back'), :controller => 'profile_editor' %> | ... | ... |