Commit f176dfb255821be039fbe6a78892fc73469c5ea7
Exists in
staging
and in
4 other branches
Merge branch 'production' of gitlab.com:participa/noosfero into production
Showing
270 changed files
with
21902 additions
and
7639 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 270 files displayed.
INSTALL.https.md
@@ -11,8 +11,8 @@ as below: | @@ -11,8 +11,8 @@ as below: | ||
11 | 11 | ||
12 | # mkdir /etc/noosfero/ssl | 12 | # mkdir /etc/noosfero/ssl |
13 | # cd /etc/noosfero/ssl | 13 | # cd /etc/noosfero/ssl |
14 | - # openssl genrsa 1024 > noosfero.key | ||
15 | - # openssl req -new -x509 -nodes -sha1 -days $[10*365] -key noosfero.key > noosfero.cert | 14 | + # openssl genrsa 2048 > noosfero.key |
15 | + # openssl req -new -x509 -sha256 -nodes -days $[10*365] -key noosfero.key > noosfero.cert | ||
16 | # cat noosfero.key noosfero.cert > noosfero.pem | 16 | # cat noosfero.key noosfero.cert > noosfero.pem |
17 | 17 | ||
18 | ## Web server configuration | 18 | ## Web server configuration |
INSTALL.md
@@ -74,7 +74,7 @@ downloading from git | @@ -74,7 +74,7 @@ downloading from git | ||
74 | 74 | ||
75 | Here we are cloning the noosfero repository from git. Note: you will need to install git before. | 75 | Here we are cloning the noosfero repository from git. Note: you will need to install git before. |
76 | 76 | ||
77 | - $ git clone git://gitorious.org/noosfero/noosfero.git current | 77 | + $ git clone https://gitlab.com/noosfero/noosfero.git current |
78 | $ cd current | 78 | $ cd current |
79 | $ git checkout -b stable origin/stable | 79 | $ git checkout -b stable origin/stable |
80 | 80 |
app/controllers/admin/admin_panel_controller.rb
@@ -71,22 +71,4 @@ class AdminPanelController < AdminController | @@ -71,22 +71,4 @@ class AdminPanelController < AdminController | ||
71 | end | 71 | end |
72 | end | 72 | end |
73 | end | 73 | end |
74 | - | ||
75 | - def manage_organizations_status | ||
76 | - scope = environment.organizations | ||
77 | - @filter = params[:filter] || 'any' | ||
78 | - @title = "Organization profiles" | ||
79 | - @title = @title+" - "+@filter if @filter != 'any' | ||
80 | - | ||
81 | - if @filter == 'enabled' | ||
82 | - scope = scope.visible | ||
83 | - elsif @filter == 'disabled' | ||
84 | - scope = scope.disabled | ||
85 | - end | ||
86 | - | ||
87 | - scope = scope.order('name ASC') | ||
88 | - | ||
89 | - @q = params[:q] | ||
90 | - @collection = find_by_contents(:organizations, environment, scope, @q, {:per_page => 10, :page => params[:npage]})[:results] | ||
91 | - end | ||
92 | end | 74 | end |
@@ -0,0 +1,66 @@ | @@ -0,0 +1,66 @@ | ||
1 | +class OrganizationsController < AdminController | ||
2 | + | ||
3 | + protect 'manage_environment_organizations', :environment | ||
4 | + | ||
5 | + def index | ||
6 | + @filter = params[:filter] || 'any' | ||
7 | + @title = _('Organization profiles') | ||
8 | + @type = params[:type] || "any" | ||
9 | + @types_filter = [[_('All'), 'any'], [_('Community'), 'Community'], [_('Enterprise'), 'Enterprise']] | ||
10 | + @types_filter = @types_filter | @plugins.dispatch(:organization_types_filter_options) | ||
11 | + | ||
12 | + scope = @plugins.dispatch_first(:filter_manage_organization_scope, @type) | ||
13 | + if scope.blank? | ||
14 | + scope = environment.organizations | ||
15 | + scope = scope.where(:type => @type) if @type != 'any' | ||
16 | + end | ||
17 | + | ||
18 | + if @filter == 'enabled' | ||
19 | + scope = scope.visible | ||
20 | + elsif @filter == 'disabled' | ||
21 | + scope = scope.disabled | ||
22 | + end | ||
23 | + | ||
24 | + scope = scope.order('name ASC') | ||
25 | + | ||
26 | + @q = params[:q] | ||
27 | + @collection = find_by_contents(:organizations, environment, scope, @q, {:per_page => per_page, :page => params[:npage]})[:results] | ||
28 | + end | ||
29 | + | ||
30 | + def activate | ||
31 | + organization = environment.organizations.find(params[:id]) | ||
32 | + if organization.enable | ||
33 | + render :text => (_('%s enabled') % organization.name).to_json | ||
34 | + else | ||
35 | + render :text => (_('%s could not be enabled') % organization.name).to_json | ||
36 | + end | ||
37 | + end | ||
38 | + | ||
39 | + def deactivate | ||
40 | + organization = environment.organizations.find(params[:id]) | ||
41 | + if organization.disable | ||
42 | + render :text => (_('%s disabled') % organization.name).to_json | ||
43 | + else | ||
44 | + render :text => (_('%s could not be disable') % organization.name).to_json | ||
45 | + end | ||
46 | + end | ||
47 | + | ||
48 | + def destroy | ||
49 | + if request.post? | ||
50 | + organization = environment.organizations.find(params[:id]) | ||
51 | + if organization && organization.destroy | ||
52 | + render :text => (_('%s removed') % organization.name).to_json | ||
53 | + else | ||
54 | + render :text => (_('%s could not be removed') % organization.name).to_json | ||
55 | + end | ||
56 | + else | ||
57 | + render :nothing => true | ||
58 | + end | ||
59 | + end | ||
60 | + | ||
61 | + private | ||
62 | + | ||
63 | + def per_page | ||
64 | + 10 | ||
65 | + end | ||
66 | +end |
app/controllers/my_profile/tasks_controller.rb
1 | class TasksController < MyProfileController | 1 | class TasksController < MyProfileController |
2 | 2 | ||
3 | - protect 'perform_task', :profile | 3 | + protect [:perform_task, :view_tasks], :profile, :only => [:index] |
4 | + protect :perform_task, :profile, :except => [:index] | ||
4 | 5 | ||
5 | def index | 6 | def index |
6 | @filter_type = params[:filter_type].presence | 7 | @filter_type = params[:filter_type].presence |
@@ -14,7 +15,9 @@ class TasksController < MyProfileController | @@ -14,7 +15,9 @@ class TasksController < MyProfileController | ||
14 | 15 | ||
15 | @failed = params ? params[:failed] : {} | 16 | @failed = params ? params[:failed] : {} |
16 | 17 | ||
17 | - @responsible_candidates = profile.members.by_role(profile.roles.reject {|r| !r.has_permission?('perform_task')}) | 18 | + @responsible_candidates = profile.members.by_role(profile.roles.reject {|r| !r.has_permission?('perform_task')}) if profile.organization? |
19 | + | ||
20 | + @view_only = !current_person.has_permission?(:perform_task, profile) | ||
18 | end | 21 | end |
19 | 22 | ||
20 | def processed | 23 | def processed |
app/controllers/public/chat_controller.rb
@@ -2,6 +2,7 @@ class ChatController < PublicController | @@ -2,6 +2,7 @@ class ChatController < PublicController | ||
2 | 2 | ||
3 | before_filter :login_required | 3 | before_filter :login_required |
4 | before_filter :check_environment_feature | 4 | before_filter :check_environment_feature |
5 | + before_filter :can_send_message, :only => :register_message | ||
5 | 6 | ||
6 | def start_session | 7 | def start_session |
7 | login = user.jid | 8 | login = user.jid |
@@ -54,6 +55,16 @@ class ChatController < PublicController | @@ -54,6 +55,16 @@ class ChatController < PublicController | ||
54 | end | 55 | end |
55 | end | 56 | end |
56 | 57 | ||
58 | + def avatars | ||
59 | + profiles = environment.profiles.where(:identifier => params[:profiles]) | ||
60 | + avatar_map = profiles.inject({}) do |result, profile| | ||
61 | + result[profile.identifier] = profile_icon(profile, :minor) | ||
62 | + result | ||
63 | + end | ||
64 | + | ||
65 | + render_json avatar_map | ||
66 | + end | ||
67 | + | ||
57 | def update_presence_status | 68 | def update_presence_status |
58 | if request.xhr? | 69 | if request.xhr? |
59 | current_user.update_attributes({:chat_status_at => DateTime.now}.merge(params[:status] || {})) | 70 | current_user.update_attributes({:chat_status_at => DateTime.now}.merge(params[:status] || {})) |
@@ -62,11 +73,17 @@ class ChatController < PublicController | @@ -62,11 +73,17 @@ class ChatController < PublicController | ||
62 | end | 73 | end |
63 | 74 | ||
64 | def save_message | 75 | def save_message |
65 | - to = environment.profiles.find_by_identifier(params[:to]) | ||
66 | - body = params[:body] | ||
67 | - | ||
68 | - ChatMessage.create!(:to => to, :from => user, :body => body) | ||
69 | - render :text => 'ok' | 76 | + if request.post? |
77 | + to = environment.profiles.where(:identifier => params[:to]).first | ||
78 | + body = params[:body] | ||
79 | + | ||
80 | + begin | ||
81 | + ChatMessage.create!(:to => to, :from => user, :body => body) | ||
82 | + return render_json({:status => 0}) | ||
83 | + rescue Exception => exception | ||
84 | + return render_json({:status => 3, :message => exception.to_s, :backtrace => exception.backtrace}) | ||
85 | + end | ||
86 | + end | ||
70 | end | 87 | end |
71 | 88 | ||
72 | def recent_messages | 89 | def recent_messages |
@@ -90,8 +107,9 @@ class ChatController < PublicController | @@ -90,8 +107,9 @@ class ChatController < PublicController | ||
90 | end | 107 | end |
91 | 108 | ||
92 | def recent_conversations | 109 | def recent_conversations |
93 | - conversations_order = ActiveRecord::Base.connection.execute("select profiles.identifier from profiles inner join (select distinct r.id as id, MAX(r.created_at) as created_at from (select from_id, to_id, created_at, (case when from_id=#{user.id} then to_id else from_id end) as id from chat_messages where from_id=#{user.id} or to_id=#{user.id}) as r group by id order by created_at desc, id) as t on profiles.id=t.id order by t.created_at desc").entries.map {|e| e['identifier']} | ||
94 | - render :json => {:order => conversations_order.reverse, :domain => environment.default_hostname.gsub('.','-')}.to_json | 110 | + profiles = Profile.find_by_sql("select profiles.* from profiles inner join (select distinct r.id as id, MAX(r.created_at) as created_at from (select from_id, to_id, created_at, (case when from_id=#{user.id} then to_id else from_id end) as id from chat_messages where from_id=#{user.id} or to_id=#{user.id}) as r group by id order by created_at desc, id) as t on profiles.id=t.id order by t.created_at desc") |
111 | + jids = profiles.map(&:jid).reverse | ||
112 | + render :json => jids.to_json | ||
95 | end | 113 | end |
96 | 114 | ||
97 | #TODO Ideally this is done through roster table on ejabberd. | 115 | #TODO Ideally this is done through roster table on ejabberd. |
@@ -108,4 +126,14 @@ class ChatController < PublicController | @@ -108,4 +126,14 @@ class ChatController < PublicController | ||
108 | end | 126 | end |
109 | end | 127 | end |
110 | 128 | ||
129 | + def can_send_message | ||
130 | + return render_json({:status => 1, :message => 'Missing parameters!'}) if params[:from].nil? || params[:to].nil? || params[:message].nil? | ||
131 | + return render_json({:status => 2, :message => 'You can not send message as another user!'}) if params[:from] != user.jid | ||
132 | + # TODO Maybe register the jid in a table someday to avoid this below | ||
133 | + return render_json({:status => 3, :messsage => 'You can not send messages to strangers!'}) if user.friends.where(:identifier => params[:to].split('@').first).blank? | ||
134 | + end | ||
135 | + | ||
136 | + def render_json(result) | ||
137 | + render :text => result.to_json | ||
138 | + end | ||
111 | end | 139 | end |
app/helpers/application_helper.rb
@@ -881,7 +881,7 @@ module ApplicationHelper | @@ -881,7 +881,7 @@ module ApplicationHelper | ||
881 | field_html += capture(&block) | 881 | field_html += capture(&block) |
882 | end | 882 | end |
883 | 883 | ||
884 | - if controller.action_name == 'signup' || controller.action_name == 'new_community' || (controller.controller_name == "enterprise_registration" && controller.action_name == 'index') | 884 | + 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?) |
885 | if profile.signup_fields.include?(name) | 885 | if profile.signup_fields.include?(name) |
886 | result = field_html | 886 | result = field_html |
887 | end | 887 | end |
app/helpers/boxes_helper.rb
@@ -122,7 +122,7 @@ module BoxesHelper | @@ -122,7 +122,7 @@ module BoxesHelper | ||
122 | end | 122 | end |
123 | 123 | ||
124 | def wrap_main_content(content) | 124 | def wrap_main_content(content) |
125 | - (1..8).to_a.reverse.inject(content) { |acc,n| content_tag('div', acc, :id => 'main-content-wrapper-' + n.to_s) } | 125 | + content_tag('div', content, :class => 'main-content') |
126 | end | 126 | end |
127 | 127 | ||
128 | def extract_block_content(content) | 128 | def extract_block_content(content) |
app/helpers/chat_helper.rb
@@ -9,12 +9,12 @@ module ChatHelper | @@ -9,12 +9,12 @@ module ChatHelper | ||
9 | avatar = profile_image(user, :portrait, :class => 'avatar') | 9 | avatar = profile_image(user, :portrait, :class => 'avatar') |
10 | content_tag('span', | 10 | content_tag('span', |
11 | link_to(avatar + content_tag('span', user.name) + ui_icon('ui-icon-triangle-1-s'), | 11 | link_to(avatar + content_tag('span', user.name) + ui_icon('ui-icon-triangle-1-s'), |
12 | - '#', | 12 | + '', |
13 | :onclick => 'toggleMenu(this); return false', | 13 | :onclick => 'toggleMenu(this); return false', |
14 | :class => icon_class + ' simplemenu-trigger' | 14 | :class => icon_class + ' simplemenu-trigger' |
15 | ) + | 15 | ) + |
16 | content_tag('ul', | 16 | content_tag('ul', |
17 | - links.map{|link| content_tag('li', link_to(link[1], '#', :class => link[0], :id => link[2], 'data-jid' => user.jid), :class => 'simplemenu-item') }.join("\n"), | 17 | + links.map{|link| content_tag('li', link_to(link[1], '', :class => link[0], :id => link[2], 'data-jid' => user.jid), :class => 'simplemenu-item') }.join("\n"), |
18 | :style => 'display: none; z-index: 100', | 18 | :style => 'display: none; z-index: 100', |
19 | :class => 'simplemenu-submenu' | 19 | :class => 'simplemenu-submenu' |
20 | ), | 20 | ), |
app/helpers/profile_editor_helper.rb
@@ -141,8 +141,9 @@ module ProfileEditorHelper | @@ -141,8 +141,9 @@ module ProfileEditorHelper | ||
141 | ) | 141 | ) |
142 | end | 142 | end |
143 | 143 | ||
144 | - def control_panel_button(title, icon, url) | ||
145 | - link_to title, url, :class => 'control-panel-%s' % icon | 144 | + def control_panel_button(title, icon, url, html_options = {}) |
145 | + html_options ||= {} | ||
146 | + link_to title, url, html_options.merge(:class => 'control-panel-%s' % icon) | ||
146 | end | 147 | end |
147 | 148 | ||
148 | def unchangeable_privacy_field(profile) | 149 | def unchangeable_privacy_field(profile) |
app/helpers/search_helper.rb
@@ -106,6 +106,10 @@ module SearchHelper | @@ -106,6 +106,10 @@ module SearchHelper | ||
106 | end | 106 | end |
107 | end | 107 | end |
108 | 108 | ||
109 | + def city_with_state_for_profile(p) | ||
110 | + city_with_state(p.region) || [p.city, p.state].compact.reject(&:blank?).join(', ') | ||
111 | + end | ||
112 | + | ||
109 | def display_selector(asset, display, float = 'right') | 113 | def display_selector(asset, display, float = 'right') |
110 | display = nil if display.blank? | 114 | display = nil if display.blank? |
111 | display ||= asset_class(asset).default_search_display | 115 | display ||= asset_class(asset).default_search_display |
app/helpers/users_helper.rb
@@ -14,7 +14,7 @@ module UsersHelper | @@ -14,7 +14,7 @@ module UsersHelper | ||
14 | select_field = select_tag(:filter, options, :onchange => onchange) | 14 | select_field = select_tag(:filter, options, :onchange => onchange) |
15 | content_tag('div', | 15 | content_tag('div', |
16 | content_tag('strong', _('Filter')) + ': ' + select_field, | 16 | content_tag('strong', _('Filter')) + ': ' + select_field, |
17 | - :class => "environment-users-customize-search" | 17 | + :class => "environment-profiles-customize-search" |
18 | ) | 18 | ) |
19 | end | 19 | end |
20 | 20 |
app/models/article.rb
@@ -96,6 +96,8 @@ class Article < ActiveRecord::Base | @@ -96,6 +96,8 @@ class Article < ActiveRecord::Base | ||
96 | belongs_to :translation_of, :class_name => 'Article', :foreign_key => :translation_of_id | 96 | belongs_to :translation_of, :class_name => 'Article', :foreign_key => :translation_of_id |
97 | before_destroy :rotate_translations | 97 | before_destroy :rotate_translations |
98 | 98 | ||
99 | + acts_as_voteable | ||
100 | + | ||
99 | before_create do |article| | 101 | before_create do |article| |
100 | article.published_at ||= Time.now | 102 | article.published_at ||= Time.now |
101 | if article.reference_article && !article.parent | 103 | if article.reference_article && !article.parent |
app/models/block.rb
@@ -2,7 +2,7 @@ class Block < ActiveRecord::Base | @@ -2,7 +2,7 @@ class Block < ActiveRecord::Base | ||
2 | 2 | ||
3 | attr_accessible :title, :display, :limit, :box_id, :posts_per_page, | 3 | attr_accessible :title, :display, :limit, :box_id, :posts_per_page, |
4 | :visualization_format, :language, :display_user, | 4 | :visualization_format, :language, :display_user, |
5 | - :box, :edit_modes, :move_modes | 5 | + :box, :edit_modes, :move_modes, :mirror |
6 | 6 | ||
7 | # to be able to generate HTML | 7 | # to be able to generate HTML |
8 | include ActionView::Helpers::UrlHelper | 8 | include ActionView::Helpers::UrlHelper |
@@ -15,11 +15,23 @@ class Block < ActiveRecord::Base | @@ -15,11 +15,23 @@ class Block < ActiveRecord::Base | ||
15 | 15 | ||
16 | acts_as_list :scope => :box | 16 | acts_as_list :scope => :box |
17 | belongs_to :box | 17 | belongs_to :box |
18 | + belongs_to :mirror_block, :class_name => "Block" | ||
19 | + has_many :observers, :class_name => "Block", :foreign_key => "mirror_block_id" | ||
18 | 20 | ||
19 | acts_as_having_settings | 21 | acts_as_having_settings |
20 | 22 | ||
21 | scope :enabled, :conditions => { :enabled => true } | 23 | scope :enabled, :conditions => { :enabled => true } |
22 | 24 | ||
25 | + after_save do |block| | ||
26 | + if block.owner.kind_of?(Profile) && block.owner.is_template? && block.mirror? | ||
27 | + block.observers.each do |observer| | ||
28 | + observer.copy_from(block) | ||
29 | + observer.title = block.title | ||
30 | + observer.save | ||
31 | + end | ||
32 | + end | ||
33 | + end | ||
34 | + | ||
23 | def embedable? | 35 | def embedable? |
24 | false | 36 | false |
25 | end | 37 | end |
@@ -299,6 +311,10 @@ class Block < ActiveRecord::Base | @@ -299,6 +311,10 @@ class Block < ActiveRecord::Base | ||
299 | self.position = block.position | 311 | self.position = block.position |
300 | end | 312 | end |
301 | 313 | ||
314 | + def add_observer(block) | ||
315 | + self.observers << block | ||
316 | + end | ||
317 | + | ||
302 | private | 318 | private |
303 | 319 | ||
304 | def home_page_path | 320 | def home_page_path |
app/models/chat_message.rb
@@ -4,4 +4,5 @@ class ChatMessage < ActiveRecord::Base | @@ -4,4 +4,5 @@ class ChatMessage < ActiveRecord::Base | ||
4 | belongs_to :to, :class_name => 'Profile' | 4 | belongs_to :to, :class_name => 'Profile' |
5 | belongs_to :from, :class_name => 'Profile' | 5 | belongs_to :from, :class_name => 'Profile' |
6 | 6 | ||
7 | + validates_presence_of :from, :to | ||
7 | end | 8 | end |
app/models/comment.rb
@@ -48,6 +48,8 @@ class Comment < ActiveRecord::Base | @@ -48,6 +48,8 @@ class Comment < ActiveRecord::Base | ||
48 | 48 | ||
49 | xss_terminate :only => [ :body, :title, :name ], :on => 'validation' | 49 | xss_terminate :only => [ :body, :title, :name ], :on => 'validation' |
50 | 50 | ||
51 | + acts_as_voteable | ||
52 | + | ||
51 | def comment_root | 53 | def comment_root |
52 | (reply_of && reply_of.comment_root) || self | 54 | (reply_of && reply_of.comment_root) || self |
53 | end | 55 | end |
app/models/environment.rb
@@ -29,6 +29,7 @@ class Environment < ActiveRecord::Base | @@ -29,6 +29,7 @@ class Environment < ActiveRecord::Base | ||
29 | 'manage_environment_roles' => N_('Manage environment roles'), | 29 | 'manage_environment_roles' => N_('Manage environment roles'), |
30 | 'manage_environment_validators' => N_('Manage environment validators'), | 30 | 'manage_environment_validators' => N_('Manage environment validators'), |
31 | 'manage_environment_users' => N_('Manage environment users'), | 31 | 'manage_environment_users' => N_('Manage environment users'), |
32 | + 'manage_environment_organizations' => N_('Manage environment organizations'), | ||
32 | 'manage_environment_templates' => N_('Manage environment templates'), | 33 | 'manage_environment_templates' => N_('Manage environment templates'), |
33 | 'manage_environment_licenses' => N_('Manage environment licenses'), | 34 | 'manage_environment_licenses' => N_('Manage environment licenses'), |
34 | 'manage_environment_trusted_sites' => N_('Manage environment trusted sites'), | 35 | 'manage_environment_trusted_sites' => N_('Manage environment trusted sites'), |
@@ -74,7 +75,8 @@ class Environment < ActiveRecord::Base | @@ -74,7 +75,8 @@ class Environment < ActiveRecord::Base | ||
74 | 'edit_profile_design', | 75 | 'edit_profile_design', |
75 | 'manage_products', | 76 | 'manage_products', |
76 | 'manage_friends', | 77 | 'manage_friends', |
77 | - 'perform_task' | 78 | + 'perform_task', |
79 | + 'view_tasks' | ||
78 | ] | 80 | ] |
79 | ) | 81 | ) |
80 | end | 82 | end |
app/models/person.rb
@@ -111,6 +111,8 @@ roles] } | @@ -111,6 +111,8 @@ roles] } | ||
111 | 111 | ||
112 | belongs_to :user, :dependent => :delete | 112 | belongs_to :user, :dependent => :delete |
113 | 113 | ||
114 | + acts_as_voter | ||
115 | + | ||
114 | def can_change_homepage? | 116 | def can_change_homepage? |
115 | !environment.enabled?('cant_change_homepage') || is_admin? | 117 | !environment.enabled?('cant_change_homepage') || is_admin? |
116 | end | 118 | end |
app/models/product_category.rb
@@ -10,6 +10,9 @@ class ProductCategory < Category | @@ -10,6 +10,9 @@ class ProductCategory < Category | ||
10 | :joins => :products, | 10 | :joins => :products, |
11 | :conditions => ['products.profile_id = ?', enterprise.id] | 11 | :conditions => ['products.profile_id = ?', enterprise.id] |
12 | }} | 12 | }} |
13 | + scope :by_environment, lambda { |environment| { | ||
14 | + :conditions => ['environment_id = ?', environment.id] | ||
15 | + }} | ||
13 | scope :unique_by_level, lambda { |level| { | 16 | scope :unique_by_level, lambda { |level| { |
14 | :select => "DISTINCT ON (filtered_category) split_part(path, '/', #{level}) AS filtered_category, categories.*" | 17 | :select => "DISTINCT ON (filtered_category) split_part(path, '/', #{level}) AS filtered_category, categories.*" |
15 | }} | 18 | }} |
app/models/profile.rb
@@ -99,6 +99,7 @@ class Profile < ActiveRecord::Base | @@ -99,6 +99,7 @@ class Profile < ActiveRecord::Base | ||
99 | 'manage_friends' => N_('Manage friends'), | 99 | 'manage_friends' => N_('Manage friends'), |
100 | 'validate_enterprise' => N_('Validate enterprise'), | 100 | 'validate_enterprise' => N_('Validate enterprise'), |
101 | 'perform_task' => N_('Perform task'), | 101 | 'perform_task' => N_('Perform task'), |
102 | + 'view_tasks' => N_('View tasks'), | ||
102 | 'moderate_comments' => N_('Moderate comments'), | 103 | 'moderate_comments' => N_('Moderate comments'), |
103 | 'edit_appearance' => N_('Edit appearance'), | 104 | 'edit_appearance' => N_('Edit appearance'), |
104 | 'view_private_content' => N_('View private content'), | 105 | 'view_private_content' => N_('View private content'), |
@@ -430,6 +431,9 @@ class Profile < ActiveRecord::Base | @@ -430,6 +431,9 @@ class Profile < ActiveRecord::Base | ||
430 | new_block = block.class.new(:title => block[:title]) | 431 | new_block = block.class.new(:title => block[:title]) |
431 | new_block.copy_from(block) | 432 | new_block.copy_from(block) |
432 | new_box.blocks << new_block | 433 | new_box.blocks << new_block |
434 | + if block.mirror? | ||
435 | + block.add_observer(new_block) | ||
436 | + end | ||
433 | end | 437 | end |
434 | end | 438 | end |
435 | end | 439 | end |
@@ -1002,11 +1006,19 @@ private :generate_url, :url_options | @@ -1002,11 +1006,19 @@ private :generate_url, :url_options | ||
1002 | self.save | 1006 | self.save |
1003 | end | 1007 | end |
1004 | 1008 | ||
1009 | + def disabled? | ||
1010 | + !visible | ||
1011 | + end | ||
1012 | + | ||
1005 | def enable | 1013 | def enable |
1006 | self.visible = true | 1014 | self.visible = true |
1007 | self.save | 1015 | self.save |
1008 | end | 1016 | end |
1009 | 1017 | ||
1018 | + def enabled? | ||
1019 | + visible | ||
1020 | + end | ||
1021 | + | ||
1010 | def control_panel_settings_button | 1022 | def control_panel_settings_button |
1011 | {:title => _('Edit Profile'), :icon => 'edit-profile'} | 1023 | {:title => _('Edit Profile'), :icon => 'edit-profile'} |
1012 | end | 1024 | end |
app/models/task.rb
@@ -267,6 +267,19 @@ class Task < ActiveRecord::Base | @@ -267,6 +267,19 @@ class Task < ActiveRecord::Base | ||
267 | 267 | ||
268 | include Spammable | 268 | include Spammable |
269 | 269 | ||
270 | + #FIXME make this test | ||
271 | + def display_to?(user = nil) | ||
272 | + return true if self.target == user | ||
273 | + return false if !self.target.kind_of?(Environment) && self.target.person? | ||
274 | + | ||
275 | + if self.target.kind_of?(Environment) | ||
276 | + user.is_admin?(self.target) | ||
277 | + else | ||
278 | + self.target.members.by_role(self.target.roles.reject {|r| !r.has_permission?('perform_task')}).include?(user) | ||
279 | + end | ||
280 | + end | ||
281 | + | ||
282 | + | ||
270 | protected | 283 | protected |
271 | 284 | ||
272 | # This method must be overrided in subclasses, and its implementation must do | 285 | # This method must be overrided in subclasses, and its implementation must do |
app/views/admin_panel/index.html.erb
@@ -19,9 +19,9 @@ | @@ -19,9 +19,9 @@ | ||
19 | <table> | 19 | <table> |
20 | <tr><td><%= link_to _('User roles'), :controller => 'role' %></td></tr> | 20 | <tr><td><%= link_to _('User roles'), :controller => 'role' %></td></tr> |
21 | <tr><td><%= link_to _('Users'), :controller => 'users' %></td></tr> | 21 | <tr><td><%= link_to _('Users'), :controller => 'users' %></td></tr> |
22 | + <tr><td><%= link_to _('Organizations'), :controller => 'organizations' %></td></tr> | ||
22 | <tr><td><%= link_to _('Profile templates'), :controller => 'templates' %></td></tr> | 23 | <tr><td><%= link_to _('Profile templates'), :controller => 'templates' %></td></tr> |
23 | <tr><td><%= link_to _('Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr> | 24 | <tr><td><%= link_to _('Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr> |
24 | - <tr><td><%= link_to _('Manage organizations status'), :action => 'manage_organizations_status' %></td></tr> | ||
25 | </table> | 25 | </table> |
26 | 26 | ||
27 | 27 |
app/views/admin_panel/manage_organizations_status.html.erb
@@ -1,69 +0,0 @@ | @@ -1,69 +0,0 @@ | ||
1 | -<h1><%= _('Manage organizations') %></h1> | ||
2 | - | ||
3 | -<%= form_tag( { :action => 'manage_organizations_status' }, :method => 'get', :class => 'users-search' ) do %> | ||
4 | - | ||
5 | - <div class="search-field"> | ||
6 | - <span class="formfield"> | ||
7 | - <%= text_field_tag 'q', @q, :title => _("Find profiles"), :style=>"width:85%" %> | ||
8 | - </span> | ||
9 | - | ||
10 | - <%= submit_button(:search, _('Search')) %> | ||
11 | - </div> | ||
12 | - | ||
13 | - <div class="environment-users-results-header"> | ||
14 | - <div id='environment-users-filter-title'><%= @title %></div> | ||
15 | - | ||
16 | - <div id="environment-users-filter-filter"> | ||
17 | - <strong><%= _("Filter by: ") %></strong> | ||
18 | - | ||
19 | - <select id="profile_filter_select"> | ||
20 | - <%= options_for_select([['Any', 'any'],["Disabled profiles", "disabled"], ["Enabled profiles", "enabled"]], @filter) %> | ||
21 | - </select> | ||
22 | - </div> | ||
23 | - <div style="clear: both"></div> | ||
24 | - </div> | ||
25 | - | ||
26 | - <table> | ||
27 | - <colgroup> | ||
28 | - <col width="80%"> | ||
29 | - <col width="20%"> | ||
30 | - </colgroup> | ||
31 | - | ||
32 | - <tr> | ||
33 | - <th><%= _('Member') %></th> | ||
34 | - <th><%= _('Actions') %></th> | ||
35 | - </tr> | ||
36 | - | ||
37 | - <% @collection.each do |p| %> | ||
38 | - <tr title="<%= p.name %>"> | ||
39 | - <td><%= link_to_profile p.short_name, p.identifier, :title => p.name %> </td> | ||
40 | - | ||
41 | - <td class='actions'> | ||
42 | - <div class="members-buttons-cell"> | ||
43 | - <% if p.visible %> | ||
44 | - <%= button_without_text :'deactivate-user', _('Deactivate'), {:controller => "profile_editor", :action => 'deactivate_profile', :profile => p.identifier, :id => p.id}, :confirm => _("Do you want to deactivate this profile ?") %> | ||
45 | - <% else %> | ||
46 | - <%= button_without_text :'activate-user', _('Activate'), {:controller => "profile_editor", :action => 'activate_profile', :profile => p.identifier, :id => p.id}, :confirm => _("Do you want to activate this profile ?") %> | ||
47 | - <% end %> | ||
48 | - <%= button_without_text :'delete', _('Remove'), {:controller => "profile_editor", :action => 'destroy_profile', :profile => p.identifier, :id => p.id, :return_to => "/admin/admin_panel/manage_organizations_status"}, :method => :post, :confirm => _("Do you want to deactivate this profile ?") %> | ||
49 | - </div> | ||
50 | - </td> | ||
51 | - </tr> | ||
52 | - <% end %> | ||
53 | - </table> | ||
54 | - | ||
55 | -<% end %> | ||
56 | - | ||
57 | -<%= pagination_links @collection, {:param_name => 'npage', :page_links => true} %> | ||
58 | - | ||
59 | -<% button_bar do %> | ||
60 | - <%= button :back, _('Back'), :controller => 'admin_panel' %> | ||
61 | -<% end %> | ||
62 | - | ||
63 | -<script type="text/javascript"> | ||
64 | - jQuery(document).ready(function(){ | ||
65 | - jQuery("#profile_filter_select").change(function(){ | ||
66 | - document.location.href = '/admin/admin_panel/manage_organizations_status?filter='+this.value; | ||
67 | - }); | ||
68 | - }); | ||
69 | -</script> | ||
70 | \ No newline at end of file | 0 | \ No newline at end of file |
app/views/blocks/profile_info_actions/_community.html.erb
@@ -13,8 +13,6 @@ | @@ -13,8 +13,6 @@ | ||
13 | </li> | 13 | </li> |
14 | <% end %> | 14 | <% end %> |
15 | 15 | ||
16 | - <li><%= report_abuse(profile, :button) %></li> | ||
17 | - | ||
18 | - <%= render_environment_features(:profile_actions) %> | 16 | + <%= render :partial => 'blocks/profile_info_actions/common' %> |
19 | <% end %> | 17 | <% end %> |
20 | </ul> | 18 | </ul> |
app/views/blocks/profile_info_actions/_enterprise.html.erb
@@ -8,5 +8,5 @@ | @@ -8,5 +8,5 @@ | ||
8 | <li><%= button(:'menu-mail', _('Send an e-mail'), {:profile => profile.identifier, :controller => 'contact', :action => 'new'}, {:id => 'enterprise-contact-button'} ) %></li> | 8 | <li><%= button(:'menu-mail', _('Send an e-mail'), {:profile => profile.identifier, :controller => 'contact', :action => 'new'}, {:id => 'enterprise-contact-button'} ) %></li> |
9 | <% end %> | 9 | <% end %> |
10 | 10 | ||
11 | - <li><%= report_abuse(profile, :button) %></li> | 11 | + <%= render :partial => 'blocks/profile_info_actions/common' %> |
12 | </ul> | 12 | </ul> |
app/views/blocks/profile_info_actions/_person.html.erb
@@ -11,6 +11,6 @@ | @@ -11,6 +11,6 @@ | ||
11 | <li><%= button(:back, _('Send an e-mail'), {:profile => profile.identifier, :controller => 'contact', :action => 'new'}) %></li> | 11 | <li><%= button(:back, _('Send an e-mail'), {:profile => profile.identifier, :controller => 'contact', :action => 'new'}) %></li> |
12 | <% end %> | 12 | <% end %> |
13 | 13 | ||
14 | - <li><%= report_abuse(profile, :button) %></li> | 14 | + <%= render :partial => 'blocks/profile_info_actions/common' %> |
15 | <% end %> | 15 | <% end %> |
16 | </ul> | 16 | </ul> |
app/views/box_organizer/edit.html.erb
@@ -25,6 +25,11 @@ | @@ -25,6 +25,11 @@ | ||
25 | </div> | 25 | </div> |
26 | <div class="move-modes"> | 26 | <div class="move-modes"> |
27 | <%= labelled_form_field _('Move options:'), select_tag('block[move_modes]', options_from_collection_for_select(@block.move_block_options, :first, :last, @block.move_modes)) %> | 27 | <%= labelled_form_field _('Move options:'), select_tag('block[move_modes]', options_from_collection_for_select(@block.move_block_options, :first, :last, @block.move_modes)) %> |
28 | + <% end %> | ||
29 | + | ||
30 | + <% if @block.owner.kind_of?(Profile) && @block.owner.is_template? %> | ||
31 | + <div class="mirror_block"> | ||
32 | + <%= labelled_check_box(_("Mirror"), "block[mirror]", value = "1", checked = @block.mirror) %> | ||
28 | </div> | 33 | </div> |
29 | <% end %> | 34 | <% end %> |
30 | 35 |
app/views/chat/start_session_error.html.erb
1 | <p> | 1 | <p> |
2 | <%= ui_icon('ui-icon-alert') %> | 2 | <%= ui_icon('ui-icon-alert') %> |
3 | -<%= _('Could not connect to chat') %>, <a id='chat-retry' href='#' data-jid='<%= user.jid %>'><%= _('try again') %></a>. | 3 | +<%= _('Could not connect to chat') %>, <a id='chat-retry' href='' data-jid='<%= user.jid %>'><%= _('try again') %></a>. |
4 | </p> | 4 | </p> |
@@ -0,0 +1,41 @@ | @@ -0,0 +1,41 @@ | ||
1 | +<div class='results'> | ||
2 | + <table id='organizations-list'> | ||
3 | + <colgroup> | ||
4 | + <col width="60%"> | ||
5 | + <col width="20%"> | ||
6 | + <col width="20%"> | ||
7 | + </colgroup> | ||
8 | + | ||
9 | + <tr> | ||
10 | + <th><%= _('Profile') %></th> | ||
11 | + <th><%= _('Actions') %></th> | ||
12 | + <th><%= _('Type') %> | ||
13 | + | ||
14 | + <%= select_tag(:type, options_for_select(@types_filter, @type)) %> | ||
15 | + </th> | ||
16 | + </tr> | ||
17 | + | ||
18 | + <% @collection.each do |p| %> | ||
19 | + <tr title="<%= p.name %>"> | ||
20 | + <td><%= link_to_profile p.short_name, p.identifier, :title => p.name %> </td> | ||
21 | + | ||
22 | + <td class='actions'> | ||
23 | + <div class="members-buttons-cell"> | ||
24 | + <% if p.visible %> | ||
25 | + <%= button_without_text :'deactivate-user', _('Deactivate'), {:action => 'deactivate', :id => p.id}, :class => 'action', 'data-confirm' => _("Do you want to deactivate this organization?") %> | ||
26 | + <% else %> | ||
27 | + <%= button_without_text :'activate-user', _('Activate'), {:action => 'activate', :id => p.id}, :class => 'action', 'data-confirm' => _("Do you want to activate this organization?") %> | ||
28 | + <% end %> | ||
29 | + <%= button_without_text :'delete', _('Remove'), {:action => 'destroy', :id => p.id}, :class => 'action', 'data-method' => :post, 'data-confirm' => _("Do you want to destroy this organization?") %> | ||
30 | + </div> | ||
31 | + </td> | ||
32 | + | ||
33 | + <td> <%= _("#{p.type}") %> </td> | ||
34 | + </tr> | ||
35 | + <% end %> | ||
36 | + </table> | ||
37 | + | ||
38 | + <div> | ||
39 | + <%= pagination_links @collection, {:param_name => 'npage', :page_links => true} %> | ||
40 | + </div> | ||
41 | +</div> |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +<h1><%= _('Organizations') %></h1> | ||
2 | + | ||
3 | +<%= form_tag( { :action => 'index' }, :method => 'get', :id => 'manage-profiles' ) do %> | ||
4 | + | ||
5 | + <div class="search-field"> | ||
6 | + <span class="formfield"> | ||
7 | + <%= text_field_tag 'q', @q, :title => _('Find organizations'), :style=>"width:85%" %> | ||
8 | + </span> | ||
9 | + | ||
10 | + <%= submit_button(:search, _('Search')) %> | ||
11 | + </div> | ||
12 | + | ||
13 | + <div class="environment-profiles-results-header"> | ||
14 | + <div id='environment-profiles-filter-title'><%= @title %></div> | ||
15 | + | ||
16 | + <div id="environment-profiles-filter-filter"> | ||
17 | + <strong><%= _("Filter by: ") %></strong> | ||
18 | + <%= select_tag(:filter, options_for_select([[_('Any'), 'any'],[_('Disabled'), "disabled"], [_('Enabled') , "enabled"]], @filter)) %> | ||
19 | + </div> | ||
20 | + <div style="clear: both"></div> | ||
21 | + </div> | ||
22 | + | ||
23 | + <%= render :partial => 'results' %> | ||
24 | + | ||
25 | + <% button_bar do %> | ||
26 | + <%= button :back, _('Back'), :controller => 'admin_panel' %> | ||
27 | + <% end %> | ||
28 | +<% end %> | ||
29 | + | ||
30 | +<%= javascript_include_tag 'manage-organizations' %> |
app/views/profile_editor/index.html.erb
@@ -73,7 +73,7 @@ | @@ -73,7 +73,7 @@ | ||
73 | <%= control_panel_button(_('Edit welcome page'), 'welcome-page', :action => 'welcome_page') if has_welcome_page %> | 73 | <%= control_panel_button(_('Edit welcome page'), 'welcome-page', :action => 'welcome_page') if has_welcome_page %> |
74 | 74 | ||
75 | <% @plugins.dispatch(:control_panel_buttons).each do |button| %> | 75 | <% @plugins.dispatch(:control_panel_buttons).each do |button| %> |
76 | - <%= control_panel_button(button[:title], button[:icon], button[:url]) %> | 76 | + <%= control_panel_button(button[:title], button[:icon], button[:url], button[:html_options]) %> |
77 | <% end %> | 77 | <% end %> |
78 | 78 | ||
79 | <% end %> | 79 | <% end %> |
@@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
1 | +jQuery('#manage-profiles .results').replaceWith('<%= escape_javascript(render 'results') %>'); |
app/views/shared/logged_in/xmpp_chat.html.erb
@@ -7,13 +7,13 @@ | @@ -7,13 +7,13 @@ | ||
7 | var $own_name = '<%= user.name %>'; | 7 | var $own_name = '<%= user.name %>'; |
8 | var $muc_domain = '<%= "conference.#{environment.default_hostname}" %>'; | 8 | var $muc_domain = '<%= "conference.#{environment.default_hostname}" %>'; |
9 | var $bosh_service = '//<%= environment.default_hostname %>/http-bind'; | 9 | var $bosh_service = '//<%= environment.default_hostname %>/http-bind'; |
10 | - var $user_unavailable_error = '<%= _("<strong>ooops!</strong> The message could not be sent because the user is not online") %>'; | 10 | + var $user_unavailable_error = '<%= _("The user is not online now. He/She will receive these messages as soon as he/she gets online.") %>'; |
11 | var $update_presence_status_every = <%= User.expires_chat_status_every.minutes %>; | 11 | var $update_presence_status_every = <%= User.expires_chat_status_every.minutes %>; |
12 | var $presence = '<%= current_user.last_chat_status %>'; | 12 | var $presence = '<%= current_user.last_chat_status %>'; |
13 | </script> | 13 | </script> |
14 | 14 | ||
15 | - | ||
16 | <div id="chat-label"> | 15 | <div id="chat-label"> |
16 | + <span id="unread-messages"></span> | ||
17 | <span class="right-arrow">▶</span> | 17 | <span class="right-arrow">▶</span> |
18 | <span class="title"><%= _('Chat') %></span> | 18 | <span class="title"><%= _('Chat') %></span> |
19 | </div> | 19 | </div> |
@@ -98,10 +98,5 @@ | @@ -98,10 +98,5 @@ | ||
98 | </div> | 98 | </div> |
99 | </div> | 99 | </div> |
100 | </div> | 100 | </div> |
101 | - | ||
102 | - <div class="error-message"> | ||
103 | - <span class='error'>%{text}</span> | ||
104 | - </div> | ||
105 | - | ||
106 | </div> | 101 | </div> |
107 | </div> | 102 | </div> |
@@ -0,0 +1,8 @@ | @@ -0,0 +1,8 @@ | ||
1 | +<% label_name = profile.person? ? _('Open chat') : _('Join chat room') %> | ||
2 | +<% display = profile.person? ? profile.friends.include?(user) : profile.members.include?(user) %> | ||
3 | + | ||
4 | +<% if display %> | ||
5 | + <li> | ||
6 | + <%= button(:chat, label_name , {}, :class => 'open-conversation', 'data-jid' => profile.jid) %> | ||
7 | + </li> | ||
8 | +<% end %> |
app/views/tasks/_task.html.erb
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | 2 | ||
3 | <%= render :partial => 'task_icon', :locals => {:task => task} %> | 3 | <%= render :partial => 'task_icon', :locals => {:task => task} %> |
4 | 4 | ||
5 | - <% if profile.organization? && @responsible_candidates.present? %> | 5 | + <% if !@view_only && profile.organization? && @responsible_candidates.present? %> |
6 | <div class="task_responsible"> | 6 | <div class="task_responsible"> |
7 | <span class="label"><%= _('Assign to:') %></span> | 7 | <span class="label"><%= _('Assign to:') %></span> |
8 | <span> | 8 | <span> |
@@ -12,8 +12,16 @@ | @@ -12,8 +12,16 @@ | ||
12 | </div> | 12 | </div> |
13 | <% end %> | 13 | <% end %> |
14 | 14 | ||
15 | + <% if @view_only && task.responsible.present? %> | ||
16 | + <div class="task_responsible"> | ||
17 | + <span class="label"><%= _('Assigned to:') %></span> | ||
18 | + <span class="value"><%= task.responsible.name %></span> | ||
19 | + </div> | ||
20 | + <% end %> | ||
21 | + | ||
15 | <div class="task_decisions"> | 22 | <div class="task_decisions"> |
16 | - <%= | 23 | + <% unless @view_only %> |
24 | + <%= | ||
17 | labelled_radio_button(_("Accept"), "tasks[#{task.id}][decision]", 'finish', task.default_decision == 'accept', | 25 | labelled_radio_button(_("Accept"), "tasks[#{task.id}][decision]", 'finish', task.default_decision == 'accept', |
18 | :id => "decision-finish-#{task.id}", | 26 | :id => "decision-finish-#{task.id}", |
19 | :class => 'task_accept_radio', | 27 | :class => 'task_accept_radio', |
@@ -29,7 +37,8 @@ | @@ -29,7 +37,8 @@ | ||
29 | :class => 'task_skip_radio', | 37 | :class => 'task_skip_radio', |
30 | :disabled => task.skip_disabled?, | 38 | :disabled => task.skip_disabled?, |
31 | :task_id => "#{task.id}") | 39 | :task_id => "#{task.id}") |
32 | - %> | 40 | + %> |
41 | + <% end %> | ||
33 | </div><!-- class="task_decisions" --> | 42 | </div><!-- class="task_decisions" --> |
34 | 43 | ||
35 | <div class="task_date"><%= show_time(task.created_at) %></div> | 44 | <div class="task_date"><%= show_time(task.created_at) %></div> |
app/views/tasks/index.html.erb
@@ -29,9 +29,11 @@ | @@ -29,9 +29,11 @@ | ||
29 | <p> | 29 | <p> |
30 | <%= labelled_text_field(_("Text filter")+': ', :filter_text, nil, {:id => 'filter-text',:value => @filter_text}) %> | 30 | <%= labelled_text_field(_("Text filter")+': ', :filter_text, nil, {:id => 'filter-text',:value => @filter_text}) %> |
31 | </p> | 31 | </p> |
32 | - <p> | ||
33 | - <%= labelled_select(_('Assigned to')+': ', :filter_responsible, :id, :name, @filter_responsible, [OpenStruct.new(:name => _('All'), :id => nil), OpenStruct.new(:name => _('Unassigned'), :id => -1)] + @responsible_candidates) %> | ||
34 | - </p> | 32 | + <% if profile.organization? %> |
33 | + <p> | ||
34 | + <%= labelled_select(_('Assigned to')+': ', :filter_responsible, :id, :name, @filter_responsible, [OpenStruct.new(:name => _('All'), :id => nil), OpenStruct.new(:name => _('Unassigned'), :id => -1)] + @responsible_candidates, :class => 'filter_responsible') %> | ||
35 | + </p> | ||
36 | + <% end %> | ||
35 | <p> | 37 | <p> |
36 | <%= submit_button(:search, _('Search')) %> | 38 | <%= submit_button(:search, _('Search')) %> |
37 | </p> | 39 | </p> |
@@ -44,25 +46,30 @@ | @@ -44,25 +46,30 @@ | ||
44 | </p> | 46 | </p> |
45 | <% else %> | 47 | <% else %> |
46 | <%= form_tag :action => 'close' do%> | 48 | <%= form_tag :action => 'close' do%> |
47 | - <% button_bar do %> | 49 | + <% button_bar(:class => 'task-actions') do %> |
48 | <%# FiXME button(:edit, _('View my requests'), :action => 'list_requested') %> | 50 | <%# FiXME button(:edit, _('View my requests'), :action => 'list_requested') %> |
49 | <%# FIXME button('menu-mail', _('Send request'), :action => 'new') %> | 51 | <%# FIXME button('menu-mail', _('Send request'), :action => 'new') %> |
50 | <%= submit_button :save, _("Apply!") %> | 52 | <%= submit_button :save, _("Apply!") %> |
51 | <%= button(:edit, _('View processed tasks'), :action => 'processed') %> | 53 | <%= button(:edit, _('View processed tasks'), :action => 'processed') %> |
52 | <%= button(:back, _('Back to control panel'), :controller => 'profile_editor') %> | 54 | <%= button(:back, _('Back to control panel'), :controller => 'profile_editor') %> |
53 | - <% end %> | 55 | + <% end unless @view_only %> |
54 | 56 | ||
55 | <ul class='task-list'> | 57 | <ul class='task-list'> |
56 | - <p> | ||
57 | - <%= labelled_select(_("Set all to: "), 'set-decisions', 'first', 'last', nil, [['',""],['accept',_("Accept")],['reject',_("Reject")],['skip',_("Skip")]], :id => "up-set-all-tasks-to") %> | ||
58 | - </p> | 58 | + <% unless @view_only %> |
59 | + <p> | ||
60 | + <%= labelled_select(_("Set all to: "), 'set-decisions', 'first', 'last', nil, [['',""],['accept',_("Accept")],['reject',_("Reject")],['skip',_("Skip")]], :id => "up-set-all-tasks-to") %> | ||
61 | + </p> | ||
62 | + <% end %> | ||
59 | 63 | ||
60 | <div class="task_boxes"> | 64 | <div class="task_boxes"> |
61 | <%= render :partial => 'task', :collection => @tasks %> | 65 | <%= render :partial => 'task', :collection => @tasks %> |
62 | </div> | 66 | </div> |
63 | - <p> | ||
64 | - <%= labelled_select(_("Set all to: "), 'set-decisions', 'first', 'last', nil, [['',""],['accept',_("Accept")],['reject',_("Reject")],['skip',_("Skip")]], :id => "down-set-all-tasks-to") %> | ||
65 | - </p> | 67 | + |
68 | + <% unless @view_only %> | ||
69 | + <p> | ||
70 | + <%= labelled_select(_("Set all to: "), 'set-decisions', 'first', 'last', nil, [['',""],['accept',_("Accept")],['reject',_("Reject")],['skip',_("Skip")]], :id => "down-set-all-tasks-to") %> | ||
71 | + </p> | ||
72 | + <% end %> | ||
66 | </ul> | 73 | </ul> |
67 | 74 | ||
68 | <script> | 75 | <script> |
@@ -74,13 +81,13 @@ | @@ -74,13 +81,13 @@ | ||
74 | 81 | ||
75 | <%= pagination_links(@tasks)%> | 82 | <%= pagination_links(@tasks)%> |
76 | 83 | ||
77 | - <% button_bar do %> | 84 | + <% button_bar(:class => 'task-actions') do %> |
78 | <%# FiXME button(:edit, _('View my requests'), :action => 'list_requested') %> | 85 | <%# FiXME button(:edit, _('View my requests'), :action => 'list_requested') %> |
79 | <%# FIXME button('menu-mail', _('Send request'), :action => 'new') %> | 86 | <%# FIXME button('menu-mail', _('Send request'), :action => 'new') %> |
80 | <%= submit_button :save, _("Apply!") %> | 87 | <%= submit_button :save, _("Apply!") %> |
81 | <%= button(:edit, _('View processed tasks'), :action => 'processed') %> | 88 | <%= button(:edit, _('View processed tasks'), :action => 'processed') %> |
82 | <%= button(:back, _('Back to control panel'), :controller => 'profile_editor') %> | 89 | <%= button(:back, _('Back to control panel'), :controller => 'profile_editor') %> |
83 | - <% end %> | 90 | + <% end unless @view_only %> |
84 | <% end %> | 91 | <% end %> |
85 | <% end %> | 92 | <% end %> |
86 | </p> | 93 | </p> |
app/views/users/_users_list.html.erb
1 | -<div class="environment-users-results-header"> | ||
2 | - <div id='environment-users-filter-title'><%= users_filter_title(@filter) %></div> | 1 | +<div class="environment-profiles-results-header"> |
2 | + <div id='environment-profiles-filter-title'><%= users_filter_title(@filter) %></div> | ||
3 | <%= filter_selector(@filter) %> | 3 | <%= filter_selector(@filter) %> |
4 | <div style="clear: both"></div> | 4 | <div style="clear: both"></div> |
5 | </div> | 5 | </div> |
config.ru
@@ -4,7 +4,7 @@ require ::File.expand_path('../config/environment', __FILE__) | @@ -4,7 +4,7 @@ require ::File.expand_path('../config/environment', __FILE__) | ||
4 | 4 | ||
5 | #use Rails::Rack::LogTailer | 5 | #use Rails::Rack::LogTailer |
6 | #use Rails::Rack::Static | 6 | #use Rails::Rack::Static |
7 | -#run ActionController::Dispatcher.news | 7 | +#run ActionController::Dispatcher.new |
8 | 8 | ||
9 | rails_app = Rack::Builder.new do | 9 | rails_app = Rack::Builder.new do |
10 | run Noosfero::Application | 10 | run Noosfero::Application |
config/initializers/delayed_job_config.rb
@@ -23,3 +23,13 @@ end | @@ -23,3 +23,13 @@ end | ||
23 | # end | 23 | # end |
24 | # alias_method_chain :handle_failed_job, :loggin | 24 | # alias_method_chain :handle_failed_job, :loggin |
25 | #end | 25 | #end |
26 | + | ||
27 | +# Chain delayed job's handle_failed_job method to do exception notification | ||
28 | +Delayed::Worker.class_eval do | ||
29 | + def handle_failed_job_with_notification job, error | ||
30 | + handle_failed_job_without_notification job, error | ||
31 | + ExceptionNotifier.notify_exception error, exception_recipients: NOOSFERO_CONF['exception_recipients'], | ||
32 | + data: {job: job, handler: job.handler} rescue nil | ||
33 | + end | ||
34 | + alias_method_chain :handle_failed_job, :notification | ||
35 | +end |
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +# Be sure to restart your server when you modify this file. | ||
2 | +# This file contains settings for ActionController::ParamsWrapper which | ||
3 | +# is enabled by default. | ||
4 | + | ||
5 | +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. | ||
6 | +ActiveSupport.on_load(:action_controller) do | ||
7 | + wrap_parameters :format => [] | ||
8 | +end | ||
9 | + | ||
10 | +# Disable root element in JSON by default. | ||
11 | +ActiveSupport.on_load(:active_record) do | ||
12 | + self.include_root_in_json = false | ||
13 | +end |
db/migrate/20140407013817_add_private_token_info_to_users.rb
0 → 100644
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +class AddPrivateTokenInfoToUsers < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + add_column :users, :private_token, :string | ||
4 | + add_column :users, :private_token_generated_at, :datetime | ||
5 | + end | ||
6 | + | ||
7 | + def self.down | ||
8 | + remove_column :users, :private_token | ||
9 | + remove_column :users, :private_token_generated_at | ||
10 | + end | ||
11 | +end |
db/migrate/20140820173129_create_chat_messages.rb
1 | class CreateChatMessages < ActiveRecord::Migration | 1 | class CreateChatMessages < ActiveRecord::Migration |
2 | - def change | 2 | + def up |
3 | create_table :chat_messages do |t| | 3 | create_table :chat_messages do |t| |
4 | t.integer :to_id | 4 | t.integer :to_id |
5 | t.integer :from_id | 5 | t.integer :from_id |
@@ -8,4 +8,8 @@ class CreateChatMessages < ActiveRecord::Migration | @@ -8,4 +8,8 @@ class CreateChatMessages < ActiveRecord::Migration | ||
8 | t.timestamps | 8 | t.timestamps |
9 | end | 9 | end |
10 | end | 10 | end |
11 | + | ||
12 | + def down | ||
13 | + drop_table :chat_messages | ||
14 | + end | ||
11 | end | 15 | end |
db/migrate/20141014205254_change_chat_messages_columns_and_add_indexes.rb
0 → 100644
@@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
1 | +class ChangeChatMessagesColumnsAndAddIndexes < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + change_table :chat_messages do |t| | ||
4 | + t.change :from_id, :integer, :null => false | ||
5 | + t.change :to_id, :integer, :null => false | ||
6 | + t.change :body, :text | ||
7 | + end | ||
8 | + add_index :chat_messages, :from_id | ||
9 | + add_index :chat_messages, :to_id | ||
10 | + add_index :chat_messages, :created_at | ||
11 | + end | ||
12 | + | ||
13 | + def down | ||
14 | + remove_index :chat_messages, :from_id | ||
15 | + remove_index :chat_messages, :to_id | ||
16 | + remove_index :chat_messages, :created_at | ||
17 | + change_table :chat_messages do |t| | ||
18 | + t.change :from_id, :integer, :null => true | ||
19 | + t.change :to_id, :integer, :null => true | ||
20 | + t.change :body, :string | ||
21 | + end | ||
22 | + end | ||
23 | +end |
db/migrate/20150223180807_add_private_token_info_to_users.rb
@@ -1,11 +0,0 @@ | @@ -1,11 +0,0 @@ | ||
1 | -class AddPrivateTokenInfoToUsers < ActiveRecord::Migration | ||
2 | - def self.up | ||
3 | - add_column :users, :private_token, :string | ||
4 | - add_column :users, :private_token_generated_at, :datetime | ||
5 | - end | ||
6 | - | ||
7 | - def self.down | ||
8 | - remove_column :users, :private_token | ||
9 | - remove_column :users, :private_token_generated_at | ||
10 | - end | ||
11 | -end |
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +class AddMirrorToBlock < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + change_table :blocks do |t| | ||
4 | + t.boolean :mirror, :default => false | ||
5 | + t.references :mirror_block | ||
6 | + t.references :observers | ||
7 | + end | ||
8 | + end | ||
9 | + | ||
10 | + def down | ||
11 | + remove_column :blocks, :mirror | ||
12 | + remove_column :blocks, :mirror_block_id | ||
13 | + remove_column :blocks, :observers_id | ||
14 | + end | ||
15 | +end |
db/schema.rb
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | # | 11 | # |
12 | # It's strongly recommended to check this file into your version control system. | 12 | # It's strongly recommended to check this file into your version control system. |
13 | 13 | ||
14 | -ActiveRecord::Schema.define(:version => 20150513213939) do | 14 | +ActiveRecord::Schema.define(:version => 20150525101430) do |
15 | 15 | ||
16 | create_table "abuse_reports", :force => true do |t| | 16 | create_table "abuse_reports", :force => true do |t| |
17 | t.integer "reporter_id" | 17 | t.integer "reporter_id" |
@@ -183,10 +183,13 @@ ActiveRecord::Schema.define(:version => 20150513213939) do | @@ -183,10 +183,13 @@ ActiveRecord::Schema.define(:version => 20150513213939) do | ||
183 | t.string "type" | 183 | t.string "type" |
184 | t.text "settings" | 184 | t.text "settings" |
185 | t.integer "position" | 185 | t.integer "position" |
186 | - t.boolean "enabled", :default => true | 186 | + t.boolean "enabled", :default => true |
187 | t.datetime "created_at" | 187 | t.datetime "created_at" |
188 | t.datetime "updated_at" | 188 | t.datetime "updated_at" |
189 | t.datetime "fetched_at" | 189 | t.datetime "fetched_at" |
190 | + t.boolean "mirror", :default => false | ||
191 | + t.integer "mirror_block_id" | ||
192 | + t.integer "observers_id" | ||
190 | end | 193 | end |
191 | 194 | ||
192 | add_index "blocks", ["box_id"], :name => "index_blocks_on_box_id" | 195 | add_index "blocks", ["box_id"], :name => "index_blocks_on_box_id" |
@@ -242,13 +245,17 @@ ActiveRecord::Schema.define(:version => 20150513213939) do | @@ -242,13 +245,17 @@ ActiveRecord::Schema.define(:version => 20150513213939) do | ||
242 | end | 245 | end |
243 | 246 | ||
244 | create_table "chat_messages", :force => true do |t| | 247 | create_table "chat_messages", :force => true do |t| |
245 | - t.integer "to_id" | ||
246 | - t.integer "from_id" | ||
247 | - t.string "body" | 248 | + t.integer "from_id", :null => false |
249 | + t.integer "to_id", :null => false | ||
250 | + t.text "body" | ||
248 | t.datetime "created_at", :null => false | 251 | t.datetime "created_at", :null => false |
249 | t.datetime "updated_at", :null => false | 252 | t.datetime "updated_at", :null => false |
250 | end | 253 | end |
251 | 254 | ||
255 | + add_index "chat_messages", ["created_at"], :name => "index_chat_messages_on_created_at" | ||
256 | + add_index "chat_messages", ["from_id"], :name => "index_chat_messages_on_from_id" | ||
257 | + add_index "chat_messages", ["to_id"], :name => "index_chat_messages_on_to_id" | ||
258 | + | ||
252 | create_table "comments", :force => true do |t| | 259 | create_table "comments", :force => true do |t| |
253 | t.string "title" | 260 | t.string "title" |
254 | t.text "body" | 261 | t.text "body" |
@@ -264,6 +271,7 @@ ActiveRecord::Schema.define(:version => 20150513213939) do | @@ -264,6 +271,7 @@ ActiveRecord::Schema.define(:version => 20150513213939) do | ||
264 | t.string "user_agent" | 271 | t.string "user_agent" |
265 | t.string "referrer" | 272 | t.string "referrer" |
266 | t.text "settings" | 273 | t.text "settings" |
274 | + t.integer "paragraph_id" | ||
267 | end | 275 | end |
268 | 276 | ||
269 | add_index "comments", ["source_id", "spam"], :name => "index_comments_on_source_id_and_spam" | 277 | add_index "comments", ["source_id", "spam"], :name => "index_comments_on_source_id_and_spam" |
@@ -677,12 +685,13 @@ ActiveRecord::Schema.define(:version => 20150513213939) do | @@ -677,12 +685,13 @@ ActiveRecord::Schema.define(:version => 20150513213939) do | ||
677 | t.date "end_date" | 685 | t.date "end_date" |
678 | t.integer "requestor_id" | 686 | t.integer "requestor_id" |
679 | t.integer "target_id" | 687 | t.integer "target_id" |
680 | - t.string "code", :limit => 40 | 688 | + t.string "code", :limit => 40 |
681 | t.string "type" | 689 | t.string "type" |
682 | t.datetime "created_at" | 690 | t.datetime "created_at" |
683 | t.string "target_type" | 691 | t.string "target_type" |
684 | t.integer "image_id" | 692 | t.integer "image_id" |
685 | - t.boolean "spam", :default => false | 693 | + t.boolean "spam", :default => false |
694 | + t.integer "responsible_id" | ||
686 | end | 695 | end |
687 | 696 | ||
688 | add_index "tasks", ["requestor_id"], :name => "index_tasks_on_requestor_id" | 697 | add_index "tasks", ["requestor_id"], :name => "index_tasks_on_requestor_id" |
debian/update-noosfero-apache
@@ -21,6 +21,13 @@ if test -x /usr/share/noosfero/script/apacheconf; then | @@ -21,6 +21,13 @@ if test -x /usr/share/noosfero/script/apacheconf; then | ||
21 | if ! test -e "$apache_site"; then | 21 | if ! test -e "$apache_site"; then |
22 | echo "Generating apache virtual host ..." | 22 | echo "Generating apache virtual host ..." |
23 | cd /usr/share/noosfero && su noosfero -c "RAILS_ENV=production ./script/apacheconf virtualhosts" > "$apache_site" | 23 | cd /usr/share/noosfero && su noosfero -c "RAILS_ENV=production ./script/apacheconf virtualhosts" > "$apache_site" |
24 | + else | ||
25 | + pattern="Include \/etc\/noosfero\/apache\/virtualhost.conf" | ||
26 | + include="Include \/usr\/share\/noosfero\/util\/chat\/apache\/xmpp.conf" | ||
27 | + if ! cat $apache_site | grep "^ *$include" > /dev/null ; then | ||
28 | + echo "Updating apache virtual host ..." | ||
29 | + sed -i "s/.*$pattern.*/ $include\n&/" $apache_site | ||
30 | + fi | ||
24 | fi | 31 | fi |
25 | 32 | ||
26 | echo 'Noosfero Apache configuration updated.' | 33 | echo 'Noosfero Apache configuration updated.' |
etc/pound.cfg
@@ -0,0 +1,64 @@ | @@ -0,0 +1,64 @@ | ||
1 | +Feature: user template | ||
2 | + As an user | ||
3 | + I want to create templates with mirror blocks | ||
4 | + In order to keep these blocks always updated | ||
5 | + | ||
6 | + Background: | ||
7 | + Given the following users | ||
8 | + | login | name | is_template | | ||
9 | + | person | person | true | | ||
10 | + And the following blocks | ||
11 | + | owner | type | mirror | | ||
12 | + | person | ArticleBlock | true | | ||
13 | + | person | RawHTMLBlock | false | | ||
14 | + And I go to /account/signup | ||
15 | + And I fill in "Username" with "mario" | ||
16 | + And I fill in "Password" with "123456" | ||
17 | + And I fill in "Password confirmation" with "123456" | ||
18 | + And I fill in "e-Mail" with "mario@mario.com" | ||
19 | + And I fill in "Full name" with "Mario" | ||
20 | + And wait for the captcha signup time | ||
21 | + And I press "Create my account" | ||
22 | + And I am logged in as admin | ||
23 | + | ||
24 | + @selenium | ||
25 | + Scenario: The block Article name is changed | ||
26 | + Given I am on person's control panel | ||
27 | + And I follow "Edit sideboxes" | ||
28 | + And display ".button-bar" | ||
29 | + And I follow "Edit" within ".article-block" | ||
30 | + And I fill in "Custom title for this block:" with "Mirror" | ||
31 | + And I press "Save" | ||
32 | + And I go to /profile/mario | ||
33 | + Then I should see "Mirror" | ||
34 | + | ||
35 | + @selenium | ||
36 | + Scenario: The block LinkList is changed but the user's block doesnt change | ||
37 | + Given I am on person's control panel | ||
38 | + And I follow "Edit sideboxes" | ||
39 | + And display ".button-bar" | ||
40 | + And I follow "Edit" within ".raw-html-block" | ||
41 | + And I fill in "Custom title for this block:" with "Raw HTML Block" | ||
42 | + And I press "Save" | ||
43 | + And I go to /profile/mario | ||
44 | + Then I should not see "Raw HTML Block" | ||
45 | + | ||
46 | + @selenium | ||
47 | + Scenario: The block Article cannot move or modify | ||
48 | + Given I am on person's control panel | ||
49 | + And I follow "Edit sideboxes" | ||
50 | + And display ".button-bar" | ||
51 | + And I follow "Edit" within ".article-block" | ||
52 | + And I select "Cannot be moved" from "Move options:" | ||
53 | + And I select "Cannot be modified" from "Edit options:" | ||
54 | + And I press "Save" | ||
55 | + And I follow "Logout" | ||
56 | + And Mario's account is activated | ||
57 | + And I follow "Login" | ||
58 | + And I fill in "Username / Email" with "mario" | ||
59 | + And I fill in "Password" with "123456" | ||
60 | + And I press "Log in" | ||
61 | + And I go to /myprofile/mario | ||
62 | + And I follow "Edit sideboxes" | ||
63 | + And display ".button-bar" | ||
64 | + Then I should not see "Edit" within ".article-block" |
lib/noosfero/api/api.rb
@@ -44,6 +44,7 @@ module Noosfero | @@ -44,6 +44,7 @@ module Noosfero | ||
44 | mount V1::People | 44 | mount V1::People |
45 | mount V1::Enterprises | 45 | mount V1::Enterprises |
46 | mount V1::Categories | 46 | mount V1::Categories |
47 | + mount V1::Tasks | ||
47 | mount Session | 48 | mount Session |
48 | 49 | ||
49 | # hook point which allow plugins to add Grape::API extensions to API::API | 50 | # hook point which allow plugins to add Grape::API extensions to API::API |
lib/noosfero/api/entities.rb
lib/noosfero/api/helpers.rb
@@ -50,6 +50,11 @@ module Noosfero | @@ -50,6 +50,11 @@ module Noosfero | ||
50 | article.display_to?(current_user.person) ? article : forbidden! | 50 | article.display_to?(current_user.person) ? article : forbidden! |
51 | end | 51 | end |
52 | 52 | ||
53 | + def find_task(tasks, id) | ||
54 | + task = tasks.find(id) | ||
55 | + task.display_to?(current_user.person) ? task : forbidden! | ||
56 | + end | ||
57 | + | ||
53 | def make_conditions_with_parameter(params = {}) | 58 | def make_conditions_with_parameter(params = {}) |
54 | parsed_params = parser_params(params) | 59 | parsed_params = parser_params(params) |
55 | conditions = {} | 60 | conditions = {} |
lib/noosfero/api/request_logger.rb
@@ -9,7 +9,6 @@ module Noosfero | @@ -9,7 +9,6 @@ module Noosfero | ||
9 | path: request.path, | 9 | path: request.path, |
10 | params: request.params.to_hash.except('password'), | 10 | params: request.params.to_hash.except('password'), |
11 | method: request.request_method, | 11 | method: request.request_method, |
12 | - total: (duration * 1000).round(2), | ||
13 | } | 12 | } |
14 | end | 13 | end |
15 | end | 14 | end |
@@ -0,0 +1,164 @@ | @@ -0,0 +1,164 @@ | ||
1 | +module Noosfero | ||
2 | + module API | ||
3 | + module V1 | ||
4 | + class Tasks < Grape::API | ||
5 | +# before { authenticate! } | ||
6 | + | ||
7 | +# ARTICLE_TYPES = Article.descendants.map{|a| a.to_s} | ||
8 | + | ||
9 | + resource :tasks do | ||
10 | + | ||
11 | + # Collect tasks | ||
12 | + # | ||
13 | + # Parameters: | ||
14 | + # from - date where the search will begin. If nothing is passed the default date will be the date of the first article created | ||
15 | + # oldest - Collect the oldest articles. If nothing is passed the newest articles are collected | ||
16 | + # limit - amount of articles returned. The default value is 20 | ||
17 | + # | ||
18 | + # Example Request: | ||
19 | + # GET host/api/v1/tasks?from=2013-04-04-14:41:43&until=2015-04-04-14:41:43&limit=10&private_token=e96fff37c2238fdab074d1dcea8e6317 | ||
20 | + get do | ||
21 | + #FIXME check for permission | ||
22 | + tasks = select_filtered_collection_of(environment, 'tasks', params) | ||
23 | + present tasks, :with => Entities::Task, :fields => params[:fields] | ||
24 | + end | ||
25 | + | ||
26 | + desc "Return the task id" | ||
27 | + get ':id' do | ||
28 | + task = find_task(environment.tasks, params[:id]) | ||
29 | + present task, :with => Entities::Task, :fields => params[:fields] | ||
30 | + end | ||
31 | + | ||
32 | + | ||
33 | + end | ||
34 | + | ||
35 | + resource :communities do | ||
36 | + segment '/:community_id' do | ||
37 | + resource :tasks do | ||
38 | + get do | ||
39 | + #FIXME check for permission | ||
40 | + community = environment.communities.find(params[:community_id]) | ||
41 | + tasks = select_filtered_collection_of(community, 'tasks', params) | ||
42 | + present tasks, :with => Entities::Task, :fields => params[:fields] | ||
43 | + end | ||
44 | + | ||
45 | + get ':id' do | ||
46 | + community = environment.communities.find(params[:community_id]) | ||
47 | + task = find_task(community.tasks, params[:id]) | ||
48 | + present task, :with => Entities::Task, :fields => params[:fields] | ||
49 | + end | ||
50 | + | ||
51 | + # Example Request: | ||
52 | + # POST api/v1/communites/:community_id/articles?private_token=234298743290432&article[name]=title&article[body]=body | ||
53 | + post do | ||
54 | + community = environment.communities.find(params[:community_id]) | ||
55 | +#FIXME see the correct permission | ||
56 | + return forbidden! unless current_person.can_post_content?(community) | ||
57 | +#FIXME check the task type before create | ||
58 | + klass_type= params[:content_type].nil? ? 'Task' : params[:content_type] | ||
59 | +# return forbidden! unless ARTICLE_TYPES.include?(klass_type) | ||
60 | +# | ||
61 | + task = klass_type.constantize.new(params[:task]) | ||
62 | + task.requestor = current_person | ||
63 | + task.target = community | ||
64 | + | ||
65 | + if !task.save | ||
66 | + render_api_errors!(task.errors.full_messages) | ||
67 | + end | ||
68 | + present task, :with => Entities::Task, :fields => params[:fields] | ||
69 | + end | ||
70 | + | ||
71 | + end | ||
72 | + end | ||
73 | + | ||
74 | + end | ||
75 | + | ||
76 | + resource :people do | ||
77 | + segment '/:person_id' do | ||
78 | + resource :tasks do | ||
79 | + get do | ||
80 | +# person = environment.people.find(params[:person_id]) | ||
81 | +# articles = select_filtered_collection_of(person, 'articles', params) | ||
82 | +# articles = articles.display_filter(current_person, person) | ||
83 | +tasks = Task.all | ||
84 | + present tasks, :with => Entities::Task, :fields => params[:fields] | ||
85 | + end | ||
86 | + | ||
87 | + get ':id' do | ||
88 | +# person = environment.people.find(params[:person_id]) | ||
89 | +# article = find_article(person.articles, params[:id]) | ||
90 | +task = Task.first | ||
91 | + present task, :with => Entities::Task, :fields => params[:fields] | ||
92 | + end | ||
93 | + | ||
94 | + post do | ||
95 | +# person = environment.people.find(params[:person_id]) | ||
96 | +# return forbidden! unless current_person.can_post_content?(person) | ||
97 | +# | ||
98 | +# klass_type= params[:content_type].nil? ? 'TinyMceArticle' : params[:content_type] | ||
99 | +# return forbidden! unless ARTICLE_TYPES.include?(klass_type) | ||
100 | +# | ||
101 | +# article = klass_type.constantize.new(params[:article]) | ||
102 | +# article.last_changed_by = current_person | ||
103 | +# article.created_by= current_person | ||
104 | +# article.profile = person | ||
105 | +# | ||
106 | +# if !article.save | ||
107 | +# render_api_errors!(article.errors.full_messages) | ||
108 | +# end | ||
109 | +task = Task.first | ||
110 | + present task, :with => Entities::Task, :fields => params[:fields] | ||
111 | + end | ||
112 | + | ||
113 | + end | ||
114 | + end | ||
115 | + | ||
116 | + end | ||
117 | + | ||
118 | + resource :enterprises do | ||
119 | + segment '/:enterprise_id' do | ||
120 | + resource :tasks do | ||
121 | + get do | ||
122 | +# enterprise = environment.enterprises.find(params[:enterprise_id]) | ||
123 | +# articles = select_filtered_collection_of(enterprise, 'articles', params) | ||
124 | +# articles = articles.display_filter(current_person, enterprise) | ||
125 | +tasks = Task.all | ||
126 | + present tasks, :with => Entities::Task, :fields => params[:fields] | ||
127 | + end | ||
128 | + | ||
129 | + get ':id' do | ||
130 | +# enterprise = environment.enterprises.find(params[:enterprise_id]) | ||
131 | +# article = find_article(enterprise.articles, params[:id]) | ||
132 | +task = Task.first | ||
133 | + present task, :with => Entities::Task, :fields => params[:fields] | ||
134 | + end | ||
135 | + | ||
136 | + post do | ||
137 | +# enterprise = environment.enterprises.find(params[:enterprise_id]) | ||
138 | +# return forbidden! unless current_person.can_post_content?(enterprise) | ||
139 | +# | ||
140 | +# klass_type= params[:content_type].nil? ? 'TinyMceArticle' : params[:content_type] | ||
141 | +# return forbidden! unless ARTICLE_TYPES.include?(klass_type) | ||
142 | +# | ||
143 | +# article = klass_type.constantize.new(params[:article]) | ||
144 | +# article.last_changed_by = current_person | ||
145 | +# article.created_by= current_person | ||
146 | +# article.profile = enterprise | ||
147 | +# | ||
148 | +# if !article.save | ||
149 | +# render_api_errors!(article.errors.full_messages) | ||
150 | +# end | ||
151 | +task = Task.first | ||
152 | + present task, :with => Entities::Task, :fields => params[:fields] | ||
153 | + end | ||
154 | + | ||
155 | + end | ||
156 | + end | ||
157 | + | ||
158 | + end | ||
159 | + | ||
160 | + | ||
161 | + end | ||
162 | + end | ||
163 | + end | ||
164 | +end |
lib/noosfero/plugin.rb
@@ -205,9 +205,9 @@ class Noosfero::Plugin | @@ -205,9 +205,9 @@ class Noosfero::Plugin | ||
205 | def api_mount_points | 205 | def api_mount_points |
206 | [] | 206 | [] |
207 | end | 207 | end |
208 | + | ||
208 | end | 209 | end |
209 | 210 | ||
210 | - #FIXME make this test | ||
211 | def has_block?(block) | 211 | def has_block?(block) |
212 | self.class.extra_blocks.keys.include?(block) | 212 | self.class.extra_blocks.keys.include?(block) |
213 | end | 213 | end |
@@ -263,10 +263,11 @@ class Noosfero::Plugin | @@ -263,10 +263,11 @@ class Noosfero::Plugin | ||
263 | end | 263 | end |
264 | 264 | ||
265 | # -> Adds buttons to the control panel | 265 | # -> Adds buttons to the control panel |
266 | - # returns = { :title => title, :icon => icon, :url => url } | ||
267 | - # title = name that will be displayed. | ||
268 | - # icon = css class name (for customized icons include them in a css file). | ||
269 | - # url = url or route to which the button will redirect. | 266 | + # returns = { :title => title, :icon => icon, :url => url } |
267 | + # title = name that will be displayed. | ||
268 | + # icon = css class name (for customized icons include them in a css file). | ||
269 | + # url = url or route to which the button will redirect. | ||
270 | + # html_options = aditional html options. | ||
270 | def control_panel_buttons | 271 | def control_panel_buttons |
271 | nil | 272 | nil |
272 | end | 273 | end |
@@ -309,6 +310,18 @@ class Noosfero::Plugin | @@ -309,6 +310,18 @@ class Noosfero::Plugin | ||
309 | nil | 310 | nil |
310 | end | 311 | end |
311 | 312 | ||
313 | + # -> Filters the types of organizations that are shown on manage organizations | ||
314 | + # returns a scope filtered by the specified type | ||
315 | + def filter_manage_organization_scope type | ||
316 | + nil | ||
317 | + end | ||
318 | + | ||
319 | + # -> Add new options for manage organization filters | ||
320 | + # returns an array of new options | ||
321 | + # i.e [[_('Type'), 'type'], [_('Type2'), 'type2']] | ||
322 | + def organization_types_filter_options | ||
323 | + nil | ||
324 | + end | ||
312 | # -> Adds content to profile editor info and settings | 325 | # -> Adds content to profile editor info and settings |
313 | # returns = lambda block that creates html code or raw rhtml/html.erb | 326 | # returns = lambda block that creates html code or raw rhtml/html.erb |
314 | def profile_editor_extras | 327 | def profile_editor_extras |
plugins/anti_spam/po/de/anti_spam.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" | 11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" |
plugins/anti_spam/po/pt/anti_spam.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
plugins/breadcrumbs/po/pt/breadcrumbs.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
@@ -28,15 +28,15 @@ msgstr "" | @@ -28,15 +28,15 @@ msgstr "" | ||
28 | msgid "A plugin that add a block to display breadcrumbs." | 28 | msgid "A plugin that add a block to display breadcrumbs." |
29 | msgstr "Um plugin que adiciona um bloco que mostra caminhos de pão." | 29 | msgstr "Um plugin que adiciona um bloco que mostra caminhos de pão." |
30 | 30 | ||
31 | -#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:9 | 31 | +#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:10 |
32 | msgid "Content Breadcrumbs" | 32 | msgid "Content Breadcrumbs" |
33 | msgstr "Conteúdo de Caminho de Pão" | 33 | msgstr "Conteúdo de Caminho de Pão" |
34 | 34 | ||
35 | -#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:13 | 35 | +#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:14 |
36 | msgid "This block displays breadcrumb trail." | 36 | msgid "This block displays breadcrumb trail." |
37 | msgstr "Esse bloco mostra o rastro de caminho de pão." | 37 | msgstr "Esse bloco mostra o rastro de caminho de pão." |
38 | 38 | ||
39 | -#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:56 | 39 | +#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:68 |
40 | msgid "Upload Files" | 40 | msgid "Upload Files" |
41 | msgstr "Enviar Arquivos" | 41 | msgstr "Enviar Arquivos" |
42 | 42 | ||
@@ -47,3 +47,8 @@ msgstr "Mostrar cms" | @@ -47,3 +47,8 @@ msgstr "Mostrar cms" | ||
47 | #: plugins/breadcrumbs/views/box_organizer/breadcrumbs_plugin/_content_breadcrumbs_block.html.erb:3 | 47 | #: plugins/breadcrumbs/views/box_organizer/breadcrumbs_plugin/_content_breadcrumbs_block.html.erb:3 |
48 | msgid "Show profile" | 48 | msgid "Show profile" |
49 | msgstr "Mostrar perfil" | 49 | msgstr "Mostrar perfil" |
50 | + | ||
51 | +#: plugins/breadcrumbs/views/box_organizer/breadcrumbs_plugin/_content_breadcrumbs_block.html.erb:4 | ||
52 | +#, fuzzy | ||
53 | +msgid "Show section name" | ||
54 | +msgstr "Mostrar cms" |
plugins/bsc/po/de/bsc.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" | 11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" |
plugins/bsc/po/es/bsc.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2014-11-03 15:52+0200\n" | 10 | "PO-Revision-Date: 2014-11-03 15:52+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/" | 12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/" |
plugins/bsc/po/fr/bsc.po
@@ -4,9 +4,9 @@ | @@ -4,9 +4,9 @@ | ||
4 | # , 2009. | 4 | # , 2009. |
5 | msgid "" | 5 | msgid "" |
6 | msgstr "" | 6 | msgstr "" |
7 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | 7 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
8 | "Report-Msgid-Bugs-To: \n" | 8 | "Report-Msgid-Bugs-To: \n" |
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" |
10 | "PO-Revision-Date: 2014-12-12 14:22+0200\n" | 10 | "PO-Revision-Date: 2014-12-12 14:22+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/noosfero/" | 12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/noosfero/" |
plugins/bsc/po/hy/bsc.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2009-10-26 16:20-0300\n" | 10 | "PO-Revision-Date: 2009-10-26 16:20-0300\n" |
11 | "Last-Translator: Anahit Minassian <anahit.minassian@cooperation.net>\n" | 11 | "Last-Translator: Anahit Minassian <anahit.minassian@cooperation.net>\n" |
12 | "Language-Team: LANGUAGE <LL@li.org>\n" | 12 | "Language-Team: LANGUAGE <LL@li.org>\n" |
plugins/bsc/po/pt/bsc.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
plugins/bsc/po/ru/bsc.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" | 10 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/" | 12 | "Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/" |
plugins/comment_classification/po/de/comment_classification.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2015-02-23 11:38+0200\n" | 11 | "PO-Revision-Date: 2015-02-23 11:38+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/comment_classification/po/es/comment_classification.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-02-24 20:46+0200\n" | 10 | "PO-Revision-Date: 2015-02-24 20:46+0200\n" |
11 | "Last-Translator: Gonzalo Exequiel Pedone <hipersayan.x@gmail.com>\n" | 11 | "Last-Translator: Gonzalo Exequiel Pedone <hipersayan.x@gmail.com>\n" |
12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" |
@@ -91,8 +91,8 @@ msgid "" | @@ -91,8 +91,8 @@ msgid "" | ||
91 | "<i>%{user}</i> added the status <i>%{status_name}</i> at <i>%{created_at}</" | 91 | "<i>%{user}</i> added the status <i>%{status_name}</i> at <i>%{created_at}</" |
92 | "i>." | 92 | "i>." |
93 | msgstr "" | 93 | msgstr "" |
94 | -"<i>%{user}</i> ha agregado el estado <i>%{status_name}</i> en " | ||
95 | -"<i>%{created_at}</i>." | 94 | +"<i>%{user}</i> ha agregado el estado <i>%{status_name}</i> en <i>" |
95 | +"%{created_at}</i>." | ||
96 | 96 | ||
97 | #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:18 | 97 | #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:18 |
98 | msgid "<i>Reason:</i> %s" | 98 | msgid "<i>Reason:</i> %s" |
plugins/comment_classification/po/fr/comment_classification.po
@@ -4,9 +4,9 @@ | @@ -4,9 +4,9 @@ | ||
4 | # , 2009. | 4 | # , 2009. |
5 | msgid "" | 5 | msgid "" |
6 | msgstr "" | 6 | msgstr "" |
7 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | 7 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
8 | "Report-Msgid-Bugs-To: \n" | 8 | "Report-Msgid-Bugs-To: \n" |
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" |
10 | "PO-Revision-Date: 2015-03-07 12:26+0200\n" | 10 | "PO-Revision-Date: 2015-03-07 12:26+0200\n" |
11 | "Last-Translator: Tuux <tuxa@galaxie.eu.org>\n" | 11 | "Last-Translator: Tuux <tuxa@galaxie.eu.org>\n" |
12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-" |
@@ -91,8 +91,8 @@ msgid "" | @@ -91,8 +91,8 @@ msgid "" | ||
91 | "<i>%{user}</i> added the status <i>%{status_name}</i> at <i>%{created_at}</" | 91 | "<i>%{user}</i> added the status <i>%{status_name}</i> at <i>%{created_at}</" |
92 | "i>." | 92 | "i>." |
93 | msgstr "" | 93 | msgstr "" |
94 | -"<i>%{utilisateur}</i> ajout des statuts <i>%{nom_ du_statut}</i> à " | ||
95 | -"<i>%{creer_a}</i>." | 94 | +"<i>%{utilisateur}</i> ajout des statuts <i>%{nom_ du_statut}</i> à <i>" |
95 | +"%{creer_a}</i>." | ||
96 | 96 | ||
97 | #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:18 | 97 | #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:18 |
98 | msgid "<i>Reason:</i> %s" | 98 | msgid "<i>Reason:</i> %s" |
plugins/comment_classification/po/hy/comment_classification.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" | 10 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Armenian <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: Armenian <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/comment_classification/po/pt/comment_classification.po
@@ -11,12 +11,12 @@ | @@ -11,12 +11,12 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2015-02-23 11:38+0200\n" | 16 | "PO-Revision-Date: 2015-02-23 11:38+0200\n" |
17 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 17 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
18 | -"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero" | ||
19 | -"/plugin-comment-classification/pt/>\n" | 18 | +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
19 | +"plugin-comment-classification/pt/>\n" | ||
20 | "Language: pt\n" | 20 | "Language: pt\n" |
21 | "MIME-Version: 1.0\n" | 21 | "MIME-Version: 1.0\n" |
22 | "Content-Type: text/plain; charset=UTF-8\n" | 22 | "Content-Type: text/plain; charset=UTF-8\n" |
plugins/comment_classification/po/ru/comment_classification.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" | 10 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/plugin-" |
@@ -15,8 +15,8 @@ msgstr "" | @@ -15,8 +15,8 @@ msgstr "" | ||
15 | "MIME-Version: 1.0\n" | 15 | "MIME-Version: 1.0\n" |
16 | "Content-Type: text/plain; charset=UTF-8\n" | 16 | "Content-Type: text/plain; charset=UTF-8\n" |
17 | "Content-Transfer-Encoding: 8bit\n" | 17 | "Content-Transfer-Encoding: 8bit\n" |
18 | -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" | ||
19 | -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" | 18 | +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" |
19 | +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" | ||
20 | "X-Generator: Weblate 2.3-dev\n" | 20 | "X-Generator: Weblate 2.3-dev\n" |
21 | 21 | ||
22 | #: plugins/comment_classification/lib/comment_classification_plugin.rb:11 | 22 | #: plugins/comment_classification/lib/comment_classification_plugin.rb:11 |
plugins/comment_group/po/pt/comment_group.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
plugins/community_block/po/pt/community_block.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
plugins/community_track/po/de/community_track.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" | 11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" |
plugins/community_track/po/es/community_track.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-02-24 19:06+0200\n" | 10 | "PO-Revision-Date: 2015-02-24 19:06+0200\n" |
11 | "Last-Translator: Gonzalo Exequiel Pedone <hipersayan.x@gmail.com>\n" | 11 | "Last-Translator: Gonzalo Exequiel Pedone <hipersayan.x@gmail.com>\n" |
12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/community_track/po/pt/community_track.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
plugins/container_block/po/pt/container_block.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
plugins/context_content/po/pt/context_content.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
plugins/custom_forms/po/de/custom_forms.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2015-03-09 09:51+0200\n" | 11 | "PO-Revision-Date: 2015-03-09 09:51+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/custom_forms/po/eo/custom_forms.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2014-11-05 13:05+0200\n" | 10 | "PO-Revision-Date: 2014-11-05 13:05+0200\n" |
11 | "Last-Translator: Aurélio A. Heckert <aurelio@colivre.coop.br>\n" | 11 | "Last-Translator: Aurélio A. Heckert <aurelio@colivre.coop.br>\n" |
12 | "Language-Team: Esperanto <https://hosted.weblate.org/projects/noosfero/" | 12 | "Language-Team: Esperanto <https://hosted.weblate.org/projects/noosfero/" |
plugins/custom_forms/po/es/custom_forms.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-03-09 09:51+0200\n" | 10 | "PO-Revision-Date: 2015-03-09 09:51+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/custom_forms/po/fr/custom_forms.po
@@ -4,9 +4,9 @@ | @@ -4,9 +4,9 @@ | ||
4 | # , 2009. | 4 | # , 2009. |
5 | msgid "" | 5 | msgid "" |
6 | msgstr "" | 6 | msgstr "" |
7 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | 7 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
8 | "Report-Msgid-Bugs-To: \n" | 8 | "Report-Msgid-Bugs-To: \n" |
9 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" |
10 | "PO-Revision-Date: 2015-02-23 11:38+0200\n" | 10 | "PO-Revision-Date: 2015-02-23 11:38+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/custom_forms/po/hy/custom_forms.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" | 10 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Armenian <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: Armenian <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/custom_forms/po/pt/custom_forms.po
@@ -11,12 +11,12 @@ | @@ -11,12 +11,12 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2015-03-12 15:13+0200\n" | 16 | "PO-Revision-Date: 2015-03-12 15:13+0200\n" |
17 | "Last-Translator: daniel <dtygel@eita.org.br>\n" | 17 | "Last-Translator: daniel <dtygel@eita.org.br>\n" |
18 | -"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero" | ||
19 | -"/plugin-custom-forms/pt/>\n" | 18 | +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
19 | +"plugin-custom-forms/pt/>\n" | ||
20 | "Language: pt\n" | 20 | "Language: pt\n" |
21 | "MIME-Version: 1.0\n" | 21 | "MIME-Version: 1.0\n" |
22 | "Content-Type: text/plain; charset=UTF-8\n" | 22 | "Content-Type: text/plain; charset=UTF-8\n" |
plugins/custom_forms/po/ru/custom_forms.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:10-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-03-09 09:51+0200\n" | 10 | "PO-Revision-Date: 2015-03-09 09:51+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/plugin-" |
@@ -15,8 +15,8 @@ msgstr "" | @@ -15,8 +15,8 @@ msgstr "" | ||
15 | "MIME-Version: 1.0\n" | 15 | "MIME-Version: 1.0\n" |
16 | "Content-Type: text/plain; charset=UTF-8\n" | 16 | "Content-Type: text/plain; charset=UTF-8\n" |
17 | "Content-Transfer-Encoding: 8bit\n" | 17 | "Content-Transfer-Encoding: 8bit\n" |
18 | -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" | ||
19 | -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" | 18 | +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" |
19 | +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" | ||
20 | "X-Generator: Weblate 2.3-dev\n" | 20 | "X-Generator: Weblate 2.3-dev\n" |
21 | 21 | ||
22 | #: plugins/custom_forms/lib/custom_forms_plugin/form.rb:67 | 22 | #: plugins/custom_forms/lib/custom_forms_plugin/form.rb:67 |
plugins/display_content/po/de/display_content.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" | 11 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/display_content/po/es/display_content.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-03-09 09:51+0200\n" | 10 | "PO-Revision-Date: 2015-03-09 09:51+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" |
plugins/display_content/po/fr/display_content.po
@@ -4,9 +4,9 @@ | @@ -4,9 +4,9 @@ | ||
4 | # , 2009. | 4 | # , 2009. |
5 | msgid "" | 5 | msgid "" |
6 | msgstr "" | 6 | msgstr "" |
7 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | 7 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
8 | "Report-Msgid-Bugs-To: \n" | 8 | "Report-Msgid-Bugs-To: \n" |
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" |
10 | "PO-Revision-Date: 2015-03-07 02:11+0200\n" | 10 | "PO-Revision-Date: 2015-03-07 02:11+0200\n" |
11 | "Last-Translator: Tuux <tuxa@galaxie.eu.org>\n" | 11 | "Last-Translator: Tuux <tuxa@galaxie.eu.org>\n" |
12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-" | 12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-" |
@@ -106,7 +106,8 @@ msgstr "plus" | @@ -106,7 +106,8 @@ msgstr "plus" | ||
106 | 106 | ||
107 | #: plugins/display_content/views/box_organizer/_choose_directly.html.erb:5 | 107 | #: plugins/display_content/views/box_organizer/_choose_directly.html.erb:5 |
108 | msgid "Dinamically load children of selected folders" | 108 | msgid "Dinamically load children of selected folders" |
109 | -msgstr "Dynamiquement charger les sous répertoires des répertoires sélectionnés" | 109 | +msgstr "" |
110 | +"Dynamiquement charger les sous répertoires des répertoires sélectionnés" | ||
110 | 111 | ||
111 | #: plugins/display_content/views/box_organizer/_choose_directly.html.erb:9 | 112 | #: plugins/display_content/views/box_organizer/_choose_directly.html.erb:9 |
112 | msgid "Limit:" | 113 | msgid "Limit:" |
plugins/display_content/po/hy/display_content.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2009-10-26 16:20-0300\n" | 10 | "PO-Revision-Date: 2009-10-26 16:20-0300\n" |
11 | "Last-Translator: Anahit Minassian <anahit.minassian@cooperation.net>\n" | 11 | "Last-Translator: Anahit Minassian <anahit.minassian@cooperation.net>\n" |
12 | "Language-Team: LANGUAGE <LL@li.org>\n" | 12 | "Language-Team: LANGUAGE <LL@li.org>\n" |
plugins/display_content/po/pt/display_content.po
@@ -11,12 +11,12 @@ | @@ -11,12 +11,12 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2015-03-12 15:14+0200\n" | 16 | "PO-Revision-Date: 2015-03-12 15:14+0200\n" |
17 | "Last-Translator: daniel <dtygel@eita.org.br>\n" | 17 | "Last-Translator: daniel <dtygel@eita.org.br>\n" |
18 | -"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero" | ||
19 | -"/plugin-display-content/pt/>\n" | 18 | +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
19 | +"plugin-display-content/pt/>\n" | ||
20 | "Language: pt\n" | 20 | "Language: pt\n" |
21 | "MIME-Version: 1.0\n" | 21 | "MIME-Version: 1.0\n" |
22 | "Content-Type: text/plain; charset=UTF-8\n" | 22 | "Content-Type: text/plain; charset=UTF-8\n" |
plugins/event/po/pt/event.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.1~rc4\n" | ||
9 | -"POT-Creation-Date: 2015-04-20 19:44-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2015-01-30 00:18-0000\n" | 10 | "PO-Revision-Date: 2015-01-30 00:18-0000\n" |
11 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 11 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
12 | "Language-Team: LANGUAGE <LL@li.org>\n" | 12 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -16,17 +16,6 @@ msgstr "" | @@ -16,17 +16,6 @@ msgstr "" | ||
16 | "Content-Transfer-Encoding: 8bit\n" | 16 | "Content-Transfer-Encoding: 8bit\n" |
17 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | 17 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" |
18 | 18 | ||
19 | -#: plugins/event/lib/event_plugin.rb:4 | ||
20 | -msgid "Event Extras" | ||
21 | -msgstr "Extras para Eventos" | ||
22 | - | ||
23 | -#: plugins/event/lib/event_plugin.rb:8 | ||
24 | -msgid "" | ||
25 | -"Include a new block to show the environment's or profiles' events information" | ||
26 | -msgstr "" | ||
27 | -"Adiciona um novo bloco para apresentar as informações de eventos do ambiente " | ||
28 | -"ou dos perfis" | ||
29 | - | ||
30 | #: plugins/event/lib/event_plugin/event_block.rb:12 | 19 | #: plugins/event/lib/event_plugin/event_block.rb:12 |
31 | msgid "Events" | 20 | msgid "Events" |
32 | msgstr "Eventos" | 21 | msgstr "Eventos" |
@@ -61,7 +50,24 @@ msgstr[1] "%d dias para começar" | @@ -61,7 +50,24 @@ msgstr[1] "%d dias para começar" | ||
61 | msgid "One month left to start" | 50 | msgid "One month left to start" |
62 | msgid_plural "%d months left to start" | 51 | msgid_plural "%d months left to start" |
63 | msgstr[0] "Um mês para iniciar" | 52 | msgstr[0] "Um mês para iniciar" |
64 | -msgstr[1] "% meses para iniciar" | 53 | +msgstr[1] "%d meses para iniciar" |
54 | + | ||
55 | +#: plugins/event/lib/event_plugin.rb:4 | ||
56 | +msgid "Event Extras" | ||
57 | +msgstr "Extras para Eventos" | ||
58 | + | ||
59 | +#: plugins/event/lib/event_plugin.rb:8 | ||
60 | +msgid "" | ||
61 | +"Include a new block to show the environment's or profiles' events information" | ||
62 | +msgstr "" | ||
63 | +"Adiciona um novo bloco para apresentar as informações de eventos do ambiente " | ||
64 | +"ou dos perfis" | ||
65 | + | ||
66 | +#: plugins/event/views/event_plugin/event_block_item.html.erb:6 | ||
67 | +msgid "Duration: 1 day" | ||
68 | +msgid_plural "Duration: %s days" | ||
69 | +msgstr[0] "Duração: 1 dia" | ||
70 | +msgstr[1] "Duração: %s dias" | ||
65 | 71 | ||
66 | #: plugins/event/views/profile_design/event_plugin/_event_block.html.erb:1 | 72 | #: plugins/event/views/profile_design/event_plugin/_event_block.html.erb:1 |
67 | msgid "Limit of items" | 73 | msgid "Limit of items" |
@@ -92,12 +98,6 @@ msgstr "Limite de dias para mostrar" | @@ -92,12 +98,6 @@ msgstr "Limite de dias para mostrar" | ||
92 | msgid "Only show events in this interval of days." | 98 | msgid "Only show events in this interval of days." |
93 | msgstr "Mostar somente os eventos nesse intervalo de dias" | 99 | msgstr "Mostar somente os eventos nesse intervalo de dias" |
94 | 100 | ||
95 | -#: plugins/event/views/event_plugin/event_block_item.html.erb:6 | ||
96 | -msgid "Duration: 1 day" | ||
97 | -msgid_plural "Duration: %s days" | ||
98 | -msgstr[0] "Duração: 1 dia" | ||
99 | -msgstr[1] "Duração: %s dias" | ||
100 | - | ||
101 | #~ msgid "Started one day ago." | 101 | #~ msgid "Started one day ago." |
102 | #~ msgid_plural "Started %d days ago." | 102 | #~ msgid_plural "Started %d days ago." |
103 | #~ msgstr[0] "Iniciou a Um dia atrás." | 103 | #~ msgstr[0] "Iniciou a Um dia atrás." |
plugins/foo/po/de/foo.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" | 11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" |
@@ -19,6 +19,6 @@ msgstr "" | @@ -19,6 +19,6 @@ msgstr "" | ||
19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" | 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" |
20 | "X-Generator: Weblate 2.2-dev\n" | 20 | "X-Generator: Weblate 2.2-dev\n" |
21 | 21 | ||
22 | -#: plugins/foo/lib/foo_plugin.rb:8 | 22 | +#: plugins/foo/lib/foo_plugin.rb:9 |
23 | msgid "A sample plugin to test autoload craziness." | 23 | msgid "A sample plugin to test autoload craziness." |
24 | msgstr "Ein Beispiel-Plugin, um die Autoload-Verrücktheit zu überprüfen." | 24 | msgstr "Ein Beispiel-Plugin, um die Autoload-Verrücktheit zu überprüfen." |
plugins/foo/po/es/foo.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2014-11-03 15:52+0200\n" | 10 | "PO-Revision-Date: 2014-11-03 15:52+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/" | 12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/" |
@@ -18,6 +18,6 @@ msgstr "" | @@ -18,6 +18,6 @@ msgstr "" | ||
18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" | 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" |
19 | "X-Generator: Weblate 2.0-dev\n" | 19 | "X-Generator: Weblate 2.0-dev\n" |
20 | 20 | ||
21 | -#: plugins/foo/lib/foo_plugin.rb:8 | 21 | +#: plugins/foo/lib/foo_plugin.rb:9 |
22 | msgid "A sample plugin to test autoload craziness." | 22 | msgid "A sample plugin to test autoload craziness." |
23 | msgstr "Un plugin de ejemplo para probar autocargar la locura." | 23 | msgstr "Un plugin de ejemplo para probar autocargar la locura." |
plugins/foo/po/pt/foo.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
@@ -24,6 +24,6 @@ msgstr "" | @@ -24,6 +24,6 @@ msgstr "" | ||
24 | "Plural-Forms: nplurals=2; plural=n != 1;\n" | 24 | "Plural-Forms: nplurals=2; plural=n != 1;\n" |
25 | "X-Generator: Weblate 2.0\n" | 25 | "X-Generator: Weblate 2.0\n" |
26 | 26 | ||
27 | -#: plugins/foo/lib/foo_plugin.rb:8 | 27 | +#: plugins/foo/lib/foo_plugin.rb:9 |
28 | msgid "A sample plugin to test autoload craziness." | 28 | msgid "A sample plugin to test autoload craziness." |
29 | msgstr "Um plugin de teste para testar a loucura do caregamento." | 29 | msgstr "Um plugin de teste para testar a loucura do caregamento." |
plugins/google_analytics/po/de/google_analytics.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" | 11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" |
@@ -22,3 +22,11 @@ msgstr "" | @@ -22,3 +22,11 @@ msgstr "" | ||
22 | #: plugins/google_analytics/lib/google_analytics_plugin.rb:13 | 22 | #: plugins/google_analytics/lib/google_analytics_plugin.rb:13 |
23 | msgid "Tracking and web analytics to people and communities" | 23 | msgid "Tracking and web analytics to people and communities" |
24 | msgstr "Nachverfolgung und Webanalyse für Personen und Gemeinschaften" | 24 | msgstr "Nachverfolgung und Webanalyse für Personen und Gemeinschaften" |
25 | + | ||
26 | +#: plugins/google_analytics/views/profile-editor-extras.html.erb:2 | ||
27 | +msgid "Google Analytics Profile ID" | ||
28 | +msgstr "" | ||
29 | + | ||
30 | +#: plugins/google_analytics/views/profile-editor-extras.html.erb:3 | ||
31 | +msgid "See how to configure statistics for your profile" | ||
32 | +msgstr "" |
plugins/google_analytics/po/es/google_analytics.po
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | # | 5 | # |
6 | msgid "" | 6 | msgid "" |
7 | msgstr "" | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
9 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 8 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
9 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
10 | "PO-Revision-Date: 2014-11-03 15:52+0200\n" | 10 | "PO-Revision-Date: 2014-11-03 15:52+0200\n" |
11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/" | 12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/" |
@@ -21,3 +21,11 @@ msgstr "" | @@ -21,3 +21,11 @@ msgstr "" | ||
21 | #: plugins/google_analytics/lib/google_analytics_plugin.rb:13 | 21 | #: plugins/google_analytics/lib/google_analytics_plugin.rb:13 |
22 | msgid "Tracking and web analytics to people and communities" | 22 | msgid "Tracking and web analytics to people and communities" |
23 | msgstr "Seguimiento y análisis web para las personas y las comunidades" | 23 | msgstr "Seguimiento y análisis web para las personas y las comunidades" |
24 | + | ||
25 | +#: plugins/google_analytics/views/profile-editor-extras.html.erb:2 | ||
26 | +msgid "Google Analytics Profile ID" | ||
27 | +msgstr "" | ||
28 | + | ||
29 | +#: plugins/google_analytics/views/profile-editor-extras.html.erb:3 | ||
30 | +msgid "See how to configure statistics for your profile" | ||
31 | +msgstr "" |
plugins/google_analytics/po/pt/google_analytics.po
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | # | 11 | # |
12 | msgid "" | 12 | msgid "" |
13 | msgstr "" | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
15 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 14 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
15 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" | 16 | "PO-Revision-Date: 2014-12-18 18:40-0200\n" |
17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | 17 | "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" |
18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | 18 | "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" |
@@ -27,3 +27,11 @@ msgstr "" | @@ -27,3 +27,11 @@ msgstr "" | ||
27 | #: plugins/google_analytics/lib/google_analytics_plugin.rb:13 | 27 | #: plugins/google_analytics/lib/google_analytics_plugin.rb:13 |
28 | msgid "Tracking and web analytics to people and communities" | 28 | msgid "Tracking and web analytics to people and communities" |
29 | msgstr "Rastreamento e análise web para pessoas e comunidades" | 29 | msgstr "Rastreamento e análise web para pessoas e comunidades" |
30 | + | ||
31 | +#: plugins/google_analytics/views/profile-editor-extras.html.erb:2 | ||
32 | +msgid "Google Analytics Profile ID" | ||
33 | +msgstr "" | ||
34 | + | ||
35 | +#: plugins/google_analytics/views/profile-editor-extras.html.erb:3 | ||
36 | +msgid "See how to configure statistics for your profile" | ||
37 | +msgstr "" |
plugins/google_cse/po/de/google_cse.po
@@ -6,8 +6,8 @@ | @@ -6,8 +6,8 @@ | ||
6 | # | 6 | # |
7 | msgid "" | 7 | msgid "" |
8 | msgstr "" | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.0-690-gcb6e853\n" | ||
10 | -"POT-Creation-Date: 2015-03-05 12:09-0300\n" | 9 | +"Project-Id-Version: 1.1-166-gaf47713\n" |
10 | +"POT-Creation-Date: 2015-06-01 17:26-0300\n" | ||
11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" | 11 | "PO-Revision-Date: 2014-12-12 14:23+0200\n" |
12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" |