Commit 71439c6c8380b07ed1b54c5a89c177275e71ef74
Exists in
master
and in
22 other branches
Merge branch 'master' into stoa
Conflicts: app/controllers/my_profile/profile_editor_controller.rb app/helpers/search_helper.rb app/models/invitation.rb app/models/person.rb app/views/cms/view.html.erb app/views/templates/index.html.erb plugins/community_track/views/content_viewer/_step_item.html.erb test/functional/home_controller_test.rb test/unit/person_test.rb test/unit/profile_test.rb
Showing
630 changed files
with
25805 additions
and
46811 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 630 files displayed.
Gemfile
1 | source "https://rubygems.org" | 1 | source "https://rubygems.org" |
2 | gem 'rails', '~> 3.2.19' | 2 | gem 'rails', '~> 3.2.19' |
3 | +gem 'minitest', '~> 3.2.0' | ||
3 | gem 'fast_gettext', '~> 0.6.8' | 4 | gem 'fast_gettext', '~> 0.6.8' |
4 | gem 'acts-as-taggable-on', '~> 3.0.2' | 5 | gem 'acts-as-taggable-on', '~> 3.0.2' |
5 | gem 'prototype-rails', '~> 3.2.1' | 6 | gem 'prototype-rails', '~> 3.2.1' |
INSTALL.https.md
1 | -Setup Noosfero to use HTTPS | ||
2 | -=========================== | 1 | +# Setup Noosfero to use HTTPS |
3 | 2 | ||
4 | This document assumes that you have a fully and clean Noosfero | 3 | This document assumes that you have a fully and clean Noosfero |
5 | installation as explained at the `INSTALL.md` file. | 4 | installation as explained at the `INSTALL.md` file. |
6 | 5 | ||
7 | -SSL certificate | ||
8 | -+++++++++++++++ | 6 | +## Creating a self-signed SSL certificate |
9 | 7 | ||
10 | You should get a valid SSL certificate, but if you want to test | 8 | You should get a valid SSL certificate, but if you want to test |
11 | your setup before, you could generate a self-signed certificate | 9 | your setup before, you could generate a self-signed certificate |
@@ -17,99 +15,106 @@ as below: | @@ -17,99 +15,106 @@ as below: | ||
17 | # openssl req -new -x509 -nodes -sha1 -days $[10*365] -key noosfero.key > noosfero.cert | 15 | # openssl req -new -x509 -nodes -sha1 -days $[10*365] -key noosfero.key > noosfero.cert |
18 | # cat noosfero.key noosfero.cert > noosfero.pem | 16 | # cat noosfero.key noosfero.cert > noosfero.pem |
19 | 17 | ||
18 | +## Web server configuration | ||
19 | + | ||
20 | There are two ways of using SSL with Noosfero: 1) If you are not using | 20 | There are two ways of using SSL with Noosfero: 1) If you are not using |
21 | Varnish; and 2) If you are using Varnish. | 21 | Varnish; and 2) If you are using Varnish. |
22 | 22 | ||
23 | -1) If you are are not using Varnish | ||
24 | -+++++++++++++++++++++++++++++++++++ | 23 | +### 1) If you are are not using Varnish |
25 | 24 | ||
26 | Simply do a redirect in apache to force all connections with SSL: | 25 | Simply do a redirect in apache to force all connections with SSL: |
27 | 26 | ||
28 | - <VirtualHost *:8080> | ||
29 | - ServerName test.stoa.usp.br | ||
30 | - | ||
31 | - Redirect / https://example.com/ | ||
32 | - </VirtualHost> | 27 | +``` |
28 | +<VirtualHost *:8080> | ||
29 | + ServerName test.stoa.usp.br | ||
30 | + Redirect / https://example.com/ | ||
31 | +</VirtualHost> | ||
32 | +``` | ||
33 | 33 | ||
34 | And set a vhost to receive then: | 34 | And set a vhost to receive then: |
35 | 35 | ||
36 | - <VirtualHost *:443> | ||
37 | - ServerName example.com | ||
38 | - | ||
39 | - SSLEngine On | ||
40 | - SSLCertificateFile /etc/ssl/certs/cert.pem | ||
41 | - SSLCertificateKeyFile /etc/ssl/private/cert.key | ||
42 | - | ||
43 | - Include /etc/noosfero/apache/virtualhost.conf | ||
44 | - </VirtualHost> | 36 | +``` |
37 | +<VirtualHost *:443> | ||
38 | + ServerName example.com | ||
39 | + SSLEngine On | ||
40 | + SSLCertificateFile /etc/ssl/certs/cert.pem | ||
41 | + SSLCertificateKeyFile /etc/ssl/private/cert.key | ||
42 | + Include /etc/noosfero/apache/virtualhost.conf | ||
43 | +</VirtualHost> | ||
44 | +``` | ||
45 | 45 | ||
46 | Be aware that if you had configured varnish, the requests won't reach | 46 | Be aware that if you had configured varnish, the requests won't reach |
47 | it with this configuration. | 47 | it with this configuration. |
48 | 48 | ||
49 | -2) If you are using Varnish | ||
50 | -+++++++++++++++++++++++++++ | ||
51 | - | ||
52 | -Varnish isn't able to communicate with the SSL protocol, so we will | ||
53 | -need some one who do this and Pound[1] can do the job. In order to | ||
54 | -install it in Debian based systems: | 49 | +### 2) If you are using Varnish |
55 | 50 | ||
56 | - $ sudo apt-get install pound | 51 | +Varnish isn't able to communicate with the SSL protocol, so we will need some |
52 | +one else who do this and [Pound](http://www.apsis.ch/pound) can do the job. In | ||
53 | +order to install it in Debian based systems: | ||
57 | 54 | ||
58 | -Set Varnish to listen in other port than 80: | 55 | +``` |
56 | +$ sudo apt-get install pound | ||
57 | +``` | ||
59 | 58 | ||
60 | -/etc/defaults/varnish | ||
61 | ---------------------- | 59 | +Set Varnish to listen in other port than 80 in `/etc/defaults/varnish`: |
62 | 60 | ||
63 | - DAEMON_OPTS="-a localhost:6081 \ | ||
64 | - -T localhost:6082 \ | ||
65 | - -f /etc/varnish/default.vcl \ | ||
66 | - -S /etc/varnish/secret \ | ||
67 | - -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G" | 61 | +``` |
62 | +DAEMON_OPTS="-a localhost:6081 \ | ||
63 | + -T localhost:6082 \ | ||
64 | + -f /etc/varnish/default.vcl \ | ||
65 | + -S /etc/varnish/secret \ | ||
66 | + -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G" | ||
67 | +``` | ||
68 | 68 | ||
69 | Configure Pound: | 69 | Configure Pound: |
70 | 70 | ||
71 | - # cp /usr/share/noosfero/etc/pound.cfg /etc/pound/ | ||
72 | - | ||
73 | -Edit /etc/pound.cfg and set the IP and domain of your server. | 71 | +``` |
72 | +# cp /usr/share/noosfero/etc/pound.cfg /etc/pound/ | ||
73 | +``` | ||
74 | 74 | ||
75 | -Configure Pound to start at system initialization: | 75 | +Edit `/etc/pound.cfg` and set the IP and domain of your server. |
76 | 76 | ||
77 | -/etc/default/pound | 77 | +Configure Pound to start at system initialization. At `/etc/default/pound`: |
78 | ------------------ | 78 | ------------------ |
79 | 79 | ||
80 | - startup=1 | 80 | +``` |
81 | +startup=1 | ||
82 | +``` | ||
81 | 83 | ||
82 | -Set Apache to only listen to localhost: | 84 | +Set Apache to only listen to localhost, at `/etc/apache2/ports.conf`: |
83 | 85 | ||
84 | -/etc/apache2/ports.conf | ||
85 | ------------------------ | ||
86 | - | ||
87 | - Listen 127.0.0.1:8080 | 86 | +``` |
87 | +Listen 127.0.0.1:8080 | ||
88 | +``` | ||
88 | 89 | ||
89 | Restart the services: | 90 | Restart the services: |
90 | 91 | ||
91 | - $ sudo service apache2 restart | ||
92 | - $ sudo service varnish restart | 92 | +``` |
93 | +$ sudo service apache2 restart | ||
94 | +$ sudo service varnish restart | ||
95 | +``` | ||
93 | 96 | ||
94 | Start pound: | 97 | Start pound: |
95 | 98 | ||
96 | - $ sudo service pound start | ||
97 | - | ||
98 | -[1] http://www.apsis.ch/pound | 99 | +``` |
100 | +$ sudo service pound start | ||
101 | +``` | ||
99 | 102 | ||
100 | -Noosfero XMPP chat | ||
101 | -++++++++++++++++++ | 103 | +## Noosfero XMPP chat |
102 | 104 | ||
103 | If you want to use chat over HTTPS, then you should add the domain | 105 | If you want to use chat over HTTPS, then you should add the domain |
104 | -and IP of your server in the /etc/hosts file, example: | 106 | +and IP of your server in the /etc/hosts file, example |
105 | 107 | ||
106 | -/etc/hosts | ||
107 | ----------- | 108 | +`/etc/hosts:` |
108 | 109 | ||
109 | - 192.168.1.86 mydomain.example.com | 110 | +``` |
111 | +192.168.1.86 mydomain.example.com | ||
112 | +``` | ||
110 | 113 | ||
111 | -Also, it's recomended that you remove lines above from the file | 114 | +Also, it's recomended that you remove the lines below from the file |
112 | `/etc/apache2/sites-enabled/noosfero`: | 115 | `/etc/apache2/sites-enabled/noosfero`: |
113 | 116 | ||
114 | - RewriteEngine On | ||
115 | - Include /usr/share/noosfero/util/chat/apache/xmpp.conf | 117 | +``` |
118 | +RewriteEngine On | ||
119 | +Include /usr/share/noosfero/util/chat/apache/xmpp.conf | ||
120 | +``` |
@@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
1 | +Using custom locales | ||
2 | +==================== | ||
3 | + | ||
4 | +Personalized translations go into the `config/custom_locales/` directory. | ||
5 | +Custom locales can be identified by the rails environment, schema name in a | ||
6 | +multitenancy setup or domain name until the first dot (e.g env1.coop.br for the | ||
7 | +example below). | ||
8 | + | ||
9 | +Currently, the only filename prefix for the localization file which is | ||
10 | +processed is "environment". For instance, a POT file would be called | ||
11 | +"environment.pot". | ||
12 | + | ||
13 | +The structure of an environment named env1 with custom translations for both | ||
14 | +Portuguese and Spanish and an environment named env2 with custom Russian | ||
15 | +translation would be: | ||
16 | + | ||
17 | + config/ | ||
18 | + custom_locales/ | ||
19 | + env1/ | ||
20 | + environment.pot | ||
21 | + pt/ | ||
22 | + environment.po | ||
23 | + es/ | ||
24 | + environment.po | ||
25 | + env2/ | ||
26 | + environment.pot | ||
27 | + ru/ | ||
28 | + environment.po | ||
29 | + |
app/controllers/admin/admin_panel_controller.rb
@@ -71,4 +71,22 @@ class AdminPanelController < AdminController | @@ -71,4 +71,22 @@ 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, scope, @q, {:per_page => 10, :page => params[:npage]})[:results] | ||
91 | + end | ||
74 | end | 92 | end |
app/controllers/admin/templates_controller.rb
@@ -40,8 +40,67 @@ class TemplatesController < AdminController | @@ -40,8 +40,67 @@ class TemplatesController < AdminController | ||
40 | end | 40 | end |
41 | end | 41 | end |
42 | 42 | ||
43 | + def set_community_as_default | ||
44 | + begin | ||
45 | + community = environment.communities.find(params[:template_id]) | ||
46 | + rescue ActiveRecord::RecordNotFound | ||
47 | + message = _('Community not found. The template could no be changed.') | ||
48 | + community = nil | ||
49 | + end | ||
50 | + | ||
51 | + message = _('%s defined as default') % community.name if set_as_default(community) | ||
52 | + session[:notice] = message | ||
53 | + | ||
54 | + redirect_to :action => 'index' | ||
55 | + end | ||
56 | + | ||
57 | + def set_person_as_default | ||
58 | + begin | ||
59 | + person = environment.people.find(params[:template_id]) | ||
60 | + rescue ActiveRecord::RecordNotFound | ||
61 | + message = _('Person not found. The template could no be changed.') | ||
62 | + person = nil | ||
63 | + end | ||
64 | + | ||
65 | + message = _('%s defined as default') % person.name if set_as_default(person) | ||
66 | + session[:notice] = message | ||
67 | + | ||
68 | + redirect_to :action => 'index' | ||
69 | + end | ||
70 | + | ||
71 | + def set_enterprise_as_default | ||
72 | + begin | ||
73 | + enterprise = environment.enterprises.find(params[:template_id]) | ||
74 | + rescue ActiveRecord::RecordNotFound | ||
75 | + message = _('Enterprise not found. The template could no be changed.') | ||
76 | + enterprise = nil | ||
77 | + end | ||
78 | + | ||
79 | + message = _('%s defined as default') % enterprise.name if set_as_default(enterprise) | ||
80 | + session[:notice] = message | ||
81 | + | ||
82 | + redirect_to :action => 'index' | ||
83 | + end | ||
84 | + | ||
43 | private | 85 | private |
44 | 86 | ||
87 | + def set_as_default(obj) | ||
88 | + return nil if obj.nil? | ||
89 | + case obj.class.name | ||
90 | + when 'Community' then | ||
91 | + environment.community_default_template = obj | ||
92 | + environment.save! | ||
93 | + when 'Person' then | ||
94 | + environment.person_default_template = obj | ||
95 | + environment.save! | ||
96 | + when 'Enterprise' then | ||
97 | + environment.enterprise_default_template = obj | ||
98 | + environment.save! | ||
99 | + else | ||
100 | + nil | ||
101 | + end | ||
102 | + end | ||
103 | + | ||
45 | def create_organization_template(klass) | 104 | def create_organization_template(klass) |
46 | identifier = params[:name].to_slug | 105 | identifier = params[:name].to_slug |
47 | template = klass.new(:name => params[:name], :identifier => identifier, :is_template => true) | 106 | template = klass.new(:name => params[:name], :identifier => identifier, :is_template => true) |
app/controllers/application_controller.rb
@@ -127,6 +127,9 @@ class ApplicationController < ActionController::Base | @@ -127,6 +127,9 @@ class ApplicationController < ActionController::Base | ||
127 | 127 | ||
128 | # TODO: move this logic somewhere else (Domain class?) | 128 | # TODO: move this logic somewhere else (Domain class?) |
129 | def detect_stuff_by_domain | 129 | def detect_stuff_by_domain |
130 | + # Sets text domain based on request host for custom internationalization | ||
131 | + FastGettext.text_domain = Domain.custom_locale(request.host) | ||
132 | + | ||
130 | @domain = Domain.find_by_name(request.host) | 133 | @domain = Domain.find_by_name(request.host) |
131 | if @domain.nil? | 134 | if @domain.nil? |
132 | @environment = Environment.default | 135 | @environment = Environment.default |
app/controllers/my_profile/cms_controller.rb
@@ -180,6 +180,8 @@ class CmsController < MyProfileController | @@ -180,6 +180,8 @@ class CmsController < MyProfileController | ||
180 | 180 | ||
181 | post_only :set_home_page | 181 | post_only :set_home_page |
182 | def set_home_page | 182 | def set_home_page |
183 | + return render_access_denied unless user.can_change_homepage? | ||
184 | + | ||
183 | article = params[:id].nil? ? nil : profile.articles.find(params[:id]) | 185 | article = params[:id].nil? ? nil : profile.articles.find(params[:id]) |
184 | profile.update_attribute(:home_page, article) | 186 | profile.update_attribute(:home_page, article) |
185 | 187 | ||
@@ -218,6 +220,7 @@ class CmsController < MyProfileController | @@ -218,6 +220,7 @@ class CmsController < MyProfileController | ||
218 | if @errors.any? | 220 | if @errors.any? |
219 | render :action => 'upload_files', :parent_id => @parent_id | 221 | render :action => 'upload_files', :parent_id => @parent_id |
220 | else | 222 | else |
223 | + session[:notice] = _('File(s) successfully uploaded') | ||
221 | if @back_to | 224 | if @back_to |
222 | redirect_to @back_to | 225 | redirect_to @back_to |
223 | elsif @parent | 226 | elsif @parent |
app/controllers/my_profile/profile_design_controller.rb
@@ -3,7 +3,16 @@ class ProfileDesignController < BoxOrganizerController | @@ -3,7 +3,16 @@ class ProfileDesignController < BoxOrganizerController | ||
3 | needs_profile | 3 | needs_profile |
4 | 4 | ||
5 | protect 'edit_profile_design', :profile | 5 | protect 'edit_profile_design', :profile |
6 | - | 6 | + |
7 | + before_filter :protect_fixed_block, :only => [:save, :move_block] | ||
8 | + | ||
9 | + def protect_fixed_block | ||
10 | + block = boxes_holder.blocks.find(params[:id].gsub(/^block-/, '')) | ||
11 | + if block.fixed && !current_person.is_admin? | ||
12 | + render_access_denied | ||
13 | + end | ||
14 | + end | ||
15 | + | ||
7 | def available_blocks | 16 | def available_blocks |
8 | blocks = [ ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock, LinkListBlock, MyNetworkBlock, FeedReaderBlock, ProfileImageBlock, LocationBlock, SlideshowBlock, ProfileSearchBlock, HighlightsBlock ] | 17 | blocks = [ ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock, LinkListBlock, MyNetworkBlock, FeedReaderBlock, ProfileImageBlock, LocationBlock, SlideshowBlock, ProfileSearchBlock, HighlightsBlock ] |
9 | 18 |
app/controllers/my_profile/profile_editor_controller.rb
@@ -78,7 +78,11 @@ class ProfileEditorController < MyProfileController | @@ -78,7 +78,11 @@ class ProfileEditorController < MyProfileController | ||
78 | if request.post? | 78 | if request.post? |
79 | if @profile.destroy | 79 | if @profile.destroy |
80 | session[:notice] = _('The profile was deleted.') | 80 | session[:notice] = _('The profile was deleted.') |
81 | - redirect_to :controller => 'home' | 81 | + if(params[:return_to]) |
82 | + redirect_to params[:return_to] | ||
83 | + else | ||
84 | + redirect_to :controller => 'home' | ||
85 | + end | ||
82 | else | 86 | else |
83 | session[:notice] = _('Could not delete profile') | 87 | session[:notice] = _('Could not delete profile') |
84 | end | 88 | end |
@@ -100,6 +104,45 @@ class ProfileEditorController < MyProfileController | @@ -100,6 +104,45 @@ class ProfileEditorController < MyProfileController | ||
100 | end | 104 | end |
101 | end | 105 | end |
102 | 106 | ||
107 | + def deactivate_profile | ||
108 | + if environment.admins.include?(current_person) | ||
109 | + profile = environment.profiles.find(params[:id]) | ||
110 | + if profile.disable | ||
111 | + profile.save | ||
112 | + session[:notice] = _("The profile '#{profile.name}' was deactivated.") | ||
113 | + else | ||
114 | + session[:notice] = _('Could not deactivate profile.') | ||
115 | + end | ||
116 | + end | ||
117 | + | ||
118 | + redirect_to_previous_location | ||
119 | + end | ||
120 | + | ||
121 | + def activate_profile | ||
122 | + if environment.admins.include?(current_person) | ||
123 | + profile = environment.profiles.find(params[:id]) | ||
124 | + | ||
125 | + if profile.enable | ||
126 | + session[:notice] = _("The profile '#{profile.name}' was activated.") | ||
127 | + else | ||
128 | + session[:notice] = _('Could not activate the profile.') | ||
129 | + end | ||
130 | + end | ||
131 | + | ||
132 | + redirect_to_previous_location | ||
133 | + end | ||
134 | + | ||
135 | + protected | ||
136 | + | ||
137 | + def redirect_to_previous_location | ||
138 | + redirect_to @back_to | ||
139 | + end | ||
140 | + | ||
141 | + #TODO Consider using this as a general controller feature to be available on every action. | ||
142 | + def back_to | ||
143 | + @back_to = params[:back_to] || request.referer || "/" | ||
144 | + end | ||
145 | + | ||
103 | private | 146 | private |
104 | 147 | ||
105 | def has_welcome_page | 148 | def has_welcome_page |
@@ -112,8 +155,4 @@ class ProfileEditorController < MyProfileController | @@ -112,8 +155,4 @@ class ProfileEditorController < MyProfileController | ||
112 | end | 155 | end |
113 | end | 156 | end |
114 | 157 | ||
115 | - #TODO Consider using this as a general controller feature to be available on every action. | ||
116 | - def back_to | ||
117 | - @back_to = params[:back_to] || request.referer | ||
118 | - end | ||
119 | end | 158 | end |
app/controllers/my_profile/profile_members_controller.rb
@@ -20,7 +20,7 @@ class ProfileMembersController < MyProfileController | @@ -20,7 +20,7 @@ class ProfileMembersController < MyProfileController | ||
20 | redirect_to :action => :last_admin | 20 | redirect_to :action => :last_admin |
21 | elsif @person.define_roles(@roles, profile) | 21 | elsif @person.define_roles(@roles, profile) |
22 | session[:notice] = _('Roles successfuly updated') | 22 | session[:notice] = _('Roles successfuly updated') |
23 | - redirect_to :controller => 'profile_editor' | 23 | + redirect_to :action => 'index' |
24 | else | 24 | else |
25 | session[:notice] = _('Couldn\'t change the roles') | 25 | session[:notice] = _('Couldn\'t change the roles') |
26 | redirect_to :action => 'index' | 26 | redirect_to :action => 'index' |
app/controllers/public/contact_controller.rb
1 | class ContactController < PublicController | 1 | class ContactController < PublicController |
2 | 2 | ||
3 | - before_filter :login_required | ||
4 | - | ||
5 | needs_profile | 3 | needs_profile |
6 | 4 | ||
7 | def new | 5 | def new |
8 | - @contact | 6 | + @contact = build_contact |
9 | if request.post? && params[:confirm] == 'true' | 7 | if request.post? && params[:confirm] == 'true' |
10 | - @contact = user.build_contact(profile, params[:contact]) | ||
11 | @contact.city = (!params[:city].blank? && City.exists?(params[:city])) ? City.find(params[:city]).name : nil | 8 | @contact.city = (!params[:city].blank? && City.exists?(params[:city])) ? City.find(params[:city]).name : nil |
12 | @contact.state = (!params[:state].blank? && State.exists?(params[:state])) ? State.find(params[:state]).name : nil | 9 | @contact.state = (!params[:state].blank? && State.exists?(params[:state])) ? State.find(params[:state]).name : nil |
13 | if @contact.deliver | 10 | if @contact.deliver |
@@ -16,8 +13,17 @@ class ContactController < PublicController | @@ -16,8 +13,17 @@ class ContactController < PublicController | ||
16 | else | 13 | else |
17 | session[:notice] = _('Contact not sent') | 14 | session[:notice] = _('Contact not sent') |
18 | end | 15 | end |
16 | + end | ||
17 | + end | ||
18 | + | ||
19 | + protected | ||
20 | + | ||
21 | + def build_contact | ||
22 | + params[:contact] ||= {} | ||
23 | + if logged_in? | ||
24 | + user.build_contact profile, params[:contact] | ||
19 | else | 25 | else |
20 | - @contact = user.build_contact(profile) | 26 | + Contact.new params[:contact].merge(dest: profile) |
21 | end | 27 | end |
22 | end | 28 | end |
23 | 29 |
app/helpers/application_helper.rb
@@ -433,19 +433,19 @@ module ApplicationHelper | @@ -433,19 +433,19 @@ module ApplicationHelper | ||
433 | end | 433 | end |
434 | 434 | ||
435 | def theme_site_title | 435 | def theme_site_title |
436 | - theme_include('site_title') | 436 | + @theme_site_title ||= theme_include 'site_title' |
437 | end | 437 | end |
438 | 438 | ||
439 | def theme_header | 439 | def theme_header |
440 | - theme_include('header') | 440 | + @theme_header ||= theme_include 'header' |
441 | end | 441 | end |
442 | 442 | ||
443 | def theme_footer | 443 | def theme_footer |
444 | - theme_include('footer') | 444 | + @theme_footer ||= theme_include 'footer' |
445 | end | 445 | end |
446 | 446 | ||
447 | def theme_extra_navigation | 447 | def theme_extra_navigation |
448 | - theme_include('navigation') | 448 | + @theme_extra_navigation ||= theme_include 'navigation' |
449 | end | 449 | end |
450 | 450 | ||
451 | def is_testing_theme | 451 | def is_testing_theme |
@@ -674,13 +674,14 @@ module ApplicationHelper | @@ -674,13 +674,14 @@ module ApplicationHelper | ||
674 | html.join "\n" | 674 | html.join "\n" |
675 | end | 675 | end |
676 | 676 | ||
677 | + def theme_javascript_src | ||
678 | + script = File.join theme_path, 'theme.js' | ||
679 | + script if File.exists? File.join(Rails.root, 'public', script) | ||
680 | + end | ||
681 | + | ||
677 | def theme_javascript_ng | 682 | def theme_javascript_ng |
678 | - script = File.join(theme_path, 'theme.js') | ||
679 | - if File.exists?(File.join(Rails.root, 'public', script)) | ||
680 | - javascript_include_tag script | ||
681 | - else | ||
682 | - nil | ||
683 | - end | 683 | + script = theme_javascript_src |
684 | + javascript_include_tag script if script | ||
684 | end | 685 | end |
685 | 686 | ||
686 | def file_field_or_thumbnail(label, image, i) | 687 | def file_field_or_thumbnail(label, image, i) |
@@ -861,8 +862,9 @@ module ApplicationHelper | @@ -861,8 +862,9 @@ module ApplicationHelper | ||
861 | end | 862 | end |
862 | 863 | ||
863 | def base_url | 864 | def base_url |
864 | - environment.top_url | 865 | + environment.top_url(request.scheme) |
865 | end | 866 | end |
867 | + alias :top_url :base_url | ||
866 | 868 | ||
867 | def helper_for_article(article) | 869 | def helper_for_article(article) |
868 | article_helper = ActionView::Base.new | 870 | article_helper = ActionView::Base.new |
@@ -944,9 +946,9 @@ module ApplicationHelper | @@ -944,9 +946,9 @@ module ApplicationHelper | ||
944 | # from Article model for an ArticleBlock. | 946 | # from Article model for an ArticleBlock. |
945 | def reference_to_article(text, article, anchor=nil) | 947 | def reference_to_article(text, article, anchor=nil) |
946 | if article.profile.domains.empty? | 948 | if article.profile.domains.empty? |
947 | - href = "/#{article.url[:profile]}/" | 949 | + href = "#{Noosfero.root}/#{article.url[:profile]}/" |
948 | else | 950 | else |
949 | - href = "http://#{article.profile.domains.first.name}/" | 951 | + href = "http://#{article.profile.domains.first.name}#{Noosfero.root}/" |
950 | end | 952 | end |
951 | href += article.url[:page].join('/') | 953 | href += article.url[:page].join('/') |
952 | href += '#' + anchor if anchor | 954 | href += '#' + anchor if anchor |
@@ -1325,10 +1327,8 @@ module ApplicationHelper | @@ -1325,10 +1327,8 @@ module ApplicationHelper | ||
1325 | return '' if templates.count == 0 | 1327 | return '' if templates.count == 0 |
1326 | return hidden_field_tag("#{field_name}[template_id]", templates.first.id) if templates.count == 1 | 1328 | return hidden_field_tag("#{field_name}[template_id]", templates.first.id) if templates.count == 1 |
1327 | 1329 | ||
1328 | - counter = 0 | ||
1329 | radios = templates.map do |template| | 1330 | radios = templates.map do |template| |
1330 | - counter += 1 | ||
1331 | - content_tag('li', labelled_radio_button(link_to(template.name, template.url, :target => '_blank'), "#{field_name}[template_id]", template.id, counter==1)) | 1331 | + content_tag('li', labelled_radio_button(link_to(template.name, template.url, :target => '_blank'), "#{field_name}[template_id]", template.id, environment.is_default_template?(template))) |
1332 | end.join("\n") | 1332 | end.join("\n") |
1333 | 1333 | ||
1334 | content_tag('div', content_tag('label', _('Profile organization'), :for => 'template-options', :class => 'formlabel') + | 1334 | content_tag('div', content_tag('label', _('Profile organization'), :for => 'template-options', :class => 'formlabel') + |
app/helpers/article_helper.rb
@@ -77,12 +77,59 @@ module ArticleHelper | @@ -77,12 +77,59 @@ module ArticleHelper | ||
77 | content_tag('div', | 77 | content_tag('div', |
78 | radio_button(:article, :published, false) + | 78 | radio_button(:article, :published, false) + |
79 | content_tag('label', _('Private'), :for => 'article_published_false', :id => "label_private") | 79 | content_tag('label', _('Private'), :for => 'article_published_false', :id => "label_private") |
80 | - ) + | ||
81 | - (article.profile.community? ? content_tag('div', | ||
82 | - content_tag('label', _('Fill in the search field to add the exception users to see this content'), :id => "text-input-search-exception-users") + | ||
83 | - token_input_field_tag(:q, 'search-article-privacy-exceptions', {:action => 'search_article_privacy_exceptions'}, | ||
84 | - {:focus => false, :hint_text => _('Type in a search term for a user'), :pre_populate => tokenized_children})) : | ||
85 | - '')) | 80 | + ) + |
81 | + privacity_exceptions(article, tokenized_children) | ||
82 | + ) | ||
83 | + end | ||
84 | + | ||
85 | + def privacity_exceptions(article, tokenized_children) | ||
86 | + content_tag('div', | ||
87 | + content_tag('div', | ||
88 | + ( | ||
89 | + if article.profile | ||
90 | + add_option_to_followers(article, tokenized_children) | ||
91 | + else | ||
92 | + '' | ||
93 | + end | ||
94 | + ) | ||
95 | + ), | ||
96 | + :style => "margin-left:10px" | ||
97 | + ) | ||
98 | + end | ||
99 | + | ||
100 | + def add_option_to_followers(article, tokenized_children) | ||
101 | + label_message = article.profile.organization? ? _('For all community members') : _('For all your friends') | ||
102 | + | ||
103 | + check_box( | ||
104 | + :article, | ||
105 | + :show_to_followers, | ||
106 | + {:class => "custom_privacy_option"} | ||
107 | + ) + | ||
108 | + content_tag( | ||
109 | + 'label', | ||
110 | + label_message, | ||
111 | + :for => 'article_show_to_followers', | ||
112 | + :id => 'label_show_to_followers' | ||
113 | + ) + | ||
114 | + (article.profile.community? ? | ||
115 | + content_tag( | ||
116 | + 'div', | ||
117 | + content_tag( | ||
118 | + 'label', | ||
119 | + _('Fill in the search field to add the exception users to see this content'), | ||
120 | + :id => "text-input-search-exception-users" | ||
121 | + ) + | ||
122 | + token_input_field_tag( | ||
123 | + :q, | ||
124 | + 'search-article-privacy-exceptions', | ||
125 | + {:action => 'search_article_privacy_exceptions'}, | ||
126 | + { | ||
127 | + :focus => false, | ||
128 | + :hint_text => _('Type in a search term for a user'), | ||
129 | + :pre_populate => tokenized_children | ||
130 | + } | ||
131 | + ) | ||
132 | + ) : '') | ||
86 | end | 133 | end |
87 | 134 | ||
88 | def prepare_to_token_input(array) | 135 | def prepare_to_token_input(array) |
app/helpers/boxes_helper.rb
@@ -170,49 +170,54 @@ module BoxesHelper | @@ -170,49 +170,54 @@ module BoxesHelper | ||
170 | else | 170 | else |
171 | "before-block-#{block.id}" | 171 | "before-block-#{block.id}" |
172 | end | 172 | end |
173 | - | ||
174 | - content_tag('div', ' ', :id => id, :class => 'block-target' ) + drop_receiving_element(id, :url => { :action => 'move_block', :target => id }, :accept => box.acceptable_blocks, :hoverclass => 'block-target-hover') | 173 | + if block.nil? or modifiable?(block) |
174 | + content_tag('div', ' ', :id => id, :class => 'block-target' ) + drop_receiving_element(id, :url => { :action => 'move_block', :target => id }, :accept => box.acceptable_blocks, :hoverclass => 'block-target-hover') | ||
175 | + else | ||
176 | + "" | ||
177 | + end | ||
175 | end | 178 | end |
176 | 179 | ||
177 | # makes the given block draggable so it can be moved away. | 180 | # makes the given block draggable so it can be moved away. |
178 | def block_handle(block) | 181 | def block_handle(block) |
179 | - draggable_element("block-#{block.id}", :revert => true) | 182 | + modifiable?(block) ? draggable_element("block-#{block.id}", :revert => true) : "" |
180 | end | 183 | end |
181 | 184 | ||
182 | def block_edit_buttons(block) | 185 | def block_edit_buttons(block) |
183 | buttons = [] | 186 | buttons = [] |
184 | nowhere = 'javascript: return false;' | 187 | nowhere = 'javascript: return false;' |
185 | 188 | ||
186 | - if block.first? | ||
187 | - buttons << icon_button('up-disabled', _("Can't move up anymore."), nowhere) | ||
188 | - else | ||
189 | - buttons << icon_button('up', _('Move block up'), { :action => 'move_block_up', :id => block.id }, { :method => 'post' }) | ||
190 | - end | 189 | + if modifiable?(block) |
190 | + if block.first? | ||
191 | + buttons << icon_button('up-disabled', _("Can't move up anymore."), nowhere) | ||
192 | + else | ||
193 | + buttons << icon_button('up', _('Move block up'), { :action => 'move_block_up', :id => block.id }, { :method => 'post' }) | ||
194 | + end | ||
191 | 195 | ||
192 | - if block.last? | ||
193 | - buttons << icon_button('down-disabled', _("Can't move down anymore."), nowhere) | ||
194 | - else | ||
195 | - buttons << icon_button(:down, _('Move block down'), { :action => 'move_block_down' ,:id => block.id }, { :method => 'post'}) | ||
196 | - end | 196 | + if block.last? |
197 | + buttons << icon_button('down-disabled', _("Can't move down anymore."), nowhere) | ||
198 | + else | ||
199 | + buttons << icon_button(:down, _('Move block down'), { :action => 'move_block_down' ,:id => block.id }, { :method => 'post'}) | ||
200 | + end | ||
197 | 201 | ||
198 | - holder = block.owner | ||
199 | - # move to opposite side | ||
200 | - # FIXME too much hardcoded stuff | ||
201 | - if holder.layout_template == 'default' | ||
202 | - if block.box.position == 2 # area 2, left side => move to right side | ||
203 | - buttons << icon_button('right', _('Move to the opposite side'), { :action => 'move_block', :target => 'end-of-box-' + holder.boxes[2].id.to_s, :id => block.id }, :method => 'post' ) | ||
204 | - elsif block.box.position == 3 # area 3, right side => move to left side | ||
205 | - buttons << icon_button('left', _('Move to the opposite side'), { :action => 'move_block', :target => 'end-of-box-' + holder.boxes[1].id.to_s, :id => block.id }, :method => 'post' ) | 202 | + holder = block.owner |
203 | + # move to opposite side | ||
204 | + # FIXME too much hardcoded stuff | ||
205 | + if holder.layout_template == 'default' | ||
206 | + if block.box.position == 2 # area 2, left side => move to right side | ||
207 | + buttons << icon_button('right', _('Move to the opposite side'), { :action => 'move_block', :target => 'end-of-box-' + holder.boxes[2].id.to_s, :id => block.id }, :method => 'post' ) | ||
208 | + elsif block.box.position == 3 # area 3, right side => move to left side | ||
209 | + buttons << icon_button('left', _('Move to the opposite side'), { :action => 'move_block', :target => 'end-of-box-' + holder.boxes[1].id.to_s, :id => block.id }, :method => 'post' ) | ||
210 | + end | ||
206 | end | 211 | end |
207 | - end | ||
208 | 212 | ||
209 | - if block.editable? | ||
210 | - buttons << colorbox_icon_button(:edit, _('Edit'), { :action => 'edit', :id => block.id }) | ||
211 | - end | 213 | + if block.editable? |
214 | + buttons << colorbox_icon_button(:edit, _('Edit'), { :action => 'edit', :id => block.id }) | ||
215 | + end | ||
212 | 216 | ||
213 | - if !block.main? | ||
214 | - buttons << icon_button(:delete, _('Remove block'), { :action => 'remove', :id => block.id }, { :method => 'post', :confirm => _('Are you sure you want to remove this block?')}) | ||
215 | - buttons << icon_button(:clone, _('Clone'), { :action => 'clone_block', :id => block.id }, { :method => 'post' }) | 217 | + if !block.main? |
218 | + buttons << icon_button(:delete, _('Remove block'), { :action => 'remove', :id => block.id }, { :method => 'post', :confirm => _('Are you sure you want to remove this block?')}) | ||
219 | + buttons << icon_button(:clone, _('Clone'), { :action => 'clone_block', :id => block.id }, { :method => 'post' }) | ||
220 | + end | ||
216 | end | 221 | end |
217 | 222 | ||
218 | if block.respond_to?(:help) | 223 | if block.respond_to?(:help) |
@@ -248,5 +253,7 @@ module BoxesHelper | @@ -248,5 +253,7 @@ module BoxesHelper | ||
248 | classes | 253 | classes |
249 | end | 254 | end |
250 | 255 | ||
251 | - | 256 | + def modifiable?(block) |
257 | + return !block.fixed || environment.admins.include?(user) | ||
258 | + end | ||
252 | end | 259 | end |
app/helpers/content_viewer_helper.rb
@@ -45,7 +45,7 @@ module ContentViewerHelper | @@ -45,7 +45,7 @@ module ContentViewerHelper | ||
45 | { article.environment.locales[translation.language] => { :href => url_for(translation.url) } } | 45 | { article.environment.locales[translation.language] => { :href => url_for(translation.url) } } |
46 | end | 46 | end |
47 | content_tag(:div, link_to(_('Translations'), '#', | 47 | content_tag(:div, link_to(_('Translations'), '#', |
48 | - :onmouseover => "toggleSubmenu(this, '#{_('Translations')}', #{links.to_json}); return false", | 48 | + :onmouseover => "toggleSubmenu(this, '#{_('Translations')}', #{CGI::escape_html(links.to_json)}); return false", |
49 | :class => 'article-translations-menu simplemenu-trigger up'), | 49 | :class => 'article-translations-menu simplemenu-trigger up'), |
50 | :class => 'article-translations') | 50 | :class => 'article-translations') |
51 | end | 51 | end |
app/helpers/layout_helper.rb
@@ -2,12 +2,31 @@ module LayoutHelper | @@ -2,12 +2,31 @@ module LayoutHelper | ||
2 | 2 | ||
3 | def body_classes | 3 | def body_classes |
4 | # Identify the current controller and action for the CSS: | 4 | # Identify the current controller and action for the CSS: |
5 | + (logged_in? ? " logged-in" : "") + | ||
5 | " controller-#{controller.controller_name}" + | 6 | " controller-#{controller.controller_name}" + |
6 | " action-#{controller.controller_name}-#{controller.action_name}" + | 7 | " action-#{controller.controller_name}-#{controller.action_name}" + |
7 | " template-#{@layout_template || if profile.blank? then 'default' else profile.layout_template end}" + | 8 | " template-#{@layout_template || if profile.blank? then 'default' else profile.layout_template end}" + |
8 | (!profile.nil? && profile.is_on_homepage?(request.path,@page) ? " profile-homepage" : "") | 9 | (!profile.nil? && profile.is_on_homepage?(request.path,@page) ? " profile-homepage" : "") |
9 | end | 10 | end |
10 | 11 | ||
12 | + def html_tag_classes | ||
13 | + [ | ||
14 | + body_classes, ( | ||
15 | + profile.blank? ? nil : [ | ||
16 | + 'profile-type-is-' + profile.class.name.downcase, | ||
17 | + 'profile-name-is-' + profile.identifier, | ||
18 | + ] | ||
19 | + ), 'theme-' + current_theme, | ||
20 | + @plugins.dispatch(:html_tag_classes).map do |content| | ||
21 | + if content.respond_to?(:call) | ||
22 | + instance_exec(&content) | ||
23 | + else | ||
24 | + content.html_safe | ||
25 | + end | ||
26 | + end | ||
27 | + ].flatten.compact.join(' ') | ||
28 | + end | ||
29 | + | ||
11 | def noosfero_javascript | 30 | def noosfero_javascript |
12 | plugins_javascripts = @plugins.map { |plugin| [plugin.js_files].flatten.map { |js| plugin.class.public_path(js) } }.flatten | 31 | plugins_javascripts = @plugins.map { |plugin| [plugin.js_files].flatten.map { |js| plugin.class.public_path(js) } }.flatten |
13 | 32 | ||
@@ -17,6 +36,8 @@ module LayoutHelper | @@ -17,6 +36,8 @@ module LayoutHelper | ||
17 | unless plugins_javascripts.empty? | 36 | unless plugins_javascripts.empty? |
18 | output += javascript_include_tag plugins_javascripts, :cache => "cache/plugins-#{Digest::MD5.hexdigest plugins_javascripts.to_s}" | 37 | output += javascript_include_tag plugins_javascripts, :cache => "cache/plugins-#{Digest::MD5.hexdigest plugins_javascripts.to_s}" |
19 | end | 38 | end |
39 | + output += theme_javascript_ng.to_s | ||
40 | + | ||
20 | output | 41 | output |
21 | end | 42 | end |
22 | 43 | ||
@@ -85,6 +106,10 @@ module LayoutHelper | @@ -85,6 +106,10 @@ module LayoutHelper | ||
85 | theme_path + '/style.css' | 106 | theme_path + '/style.css' |
86 | end | 107 | end |
87 | 108 | ||
109 | + def layout_template | ||
110 | + if profile then profile.layout_template else environment.layout_template end | ||
111 | + end | ||
112 | + | ||
88 | def addthis_javascript | 113 | def addthis_javascript |
89 | if NOOSFERO_CONF['addthis_enabled'] | 114 | if NOOSFERO_CONF['addthis_enabled'] |
90 | '<script src="https://s7.addthis.com/js/152/addthis_widget.js"></script>' | 115 | '<script src="https://s7.addthis.com/js/152/addthis_widget.js"></script>' |
app/helpers/person_notifier_helper.rb
app/helpers/search_helper.rb
@@ -24,6 +24,12 @@ module SearchHelper | @@ -24,6 +24,12 @@ module SearchHelper | ||
24 | } | 24 | } |
25 | } | 25 | } |
26 | 26 | ||
27 | + COMMON_PROFILE_LIST_BLOCK = [ | ||
28 | + :enterprises, | ||
29 | + :people, | ||
30 | + :communities | ||
31 | + ] | ||
32 | + | ||
27 | # FIXME remove it after search_controler refactored | 33 | # FIXME remove it after search_controler refactored |
28 | include EventsHelper | 34 | include EventsHelper |
29 | 35 | ||
@@ -100,6 +106,20 @@ module SearchHelper | @@ -100,6 +106,20 @@ module SearchHelper | ||
100 | end | 106 | end |
101 | end | 107 | end |
102 | 108 | ||
109 | + def display_selector(asset, display, float = 'right') | ||
110 | + display = nil if display.blank? | ||
111 | + display ||= asset_class(asset).default_search_display | ||
112 | + if [display?(asset, :map), display?(asset, :compact), display?(asset, :full)].select {|option| option}.count > 1 | ||
113 | + compact_link = display?(asset, :compact) ? (display == 'compact' ? _('Compact') : link_to(_('Compact'), params.merge(:display => 'compact'))) : nil | ||
114 | + map_link = display?(asset, :map) ? (display == 'map' ? _('Map') : link_to(_('Map'), params.merge(:display => 'map'))) : nil | ||
115 | + full_link = display?(asset, :full) ? (display == 'full' ? _('Full') : link_to(_('Full'), params.merge(:display => 'full'))) : nil | ||
116 | + content_tag('div', | ||
117 | + content_tag('strong', _('Display')) + ': ' + [compact_link, map_link, full_link].compact.join(' | ').html_safe, | ||
118 | + :class => 'search-customize-options' | ||
119 | + ) | ||
120 | + end | ||
121 | + end | ||
122 | + | ||
103 | def filters(asset) | 123 | def filters(asset) |
104 | return if !asset | 124 | return if !asset |
105 | klass = asset_class(asset) | 125 | klass = asset_class(asset) |
app/helpers/tinymce_helper.rb
@@ -11,7 +11,7 @@ module TinymceHelper | @@ -11,7 +11,7 @@ module TinymceHelper | ||
11 | end | 11 | end |
12 | 12 | ||
13 | def tinymce_init_js options = {} | 13 | def tinymce_init_js options = {} |
14 | - options.merge! :document_base_url => environment.top_url, | 14 | + options.merge! :document_base_url => top_url, |
15 | :content_css => "/stylesheets/tinymce.css,#{macro_css_files}", | 15 | :content_css => "/stylesheets/tinymce.css,#{macro_css_files}", |
16 | :plugins => %w[compat3x advlist autolink lists link image charmap print preview hr anchor pagebreak | 16 | :plugins => %w[compat3x advlist autolink lists link image charmap print preview hr anchor pagebreak |
17 | searchreplace wordcount visualblocks visualchars code fullscreen | 17 | searchreplace wordcount visualblocks visualchars code fullscreen |
app/models/approve_article.rb
@@ -22,6 +22,7 @@ class ApproveArticle < Task | @@ -22,6 +22,7 @@ class ApproveArticle < Task | ||
22 | end | 22 | end |
23 | 23 | ||
24 | settings_items :closing_statment, :article_parent_id, :highlighted | 24 | settings_items :closing_statment, :article_parent_id, :highlighted |
25 | + settings_items :create_link, :type => :boolean, :default => false | ||
25 | 26 | ||
26 | def article_parent | 27 | def article_parent |
27 | Article.find_by_id article_parent_id.to_i | 28 | Article.find_by_id article_parent_id.to_i |
@@ -48,7 +49,11 @@ class ApproveArticle < Task | @@ -48,7 +49,11 @@ class ApproveArticle < Task | ||
48 | end | 49 | end |
49 | 50 | ||
50 | def perform | 51 | def perform |
51 | - article.copy!(:name => name, :abstract => abstract, :body => body, :profile => target, :reference_article => article, :parent => article_parent, :highlighted => highlighted, :source => article.source, :last_changed_by_id => article.last_changed_by_id, :created_by_id => article.created_by_id) | 52 | + if create_link |
53 | + LinkArticle.create!(:reference_article => article, :profile => target, :parent => article_parent, :highlighted => highlighted) | ||
54 | + else | ||
55 | + article.copy!(:name => name, :abstract => abstract, :body => body, :profile => target, :reference_article => article, :parent => article_parent, :highlighted => highlighted, :source => article.source, :last_changed_by_id => article.last_changed_by_id, :created_by_id => article.created_by_id) | ||
56 | + end | ||
52 | end | 57 | end |
53 | 58 | ||
54 | def title | 59 | def title |
app/models/article.rb
@@ -2,7 +2,14 @@ require 'hpricot' | @@ -2,7 +2,14 @@ require 'hpricot' | ||
2 | 2 | ||
3 | class Article < ActiveRecord::Base | 3 | class Article < ActiveRecord::Base |
4 | 4 | ||
5 | - attr_accessible :name, :body, :abstract, :profile, :tag_list, :parent, :allow_members_to_edit, :translation_of_id, :language, :license_id, :parent_id, :display_posts_in_current_language, :category_ids, :posts_per_page, :moderate_comments, :accept_comments, :feed, :published, :source, :highlighted, :notify_comments, :display_hits, :slug, :external_feed_builder, :display_versions, :external_link, :image_builder | 5 | + attr_accessible :name, :body, :abstract, :profile, :tag_list, :parent, |
6 | + :allow_members_to_edit, :translation_of_id, :language, | ||
7 | + :license_id, :parent_id, :display_posts_in_current_language, | ||
8 | + :category_ids, :posts_per_page, :moderate_comments, | ||
9 | + :accept_comments, :feed, :published, :source, | ||
10 | + :highlighted, :notify_comments, :display_hits, :slug, | ||
11 | + :external_feed_builder, :display_versions, :external_link, | ||
12 | + :image_builder, :show_to_followers | ||
6 | 13 | ||
7 | acts_as_having_image | 14 | acts_as_having_image |
8 | 15 | ||
@@ -100,6 +107,11 @@ class Article < ActiveRecord::Base | @@ -100,6 +107,11 @@ class Article < ActiveRecord::Base | ||
100 | self.activity.destroy if self.activity | 107 | self.activity.destroy if self.activity |
101 | end | 108 | end |
102 | 109 | ||
110 | + after_destroy :destroy_link_article | ||
111 | + def destroy_link_article | ||
112 | + Article.where(:reference_article_id => self.id, :type => LinkArticle).destroy_all | ||
113 | + end | ||
114 | + | ||
103 | xss_terminate :only => [ :name ], :on => 'validation', :with => 'white_list' | 115 | xss_terminate :only => [ :name ], :on => 'validation', :with => 'white_list' |
104 | 116 | ||
105 | scope :in_category, lambda { |category| | 117 | scope :in_category, lambda { |category| |
@@ -330,7 +342,7 @@ class Article < ActiveRecord::Base | @@ -330,7 +342,7 @@ class Article < ActiveRecord::Base | ||
330 | def belongs_to_blog? | 342 | def belongs_to_blog? |
331 | self.parent and self.parent.blog? | 343 | self.parent and self.parent.blog? |
332 | end | 344 | end |
333 | - | 345 | + |
334 | def belongs_to_forum? | 346 | def belongs_to_forum? |
335 | self.parent and self.parent.forum? | 347 | self.parent and self.parent.forum? |
336 | end | 348 | end |
@@ -442,6 +454,7 @@ class Article < ActiveRecord::Base | @@ -442,6 +454,7 @@ class Article < ActiveRecord::Base | ||
442 | if self.parent && !self.parent.published? | 454 | if self.parent && !self.parent.published? |
443 | return false | 455 | return false |
444 | end | 456 | end |
457 | + | ||
445 | true | 458 | true |
446 | else | 459 | else |
447 | false | 460 | false |
@@ -475,14 +488,17 @@ class Article < ActiveRecord::Base | @@ -475,14 +488,17 @@ class Article < ActiveRecord::Base | ||
475 | {:conditions => [" articles.published = ? OR | 488 | {:conditions => [" articles.published = ? OR |
476 | articles.last_changed_by_id = ? OR | 489 | articles.last_changed_by_id = ? OR |
477 | articles.profile_id = ? OR | 490 | articles.profile_id = ? OR |
478 | - ?", | ||
479 | - true, user.id, user.id, user.has_permission?(:view_private_content, profile)] } | 491 | + ? OR articles.show_to_followers = ? AND ?", |
492 | + true, user.id, user.id, user.has_permission?(:view_private_content, profile), | ||
493 | + true, user.follows?(profile)]} | ||
480 | end | 494 | end |
481 | 495 | ||
496 | + | ||
482 | def display_unpublished_article_to?(user) | 497 | def display_unpublished_article_to?(user) |
483 | user == author || allow_view_private_content?(user) || user == profile || | 498 | user == author || allow_view_private_content?(user) || user == profile || |
484 | user.is_admin?(profile.environment) || user.is_admin?(profile) || | 499 | user.is_admin?(profile.environment) || user.is_admin?(profile) || |
485 | - article_privacy_exceptions.include?(user) | 500 | + article_privacy_exceptions.include?(user) || |
501 | + (self.show_to_followers && user.follows?(profile)) | ||
486 | end | 502 | end |
487 | 503 | ||
488 | def display_to?(user = nil) | 504 | def display_to?(user = nil) |
app/models/block.rb
1 | class Block < ActiveRecord::Base | 1 | class Block < ActiveRecord::Base |
2 | 2 | ||
3 | - attr_accessible :title, :display, :limit, :box_id, :posts_per_page, :visualization_format, :language, :display_user, :box | 3 | + attr_accessible :title, :display, :limit, :box_id, :posts_per_page, :visualization_format, :language, :display_user, :box, :fixed |
4 | 4 | ||
5 | # to be able to generate HTML | 5 | # to be able to generate HTML |
6 | include ActionView::Helpers::UrlHelper | 6 | include ActionView::Helpers::UrlHelper |
@@ -64,7 +64,7 @@ class Block < ActiveRecord::Base | @@ -64,7 +64,7 @@ class Block < ActiveRecord::Base | ||
64 | end | 64 | end |
65 | 65 | ||
66 | def display_to_user?(user) | 66 | def display_to_user?(user) |
67 | - display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') | 67 | + display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') || (user && display_user == 'followers' && user.follows?(owner)) |
68 | end | 68 | end |
69 | 69 | ||
70 | def display_always(context) | 70 | def display_always(context) |
@@ -75,7 +75,7 @@ class Block < ActiveRecord::Base | @@ -75,7 +75,7 @@ class Block < ActiveRecord::Base | ||
75 | if context[:article] | 75 | if context[:article] |
76 | return context[:article] == owner.home_page | 76 | return context[:article] == owner.home_page |
77 | else | 77 | else |
78 | - return context[:request_path] == '/' | 78 | + return home_page_path?(context[:request_path]) |
79 | end | 79 | end |
80 | end | 80 | end |
81 | 81 | ||
@@ -83,7 +83,7 @@ class Block < ActiveRecord::Base | @@ -83,7 +83,7 @@ class Block < ActiveRecord::Base | ||
83 | if context[:article] | 83 | if context[:article] |
84 | return context[:article] != owner.home_page | 84 | return context[:article] != owner.home_page |
85 | else | 85 | else |
86 | - return context[:request_path] != '/' + (owner.kind_of?(Profile) ? owner.identifier : '') | 86 | + return !home_page_path?(context[:request_path]) |
87 | end | 87 | end |
88 | end | 88 | end |
89 | 89 | ||
@@ -110,11 +110,14 @@ class Block < ActiveRecord::Base | @@ -110,11 +110,14 @@ class Block < ActiveRecord::Base | ||
110 | # * <tt>'all'</tt>: the block is always displayed | 110 | # * <tt>'all'</tt>: the block is always displayed |
111 | settings_items :language, :type => :string, :default => 'all' | 111 | settings_items :language, :type => :string, :default => 'all' |
112 | 112 | ||
113 | + # The block can be configured to be fixed. Only can be edited by environment admins | ||
114 | + settings_items :fixed, :type => :boolean, :default => false | ||
115 | + | ||
113 | # returns the description of the block, used when the user sees a list of | 116 | # returns the description of the block, used when the user sees a list of |
114 | # blocks to choose one to include in the design. | 117 | # blocks to choose one to include in the design. |
115 | # | 118 | # |
116 | # Must be redefined in subclasses to match the description of each block | 119 | # Must be redefined in subclasses to match the description of each block |
117 | - # type. | 120 | + # type. |
118 | def self.description | 121 | def self.description |
119 | '(dummy)' | 122 | '(dummy)' |
120 | end | 123 | end |
@@ -124,13 +127,13 @@ class Block < ActiveRecord::Base | @@ -124,13 +127,13 @@ class Block < ActiveRecord::Base | ||
124 | # This method can return several types of objects: | 127 | # This method can return several types of objects: |
125 | # | 128 | # |
126 | # * <tt>String</tt>: if the string starts with <tt>http://</tt> or <tt>https://</tt>, then it is assumed to be address of an IFRAME. Otherwise it's is used as regular HTML. | 129 | # * <tt>String</tt>: if the string starts with <tt>http://</tt> or <tt>https://</tt>, then it is assumed to be address of an IFRAME. Otherwise it's is used as regular HTML. |
127 | - # * <tt>Hash</tt>: the hash is used to build an URL that is used as the address for a IFRAME. | 130 | + # * <tt>Hash</tt>: the hash is used to build an URL that is used as the address for a IFRAME. |
128 | # * <tt>Proc</tt>: the Proc is evaluated in the scope of BoxesHelper. The | 131 | # * <tt>Proc</tt>: the Proc is evaluated in the scope of BoxesHelper. The |
129 | # block can then use <tt>render</tt>, <tt>link_to</tt>, etc. | 132 | # block can then use <tt>render</tt>, <tt>link_to</tt>, etc. |
130 | # | 133 | # |
131 | # The method can also return <tt>nil</tt>, which means "no content". | 134 | # The method can also return <tt>nil</tt>, which means "no content". |
132 | # | 135 | # |
133 | - # See BoxesHelper#extract_block_content for implementation details. | 136 | + # See BoxesHelper#extract_block_content for implementation details. |
134 | def content(args={}) | 137 | def content(args={}) |
135 | "This is block number %d" % self.id | 138 | "This is block number %d" % self.id |
136 | end | 139 | end |
@@ -221,6 +224,7 @@ class Block < ActiveRecord::Base | @@ -221,6 +224,7 @@ class Block < ActiveRecord::Base | ||
221 | 'all' => _('All users'), | 224 | 'all' => _('All users'), |
222 | 'logged' => _('Logged'), | 225 | 'logged' => _('Logged'), |
223 | 'not_logged' => _('Not logged'), | 226 | 'not_logged' => _('Not logged'), |
227 | + 'followers' => owner.class != Environment && owner.organization? ? _('Members') : _('Friends') | ||
224 | } | 228 | } |
225 | end | 229 | end |
226 | 230 | ||
@@ -239,4 +243,21 @@ class Block < ActiveRecord::Base | @@ -239,4 +243,21 @@ class Block < ActiveRecord::Base | ||
239 | self.position = block.position | 243 | self.position = block.position |
240 | end | 244 | end |
241 | 245 | ||
246 | + private | ||
247 | + | ||
248 | + def home_page_path | ||
249 | + home_page_url = Noosfero.root('/') | ||
250 | + | ||
251 | + if owner.kind_of?(Profile) | ||
252 | + home_page_url += "profile/" if owner.home_page.nil? | ||
253 | + home_page_url += owner.identifier | ||
254 | + end | ||
255 | + | ||
256 | + return home_page_url | ||
257 | + end | ||
258 | + | ||
259 | + def home_page_path? path | ||
260 | + return path == home_page_path || path == (home_page_path + '/') | ||
261 | + end | ||
262 | + | ||
242 | end | 263 | end |
app/models/blog.rb
@@ -53,7 +53,7 @@ class Blog < Folder | @@ -53,7 +53,7 @@ class Blog < Folder | ||
53 | def prepare_external_feed | 53 | def prepare_external_feed |
54 | unless self.external_feed_data.nil? | 54 | unless self.external_feed_data.nil? |
55 | if self.external_feed(true) && self.external_feed.id == self.external_feed_data[:id].to_i | 55 | if self.external_feed(true) && self.external_feed.id == self.external_feed_data[:id].to_i |
56 | - self.external_feed.attributes = self.external_feed_data | 56 | + self.external_feed.attributes = self.external_feed_data.except(:id) |
57 | else | 57 | else |
58 | self.build_external_feed(self.external_feed_data, :without_protection => true) | 58 | self.build_external_feed(self.external_feed_data, :without_protection => true) |
59 | end | 59 | end |
app/models/community.rb
@@ -68,7 +68,7 @@ class Community < Organization | @@ -68,7 +68,7 @@ class Community < Organization | ||
68 | end | 68 | end |
69 | 69 | ||
70 | def default_template | 70 | def default_template |
71 | - environment.community_template | 71 | + environment.community_default_template |
72 | end | 72 | end |
73 | 73 | ||
74 | def news(limit = 30, highlight = false) | 74 | def news(limit = 30, highlight = false) |
app/models/domain.rb
@@ -92,4 +92,11 @@ class Domain < ActiveRecord::Base | @@ -92,4 +92,11 @@ class Domain < ActiveRecord::Base | ||
92 | @hosting = {} | 92 | @hosting = {} |
93 | end | 93 | end |
94 | 94 | ||
95 | + # Detects a domain's custom text domain chain if available based on a domain | ||
96 | + # served on multitenancy configuration or a registered domain. | ||
97 | + def self.custom_locale(domainname) | ||
98 | + domain = Noosfero::MultiTenancy.mapping[domainname] || domainname[/(.*?)\./,1] | ||
99 | + FastGettext.translation_repositories.keys.include?(domain) ? domain : FastGettext.default_text_domain | ||
100 | + end | ||
101 | + | ||
95 | end | 102 | end |
app/models/enterprise.rb
@@ -100,7 +100,12 @@ class Enterprise < Organization | @@ -100,7 +100,12 @@ class Enterprise < Organization | ||
100 | self.tasks.where(:type => 'EnterpriseActivation').first | 100 | self.tasks.where(:type => 'EnterpriseActivation').first |
101 | end | 101 | end |
102 | 102 | ||
103 | - def enable(owner) | 103 | + def enable(owner = nil) |
104 | + if owner.nil? | ||
105 | + self.visible = true | ||
106 | + return self.save | ||
107 | + end | ||
108 | + | ||
104 | return if enabled | 109 | return if enabled |
105 | # must be set first for the following to work | 110 | # must be set first for the following to work |
106 | self.enabled = true | 111 | self.enabled = true |
@@ -162,7 +167,7 @@ class Enterprise < Organization | @@ -162,7 +167,7 @@ class Enterprise < Organization | ||
162 | end | 167 | end |
163 | 168 | ||
164 | def default_template | 169 | def default_template |
165 | - environment.enterprise_template | 170 | + environment.enterprise_default_template |
166 | end | 171 | end |
167 | 172 | ||
168 | def template_with_inactive_enterprise | 173 | def template_with_inactive_enterprise |
app/models/environment.rb
@@ -285,6 +285,7 @@ class Environment < ActiveRecord::Base | @@ -285,6 +285,7 @@ class Environment < ActiveRecord::Base | ||
285 | www.flickr.com | 285 | www.flickr.com |
286 | www.gmodules.com | 286 | www.gmodules.com |
287 | www.youtube.com | 287 | www.youtube.com |
288 | + openstreetmap.org | ||
288 | ] + ('a' .. 'z').map{|i| "#{i}.yimg.com"} | 289 | ] + ('a' .. 'z').map{|i| "#{i}.yimg.com"} |
289 | 290 | ||
290 | settings_items :enabled_plugins, :type => Array, :default => Noosfero::Plugin.available_plugin_names | 291 | settings_items :enabled_plugins, :type => Array, :default => Noosfero::Plugin.available_plugin_names |
@@ -658,8 +659,8 @@ class Environment < ActiveRecord::Base | @@ -658,8 +659,8 @@ class Environment < ActiveRecord::Base | ||
658 | { :controller => 'admin_panel', :action => 'index' } | 659 | { :controller => 'admin_panel', :action => 'index' } |
659 | end | 660 | end |
660 | 661 | ||
661 | - def top_url | ||
662 | - url = 'http://' | 662 | + def top_url(scheme = 'http') |
663 | + url = scheme + '://' | ||
663 | url << (Noosfero.url_options.key?(:host) ? Noosfero.url_options[:host] : default_hostname) | 664 | url << (Noosfero.url_options.key?(:host) ? Noosfero.url_options[:host] : default_hostname) |
664 | url << ':' << Noosfero.url_options[:port].to_s if Noosfero.url_options.key?(:port) | 665 | url << ':' << Noosfero.url_options[:port].to_s if Noosfero.url_options.key?(:port) |
665 | url << Noosfero.root('') | 666 | url << Noosfero.root('') |
@@ -730,31 +731,50 @@ class Environment < ActiveRecord::Base | @@ -730,31 +731,50 @@ class Environment < ActiveRecord::Base | ||
730 | ] | 731 | ] |
731 | end | 732 | end |
732 | 733 | ||
733 | - def community_template | 734 | + def is_default_template?(template) |
735 | + is_default = template == community_default_template | ||
736 | + is_default = is_default || template == person_default_template | ||
737 | + is_default = is_default || template == enterprise_default_template | ||
738 | + is_default | ||
739 | + end | ||
740 | + | ||
741 | + def community_templates | ||
742 | + self.communities.templates | ||
743 | + end | ||
744 | + | ||
745 | + def community_default_template | ||
734 | template = Community.find_by_id settings[:community_template_id] | 746 | template = Community.find_by_id settings[:community_template_id] |
735 | - template if template && template.is_template | 747 | + template if template && template.is_template? |
748 | + end | ||
749 | + | ||
750 | + def community_default_template=(value) | ||
751 | + settings[:community_template_id] = value.kind_of?(Community) ? value.id : value | ||
736 | end | 752 | end |
737 | 753 | ||
738 | - def community_template=(value) | ||
739 | - settings[:community_template_id] = value.id | 754 | + def person_templates |
755 | + self.people.templates | ||
740 | end | 756 | end |
741 | 757 | ||
742 | - def person_template | 758 | + def person_default_template |
743 | template = Person.find_by_id settings[:person_template_id] | 759 | template = Person.find_by_id settings[:person_template_id] |
744 | - template if template && template.is_template | 760 | + template if template && template.is_template? |
761 | + end | ||
762 | + | ||
763 | + def person_default_template=(value) | ||
764 | + settings[:person_template_id] = value.kind_of?(Person) ? value.id : value | ||
745 | end | 765 | end |
746 | 766 | ||
747 | - def person_template=(value) | ||
748 | - settings[:person_template_id] = value.id | 767 | + def enterprise_templates |
768 | + self.enterprises.templates | ||
749 | end | 769 | end |
750 | 770 | ||
751 | - def enterprise_template | 771 | + def enterprise_default_template |
752 | template = Enterprise.find_by_id settings[:enterprise_template_id] | 772 | template = Enterprise.find_by_id settings[:enterprise_template_id] |
753 | - template if template && template.is_template | 773 | + template if template && template.is_template? |
754 | end | 774 | end |
755 | 775 | ||
756 | - def enterprise_template=(value) | ||
757 | - settings[:enterprise_template_id] = value.id | 776 | + def enterprise_default_template=(value) |
777 | + settings[:enterprise_template_id] = value.kind_of?(Enterprise) ? value.id : value | ||
758 | end | 778 | end |
759 | 779 | ||
760 | def inactive_enterprise_template | 780 | def inactive_enterprise_template |
@@ -856,10 +876,10 @@ class Environment < ActiveRecord::Base | @@ -856,10 +876,10 @@ class Environment < ActiveRecord::Base | ||
856 | person_template.visible = false | 876 | person_template.visible = false |
857 | person_template.save! | 877 | person_template.save! |
858 | 878 | ||
859 | - self.enterprise_template = enterprise_template | 879 | + self.enterprise_default_template = enterprise_template |
860 | self.inactive_enterprise_template = inactive_enterprise_template | 880 | self.inactive_enterprise_template = inactive_enterprise_template |
861 | - self.community_template = community_template | ||
862 | - self.person_template = person_template | 881 | + self.community_default_template = community_template |
882 | + self.person_default_template = person_template | ||
863 | self.save! | 883 | self.save! |
864 | end | 884 | end |
865 | 885 | ||
@@ -923,6 +943,10 @@ class Environment < ActiveRecord::Base | @@ -923,6 +943,10 @@ class Environment < ActiveRecord::Base | ||
923 | locales_list | 943 | locales_list |
924 | end | 944 | end |
925 | 945 | ||
946 | + def has_license? | ||
947 | + self.licenses.any? | ||
948 | + end | ||
949 | + | ||
926 | private | 950 | private |
927 | 951 | ||
928 | def default_language_available | 952 | def default_language_available |
app/models/event.rb
@@ -19,7 +19,7 @@ class Event < Article | @@ -19,7 +19,7 @@ class Event < Article | ||
19 | maybe_add_http(self.setting[:link]) | 19 | maybe_add_http(self.setting[:link]) |
20 | end | 20 | end |
21 | 21 | ||
22 | - xss_terminate :only => [ :body, :link, :address ], :with => 'white_list', :on => 'validation' | 22 | + xss_terminate :only => [ :name, :body, :link, :address ], :with => 'white_list', :on => 'validation' |
23 | 23 | ||
24 | def initialize(*args) | 24 | def initialize(*args) |
25 | super(*args) | 25 | super(*args) |
app/models/external_feed.rb
@@ -10,7 +10,7 @@ class ExternalFeed < ActiveRecord::Base | @@ -10,7 +10,7 @@ class ExternalFeed < ActiveRecord::Base | ||
10 | { :conditions => ['(fetched_at is NULL) OR (fetched_at < ?)', Time.now - FeedUpdater.update_interval] } | 10 | { :conditions => ['(fetched_at is NULL) OR (fetched_at < ?)', Time.now - FeedUpdater.update_interval] } |
11 | } | 11 | } |
12 | 12 | ||
13 | - attr_accessible :address, :enabled | 13 | + attr_accessible :address, :enabled, :only_once |
14 | 14 | ||
15 | def add_item(title, link, date, content) | 15 | def add_item(title, link, date, content) |
16 | return if content.blank? | 16 | return if content.blank? |
app/models/folder.rb
@@ -12,7 +12,7 @@ class Folder < Article | @@ -12,7 +12,7 @@ class Folder < Article | ||
12 | 12 | ||
13 | acts_as_having_settings :field => :setting | 13 | acts_as_having_settings :field => :setting |
14 | 14 | ||
15 | - xss_terminate :only => [ :body ], :with => 'white_list', :on => 'validation' | 15 | + xss_terminate :only => [ :name, :body ], :with => 'white_list', :on => 'validation' |
16 | 16 | ||
17 | include WhiteListFilter | 17 | include WhiteListFilter |
18 | filter_iframes :body | 18 | filter_iframes :body |
app/models/invitation.rb
@@ -76,14 +76,12 @@ class Invitation < Task | @@ -76,14 +76,12 @@ class Invitation < Task | ||
76 | {:person => person, :target => user.person} | 76 | {:person => person, :target => user.person} |
77 | end | 77 | end |
78 | 78 | ||
79 | - if !task_args.nil? | ||
80 | - if profile.person? | ||
81 | - InviteFriend.create(task_args) | ||
82 | - elsif profile.community? | ||
83 | - InviteMember.create(task_args.merge(:community_id => profile.id)) | ||
84 | - else | ||
85 | - raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s | ||
86 | - end | 79 | + if profile.person? |
80 | + InviteFriend.create(task_args) if user.nil? || !user.person.is_a_friend?(person) | ||
81 | + elsif profile.community? | ||
82 | + InviteMember.create(task_args.merge(:community_id => profile.id)) if user.nil? || !user.person.is_member_of?(profile) | ||
83 | + else | ||
84 | + raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s | ||
87 | end | 85 | end |
88 | end | 86 | end |
89 | end | 87 | end |
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +class LinkArticle < Article | ||
2 | + | ||
3 | + attr_accessible :reference_article | ||
4 | + | ||
5 | + def self.short_description | ||
6 | + "Article link" | ||
7 | + end | ||
8 | + | ||
9 | + delegate :name, :to => :reference_article | ||
10 | + delegate :body, :to => :reference_article | ||
11 | + delegate :abstract, :to => :reference_article | ||
12 | + delegate :url, :to => :reference_article | ||
13 | + | ||
14 | +end |
app/models/person.rb
@@ -25,7 +25,13 @@ class Person < Profile | @@ -25,7 +25,13 @@ class Person < Profile | ||
25 | scope :not_members_of, lambda { |resources| | 25 | scope :not_members_of, lambda { |resources| |
26 | resources = [resources] if !resources.kind_of?(Array) | 26 | resources = [resources] if !resources.kind_of?(Array) |
27 | conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') | 27 | conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') |
28 | - { :select => 'DISTINCT profiles.*', :conditions => ['"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "role_assignments" ON "role_assignments"."accessor_id" = "profiles"."id" AND "role_assignments"."accessor_type" = (\'Profile\') WHERE "profiles"."type" IN (\'Person\') AND (%s))' % conditions] } | 28 | + { :select => 'DISTINCT profiles.*', :conditions => ['"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "role_assignments" ON "role_assignments"."accessor_id" = "profiles"."id" AND "role_assignments"."accessor_type" = (\'Profile\') WHERE "profiles"."type" IN (\'Person\') AND (%s))' % conditions] |
29 | + } | ||
30 | + | ||
31 | + scope :by_role, lambda { |roles| | ||
32 | + roles = [roles] unless roles.kind_of?(Array) | ||
33 | + { :select => 'DISTINCT profiles.*', :joins => :role_assignments, :conditions => ['role_assignments.role_id IN (?)', | ||
34 | +roles] } | ||
29 | } | 35 | } |
30 | 36 | ||
31 | def has_permission_with_plugins?(permission, profile) | 37 | def has_permission_with_plugins?(permission, profile) |
@@ -85,6 +91,10 @@ class Person < Profile | @@ -85,6 +91,10 @@ class Person < Profile | ||
85 | 91 | ||
86 | belongs_to :user, :dependent => :delete | 92 | belongs_to :user, :dependent => :delete |
87 | 93 | ||
94 | + def can_change_homepage? | ||
95 | + !environment.enabled?('cant_change_homepage') || is_admin? | ||
96 | + end | ||
97 | + | ||
88 | def can_control_scrap?(scrap) | 98 | def can_control_scrap?(scrap) |
89 | begin | 99 | begin |
90 | !self.scraps(scrap).nil? | 100 | !self.scraps(scrap).nil? |
@@ -311,7 +321,7 @@ class Person < Profile | @@ -311,7 +321,7 @@ class Person < Profile | ||
311 | end | 321 | end |
312 | 322 | ||
313 | def default_template | 323 | def default_template |
314 | - environment.person_template | 324 | + environment.person_default_template |
315 | end | 325 | end |
316 | 326 | ||
317 | def apply_type_specific_template(template) | 327 | def apply_type_specific_template(template) |
app/models/person_notifier.rb
@@ -67,7 +67,7 @@ class PersonNotifier | @@ -67,7 +67,7 @@ class PersonNotifier | ||
67 | 67 | ||
68 | class Mailer < ActionMailer::Base | 68 | class Mailer < ActionMailer::Base |
69 | 69 | ||
70 | - add_template_helper(PersonNotifierHelper) | 70 | + add_template_helper(ApplicationHelper) |
71 | 71 | ||
72 | def session | 72 | def session |
73 | {:theme => nil} | 73 | {:theme => nil} |
app/models/product.rb
@@ -10,7 +10,7 @@ class Product < ActiveRecord::Base | @@ -10,7 +10,7 @@ class Product < ActiveRecord::Base | ||
10 | :display => %w[full map] | 10 | :display => %w[full map] |
11 | } | 11 | } |
12 | 12 | ||
13 | - attr_accessible :name, :product_category, :highlighted, :price, :enterprise, :image_builder, :description, :available, :qualifiers, :unit_id, :discount, :inputs | 13 | + attr_accessible :name, :product_category, :highlighted, :price, :enterprise, :image_builder, :description, :available, :qualifiers, :unit_id, :discount, :inputs, :qualifiers_list |
14 | 14 | ||
15 | def self.default_search_display | 15 | def self.default_search_display |
16 | 'full' | 16 | 'full' |
app/models/profile.rb
@@ -107,8 +107,8 @@ class Profile < ActiveRecord::Base | @@ -107,8 +107,8 @@ class Profile < ActiveRecord::Base | ||
107 | alias_method_chain :count, :distinct | 107 | alias_method_chain :count, :distinct |
108 | end | 108 | end |
109 | 109 | ||
110 | - def members_by_role(role) | ||
111 | - Person.members_of(self).all(:conditions => ['role_assignments.role_id = ?', role.id]) | 110 | + def members_by_role(roles) |
111 | + Person.members_of(self).by_role(roles) | ||
112 | end | 112 | end |
113 | 113 | ||
114 | acts_as_having_boxes | 114 | acts_as_having_boxes |
@@ -120,7 +120,9 @@ class Profile < ActiveRecord::Base | @@ -120,7 +120,9 @@ class Profile < ActiveRecord::Base | ||
120 | end | 120 | end |
121 | 121 | ||
122 | scope :visible, :conditions => { :visible => true } | 122 | scope :visible, :conditions => { :visible => true } |
123 | + scope :disabled, :conditions => { :visible => false } | ||
123 | scope :public, :conditions => { :visible => true, :public_profile => true } | 124 | scope :public, :conditions => { :visible => true, :public_profile => true } |
125 | + scope :enabled, :conditions => { :enabled => true } | ||
124 | 126 | ||
125 | # Subclasses must override this method | 127 | # Subclasses must override this method |
126 | scope :more_popular | 128 | scope :more_popular |
@@ -404,7 +406,7 @@ class Profile < ActiveRecord::Base | @@ -404,7 +406,7 @@ class Profile < ActiveRecord::Base | ||
404 | end | 406 | end |
405 | 407 | ||
406 | xss_terminate :only => [ :name, :nickname, :address, :contact_phone, :description ], :on => 'validation' | 408 | xss_terminate :only => [ :name, :nickname, :address, :contact_phone, :description ], :on => 'validation' |
407 | - xss_terminate :only => [ :custom_footer, :custom_header ], :with => 'white_list', :on => 'validation' | 409 | + xss_terminate :only => [ :custom_footer, :custom_header ], :with => 'white_list' |
408 | 410 | ||
409 | include WhiteListFilter | 411 | include WhiteListFilter |
410 | filter_iframes :custom_header, :custom_footer | 412 | filter_iframes :custom_header, :custom_footer |
@@ -803,7 +805,7 @@ private :generate_url, :url_options | @@ -803,7 +805,7 @@ private :generate_url, :url_options | ||
803 | end | 805 | end |
804 | 806 | ||
805 | include Noosfero::Plugin::HotSpot | 807 | include Noosfero::Plugin::HotSpot |
806 | - | 808 | + |
807 | def folder_types | 809 | def folder_types |
808 | types = Article.folder_types | 810 | types = Article.folder_types |
809 | plugins.dispatch(:content_types).each {|type| | 811 | plugins.dispatch(:content_types).each {|type| |
@@ -927,6 +929,13 @@ private :generate_url, :url_options | @@ -927,6 +929,13 @@ private :generate_url, :url_options | ||
927 | end | 929 | end |
928 | 930 | ||
929 | def disable | 931 | def disable |
932 | + self.visible = false | ||
933 | + self.save | ||
934 | + end | ||
935 | + | ||
936 | + def enable | ||
937 | + self.visible = true | ||
938 | + self.save | ||
930 | end | 939 | end |
931 | 940 | ||
932 | def control_panel_settings_button | 941 | def control_panel_settings_button |
app/views/admin_panel/index.html.erb
@@ -20,6 +20,7 @@ | @@ -20,6 +20,7 @@ | ||
20 | <tr><td><%= link_to _('Users'), :controller => 'users' %></td></tr> | 20 | <tr><td><%= link_to _('Users'), :controller => 'users' %></td></tr> |
21 | <tr><td><%= link_to _('Profile templates'), :controller => 'templates' %></td></tr> | 21 | <tr><td><%= link_to _('Profile templates'), :controller => 'templates' %></td></tr> |
22 | <tr><td><%= link_to _('Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr> | 22 | <tr><td><%= link_to _('Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr> |
23 | + <tr><td><%= link_to _('Manage organizations status'), :action => 'manage_organizations_status' %></td></tr> | ||
23 | </table> | 24 | </table> |
24 | 25 | ||
25 | 26 |
app/views/admin_panel/manage_organizations_status.html.erb
0 → 100644
@@ -0,0 +1,69 @@ | @@ -0,0 +1,69 @@ | ||
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> | ||
0 | \ No newline at end of file | 70 | \ No newline at end of file |
app/views/box_organizer/edit.html.erb
@@ -5,6 +5,12 @@ | @@ -5,6 +5,12 @@ | ||
5 | 5 | ||
6 | <%= labelled_form_field(_('Custom title for this block: '), text_field(:block, :title, :maxlength => 20)) %> | 6 | <%= labelled_form_field(_('Custom title for this block: '), text_field(:block, :title, :maxlength => 20)) %> |
7 | 7 | ||
8 | + <% if environment.admins.include?(user) %> | ||
9 | + <div class="fixed_block"> | ||
10 | + <%= labelled_check_box(_("Fixed"), "block[fixed]", value = "1", checked = @block.fixed) %> | ||
11 | + </div> | ||
12 | + <% end %> | ||
13 | + | ||
8 | <%= render :partial => partial_for_class(@block.class) %> | 14 | <%= render :partial => partial_for_class(@block.class) %> |
9 | 15 | ||
10 | <div class="display"> | 16 | <div class="display"> |
app/views/cms/_general_fields.html.erb
1 | <%= select_profile_folder(_('Parent folder:'), 'article[parent_id]', profile, @article.parent_id) %> | 1 | <%= select_profile_folder(_('Parent folder:'), 'article[parent_id]', profile, @article.parent_id) %> |
2 | -<%= labelled_form_field(_('License'), select(:article, :license_id, options_for_select_with_title([[_('None'), nil]] + profile.environment.licenses.map {|license| [license.name, license.id]}, @article.license ? @article.license.id : nil))) %> | 2 | +<% if profile.environment.has_license? %> |
3 | + <%= labelled_form_field(_('License'), select(:article, :license_id, options_for_select_with_title([[_('None'), nil]] + profile.environment.licenses.map {|license| [license.name, license.id]}, @article.license ? @article.license.id : nil))) %> | ||
4 | +<% end %> |
app/views/cms/upload_files.html.erb
@@ -20,5 +20,10 @@ | @@ -20,5 +20,10 @@ | ||
20 | <h5><%= _('Uploading files to %s') % content_tag('code', @target) %></h5> | 20 | <h5><%= _('Uploading files to %s') % content_tag('code', @target) %></h5> |
21 | 21 | ||
22 | <%= form_for('uploaded_file', :url => { :action => 'upload_files' }, :html => {:multipart => true}) do |f| %> | 22 | <%= form_for('uploaded_file', :url => { :action => 'upload_files' }, :html => {:multipart => true}) do |f| %> |
23 | + | ||
24 | + <%= @plugins.dispatch(:upload_files_extra_fields, params[:parent_id]).collect { |content| instance_exec(&content) }.join("") %> | ||
25 | + | ||
23 | <%= render :partial => 'upload_file_form', :locals => { :size => '45'} %> | 26 | <%= render :partial => 'upload_file_form', :locals => { :size => '45'} %> |
24 | -<% end %> | 27 | + |
28 | +<% end %> | ||
29 | + |
app/views/cms/view.html.erb
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | <%= _('Content management') %> | 2 | <%= _('Content management') %> |
3 | </h1> | 3 | </h1> |
4 | 4 | ||
5 | -<% if !environment.enabled?('cant_change_homepage') && !remove_content_button(:home, profile.home_page) %> | 5 | +<% if user.can_change_homepage? && !remove_content_button(:home, profile.home_page) %> |
6 | <div class="cms-homepage"> | 6 | <div class="cms-homepage"> |
7 | <%= _('Profile homepage:') %> | 7 | <%= _('Profile homepage:') %> |
8 | <% if profile.home_page %> | 8 | <% if profile.home_page %> |
@@ -69,7 +69,7 @@ | @@ -69,7 +69,7 @@ | ||
69 | <%= expirable_button article, :edit, _('Edit'), {:action => 'edit', :id => article.id} if !remove_content_button(:edit, article) %> | 69 | <%= expirable_button article, :edit, _('Edit'), {:action => 'edit', :id => article.id} if !remove_content_button(:edit, article) %> |
70 | <%= button_without_text :eyes, _('Public view'), article.view_url %> | 70 | <%= button_without_text :eyes, _('Public view'), article.view_url %> |
71 | <%= display_spread_button(article) unless remove_content_button(:spread, article) %> | 71 | <%= display_spread_button(article) unless remove_content_button(:spread, article) %> |
72 | - <% if !environment.enabled?('cant_change_homepage') && !remove_content_button(:home, article) %> | 72 | + <% if user.can_change_homepage? && !remove_content_button(:home, article) %> |
73 | <% if profile.home_page != article %> | 73 | <% if profile.home_page != article %> |
74 | <%= expirable_button article, :home, _('Use as homepage'), { :action => 'set_home_page', :id => article.id }, :method => :post %> | 74 | <%= expirable_button article, :home, _('Use as homepage'), { :action => 'set_home_page', :id => article.id }, :method => :post %> |
75 | <% else %> | 75 | <% else %> |
app/views/contact/new.html.erb
@@ -13,11 +13,16 @@ | @@ -13,11 +13,16 @@ | ||
13 | 13 | ||
14 | <%= required_fields_message %> | 14 | <%= required_fields_message %> |
15 | 15 | ||
16 | - <% location_fields = select_city(true) %> | 16 | + <% unless logged_in? %> |
17 | + <%= required f.text_field(:name) %> | ||
18 | + <%= required f.text_field(:email) %> | ||
19 | + <% end %> | ||
17 | 20 | ||
21 | + <% location_fields = select_city(true) %> | ||
18 | <% unless environment.enabled?('disable_select_city_for_contact') || location_fields.blank? %> | 22 | <% unless environment.enabled?('disable_select_city_for_contact') || location_fields.blank? %> |
19 | <%= labelled_form_field _('City and state'), location_fields %> | 23 | <%= labelled_form_field _('City and state'), location_fields %> |
20 | <% end %> | 24 | <% end %> |
25 | + | ||
21 | <%= required f.text_field(:subject) %> | 26 | <%= required f.text_field(:subject) %> |
22 | 27 | ||
23 | <%= render :file => 'shared/tiny_mce' %> | 28 | <%= render :file => 'shared/tiny_mce' %> |
@@ -25,5 +30,9 @@ | @@ -25,5 +30,9 @@ | ||
25 | 30 | ||
26 | <%= labelled_form_field check_box(:contact, :receive_a_copy) + _('I want to receive a copy of the message in my e-mail.'), '' %> | 31 | <%= labelled_form_field check_box(:contact, :receive_a_copy) + _('I want to receive a copy of the message in my e-mail.'), '' %> |
27 | 32 | ||
28 | - <%= submit_button(:send, _('Send'), :onclick => "$('confirm').value = 'true'") %> | 33 | + <% unless logged_in? %> |
34 | + <%= recaptcha_tags :ajax => true, :display => {:theme => 'clean'} %> | ||
35 | + <% end %> | ||
36 | + | ||
37 | + <%= submit_button(:send, _('Send'), :onclick => "jQuery('#confirm').val('true')") %> | ||
29 | <% end %> | 38 | <% end %> |
app/views/content_viewer/view_page.html.erb
@@ -70,37 +70,36 @@ | @@ -70,37 +70,36 @@ | ||
70 | 70 | ||
71 | <%= @plugins.dispatch(:article_extra_contents, @page).collect { |content| instance_exec(&content) }.join("") %> | 71 | <%= @plugins.dispatch(:article_extra_contents, @page).collect { |content| instance_exec(&content) }.join("") %> |
72 | 72 | ||
73 | -<div class="comments" id="comments_list"> | ||
74 | - | ||
75 | - <% if @page.accept_comments? || @comments_count > 0 %> | 73 | +<% if @page.accept_comments? || @comments_count > 0 %> |
74 | + <div class="comments" id="comments_list"> | ||
76 | <h3 <%= 'class="no-comments-yet"' if @comments_count == 0 %>> | 75 | <h3 <%= 'class="no-comments-yet"' if @comments_count == 0 %>> |
77 | <%= display_number_of_comments(@comments_count) %> | 76 | <%= display_number_of_comments(@comments_count) %> |
78 | </h3> | 77 | </h3> |
79 | - <% end %> | ||
80 | 78 | ||
81 | - <% if @comments.present? && @comments.count > 1 %> | ||
82 | - <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form', :id => 'top-post-comment-button', :onclick => "jQuery('#page-comment-form .display-comment-form').first().click();") if @page.accept_comments? %> | 79 | + <% if @comments.present? && @comments.count > 1 %> |
80 | + <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form', :id => 'top-post-comment-button', :onclick => "jQuery('#page-comment-form .display-comment-form').first().click();") if @page.accept_comments? %> | ||
81 | + | ||
82 | + <%= hidden_field_tag("page_url", url_for(:controller=>'content_viewer', :action=>'view_page', :profile=>profile.identifier, :page => @page.explode_path)) %> | ||
83 | + <%= javascript_include_tag "comment_order.js" %> | ||
84 | + <div class="comment-order"> | ||
85 | + <%= form_tag({:controller=>'content_viewer' , :action=>'view_page'}, {:method=>'get', :id=>"form_order"}) do %> | ||
86 | + <%= select_tag 'comment_order', options_for_select({_('Oldest first')=>'oldest', _('Newest first')=>'newest'}, @comment_order) %> | ||
87 | + <% end %> | ||
88 | + </div> | ||
89 | + <% end %> | ||
83 | 90 | ||
84 | - <%= hidden_field_tag("page_url", url_for(:controller=>'content_viewer', :action=>'view_page', :profile=>profile.identifier, :page => @page.explode_path)) %> | ||
85 | - <%= javascript_include_tag "comment_order.js" %> | ||
86 | - <div class="comment-order"> | ||
87 | - <%= form_tag({:controller=>'content_viewer' , :action=>'view_page'}, {:method=>'get', :id=>"form_order"}) do %> | ||
88 | - <%= select_tag 'comment_order', options_for_select({_('Oldest first')=>'oldest', _('Newest first')=>'newest'}, @comment_order) %> | 91 | + <ul class="article-comments-list"> |
92 | + <% if @comments.present? %> | ||
93 | + <%= render :partial => 'comment/comment', :collection => @comments %> | ||
94 | + <%= pagination_links @comments, :param_name => 'comment_page' %> | ||
89 | <% end %> | 95 | <% end %> |
90 | - </div> | ||
91 | - <% end %> | 96 | + </ul> |
92 | 97 | ||
93 | - <ul class="article-comments-list"> | ||
94 | - <% if @comments.present? %> | ||
95 | - <%= render :partial => 'comment/comment', :collection => @comments %> | ||
96 | - <%= pagination_links @comments, :param_name => 'comment_page' %> | 98 | + <% if @page.accept_comments? %> |
99 | + <div id='page-comment-form' class='page-comment-form'><%= render :partial => 'comment/comment_form', :locals =>{:url => {:controller => :comment, :action => :create}, :display_link => true, :cancel_triggers_hide => true}%></div> | ||
97 | <% end %> | 100 | <% end %> |
98 | - </ul> | ||
99 | - | ||
100 | - <% if @page.accept_comments? %> | ||
101 | - <div id='page-comment-form' class='page-comment-form'><%= render :partial => 'comment/comment_form', :locals =>{:url => {:controller => :comment, :action => :create}, :display_link => true, :cancel_triggers_hide => true}%></div> | ||
102 | - <% end %> | ||
103 | -</div><!-- end class="comments" --> | 101 | + </div><!-- end class="comments" --> |
102 | +<% end %> | ||
104 | 103 | ||
105 | </div><!-- end id="article" --> | 104 | </div><!-- end id="article" --> |
106 | <%= add_zoom_to_article_images %> | 105 | <%= add_zoom_to_article_images %> |
app/views/enterprise_registration/basic_information.html.erb
@@ -20,7 +20,7 @@ | @@ -20,7 +20,7 @@ | ||
20 | 20 | ||
21 | <%= labelled_form_for :create_enterprise do |f| %> | 21 | <%= labelled_form_for :create_enterprise do |f| %> |
22 | <%= required f.text_field 'name', :onchange => "updateUrlField(this, 'create_enterprise_identifier')", :size => 40 %> | 22 | <%= required f.text_field 'name', :onchange => "updateUrlField(this, 'create_enterprise_identifier')", :size => 40 %> |
23 | - <%= required labelled_form_field(_('Address'), content_tag('code', environment.top_url + "/" + text_field(:create_enterprise, 'identifier', :size => 26))) %> | 23 | + <%= required labelled_form_field(_('Address'), content_tag('code', top_url + "/" + text_field(:create_enterprise, 'identifier', :size => 26))) %> |
24 | <%= render :partial => 'shared/organization_custom_fields', :locals => { :f => f, :object_name => :create_enterprise, :profile => @create_enterprise } %> | 24 | <%= render :partial => 'shared/organization_custom_fields', :locals => { :f => f, :object_name => :create_enterprise, :profile => @create_enterprise } %> |
25 | <%= required labelled_form_field(_('Region'), f.select('region_id', @regions)) if @validation == :region %> | 25 | <%= required labelled_form_field(_('Region'), f.select('region_id', @regions)) if @validation == :region %> |
26 | 26 |
app/views/events/events.html.erb
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | <div id='agenda-toolbar'> | 3 | <div id='agenda-toolbar'> |
4 | <%= button :back, _('Back to %s') % profile.name, profile.url %> | 4 | <%= button :back, _('Back to %s') % profile.name, profile.url %> |
5 | <% if user && user.has_permission?('post_content', profile) %> | 5 | <% if user && user.has_permission?('post_content', profile) %> |
6 | - <%= button :new, _('New event'), myprofile_url(:controller => 'cms', :action => 'new', :type => 'Event') %> | 6 | + <%= button :new, _('New event'), myprofile_path(:controller => 'cms', :action => 'new', :type => 'Event') %> |
7 | <% end %> | 7 | <% end %> |
8 | </div> | 8 | </div> |
9 | 9 |
app/views/layouts/application-ng.html.erb
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
2 | -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>"> | 2 | +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>" class="<%= h html_tag_classes %>"> |
3 | <head> | 3 | <head> |
4 | <title><%= h page_title %></title> | 4 | <title><%= h page_title %></title> |
5 | <%= yield(:feeds) %> | 5 | <%= yield(:feeds) %> |
@@ -12,24 +12,9 @@ | @@ -12,24 +12,9 @@ | ||
12 | <meta name="twitter:title" content="<%= h page_title %>"> | 12 | <meta name="twitter:title" content="<%= h page_title %>"> |
13 | <meta name="twitter:description" content="<%= meta_description_tag(@page) %>"> | 13 | <meta name="twitter:description" content="<%= meta_description_tag(@page) %>"> |
14 | 14 | ||
15 | - <!-- Open Graph --> | ||
16 | - <meta property="og:type" content="<%= @page ? 'article' : 'website' %>"> | ||
17 | - <meta property="og:url" content="<%= @page ? url_for(@page.url) : @environment.top_url %>"> | ||
18 | - <meta property="og:title" content="<%= h page_title %>"> | ||
19 | - <meta property="og:site_name" content="<%= profile ? profile.name : @environment.name %>"> | ||
20 | - <meta property="og:description" content="<%= meta_description_tag(@page) %>"> | ||
21 | - | ||
22 | <!-- site root --> | 15 | <!-- site root --> |
23 | <meta property="noosfero:root" content="<%= Noosfero.root %>"/> | 16 | <meta property="noosfero:root" content="<%= Noosfero.root %>"/> |
24 | 17 | ||
25 | - <% if @page %> | ||
26 | - <meta property="article:published_time" content="<%= show_date(@page.published_at) %>"> | ||
27 | - <% @page.body_images_paths.each do |img| %> | ||
28 | - <meta name="twitter:image" content="<%= img.to_s %>"> | ||
29 | - <meta property="og:image" content="<%= img.to_s %>"> | ||
30 | - <% end %> | ||
31 | - <% end %> | ||
32 | - | ||
33 | <link rel="shortcut icon" href="<%= image_path(theme_favicon) %>" type="image/x-icon" /> | 18 | <link rel="shortcut icon" href="<%= image_path(theme_favicon) %>" type="image/x-icon" /> |
34 | <%= noosfero_javascript %> | 19 | <%= noosfero_javascript %> |
35 | <%= noosfero_stylesheets %> | 20 | <%= noosfero_stylesheets %> |
@@ -72,10 +57,7 @@ | @@ -72,10 +57,7 @@ | ||
72 | <div id="navigation-end"></div> | 57 | <div id="navigation-end"></div> |
73 | </div><!-- end id="navigation" --> | 58 | </div><!-- end id="navigation" --> |
74 | <div id="content"> | 59 | <div id="content"> |
75 | - <div id="content-inner"> | ||
76 | - <%= insert_boxes(yield) %> | ||
77 | - <br style='clear: both'/> | ||
78 | - </div><!-- end id="content-inner" --> | 60 | + <%= render 'layouts/content' %> |
79 | </div><!-- end id="content" --> | 61 | </div><!-- end id="content" --> |
80 | </div><!-- end id="wrap-2" --> | 62 | </div><!-- end id="wrap-2" --> |
81 | </div><!-- end id="wrap-1" --> | 63 | </div><!-- end id="wrap-1" --> |
@@ -84,7 +66,6 @@ | @@ -84,7 +66,6 @@ | ||
84 | <%= theme_footer %> | 66 | <%= theme_footer %> |
85 | </div><!-- end id="theme-footer" --> | 67 | </div><!-- end id="theme-footer" --> |
86 | <%= noosfero_layout_features %> | 68 | <%= noosfero_layout_features %> |
87 | - <%= theme_javascript_ng %> | ||
88 | <%= addthis_javascript %> | 69 | <%= addthis_javascript %> |
89 | <%= | 70 | <%= |
90 | @plugins.dispatch(:body_ending).map do |content| | 71 | @plugins.dispatch(:body_ending).map do |content| |
app/views/layouts/application.html.erb
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
2 | -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>"> | 2 | +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>" class="<%= h html_tag_classes %>"> |
3 | <head> | 3 | <head> |
4 | <title><%= h page_title %></title> | 4 | <title><%= h page_title %></title> |
5 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | 5 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
@@ -68,7 +68,7 @@ | @@ -68,7 +68,7 @@ | ||
68 | 68 | ||
69 | <div id="navigation_bar"> | 69 | <div id="navigation_bar"> |
70 | <%= link_to "<span>"+ @environment.name() +"</span>", | 70 | <%= link_to "<span>"+ @environment.name() +"</span>", |
71 | - @environment.top_url, | 71 | + top_url, |
72 | :id=>"menu_link_to_envhome", | 72 | :id=>"menu_link_to_envhome", |
73 | :title=>@environment.name %> | 73 | :title=>@environment.name %> |
74 | <% unless environment.enabled?(:disable_categories) %> | 74 | <% unless environment.enabled?(:disable_categories) %> |
app/views/manage_products/_edit_info.html.erb
@@ -47,7 +47,7 @@ | @@ -47,7 +47,7 @@ | ||
47 | <%= button_to_function( | 47 | <%= button_to_function( |
48 | :add, | 48 | :add, |
49 | _('Add new qualifier'), | 49 | _('Add new qualifier'), |
50 | - "new_qualifier_row('#product-qualifiers-list', '#{escape_javascript(select_qualifiers(@product))}', '#{escape_javascript(remove_qualifier_button)}')" | 50 | + "new_qualifier_row('#product-qualifiers-list', '#{escape_javascript(CGI::escape_html(select_qualifiers(@product)))}', '#{escape_javascript(CGI::escape_html(remove_qualifier_button))}')" |
51 | ) %> | 51 | ) %> |
52 | <%= hidden_field_tag "product[qualifiers_list][nil]" %> | 52 | <%= hidden_field_tag "product[qualifiers_list][nil]" %> |
53 | <% end %> | 53 | <% end %> |
app/views/profile_editor/edit.html.erb
1 | <h1><%= _('Profile settings for %s') % profile.name %></h1> | 1 | <h1><%= _('Profile settings for %s') % profile.name %></h1> |
2 | 2 | ||
3 | +<%= javascript_include_tag 'deactivate_profile' %> | ||
3 | <%= error_messages_for :profile_data %> | 4 | <%= error_messages_for :profile_data %> |
4 | 5 | ||
5 | <%= labelled_form_for :profile_data, :html => { :id => 'profile-data', :multipart => true } do |f| %> | 6 | <%= labelled_form_for :profile_data, :html => { :id => 'profile-data', :multipart => true } do |f| %> |
@@ -73,6 +74,15 @@ | @@ -73,6 +74,15 @@ | ||
73 | <% if user && user.has_permission?('destroy_profile', profile) %> | 74 | <% if user && user.has_permission?('destroy_profile', profile) %> |
74 | <% button_bar(:id => 'delete-profile') do %> | 75 | <% button_bar(:id => 'delete-profile') do %> |
75 | <%= button(:remove, _('Delete profile'), {:action => :destroy_profile}) %> | 76 | <%= button(:remove, _('Delete profile'), {:action => :destroy_profile}) %> |
77 | + | ||
78 | + <% if environment.admins.include?(current_person) %> | ||
79 | + | ||
80 | + <% if profile.visible? %> | ||
81 | + <%= button(:remove, _('Deactivate profile'), {:action => :deactivate_profile, :id=>profile.id}, :id=>'deactivate_profile_button', :data => {:confirm=>_("Are you sure you want to deactivate this profile?")}) %> | ||
82 | + <% else %> | ||
83 | + <%= button(:add, _('Activate profile'), {:action => :activate_profile, :id=>profile.id}, :data => {:confirm=>_("Are you sure you want to deactivate this profile?")}) %> | ||
84 | + <% end %> | ||
85 | + <% end %> | ||
76 | <% end %> | 86 | <% end %> |
77 | <% end %> | 87 | <% end %> |
78 | -<% end %> | 88 | -<% end %> |
89 | +<% end %> | ||
79 | \ No newline at end of file | 90 | \ No newline at end of file |
app/views/search/_display_results.html.erb
@@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
14 | 14 | ||
15 | <% display = display_filter(name, params[:display]) %> | 15 | <% display = display_filter(name, params[:display]) %> |
16 | 16 | ||
17 | - <div class="search-results-innerbox search-results-type-<%= name.to_s.singularize %> <%= 'common-profile-list-block' if [:enterprises, :people, :communities].include?(name) %>"> | 17 | + <div class="search-results-innerbox search-results-type-<%= name.to_s.singularize %> <%= 'common-profile-list-block' if SearchHelper::COMMON_PROFILE_LIST_BLOCK.include?(name) %>"> |
18 | <ul> | 18 | <ul> |
19 | <% search[:results].each do |hit| %> | 19 | <% search[:results].each do |hit| %> |
20 | <% partial = partial_for_class(hit.class, display) %> | 20 | <% partial = partial_for_class(hit.class, display) %> |
app/views/tasks/_approve_article_accept_details.html.erb
1 | <%= render :file => 'shared/tiny_mce' %> | 1 | <%= render :file => 'shared/tiny_mce' %> |
2 | 2 | ||
3 | +<%= labelled_form_field(_('Create a link'), f.check_box(:create_link)) %> | ||
4 | + | ||
3 | <%= labelled_form_field(_('Name for publishing'), f.text_field(:name)) %> | 5 | <%= labelled_form_field(_('Name for publishing'), f.text_field(:name)) %> |
4 | <%= select_profile_folder(_('Select the folder where the article must be published'), "tasks[#{task.id}][task][article_parent_id]", task.target) %> | 6 | <%= select_profile_folder(_('Select the folder where the article must be published'), "tasks[#{task.id}][task][article_parent_id]", task.target) %> |
5 | <%= labelled_form_field(_('Highlight this article'), f.check_box(:highlighted)) %> | 7 | <%= labelled_form_field(_('Highlight this article'), f.check_box(:highlighted)) %> |
app/views/templates/index.html.erb
@@ -2,10 +2,11 @@ | @@ -2,10 +2,11 @@ | ||
2 | 2 | ||
3 | <%= _('Manage the templates used on creation of profiles') %> | 3 | <%= _('Manage the templates used on creation of profiles') %> |
4 | 4 | ||
5 | -<% list_of_templates = [[_('Person') , environment.people.templates , 'person' ], | 5 | +<% list_of_templates = [[_('Person') , environment.person_templates , 'person' ], |
6 | [_('Community') , environment.communities.templates, 'community' ], | 6 | [_('Community') , environment.communities.templates, 'community' ], |
7 | [_('Enterprise'), environment.enterprises.templates, 'enterprise']] %> | 7 | [_('Enterprise'), environment.enterprises.templates, 'enterprise']] %> |
8 | 8 | ||
9 | + | ||
9 | <% list_of_templates.each do |title, templates, kind|%> | 10 | <% list_of_templates.each do |title, templates, kind|%> |
10 | <div class='template-kind'> | 11 | <div class='template-kind'> |
11 | <h2><%= title %></h2> | 12 | <h2><%= title %></h2> |
@@ -20,6 +21,11 @@ | @@ -20,6 +21,11 @@ | ||
20 | <td> | 21 | <td> |
21 | <%#= image_tag "icons-app/#{kind}-icon.png" %> | 22 | <%#= image_tag "icons-app/#{kind}-icon.png" %> |
22 | <%= link_to(template.name, {:controller => 'profile_editor', :profile => template.identifier}, :title => _('Edit template "%s"') % template.name ) %> | 23 | <%= link_to(template.name, {:controller => 'profile_editor', :profile => template.identifier}, :title => _('Edit template "%s"') % template.name ) %> |
24 | + <% if environment.is_default_template?(template) %> | ||
25 | + <%= _('is the default template') %> | ||
26 | + <% else %> | ||
27 | + <%= link_to(_('Set as default'), {:action => "set_#{kind}_as_default", :template_id => template.id}, :title => _('Set %s template as default') % template.name ) %> | ||
28 | + <% end %> | ||
23 | </td> | 29 | </td> |
24 | <td> | 30 | <td> |
25 | <%= button_without_text 'edit', _('Edit settings'), {:controller => 'profile_editor', :profile => template.identifier, :action => 'edit'} %> | 31 | <%= button_without_text 'edit', _('Edit settings'), {:controller => 'profile_editor', :profile => template.identifier, :action => 'edit'} %> |
config/application.rb
@@ -111,12 +111,7 @@ module Noosfero | @@ -111,12 +111,7 @@ module Noosfero | ||
111 | # Make sure the secret is at least 30 characters and all random, | 111 | # Make sure the secret is at least 30 characters and all random, |
112 | # no regular words or you'll be exposed to dictionary attacks. | 112 | # no regular words or you'll be exposed to dictionary attacks. |
113 | config.secret_token = noosfero_session_secret | 113 | config.secret_token = noosfero_session_secret |
114 | - config.action_dispatch.session = { | ||
115 | - :key => '_noosfero_session', | ||
116 | - } | ||
117 | - | ||
118 | - config.time_zone = File.read('/etc/timezone').split("\n").first | ||
119 | - config.active_record.default_timezone = :local | 114 | + config.session_store :cookie_store, :key => '_noosfero_session' |
120 | 115 | ||
121 | config.paths['db/migrate'] += Dir.glob "#{Rails.root}/{baseplugins,config/plugins}/*/db/migrate" | 116 | config.paths['db/migrate'] += Dir.glob "#{Rails.root}/{baseplugins,config/plugins}/*/db/migrate" |
122 | config.i18n.load_path += Dir.glob "#{Rails.root}/{baseplugins,config/plugins}/*/locales/*.{rb,yml}" | 117 | config.i18n.load_path += Dir.glob "#{Rails.root}/{baseplugins,config/plugins}/*/locales/*.{rb,yml}" |
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +if Rails.env == 'development' | ||
2 | + ActionController::Base.send(:prepend_before_filter) do |controller| | ||
3 | + # XXX note that this is not thread-safe! Accessing a Noosfero instance in | ||
4 | + # development mode under different ports concurrently _will_ lead to weird | ||
5 | + # things happening. | ||
6 | + if [80,443].include?(controller.request.port) | ||
7 | + url_options = {} | ||
8 | + else | ||
9 | + url_options = { :port => controller.request.port } | ||
10 | + end | ||
11 | + Noosfero.instance_variable_set('@development_url_options', url_options) | ||
12 | + end | ||
13 | +end |
config/initializers/passenger.rb
@@ -3,7 +3,7 @@ if defined? PhusionPassenger | @@ -3,7 +3,7 @@ if defined? PhusionPassenger | ||
3 | # from http://russbrooks.com/2010/10/20/rails-cache-memcache-on-passenger-with-smart-spawning | 3 | # from http://russbrooks.com/2010/10/20/rails-cache-memcache-on-passenger-with-smart-spawning |
4 | PhusionPassenger.on_event :starting_worker_process do |forked| | 4 | PhusionPassenger.on_event :starting_worker_process do |forked| |
5 | if forked | 5 | if forked |
6 | - Rails.cache.instance_variable_get(:@data).reset if Rails.cache.class == ActiveSupport::Cache::MemCacheStore | 6 | + Rails.cache.instance_variable_get(:@data).reset if Rails.cache.class.name == 'ActiveSupport::Cache::MemCacheStore' |
7 | end | 7 | end |
8 | end | 8 | end |
9 | end | 9 | end |
db/migrate/20140724134600_remove_environment_statistics_block_sooner.rb
0 → 100644
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +class RemoveEnvironmentStatisticsBlockSooner < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + update("UPDATE blocks SET type = 'StatisticsBlock' WHERE type = 'EnvironmentStatisticsBlock'") | ||
4 | + end | ||
5 | + | ||
6 | + def self.down | ||
7 | + say("Nothing to undo (cannot recover the data)") | ||
8 | + end | ||
9 | +end |
db/migrate/20150113131617_add_show_to_followers_for_article.rb
0 → 100644
db/migrate/20150122165042_change_address_type_to_text_in_external_feed.rb
0 → 100644
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 => 20140827191326) do | 14 | +ActiveRecord::Schema.define(:version => 20150122165042) 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" |
@@ -149,6 +149,7 @@ ActiveRecord::Schema.define(:version => 20140827191326) do | @@ -149,6 +149,7 @@ ActiveRecord::Schema.define(:version => 20140827191326) do | ||
149 | t.integer "spam_comments_count", :default => 0 | 149 | t.integer "spam_comments_count", :default => 0 |
150 | t.integer "author_id" | 150 | t.integer "author_id" |
151 | t.integer "created_by_id" | 151 | t.integer "created_by_id" |
152 | + t.boolean "show_to_followers", :default => false | ||
152 | end | 153 | end |
153 | 154 | ||
154 | add_index "articles", ["comments_count"], :name => "index_articles_on_comments_count" | 155 | add_index "articles", ["comments_count"], :name => "index_articles_on_comments_count" |
@@ -315,7 +316,7 @@ ActiveRecord::Schema.define(:version => 20140827191326) do | @@ -315,7 +316,7 @@ ActiveRecord::Schema.define(:version => 20140827191326) do | ||
315 | create_table "external_feeds", :force => true do |t| | 316 | create_table "external_feeds", :force => true do |t| |
316 | t.string "feed_title" | 317 | t.string "feed_title" |
317 | t.datetime "fetched_at" | 318 | t.datetime "fetched_at" |
318 | - t.string "address" | 319 | + t.text "address" |
319 | t.integer "blog_id", :null => false | 320 | t.integer "blog_id", :null => false |
320 | t.boolean "enabled", :default => true, :null => false | 321 | t.boolean "enabled", :default => true, :null => false |
321 | t.boolean "only_once", :default => true, :null => false | 322 | t.boolean "only_once", :default => true, :null => false |
debian/control
@@ -61,6 +61,12 @@ Depends: | @@ -61,6 +61,12 @@ Depends: | ||
61 | dbconfig-common, | 61 | dbconfig-common, |
62 | adduser, | 62 | adduser, |
63 | exim4 | mail-transport-agent, | 63 | exim4 | mail-transport-agent, |
64 | +# to minimize upgrade issues: | ||
65 | + ruby-feedparser (>= 0.7-3~), | ||
66 | + ruby-eventmachine (>= 0.12.10-4~), | ||
67 | + ruby-rack (>= 1.4.5-2~), | ||
68 | + ruby-tzinfo (>= 1.1.0-2~), | ||
69 | + ruby-minitest, | ||
64 | ${misc:Depends} | 70 | ${misc:Depends} |
65 | Recommends: | 71 | Recommends: |
66 | postgresql, | 72 | postgresql, |
etc/init.d/noosfero
etc/noosfero/varnish-noosfero.vcl
@@ -10,6 +10,13 @@ sub vcl_recv { | @@ -10,6 +10,13 @@ sub vcl_recv { | ||
10 | } | 10 | } |
11 | } | 11 | } |
12 | 12 | ||
13 | +sub vcl_deliver { | ||
14 | + # Force clients to aways hit the server again for HTML pages | ||
15 | + if (resp.http.Content-Type ~ "^text/html") { | ||
16 | + set resp.http.Cache-Control = "no-cache"; | ||
17 | + } | ||
18 | +} | ||
19 | + | ||
13 | sub vcl_error { | 20 | sub vcl_error { |
14 | set obj.http.Content-Type = "text/html; charset=utf-8"; | 21 | set obj.http.Content-Type = "text/html; charset=utf-8"; |
15 | 22 |
etc/pound.cfg
@@ -5,7 +5,7 @@ TimeOut 300 | @@ -5,7 +5,7 @@ TimeOut 300 | ||
5 | Control "/var/run/pound/poundctl.socket" | 5 | Control "/var/run/pound/poundctl.socket" |
6 | 6 | ||
7 | ListenHTTP | 7 | ListenHTTP |
8 | - Address 192.168.1.86 | 8 | + Address 0.0.0.0 |
9 | Port 80 | 9 | Port 80 |
10 | xHTTP 1 | 10 | xHTTP 1 |
11 | # uncomment code above if you are using chat | 11 | # uncomment code above if you are using chat |
@@ -22,7 +22,8 @@ ListenHTTP | @@ -22,7 +22,8 @@ ListenHTTP | ||
22 | End | 22 | End |
23 | 23 | ||
24 | ListenHTTPS | 24 | ListenHTTPS |
25 | - Address 192.168.1.86 | 25 | + Address 0.0.0.0 |
26 | + AddHeader "X-Forwarded-Proto: https" | ||
26 | Port 443 | 27 | Port 443 |
27 | Cert "/etc/noosfero/ssl/noosfero.pem" | 28 | Cert "/etc/noosfero/ssl/noosfero.pem" |
28 | Ciphers "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM" | 29 | Ciphers "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM" |
features/edit_article.feature
@@ -47,6 +47,28 @@ Feature: edit article | @@ -47,6 +47,28 @@ Feature: edit article | ||
47 | Then I should see "Access denied" | 47 | Then I should see "Access denied" |
48 | 48 | ||
49 | @selenium | 49 | @selenium |
50 | + Scenario: Hide token field when show to members is activated | ||
51 | + Given the following communities | ||
52 | + | name | identifier | owner | | ||
53 | + | Free Software | freesoftware | joaosilva | | ||
54 | + And the following users | ||
55 | + | login | name | | ||
56 | + | mario | Mario Souto | | ||
57 | + | maria | Maria Silva | | ||
58 | + And "Mario Souto" is a member of "Free Software" | ||
59 | + And "Maria Silva" is a member of "Free Software" | ||
60 | + And I am on freesoftware's control panel | ||
61 | + And I follow "Manage Content" | ||
62 | + And I should see "New content" | ||
63 | + And I follow "New content" | ||
64 | + And I should see "Folder" | ||
65 | + When I follow "Folder" | ||
66 | + And I fill in "Title" with "My Folder" | ||
67 | + And I choose "article_published_false" | ||
68 | + And I check "article_show_to_followers" | ||
69 | + Then I should not see "Fill in the search" | ||
70 | + | ||
71 | + @selenium | ||
50 | Scenario: show exception users field when you choose the private option | 72 | Scenario: show exception users field when you choose the private option |
51 | Given the following communities | 73 | Given the following communities |
52 | | name | identifier | owner | | 74 | | name | identifier | owner | |
features/step_definitions/activate_enterprise_steps.rb
@@ -19,7 +19,7 @@ Given /^"([^\"]*)" is the active enterprise template$/ do |enterprise| | @@ -19,7 +19,7 @@ Given /^"([^\"]*)" is the active enterprise template$/ do |enterprise| | ||
19 | template.save! | 19 | template.save! |
20 | 20 | ||
21 | e = Environment.default | 21 | e = Environment.default |
22 | - e.enterprise_template = template | 22 | + e.enterprise_default_template = template |
23 | e.save | 23 | e.save |
24 | end | 24 | end |
25 | 25 |
lib/noosfero.rb
@@ -70,16 +70,6 @@ module Noosfero | @@ -70,16 +70,6 @@ module Noosfero | ||
70 | end | 70 | end |
71 | end | 71 | end |
72 | 72 | ||
73 | - def self.term(t) | ||
74 | - self.terminology.get(t) | ||
75 | - end | ||
76 | - def self.terminology | ||
77 | - @terminology ||= Noosfero::Terminology::Default.instance | ||
78 | - end | ||
79 | - def self.terminology=(term) | ||
80 | - @terminology = term | ||
81 | - end | ||
82 | - | ||
83 | def self.url_options | 73 | def self.url_options |
84 | case Rails.env | 74 | case Rails.env |
85 | when 'development' | 75 | when 'development' |
lib/noosfero/i18n.rb
@@ -4,15 +4,23 @@ class Object | @@ -4,15 +4,23 @@ class Object | ||
4 | include FastGettext::Translation | 4 | include FastGettext::Translation |
5 | alias :gettext :_ | 5 | alias :gettext :_ |
6 | alias :ngettext :n_ | 6 | alias :ngettext :n_ |
7 | + alias :c_ :_ | ||
8 | + alias :cN_ :N_ | ||
7 | end | 9 | end |
8 | 10 | ||
9 | 11 | ||
10 | -custom_locale_dir = Rails.root.join('custom_locales', Rails.env) | 12 | +# Adds custom locales for a whole environment |
13 | +custom_locale_dir = Rails.root.join('config', 'custom_locales', Rails.env) | ||
11 | repos = [] | 14 | repos = [] |
12 | if File.exists?(custom_locale_dir) | 15 | if File.exists?(custom_locale_dir) |
13 | repos << FastGettext::TranslationRepository.build('environment', :type => 'po', :path => custom_locale_dir) | 16 | repos << FastGettext::TranslationRepository.build('environment', :type => 'po', :path => custom_locale_dir) |
14 | end | 17 | end |
15 | 18 | ||
19 | +Dir.glob('{baseplugins,config/plugins}/*/locale') do |plugin_locale_dir| | ||
20 | + plugin = File.basename(File.dirname(plugin_locale_dir)) | ||
21 | + repos << FastGettext::TranslationRepository.build(plugin, :type => 'mo', :path => plugin_locale_dir) | ||
22 | +end | ||
23 | + | ||
16 | # translations in place? | 24 | # translations in place? |
17 | locale_dir = Rails.root.join('locale') | 25 | locale_dir = Rails.root.join('locale') |
18 | if File.exists?(locale_dir) | 26 | if File.exists?(locale_dir) |
@@ -22,3 +30,15 @@ end | @@ -22,3 +30,15 @@ end | ||
22 | 30 | ||
23 | FastGettext.add_text_domain 'noosfero', :type => :chain, :chain => repos | 31 | FastGettext.add_text_domain 'noosfero', :type => :chain, :chain => repos |
24 | FastGettext.default_text_domain = 'noosfero' | 32 | FastGettext.default_text_domain = 'noosfero' |
33 | + | ||
34 | +# Adds custom locales for specific domains; Domains are identified by the | ||
35 | +# sequence before the first dot, while tenants are identified by schema name | ||
36 | +hosted_environments = Noosfero::MultiTenancy.mapping.values | ||
37 | +hosted_environments += Domain.all.map { |domain| domain.name[/(.*?)\./,1] } if Domain.table_exists? | ||
38 | + | ||
39 | +hosted_environments.uniq.each do |env| | ||
40 | + custom_locale_dir = Rails.root.join('config', 'custom_locales', env) | ||
41 | + if File.exists?(custom_locale_dir) | ||
42 | + FastGettext.add_text_domain(env, :type => :chain, :chain => [FastGettext::TranslationRepository.build('environment', :type => 'po', :path => custom_locale_dir)] + repos) | ||
43 | + end | ||
44 | +end |
lib/noosfero/plugin.rb
@@ -88,18 +88,29 @@ class Noosfero::Plugin | @@ -88,18 +88,29 @@ class Noosfero::Plugin | ||
88 | # This is a generic method that initialize any possible filter defined by a | 88 | # This is a generic method that initialize any possible filter defined by a |
89 | # plugin to a specific controller | 89 | # plugin to a specific controller |
90 | def load_plugin_filters(plugin) | 90 | def load_plugin_filters(plugin) |
91 | - plugin_methods = plugin.instance_methods.select {|m| m.to_s.end_with?('_filters')} | ||
92 | - plugin_methods.each do |plugin_method| | ||
93 | - controller_class = plugin_method.to_s.gsub('_filters', '').camelize.constantize | ||
94 | - filters = plugin.new.send(plugin_method) | ||
95 | - filters = [filters] if !filters.kind_of?(Array) | ||
96 | - | ||
97 | - filters.each do |plugin_filter| | ||
98 | - filter_method = (plugin.name.underscore.gsub('/','_') + '_' + plugin_filter[:method_name]).to_sym | ||
99 | - controller_class.send(plugin_filter[:type], filter_method, (plugin_filter[:options] || {})) | ||
100 | - controller_class.send(:define_method, filter_method) do | ||
101 | - instance_eval(&plugin_filter[:block]) if environment.plugin_enabled?(plugin) | ||
102 | - end | 91 | + Rails.configuration.to_prepare do |
92 | + filters = plugin.new.send 'application_controller_filters' rescue [] | ||
93 | + Noosfero::Plugin.add_controller_filters ApplicationController, plugin, filters | ||
94 | + | ||
95 | + plugin_methods = plugin.instance_methods.select {|m| m.to_s.end_with?('_filters')} | ||
96 | + plugin_methods.each do |plugin_method| | ||
97 | + controller_class = plugin_method.to_s.gsub('_filters', '').camelize.constantize | ||
98 | + | ||
99 | + filters = plugin.new.send(plugin_method) | ||
100 | + Noosfero::Plugin.add_controller_filters controller_class, plugin, filters | ||
101 | + end | ||
102 | + end | ||
103 | + end | ||
104 | + | ||
105 | + def add_controller_filters(controller_class, plugin, filters) | ||
106 | + unless filters.is_a?(Array) | ||
107 | + filters = [filters] | ||
108 | + end | ||
109 | + filters.each do |plugin_filter| | ||
110 | + filter_method = (plugin.name.underscore.gsub('/','_') + '_' + plugin_filter[:method_name]).to_sym | ||
111 | + controller_class.send(plugin_filter[:type], filter_method, (plugin_filter[:options] || {})) | ||
112 | + controller_class.send(:define_method, filter_method) do | ||
113 | + instance_exec(&plugin_filter[:block]) if environment.plugin_enabled?(plugin) | ||
103 | end | 114 | end |
104 | end | 115 | end |
105 | end | 116 | end |
@@ -406,6 +417,12 @@ class Noosfero::Plugin | @@ -406,6 +417,12 @@ class Noosfero::Plugin | ||
406 | nil | 417 | nil |
407 | end | 418 | end |
408 | 419 | ||
420 | + # -> Adds adicional fields to a view | ||
421 | + # returns = proc block that creates html code | ||
422 | + def upload_files_extra_fields(article) | ||
423 | + nil | ||
424 | + end | ||
425 | + | ||
409 | # -> Adds fields to the signup form | 426 | # -> Adds fields to the signup form |
410 | # returns = proc that creates html code | 427 | # returns = proc that creates html code |
411 | def signup_extra_contents | 428 | def signup_extra_contents |
@@ -557,6 +574,12 @@ class Noosfero::Plugin | @@ -557,6 +574,12 @@ class Noosfero::Plugin | ||
557 | [] | 574 | [] |
558 | end | 575 | end |
559 | 576 | ||
577 | + # -> Adds css class to <html> tag | ||
578 | + # returns = ['class1', 'class2'] | ||
579 | + def html_tag_classes | ||
580 | + nil | ||
581 | + end | ||
582 | + | ||
560 | # -> Adds additional blocks to profiles and environments. | 583 | # -> Adds additional blocks to profiles and environments. |
561 | # Your plugin must implements a class method called 'extra_blocks' | 584 | # Your plugin must implements a class method called 'extra_blocks' |
562 | # that returns a hash with the following syntax. | 585 | # that returns a hash with the following syntax. |
lib/noosfero/version.rb
@@ -2,3 +2,7 @@ module Noosfero | @@ -2,3 +2,7 @@ module Noosfero | ||
2 | PROJECT = 'noosfero' | 2 | PROJECT = 'noosfero' |
3 | VERSION = '1.0' | 3 | VERSION = '1.0' |
4 | end | 4 | end |
5 | + | ||
6 | +if File.exist?(File.join(Rails.root, '.git')) | ||
7 | + Noosfero::VERSION.clear << Dir.chdir(Rails.root) { `git describe --tags`.strip } | ||
8 | +end |
lib/tasks/ci.rake
@@ -5,7 +5,13 @@ namespace :ci do | @@ -5,7 +5,13 @@ namespace :ci do | ||
5 | 5 | ||
6 | current_branch = `git rev-parse --abbrev-ref HEAD`.strip | 6 | current_branch = `git rev-parse --abbrev-ref HEAD`.strip |
7 | from = ENV['PREV_HEAD'] || "origin/#{current_branch}" | 7 | from = ENV['PREV_HEAD'] || "origin/#{current_branch}" |
8 | + if !system("git show-ref --verify --quiet refs/remotes/#{from}") | ||
9 | + from = 'origin/master' | ||
10 | + end | ||
8 | to = ENV['HEAD'] || current_branch | 11 | to = ENV['HEAD'] || current_branch |
12 | + | ||
13 | + puts "Testing changes between #{from} and #{to} ..." | ||
14 | + | ||
9 | changed_files = `git diff --name-only #{from}..#{to}`.split.select do |f| | 15 | changed_files = `git diff --name-only #{from}..#{to}`.split.select do |f| |
10 | File.exist?(f) && f.split(File::SEPARATOR).first != 'vendor' | 16 | File.exist?(f) && f.split(File::SEPARATOR).first != 'vendor' |
11 | end | 17 | end |
@@ -33,14 +39,23 @@ namespace :ci do | @@ -33,14 +39,23 @@ namespace :ci do | ||
33 | end | 39 | end |
34 | end | 40 | end |
35 | 41 | ||
42 | + if tests.empty? && features.empty? && changed_plugins.empty? | ||
43 | + puts "Could not figure out specific changes to be tested in isolation!" | ||
44 | + end | ||
45 | + puts | ||
46 | + | ||
36 | sh 'testrb', '-Itest', *tests unless tests.empty? | 47 | sh 'testrb', '-Itest', *tests unless tests.empty? |
37 | sh 'cucumber', *features unless features.empty? | 48 | sh 'cucumber', *features unless features.empty? |
38 | sh 'xvfb-run', 'cucumber', '-p', 'selenium', *features unless features.empty? | 49 | sh 'xvfb-run', 'cucumber', '-p', 'selenium', *features unless features.empty? |
39 | 50 | ||
40 | changed_plugins.each do |plugin| | 51 | changed_plugins.each do |plugin| |
41 | - task = "test:noosfero_plugins:#{plugin}" | ||
42 | - puts "Running #{task}" | ||
43 | - Rake::Task[task].execute | 52 | + if $broken_plugins.include?(plugin) |
53 | + puts "Skipping plugins/#{plugin}: marked as broken" | ||
54 | + else | ||
55 | + task = "test:noosfero_plugins:#{plugin}" | ||
56 | + puts "Running #{task}" | ||
57 | + Rake::Task[task].execute | ||
58 | + end | ||
44 | end | 59 | end |
45 | 60 | ||
46 | end | 61 | end |
lib/tasks/gettext.rake
@@ -16,6 +16,14 @@ file makemo_stamp => Dir.glob('po/*/noosfero.po') do | @@ -16,6 +16,14 @@ file makemo_stamp => Dir.glob('po/*/noosfero.po') do | ||
16 | mo_root: 'locale', | 16 | mo_root: 'locale', |
17 | ) | 17 | ) |
18 | 18 | ||
19 | + Dir.glob('plugins/*').each do |plugindir| | ||
20 | + GetText.create_mofiles( | ||
21 | + verbose: true, | ||
22 | + po_root: File.join(plugindir, 'po'), | ||
23 | + mo_root: File.join(plugindir, 'locale'), | ||
24 | + ) | ||
25 | + end | ||
26 | + | ||
19 | FileUtils.mkdir_p 'tmp' | 27 | FileUtils.mkdir_p 'tmp' |
20 | FileUtils.touch makemo_stamp | 28 | FileUtils.touch makemo_stamp |
21 | end | 29 | end |
@@ -54,7 +62,6 @@ task :updatepo do | @@ -54,7 +62,6 @@ task :updatepo do | ||
54 | 'config/initializers/*.rb', | 62 | 'config/initializers/*.rb', |
55 | 'public/*.html.erb', | 63 | 'public/*.html.erb', |
56 | 'public/designs/themes/{base,noosfero,profile-base}/*.{rhtml,html.erb}', | 64 | 'public/designs/themes/{base,noosfero,profile-base}/*.{rhtml,html.erb}', |
57 | - 'plugins/**/{controllers,models,lib,views}/**/*.{rhtml,html.erb,rb}', | ||
58 | ].map { |pattern| Dir.glob(pattern) }.flatten | 65 | ].map { |pattern| Dir.glob(pattern) }.flatten |
59 | 66 | ||
60 | require 'gettext' | 67 | require 'gettext' |
@@ -67,7 +74,33 @@ task :updatepo do | @@ -67,7 +74,33 @@ task :updatepo do | ||
67 | po_root: 'po', | 74 | po_root: 'po', |
68 | } | 75 | } |
69 | ) | 76 | ) |
77 | +end | ||
70 | 78 | ||
79 | +Dir.glob('plugins/*').each do |plugindir| | ||
80 | + plugin = File.basename(plugindir) | ||
81 | + task :updatepo => "updatepo:plugin:#{plugin}" | ||
82 | + | ||
83 | + desc "Extract strings from #{plugin} plugin" | ||
84 | + task "updatepo:plugin:#{plugin}" do | ||
85 | + files = Dir.glob("#{plugindir}/**/*.{rb,html.erb}") | ||
86 | + po_root = File.join(plugindir, 'po') | ||
87 | + require 'gettext' | ||
88 | + require 'gettext/tools' | ||
89 | + GetText.update_pofiles( | ||
90 | + plugin, | ||
91 | + files, | ||
92 | + Noosfero::VERSION, | ||
93 | + { | ||
94 | + po_root: po_root, | ||
95 | + } | ||
96 | + ) | ||
97 | + plugin_pot = File.join(po_root, "#{plugin}.pot") | ||
98 | + if File.exists?(plugin_pot) && system("LANG=C msgfmt --statistics --output /dev/null #{plugin_pot} 2>&1 | grep -q '^0 translated messages.'") | ||
99 | + rm_f plugin_pot | ||
100 | + end | ||
101 | + sh 'find', po_root, '-type', 'd', '-empty', '-delete' | ||
102 | + puts | ||
103 | + end | ||
71 | end | 104 | end |
72 | 105 | ||
73 | task :checkpo do | 106 | task :checkpo do |
lib/tasks/plugins_tests.rake
1 | -@broken_plugins = %w[ | 1 | +$broken_plugins = %w[ |
2 | anti_spam | 2 | anti_spam |
3 | bsc | 3 | bsc |
4 | comment_classification | 4 | comment_classification |
5 | ldap | 5 | ldap |
6 | solr | 6 | solr |
7 | + stoa | ||
7 | ] | 8 | ] |
8 | 9 | ||
9 | @all_plugins = Dir.glob('plugins/*').map { |f| File.basename(f) } - ['template'] | 10 | @all_plugins = Dir.glob('plugins/*').map { |f| File.basename(f) } - ['template'] |
@@ -204,14 +205,14 @@ namespace :test do | @@ -204,14 +205,14 @@ namespace :test do | ||
204 | @all_tasks.each do |taskname| | 205 | @all_tasks.each do |taskname| |
205 | desc "Run #{taskname} tests for all plugins" | 206 | desc "Run #{taskname} tests for all plugins" |
206 | task taskname do | 207 | task taskname do |
207 | - test_sequence(@all_plugins - @broken_plugins, taskname) | 208 | + test_sequence(@all_plugins - $broken_plugins, taskname) |
208 | end | 209 | end |
209 | end | 210 | end |
210 | end | 211 | end |
211 | 212 | ||
212 | desc "Run all tests for all plugins" | 213 | desc "Run all tests for all plugins" |
213 | task :noosfero_plugins do | 214 | task :noosfero_plugins do |
214 | - test_sequence(@all_plugins - @broken_plugins, @all_tasks) do |failed| | 215 | + test_sequence(@all_plugins - $broken_plugins, @all_tasks) do |failed| |
215 | plugins_status_report(failed) | 216 | plugins_status_report(failed) |
216 | end | 217 | end |
217 | end | 218 | end |
@@ -228,7 +229,7 @@ def plugins_status_report(failed) | @@ -228,7 +229,7 @@ def plugins_status_report(failed) | ||
228 | printf ('-' * w) + ' ' + ('-' * 20) + "\n" | 229 | printf ('-' * w) + ' ' + ('-' * 20) + "\n" |
229 | 230 | ||
230 | @all_plugins.each do |plugin| | 231 | @all_plugins.each do |plugin| |
231 | - if @broken_plugins.include?(plugin) | 232 | + if $broken_plugins.include?(plugin) |
232 | status = "SKIP" | 233 | status = "SKIP" |
233 | elsif !failed[plugin] || failed[plugin].empty? | 234 | elsif !failed[plugin] || failed[plugin].empty? |
234 | status = "PASS" | 235 | status = "PASS" |
lib/tasks/release.rake
@@ -137,7 +137,17 @@ EOF | @@ -137,7 +137,17 @@ EOF | ||
137 | new_version += '~rc1' | 137 | new_version += '~rc1' |
138 | end | 138 | end |
139 | else | 139 | else |
140 | - new_version.sub!(/~rc[0-9]+/, '') | 140 | + if new_version =~ /~rc\d+/ |
141 | + new_version.sub!(/~rc[0-9]+/, '') | ||
142 | + else | ||
143 | + components = new_version.split('.').map(&:to_i) | ||
144 | + if components.size < 3 | ||
145 | + components << 1 | ||
146 | + else | ||
147 | + components[-1] += 1 | ||
148 | + end | ||
149 | + new_version = components.join('.') | ||
150 | + end | ||
141 | end | 151 | end |
142 | 152 | ||
143 | puts "Current version: #{$version}" | 153 | puts "Current version: #{$version}" |
lib/unifreire_terminology.rb
@@ -1,44 +0,0 @@ | @@ -1,44 +0,0 @@ | ||
1 | -require 'noosfero/terminology' | ||
2 | - | ||
3 | -class UnifreireTerminology < Noosfero::Terminology::Custom | ||
4 | - | ||
5 | - def initialize | ||
6 | - # NOTE: the hash values must be marked for translation!! | ||
7 | - super({ | ||
8 | - 'Enterprises' => N_('Institutions'), | ||
9 | - 'enterprises' => N_('institutions'), | ||
10 | - 'The enterprises where this user works.' => N_('The institution where this user belongs.'), | ||
11 | - 'A block that displays your enterprises' => N_('A block that displays your institutions.'), | ||
12 | - 'All enterprises' => N_('All institutions'), | ||
13 | - 'Disable search for enterprises' => N_('Disable search for institutions'), | ||
14 | - 'One enterprise' => N_('One institution'), | ||
15 | - '%{num} enterprises' => N_('%{num} institutions'), | ||
16 | - 'Favorite Enterprises' => N_('Favorite Institutions'), | ||
17 | - 'This user\'s favorite enterprises.' => N_('This user\'s favorite institutions'), | ||
18 | - 'A block that displays your favorite enterprises' => N_('A block that displays your favorite institutions'), | ||
19 | - 'All favorite enterprises' => N_('All favorite institutions'), | ||
20 | - 'A search for enterprises by products selled and local' => N_('A search for institutions by products selled and local'), | ||
21 | - 'Edit message for disabled enterprises' => N_('Edit message for disabled institutions'), | ||
22 | - 'Add favorite enterprise' => N_('Add favorite institution'), | ||
23 | - 'Validation info is the information the enterprises will see about how your organization processes the enterprises validations it receives: validation methodology, restrictions to the types of enterprises the organization validates etc.' => N_('Validation info is the information the institutions will see about how your organization processes the institutions validations it receives: validation methodology, restrictions to the types of institutions the organization validates etc.'), | ||
24 | - 'Here are all <b>%s</b>\'s enterprises.' => N_('Here are all <b>%s</b>\'s institutions.'), | ||
25 | - 'Here are all <b>%s</b>\'s favorite enterprises.' => N_('Here are all <b>%s</b>\'s favorite institutions.'), | ||
26 | - 'Favorite Enterprises' => N_('Favorite Institutions'), | ||
27 | - 'Enterprises in "%s"' => N_('Institutions in "%s"'), | ||
28 | - 'Register a new Enterprise' => N_('Register a new Institution'), | ||
29 | - 'Events' => N_('Schedule'), | ||
30 | - 'Manage enterprise fields' => N_('Manage institutions fields'), | ||
31 | - "%s's enterprises" => N_("%s's institutions"), | ||
32 | - 'Activate your enterprise' => N_('Activate your institution'), | ||
33 | - 'Enterprise activation code' => N_('Institution activation code'), | ||
34 | - 'Disable activation of enterprises' => N_('Disable activation of institutions'), | ||
35 | - "%s's favorite enterprises" => N_("%s's favorite institutions"), | ||
36 | - 'Disable Enterprise' => N_('Disable Institution'), | ||
37 | - 'Enable Enterprise' => N_('Enable Institution'), | ||
38 | - 'Enterprise Validation' => N_('Institution Validation'), | ||
39 | - 'Enterprise Info and settings' => N_('Institution Info and settings'), | ||
40 | - 'Enterprises are disabled when created' => N_('Institutions are disabled when created'), | ||
41 | - }) | ||
42 | - end | ||
43 | - | ||
44 | -end |
lib/zen3_terminology.rb
@@ -1,88 +0,0 @@ | @@ -1,88 +0,0 @@ | ||
1 | -require 'noosfero/terminology' | ||
2 | - | ||
3 | -class Zen3Terminology < Noosfero::Terminology::Custom | ||
4 | - | ||
5 | - def initialize | ||
6 | - # NOTE: the hash values must be marked for translation!! | ||
7 | - super({ | ||
8 | - 'My Home Page' => N_('My ePortfolio'), | ||
9 | - 'Homepage' => N_('ePortfolio'), | ||
10 | - 'Communities' => N_('Groups'), | ||
11 | - 'communities' => N_('groups'), | ||
12 | - 'A block that displays your communities' => N_('A block that displays your groups'), | ||
13 | - 'A block that displays your friends' => N_('A block that displays your contacts'), | ||
14 | - 'The communities in which the user is a member' => N_('The groups in which the user is a member'), | ||
15 | - 'All communities' => N_('All groups'), | ||
16 | - 'Community' => N_('Group'), | ||
17 | - 'One community' => N_('One group'), | ||
18 | - '%{num} communities' => N_('%{num} groups'), | ||
19 | - 'Disable search for communities' => N_('Disable search for groups'), | ||
20 | - 'Enterprises' => N_('Organizations'), | ||
21 | - 'enterprises' => N_('organizations'), | ||
22 | - 'The enterprises where this user works.' => N_('The organizations where this user works.'), | ||
23 | - 'A block that displays your enterprises' => N_('A block that displays your organizations.'), | ||
24 | - 'All enterprises' => N_('All organizations'), | ||
25 | - 'Disable search for enterprises' => N_('Disable search for organizations'), | ||
26 | - 'One enterprise' => N_('One organization'), | ||
27 | - '%{num} enterprises' => N_('%{num} organizations'), | ||
28 | - 'Favorite Enterprises' => N_('Favorite Organizations'), | ||
29 | - 'This user\'s favorite enterprises.' => N_('This user\'s favorite organizations'), | ||
30 | - 'A block that displays your favorite enterprises' => N_('A block that displays your favorite organizations'), | ||
31 | - 'All favorite enterprises' => N_('All favorite organizations'), | ||
32 | - 'A search for enterprises by products selled and local' => N_('A search for organizations by products selled and local'), | ||
33 | - 'Edit message for disabled enterprises' => N_('Edit message for disabled organizations'), | ||
34 | - 'Add enterprise as favorite' => N_('Add organization as favorite'), | ||
35 | - 'Validation info is the information the enterprises will see about how your organization processes the enterprises validations it receives: validation methodology, restrictions to the types of enterprises the organization validates etc.' => N_('Validation info is the information the organizations will see about how your organization processes the organizations validations it receives: validation methodology, restrictions to the types of organizations the organization validates etc.'), | ||
36 | - 'Here are all <b>%s</b>\'s enterprises.' => N_('Here all all <b>%s</b>\'s organizations.'), | ||
37 | - 'Here are all <b>%s</b>\'s favorite enterprises.' => N_('Here are all <b>%s</b>\'s favorite organizations.'), | ||
38 | - 'Favorite Enterprises' => N_('Favorite Organizations'), | ||
39 | - 'Enterprises in "%s"' => N_('Organizations in "%s"'), | ||
40 | - 'Register a new Enterprise' => N_('Register a new organization'), | ||
41 | - 'One friend' => N_('One contact'), | ||
42 | - '%s friends' => N_('%s contacts'), | ||
43 | - '%s communities' => N_('%s groups'), | ||
44 | - 'Are you sure you want to remove %s from your friends list?' => N_('Are you sure you want to remove %s from your contacts list?'), | ||
45 | - 'Note that %s will still have you as a friend, unless he/she also wants to remove you from his/her friend list.' => N_('Note that %s will still have you as a contact, unless he/she also wants to remove you from his/her contact list.'), | ||
46 | - 'Yes, I want to remove %s from my friend list' => N_('Yes, I want to remove %s from my contact list'), | ||
47 | - 'Adding %s as a friend' => N_('Adding %s as a contact'), | ||
48 | - 'Are you sure you want to add %s as your friend?' => N_('Are you sure you want to add %s as your contact?'), | ||
49 | - 'Note that %s will need to accept being added as your friend.' => N_('Note that %s will need to accept being added as your contact.'), | ||
50 | - 'Classify your new friend %s: ' => N_('Classify your new contact %s: '), | ||
51 | - 'Yes, I want to add %s as my friend' => N_('Yes, I want to add %s as my contact'), | ||
52 | - 'Manage friends' => N_('Manage contacts'), | ||
53 | - 'Add friend' => N_('Add contact'), | ||
54 | - 'Removing friend: %s' => N_('Removing friend: %s'), | ||
55 | - 'Clicking on this button will remove your friend relation with %s.' => N_('Clicking on this button will remove your contact relation with %s.'), | ||
56 | - 'You have no friends yet.' => N_('You have no contacts yet.'), | ||
57 | - '%s\'s friends' => N_('%s\'s contacts'), | ||
58 | - 'Here are all <b>%s</b>\'s friends.' => N_('Here are all <b>%s</b>\'s contacts.'), | ||
59 | - 'Friends' => N_('Contacts'), | ||
60 | - 'Creating new community' => N_('Creating new group'), | ||
61 | - 'Do you want to join this community?' => N_('Do you want to join this group?'), | ||
62 | - 'Activate your enterprise' => N_('Activate your organization'), | ||
63 | - 'Enterprise activation code' => N_('Organization activation code'), | ||
64 | - 'Disable activation of enterprises' => N_('Disable activation of organizations'), | ||
65 | - 'Manage community fields' => N_('Manage group fields'), | ||
66 | - 'Create a new community' => N_('Create a new group'), | ||
67 | - 'Preferred domain name:' => N_('Choose your host community:'), | ||
68 | - 'My communities' => N_('My groups'), | ||
69 | - 'Community Info and settings' => N_('Group Info and Settings'), | ||
70 | - '{#} community' => N_('{#} group'), | ||
71 | - '{#} communities' => N_('{#} groups'), | ||
72 | - '{#} enterprise' => N_('{#} organization'), | ||
73 | - '{#} enterprises' => N_('{#} organizations'), | ||
74 | - '{#} friend' => N_('{#} contact'), | ||
75 | - '{#} friends' => N_('{#} contacts'), | ||
76 | - "%s's favorite enterprises" => N_("%s's favorite organizations"), | ||
77 | - 'Disable Enterprise' => N_('Disable Organization'), | ||
78 | - 'Enable Enterprise' => N_('Enable Organization'), | ||
79 | - 'Enterprise Validation' => N_('Organization Validation'), | ||
80 | - 'Enterprise Info and settings' => N_('Organization Info and settings'), | ||
81 | - 'Choose the communities you want to join and/or create your own.' => N_('Choose the groups you want to join and/or create your own.'), | ||
82 | - 'New community' => N_('New group'), | ||
83 | - "Tags are important to new users, they'll be able to find your new community more easily." => N_("Tags are important to new users, they'll be able to find your new group more easily."), | ||
84 | - 'Enterprises are disabled when created' => N_('Organizations are disabled when created'), | ||
85 | - }) | ||
86 | - end | ||
87 | - | ||
88 | -end |
plugins/anti_spam/controllers/anti_spam_plugin_admin_controller.rb
@@ -0,0 +1,41 @@ | @@ -0,0 +1,41 @@ | ||
1 | +# German translation of noosfero. | ||
2 | +# Copyright (C) 2009-2013 Josef Spillner | ||
3 | +# Copyright (C) 2009, 2011 Ronny Kursawe | ||
4 | +# This file is distributed under the same license as the noosfero package. | ||
5 | +# Josef Spillner <josef.spillner@tu-dresden.de>, 2009. | ||
6 | +# | ||
7 | +msgid "" | ||
8 | +msgstr "" | ||
9 | +"Project-Id-Version: 1.0\n" | ||
10 | +"POT-Creation-Date: 2015-02-02 21:44-0300\n" | ||
11 | +"PO-Revision-Date: 2014-12-12 14:23+0200\n" | ||
12 | +"Last-Translator: Michal Čihař <michal@cihar.com>\n" | ||
13 | +"Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" | ||
14 | +"de/>\n" | ||
15 | +"Language: de\n" | ||
16 | +"MIME-Version: 1.0\n" | ||
17 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
18 | +"Content-Transfer-Encoding: 8bit\n" | ||
19 | +"Plural-Forms: nplurals=2; plural=n != 1;\n" | ||
20 | +"X-Generator: Weblate 2.2-dev\n" | ||
21 | + | ||
22 | +#: plugins/anti_spam/lib/anti_spam_plugin.rb:8 | ||
23 | +#, fuzzy | ||
24 | +msgid "" | ||
25 | +"Tests comments and suggested articles against a spam checking service " | ||
26 | +"compatible with the Akismet API" | ||
27 | +msgstr "" | ||
28 | +"Prüft Kommentare gegen einen Spam-Prüfdienst, welcher kompatibel mit der " | ||
29 | +"Akismet-API ist" | ||
30 | + | ||
31 | +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:1 | ||
32 | +msgid "AntiSpam settings" | ||
33 | +msgstr "Anti-Spam-Einstellungen" | ||
34 | + | ||
35 | +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:5 | ||
36 | +msgid "Host" | ||
37 | +msgstr "Rechner" | ||
38 | + | ||
39 | +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:7 | ||
40 | +msgid "API key" | ||
41 | +msgstr "API-Schlüssel" |
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +# translation of noosfero.po to | ||
2 | +# Krishnamurti Lelis Lima Vieira Nunes <krishna@colivre.coop.br>, 2007. | ||
3 | +# noosfero - Brazilian Portuguese translation | ||
4 | +# Copyright (C) 2007, | ||
5 | +# Forum Brasileiro de Economia Solidaria <http://www.fbes.org.br/> | ||
6 | +# Copyright (C) 2007, | ||
7 | +# Ynternet.org Foundation <http://www.ynternet.org/> | ||
8 | +# This file is distributed under the same license as noosfero itself. | ||
9 | +# Joenio Costa <joenio@colivre.coop.br>, 2008. | ||
10 | +# | ||
11 | +# | ||
12 | +msgid "" | ||
13 | +msgstr "" | ||
14 | +"Project-Id-Version: 1.0\n" | ||
15 | +"POT-Creation-Date: 2015-02-02 21:44-0300\n" | ||
16 | +"PO-Revision-Date: 2014-12-18 18:40-0200\n" | ||
17 | +"Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | ||
18 | +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | ||
19 | +"noosfero/pt/>\n" | ||
20 | +"Language: pt\n" | ||
21 | +"MIME-Version: 1.0\n" | ||
22 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
23 | +"Content-Transfer-Encoding: 8bit\n" | ||
24 | +"Plural-Forms: nplurals=2; plural=n != 1;\n" | ||
25 | +"X-Generator: Weblate 2.0\n" | ||
26 | + | ||
27 | +#: plugins/anti_spam/lib/anti_spam_plugin.rb:8 | ||
28 | +msgid "" | ||
29 | +"Tests comments and suggested articles against a spam checking service " | ||
30 | +"compatible with the Akismet API" | ||
31 | +msgstr "" | ||
32 | +"Testa comentários e sugestões de artigo contra um serviço de verificação de " | ||
33 | +"spams compatível com a API Akismet" | ||
34 | + | ||
35 | +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:1 | ||
36 | +msgid "AntiSpam settings" | ||
37 | +msgstr "Configurações de AntiSpam" | ||
38 | + | ||
39 | +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:5 | ||
40 | +msgid "Host" | ||
41 | +msgstr "Host" | ||
42 | + | ||
43 | +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:7 | ||
44 | +msgid "API key" | ||
45 | +msgstr "Chave da API" |
plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | <%= labelled_form_field _('API key'), f.text_field(:api_key, :size => 40) %> | 7 | <%= labelled_form_field _('API key'), f.text_field(:api_key, :size => 40) %> |
8 | 8 | ||
9 | <% button_bar do %> | 9 | <% button_bar do %> |
10 | - <%= submit_button(:save, _('Save'), :cancel => {:controller => 'plugins', :action => 'index'}) %> | 10 | + <%= submit_button(:save, c_('Save'), :cancel => {:controller => 'plugins', :action => 'index'}) %> |
11 | <% end %> | 11 | <% end %> |
12 | 12 | ||
13 | <% end %> | 13 | <% end %> |
plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb
@@ -53,7 +53,7 @@ class BreadcrumbsPlugin::ContentBreadcrumbsBlock < Block | @@ -53,7 +53,7 @@ class BreadcrumbsPlugin::ContentBreadcrumbsBlock < Block | ||
53 | 53 | ||
54 | protected | 54 | protected |
55 | 55 | ||
56 | - CMS_ACTIONS = {:edit => _('Edit'), :upload_files => _('Upload Files'), :new => _('New')} | 56 | + CMS_ACTIONS = {:edit => c_('Edit'), :upload_files => _('Upload Files'), :new => c_('New')} |
57 | 57 | ||
58 | def cms_action(action) | 58 | def cms_action(action) |
59 | CMS_ACTIONS[action.to_sym] || action | 59 | CMS_ACTIONS[action.to_sym] || action |
@@ -0,0 +1,49 @@ | @@ -0,0 +1,49 @@ | ||
1 | +# translation of noosfero.po to | ||
2 | +# Krishnamurti Lelis Lima Vieira Nunes <krishna@colivre.coop.br>, 2007. | ||
3 | +# noosfero - Brazilian Portuguese translation | ||
4 | +# Copyright (C) 2007, | ||
5 | +# Forum Brasileiro de Economia Solidaria <http://www.fbes.org.br/> | ||
6 | +# Copyright (C) 2007, | ||
7 | +# Ynternet.org Foundation <http://www.ynternet.org/> | ||
8 | +# This file is distributed under the same license as noosfero itself. | ||
9 | +# Joenio Costa <joenio@colivre.coop.br>, 2008. | ||
10 | +# | ||
11 | +# | ||
12 | +msgid "" | ||
13 | +msgstr "" | ||
14 | +"Project-Id-Version: 1.0\n" | ||
15 | +"POT-Creation-Date: 2015-02-02 21:43-0300\n" | ||
16 | +"PO-Revision-Date: 2014-12-18 18:40-0200\n" | ||
17 | +"Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | ||
18 | +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | ||
19 | +"noosfero/pt/>\n" | ||
20 | +"Language: pt\n" | ||
21 | +"MIME-Version: 1.0\n" | ||
22 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
23 | +"Content-Transfer-Encoding: 8bit\n" | ||
24 | +"Plural-Forms: nplurals=2; plural=n != 1;\n" | ||
25 | +"X-Generator: Weblate 2.0\n" | ||
26 | + | ||
27 | +#: plugins/breadcrumbs/lib/breadcrumbs_plugin.rb:8 | ||
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." | ||
30 | + | ||
31 | +#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:9 | ||
32 | +msgid "Content Breadcrumbs" | ||
33 | +msgstr "Conteúdo de Caminho de Pão" | ||
34 | + | ||
35 | +#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:13 | ||
36 | +msgid "This block displays breadcrumb trail." | ||
37 | +msgstr "Esse bloco mostra o rastro de caminho de pão." | ||
38 | + | ||
39 | +#: plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb:56 | ||
40 | +msgid "Upload Files" | ||
41 | +msgstr "Enviar Arquivos" | ||
42 | + | ||
43 | +#: plugins/breadcrumbs/views/box_organizer/breadcrumbs_plugin/_content_breadcrumbs_block.html.erb:2 | ||
44 | +msgid "Show cms action" | ||
45 | +msgstr "Mostrar cms" | ||
46 | + | ||
47 | +#: plugins/breadcrumbs/views/box_organizer/breadcrumbs_plugin/_content_breadcrumbs_block.html.erb:3 | ||
48 | +msgid "Show profile" | ||
49 | +msgstr "Mostrar perfil" |
plugins/bsc/lib/bsc_plugin.rb
@@ -101,7 +101,7 @@ class BscPlugin < Noosfero::Plugin | @@ -101,7 +101,7 @@ class BscPlugin < Noosfero::Plugin | ||
101 | else | 101 | else |
102 | content = lambda { product.enterprise.name } | 102 | content = lambda { product.enterprise.name } |
103 | end | 103 | end |
104 | - properties << { :name => _('Supplier'), :content => content } | 104 | + properties << { :name => c_('Supplier'), :content => content } |
105 | end | 105 | end |
106 | 106 | ||
107 | def profile_tabs | 107 | def profile_tabs |
plugins/bsc/lib/bsc_plugin/bsc_helper.rb
@@ -4,9 +4,9 @@ module BscPlugin::BscHelper | @@ -4,9 +4,9 @@ module BscPlugin::BscHelper | ||
4 | 4 | ||
5 | def token_input_field_tag(name, element_id, search_action, options = {}, text_field_options = {}, html_options = {}) | 5 | def token_input_field_tag(name, element_id, search_action, options = {}, text_field_options = {}, html_options = {}) |
6 | options[:min_chars] ||= 3 | 6 | options[:min_chars] ||= 3 |
7 | - options[:hint_text] ||= _("Type in a search term") | ||
8 | - options[:no_results_text] ||= _("No results") | ||
9 | - options[:searching_text] ||= _("Searching...") | 7 | + options[:hint_text] ||= c_("Type in a search term") |
8 | + options[:no_results_text] ||= c_("No results") | ||
9 | + options[:searching_text] ||= c_("Searching...") | ||
10 | options[:search_delay] ||= 1000 | 10 | options[:search_delay] ||= 1000 |
11 | options[:prevent_duplicates] ||= true | 11 | options[:prevent_duplicates] ||= true |
12 | options[:backspace_delete_item] ||= false | 12 | options[:backspace_delete_item] ||= false |
plugins/bsc/lib/bsc_plugin/contract.rb
@@ -43,7 +43,7 @@ class BscPlugin::Contract < Noosfero::Plugin::ActiveRecord | @@ -43,7 +43,7 @@ class BscPlugin::Contract < Noosfero::Plugin::ActiveRecord | ||
43 | end | 43 | end |
44 | 44 | ||
45 | def self.names | 45 | def self.names |
46 | - [_('State'), _('Federal')] | 46 | + [c_('State'), _('Federal')] |
47 | end | 47 | end |
48 | end | 48 | end |
49 | 49 |
@@ -0,0 +1,370 @@ | @@ -0,0 +1,370 @@ | ||
1 | +# German translation of noosfero. | ||
2 | +# Copyright (C) 2009-2013 Josef Spillner | ||
3 | +# Copyright (C) 2009, 2011 Ronny Kursawe | ||
4 | +# This file is distributed under the same license as the noosfero package. | ||
5 | +# Josef Spillner <josef.spillner@tu-dresden.de>, 2009. | ||
6 | +# | ||
7 | +msgid "" | ||
8 | +msgstr "" | ||
9 | +"Project-Id-Version: 1.0\n" | ||
10 | +"POT-Creation-Date: 2015-02-02 21:43-0300\n" | ||
11 | +"PO-Revision-Date: 2014-12-12 14:23+0200\n" | ||
12 | +"Last-Translator: Michal Čihař <michal@cihar.com>\n" | ||
13 | +"Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/" | ||
14 | +"de/>\n" | ||
15 | +"Language: de\n" | ||
16 | +"MIME-Version: 1.0\n" | ||
17 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
18 | +"Content-Transfer-Encoding: 8bit\n" | ||
19 | +"Plural-Forms: nplurals=2; plural=n != 1;\n" | ||
20 | +"X-Generator: Weblate 2.2-dev\n" | ||
21 | + | ||
22 | +#: plugins/bsc/lib/bsc_plugin.rb:10 | ||
23 | +msgid "Adds the Bsc feature" | ||
24 | +msgstr "Fügt Unterstützung für Bsc hinzu" | ||
25 | + | ||
26 | +#: plugins/bsc/lib/bsc_plugin.rb:14 | ||
27 | +msgid "Create Bsc" | ||
28 | +msgstr "Bsc erstellen" | ||
29 | + | ||
30 | +#: plugins/bsc/lib/bsc_plugin.rb:15 | ||
31 | +msgid "Validate Enterprises" | ||
32 | +msgstr "Unternehmen bestätigen" | ||
33 | + | ||
34 | +#: plugins/bsc/lib/bsc_plugin.rb:20 | ||
35 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:1 | ||
36 | +msgid "Manage associated enterprises" | ||
37 | +msgstr "Verwalte verbundene Unternehmen" | ||
38 | + | ||
39 | +#: plugins/bsc/lib/bsc_plugin.rb:21 plugins/bsc/lib/bsc_plugin.rb:27 | ||
40 | +msgid "Transfer ownership" | ||
41 | +msgstr "Eigentümerschaft übertragen" | ||
42 | + | ||
43 | +#: plugins/bsc/lib/bsc_plugin.rb:22 | ||
44 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:1 | ||
45 | +msgid "Manage contracts" | ||
46 | +msgstr "Verträge verwalten" | ||
47 | + | ||
48 | +#: plugins/bsc/lib/bsc_plugin.rb:98 | ||
49 | +msgid "Bsc" | ||
50 | +msgstr "Bsc" | ||
51 | + | ||
52 | +#: plugins/bsc/lib/bsc_plugin.rb:109 | ||
53 | +#: plugins/bsc/views/shared/_fields.html.erb:53 | ||
54 | +msgid "Contact" | ||
55 | +msgstr "Kontakt" | ||
56 | + | ||
57 | +#: plugins/bsc/lib/bsc_plugin/bsc.rb:28 | ||
58 | +msgid "Bsc info and settings" | ||
59 | +msgstr "Bsc-Informationen und -Einstellungen" | ||
60 | + | ||
61 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:10 | ||
62 | +msgid "BSC association" | ||
63 | +msgstr "BSC-Zusammenschluss" | ||
64 | + | ||
65 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:18 | ||
66 | +msgid "%{requestor} wants to associate this enterprise with %{linked_subject}." | ||
67 | +msgstr "" | ||
68 | +"%{requestor} möchte das Unternehmen %{linked_subject} mit %{linked_subject} " | ||
69 | +"verknüpfen." | ||
70 | + | ||
71 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:35 | ||
72 | +msgid "%{enterprise} accepted your request to associate it with %{bsc}." | ||
73 | +msgstr "%{enterprise} hat Ihre Anfrage zur Verbindung mit %{bsc} akzeptiert." | ||
74 | + | ||
75 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:39 | ||
76 | +msgid "%{enterprise} rejected your request to associate it with %{bsc}." | ||
77 | +msgstr "%{enterprise} hat Ihre Anfrage zur Verbindung mit %{bsc} abgelehnt." | ||
78 | + | ||
79 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:41 | ||
80 | +msgid "" | ||
81 | +"Here is the reject explanation left by the administrator:\n" | ||
82 | +"\n" | ||
83 | +"%{reject_explanation}" | ||
84 | +msgstr "" | ||
85 | +"Hier ist der vom Administrator angegebene Grund der Ablehnung:\n" | ||
86 | +"\n" | ||
87 | +"%{reject_explanation}" | ||
88 | + | ||
89 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:46 | ||
90 | +msgid "%{requestor} wants assoaciate %{bsc} as your BSC." | ||
91 | +msgstr "%{requestor} möchte %{bsc} als Ihr BSC verknüpfen." | ||
92 | + | ||
93 | +#: plugins/bsc/lib/bsc_plugin/mailer.rb:7 | ||
94 | +msgid "[%s] Bsc management transferred to you." | ||
95 | +msgstr "[%s] Die Verwaltung von Bsc wurde Ihnen übertragen." | ||
96 | + | ||
97 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
98 | +msgid "Opened" | ||
99 | +msgstr "Geöffnet" | ||
100 | + | ||
101 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
102 | +msgid "Negotiating" | ||
103 | +msgstr "Aushandlung" | ||
104 | + | ||
105 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
106 | +msgid "Executing" | ||
107 | +msgstr "Ausführung" | ||
108 | + | ||
109 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
110 | +msgid "Closed" | ||
111 | +msgstr "Geschlossen" | ||
112 | + | ||
113 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:46 | ||
114 | +msgid "Federal" | ||
115 | +msgstr "Föderal" | ||
116 | + | ||
117 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
118 | +msgid "ProjectA" | ||
119 | +msgstr "ProjektA" | ||
120 | + | ||
121 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
122 | +msgid "ProjectB" | ||
123 | +msgstr "ProjektB" | ||
124 | + | ||
125 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:38 | ||
126 | +msgid "This Bsc associations were saved successfully." | ||
127 | +msgstr "Diese Bsc-Verknüpfungen wurden erfolgreich gespeichert." | ||
128 | + | ||
129 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:42 | ||
130 | +msgid "This Bsc associations couldn't be saved." | ||
131 | +msgstr "Diese Bsc-Verknüpfung konnte nicht gespeichert werden." | ||
132 | + | ||
133 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:71 | ||
134 | +msgid "Enterprise ownership transferred." | ||
135 | +msgstr "Eigentümerschaft des Unternehmens übertragen." | ||
136 | + | ||
137 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:85 | ||
138 | +msgid "Enterprise was created in association with %s." | ||
139 | +msgstr "Das Unternehmen wurde in Zusammenhang mit %s angelegt." | ||
140 | + | ||
141 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:117 | ||
142 | +msgid "Contract created." | ||
143 | +msgstr "Vertrag erstellt." | ||
144 | + | ||
145 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:120 | ||
146 | +msgid "Contract created but some products could not be added." | ||
147 | +msgstr "" | ||
148 | +"Der Vertrag wurde erstellt, aber einige Produkte konnten nicht hinzugefügt " | ||
149 | +"werden." | ||
150 | + | ||
151 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:131 | ||
152 | +msgid "Contract doesn't exists! Maybe it was already removed." | ||
153 | +msgstr "Der Vertrag existiert nicht! Vielleicht wurde er bereits entfernt." | ||
154 | + | ||
155 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:140 | ||
156 | +msgid "Could not edit such contract." | ||
157 | +msgstr "Kann den Vertrag nicht verändern." | ||
158 | + | ||
159 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:170 | ||
160 | +msgid "Contract edited." | ||
161 | +msgstr "Vertrag geändert." | ||
162 | + | ||
163 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:173 | ||
164 | +msgid "Contract edited but some products could not be added." | ||
165 | +msgstr "" | ||
166 | +"Vertrag geändert, aber einige Produkte konnten nicht hinzugefügt werden." | ||
167 | + | ||
168 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:183 | ||
169 | +msgid "Contract removed." | ||
170 | +msgstr "Vertrag entfernt." | ||
171 | + | ||
172 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:185 | ||
173 | +msgid "Contract could not be removed. Sorry! ^^" | ||
174 | +msgstr "Vertrag konnte nicht entfernt werden. Entschuldigung! ^^" | ||
175 | + | ||
176 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:11 | ||
177 | +msgid "Your Bsc was created." | ||
178 | +msgstr "Ihr Bsc wurde erstellt." | ||
179 | + | ||
180 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:21 | ||
181 | +msgid "Enterprises validated." | ||
182 | +msgstr "Unternehmen validiert." | ||
183 | + | ||
184 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:24 | ||
185 | +msgid "Enterprise validations couldn't be saved." | ||
186 | +msgstr "Die Unternehmensvalidierungen konnten nicht gespeichert werden." | ||
187 | + | ||
188 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:4 | ||
189 | +msgid "Associations awaiting approval:" | ||
190 | +msgstr "Assoziierungen, welche noch bestätigt werden müssen:" | ||
191 | + | ||
192 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:16 | ||
193 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:5 | ||
194 | +msgid "Type in a search term for enterprise" | ||
195 | +msgstr "Geben Sie einen Suchbegriff für Unternehmen ein" | ||
196 | + | ||
197 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:19 | ||
198 | +msgid "Add new enterprise" | ||
199 | +msgstr "Neues Unternehmen hinzufügen" | ||
200 | + | ||
201 | +#: plugins/bsc/views/bsc_plugin_myprofile/new_contract.html.erb:1 | ||
202 | +#: plugins/bsc/views/bsc_plugin_myprofile/edit_contract.html.erb:1 | ||
203 | +msgid "New contract" | ||
204 | +msgstr "Neuer Vertrag" | ||
205 | + | ||
206 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:6 | ||
207 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:7 | ||
208 | +msgid "Client type" | ||
209 | +msgstr "Typ des Kunden" | ||
210 | + | ||
211 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:7 | ||
212 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:8 | ||
213 | +msgid "Business type" | ||
214 | +msgstr "Typ des Geschäfts" | ||
215 | + | ||
216 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:10 | ||
217 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:11 | ||
218 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:5 | ||
219 | +msgid "Status" | ||
220 | +msgstr "Status" | ||
221 | + | ||
222 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:18 | ||
223 | +msgid "Type in search term for enterprise" | ||
224 | +msgstr "Geben Sie den Suchbegriff für das Unternehmen ein" | ||
225 | + | ||
226 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:23 | ||
227 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:27 | ||
228 | +msgid "Quantity" | ||
229 | +msgstr "Anzahl" | ||
230 | + | ||
231 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:24 | ||
232 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:28 | ||
233 | +msgid "Unit price" | ||
234 | +msgstr "Stückpreis" | ||
235 | + | ||
236 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:27 | ||
237 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:38 | ||
238 | +msgid "Total" | ||
239 | +msgstr "Gesamt" | ||
240 | + | ||
241 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:31 | ||
242 | +msgid "Add new product" | ||
243 | +msgstr "Neues Produkt hinzufügen" | ||
244 | + | ||
245 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:35 | ||
246 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:13 | ||
247 | +msgid "Supply period" | ||
248 | +msgstr "Zulieferungszeitabschnitt" | ||
249 | + | ||
250 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:57 | ||
251 | +msgid "Type in a search term for product" | ||
252 | +msgstr "Geben Sie einen Suchbegriff für das Produkt ein" | ||
253 | + | ||
254 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:5 | ||
255 | +#: plugins/bsc/views/shared/_fields.html.erb:5 | ||
256 | +msgid "Basic information" | ||
257 | +msgstr "Basisinformationen" | ||
258 | + | ||
259 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:12 | ||
260 | +msgid "Number of producers" | ||
261 | +msgstr "Anzahl der Produzenten" | ||
262 | + | ||
263 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:48 | ||
264 | +msgid "Annotations" | ||
265 | +msgstr "Anmerkungen" | ||
266 | + | ||
267 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:17 | ||
268 | +msgid "Sort by" | ||
269 | +msgstr "Sortieren nach" | ||
270 | + | ||
271 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
272 | +msgid "Date(newest first)" | ||
273 | +msgstr "Datum (neueste zuerst)" | ||
274 | + | ||
275 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
276 | +msgid "Date(oldest first)" | ||
277 | +msgstr "Datum (älteste zuerst)" | ||
278 | + | ||
279 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
280 | +msgid "Client name(A-Z)" | ||
281 | +msgstr "Kundenname (A-Z)" | ||
282 | + | ||
283 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
284 | +msgid "Client name(Z-A)" | ||
285 | +msgstr "Kundenname (Z-A)" | ||
286 | + | ||
287 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:24 | ||
288 | +msgid "There are no contracts at all." | ||
289 | +msgstr "Sie haben noch keine Verträge." | ||
290 | + | ||
291 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35 | ||
292 | +msgid "Are you sure?" | ||
293 | +msgstr "Sind Sie sicher?" | ||
294 | + | ||
295 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:45 | ||
296 | +msgid "Create new contract" | ||
297 | +msgstr "Einen neuen Vertrag erstellen" | ||
298 | + | ||
299 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:2 | ||
300 | +msgid "Existing enterprises:" | ||
301 | +msgstr "Existierende Unternehmen:" | ||
302 | + | ||
303 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:3 | ||
304 | +msgid "" | ||
305 | +"Were found %{count} enterprises with similar names on the same city, you can " | ||
306 | +"decide to associate one of them or create the new enterprise confirming the " | ||
307 | +"informations you typed in." | ||
308 | +msgstr "" | ||
309 | +"Wir haben %{count} Firmen mit ähnlichen Namen in der gleichen Stadt " | ||
310 | +"gefunden. Sie können sich mit einer von diesen assoziieren oder eine neue " | ||
311 | +"Firma unter Bestätigung der von Ihnen getätigten Angaben gründen." | ||
312 | + | ||
313 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:20 | ||
314 | +msgid "Associate" | ||
315 | +msgstr "Verknüpfen" | ||
316 | + | ||
317 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:1 | ||
318 | +msgid "Transfer Ownership" | ||
319 | +msgstr "Eigentümerschaft übertragen" | ||
320 | + | ||
321 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:4 | ||
322 | +msgid "" | ||
323 | +"This option allows you to transfer this enterprise's management to another " | ||
324 | +"user. This action will remove all the current administrators. Be careful " | ||
325 | +"when confirming this procedure." | ||
326 | +msgstr "" | ||
327 | +"Diese Option erlaubt Ihnen, die Verwaltung dieses Unternehmens an einen " | ||
328 | +"anderen Benutzer zu übertragen. Diese Aktion wird alle derzeitigen " | ||
329 | +"Administratoren entfernen. Seien Sie vorsichtig, bevor Sie diese Prozedur " | ||
330 | +"ausführen." | ||
331 | + | ||
332 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:8 | ||
333 | +msgid "Current administrators:" | ||
334 | +msgstr "Aktuelle Administratoren:" | ||
335 | + | ||
336 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:19 | ||
337 | +msgid "Administrator:" | ||
338 | +msgstr "Administrator:" | ||
339 | + | ||
340 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:22 | ||
341 | +msgid "Type in a search term for the new administrator" | ||
342 | +msgstr "Geben Sie einen Suchbegriff für den neuen Administrator ein" | ||
343 | + | ||
344 | +#: plugins/bsc/views/shared/_fields.html.erb:39 | ||
345 | +msgid "" | ||
346 | +"You are about to change the address, and this will break external links to " | ||
347 | +"this bsc or to posts inside it. Do you really want to change?" | ||
348 | +msgstr "" | ||
349 | +"Sie sind dabei die Adresse zu ändern. Das unterbricht externe Verweise zum " | ||
350 | +"Bsc und zu deren Inhalten. Wollen Sie wirklich die Adresse ändern?" | ||
351 | + | ||
352 | +#: plugins/bsc/views/bsc_plugin/mailer/admin_notification.html.erb:1 | ||
353 | +msgid "The management of %{bsc} was transferred to you." | ||
354 | +msgstr "Die Verwaltung des %{bsc} wurde zu Ihnen transferiert." | ||
355 | + | ||
356 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:2 | ||
357 | +msgid "Contact phone: " | ||
358 | +msgstr "Kontakttelefonnummer: " | ||
359 | + | ||
360 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:3 | ||
361 | +msgid "Email: " | ||
362 | +msgstr "E-Mail: " | ||
363 | + | ||
364 | +#: plugins/bsc/views/bsc_plugin_admin/new.html.erb:2 | ||
365 | +msgid "BSC registration" | ||
366 | +msgstr "BSC-Registrierung" | ||
367 | + | ||
368 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:1 | ||
369 | +msgid "Validate enterprises" | ||
370 | +msgstr "Unternehmen validieren" |
@@ -0,0 +1,364 @@ | @@ -0,0 +1,364 @@ | ||
1 | +# SOME DESCRIPTIVE TITLE. | ||
2 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
3 | +# This file is distributed under the same license as the PACKAGE package. | ||
4 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
5 | +# | ||
6 | +msgid "" | ||
7 | +msgstr "" | ||
8 | +"Project-Id-Version: 1.0\n" | ||
9 | +"POT-Creation-Date: 2015-02-02 21:43-0300\n" | ||
10 | +"PO-Revision-Date: 2014-11-03 15:52+0200\n" | ||
11 | +"Last-Translator: Michal Čihař <michal@cihar.com>\n" | ||
12 | +"Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/" | ||
13 | +"noosfero/es/>\n" | ||
14 | +"Language: es\n" | ||
15 | +"MIME-Version: 1.0\n" | ||
16 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
17 | +"Content-Transfer-Encoding: 8bit\n" | ||
18 | +"Plural-Forms: nplurals=2; plural=n != 1;\n" | ||
19 | +"X-Generator: Weblate 2.0-dev\n" | ||
20 | + | ||
21 | +#: plugins/bsc/lib/bsc_plugin.rb:10 | ||
22 | +msgid "Adds the Bsc feature" | ||
23 | +msgstr "Añade la característica Bsc" | ||
24 | + | ||
25 | +#: plugins/bsc/lib/bsc_plugin.rb:14 | ||
26 | +msgid "Create Bsc" | ||
27 | +msgstr "Crear Bsc" | ||
28 | + | ||
29 | +#: plugins/bsc/lib/bsc_plugin.rb:15 | ||
30 | +msgid "Validate Enterprises" | ||
31 | +msgstr "Validar empresas" | ||
32 | + | ||
33 | +#: plugins/bsc/lib/bsc_plugin.rb:20 | ||
34 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:1 | ||
35 | +msgid "Manage associated enterprises" | ||
36 | +msgstr "Administrar empresas asociadas" | ||
37 | + | ||
38 | +#: plugins/bsc/lib/bsc_plugin.rb:21 plugins/bsc/lib/bsc_plugin.rb:27 | ||
39 | +msgid "Transfer ownership" | ||
40 | +msgstr "Transferir propiedad" | ||
41 | + | ||
42 | +#: plugins/bsc/lib/bsc_plugin.rb:22 | ||
43 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:1 | ||
44 | +msgid "Manage contracts" | ||
45 | +msgstr "Administrar contratos" | ||
46 | + | ||
47 | +#: plugins/bsc/lib/bsc_plugin.rb:98 | ||
48 | +msgid "Bsc" | ||
49 | +msgstr "Bsc" | ||
50 | + | ||
51 | +#: plugins/bsc/lib/bsc_plugin.rb:109 | ||
52 | +#: plugins/bsc/views/shared/_fields.html.erb:53 | ||
53 | +msgid "Contact" | ||
54 | +msgstr "Contacto" | ||
55 | + | ||
56 | +#: plugins/bsc/lib/bsc_plugin/bsc.rb:28 | ||
57 | +msgid "Bsc info and settings" | ||
58 | +msgstr "Información y configuración de Bsc" | ||
59 | + | ||
60 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:10 | ||
61 | +msgid "BSC association" | ||
62 | +msgstr "Asociación BSC" | ||
63 | + | ||
64 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:18 | ||
65 | +msgid "%{requestor} wants to associate this enterprise with %{linked_subject}." | ||
66 | +msgstr "%{requestor} quiere asociar esta empresa con %{linked_subject}." | ||
67 | + | ||
68 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:35 | ||
69 | +msgid "%{enterprise} accepted your request to associate it with %{bsc}." | ||
70 | +msgstr "%{enterprrise} aceptó tu solicitud para asociarse con %{bsc}." | ||
71 | + | ||
72 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:39 | ||
73 | +msgid "%{enterprise} rejected your request to associate it with %{bsc}." | ||
74 | +msgstr "%{enterprise} rechazó tu solicitud para asociarse con %{bsc}." | ||
75 | + | ||
76 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:41 | ||
77 | +msgid "" | ||
78 | +"Here is the reject explanation left by the administrator:\n" | ||
79 | +"\n" | ||
80 | +"%{reject_explanation}" | ||
81 | +msgstr "" | ||
82 | +"Aquí está la explicación del rechazo dejada por el administrador:\n" | ||
83 | +"\n" | ||
84 | +"%{reject_explanation}" | ||
85 | + | ||
86 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:46 | ||
87 | +msgid "%{requestor} wants assoaciate %{bsc} as your BSC." | ||
88 | +msgstr "%{requestor} quire asociar %{bsc} como tu BSC." | ||
89 | + | ||
90 | +#: plugins/bsc/lib/bsc_plugin/mailer.rb:7 | ||
91 | +msgid "[%s] Bsc management transferred to you." | ||
92 | +msgstr "[%s] administración de bsc transferida a ti" | ||
93 | + | ||
94 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
95 | +msgid "Opened" | ||
96 | +msgstr "Abierto" | ||
97 | + | ||
98 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
99 | +msgid "Negotiating" | ||
100 | +msgstr "Negociando" | ||
101 | + | ||
102 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
103 | +msgid "Executing" | ||
104 | +msgstr "Ejecutando" | ||
105 | + | ||
106 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
107 | +msgid "Closed" | ||
108 | +msgstr "Cerrado" | ||
109 | + | ||
110 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:46 | ||
111 | +msgid "Federal" | ||
112 | +msgstr "Federal" | ||
113 | + | ||
114 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
115 | +msgid "ProjectA" | ||
116 | +msgstr "Proyecto A" | ||
117 | + | ||
118 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
119 | +msgid "ProjectB" | ||
120 | +msgstr "Proyecto B" | ||
121 | + | ||
122 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:38 | ||
123 | +msgid "This Bsc associations were saved successfully." | ||
124 | +msgstr "Estas asociaciones Bsc fueron guardadas correctamente." | ||
125 | + | ||
126 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:42 | ||
127 | +msgid "This Bsc associations couldn't be saved." | ||
128 | +msgstr "Estas asociaciones Bsc no pudieron ser guardadas." | ||
129 | + | ||
130 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:71 | ||
131 | +msgid "Enterprise ownership transferred." | ||
132 | +msgstr "Propiedad de la empresa transferida." | ||
133 | + | ||
134 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:85 | ||
135 | +msgid "Enterprise was created in association with %s." | ||
136 | +msgstr "La empresa fue creada en asociación con %s." | ||
137 | + | ||
138 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:117 | ||
139 | +msgid "Contract created." | ||
140 | +msgstr "Contrato creado." | ||
141 | + | ||
142 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:120 | ||
143 | +msgid "Contract created but some products could not be added." | ||
144 | +msgstr "Contrato creado pero algunos productos no pudieron agregarse." | ||
145 | + | ||
146 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:131 | ||
147 | +msgid "Contract doesn't exists! Maybe it was already removed." | ||
148 | +msgstr "¡El contrato no existe! Quizás ya fue eliminado." | ||
149 | + | ||
150 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:140 | ||
151 | +msgid "Could not edit such contract." | ||
152 | +msgstr "No se puede editar tal contrato." | ||
153 | + | ||
154 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:170 | ||
155 | +msgid "Contract edited." | ||
156 | +msgstr "contrato editado." | ||
157 | + | ||
158 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:173 | ||
159 | +msgid "Contract edited but some products could not be added." | ||
160 | +msgstr "Contrato editado pero algunos productos no pueden ser agregados." | ||
161 | + | ||
162 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:183 | ||
163 | +msgid "Contract removed." | ||
164 | +msgstr "Contrato eliminado." | ||
165 | + | ||
166 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:185 | ||
167 | +msgid "Contract could not be removed. Sorry! ^^" | ||
168 | +msgstr "El contrato no puede ser eliminado. ¡Perdón! ^^" | ||
169 | + | ||
170 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:11 | ||
171 | +msgid "Your Bsc was created." | ||
172 | +msgstr "Tu Bsc fue creado." | ||
173 | + | ||
174 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:21 | ||
175 | +msgid "Enterprises validated." | ||
176 | +msgstr "Empresas validadas." | ||
177 | + | ||
178 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:24 | ||
179 | +msgid "Enterprise validations couldn't be saved." | ||
180 | +msgstr "Las validaciones de la empresa no pudieron guardarse." | ||
181 | + | ||
182 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:4 | ||
183 | +msgid "Associations awaiting approval:" | ||
184 | +msgstr "Asociaciones de espera de aprobación:" | ||
185 | + | ||
186 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:16 | ||
187 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:5 | ||
188 | +msgid "Type in a search term for enterprise" | ||
189 | +msgstr "Ingresa un término de búsqueda para la empresa" | ||
190 | + | ||
191 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:19 | ||
192 | +msgid "Add new enterprise" | ||
193 | +msgstr "Añadir nueva empresa" | ||
194 | + | ||
195 | +#: plugins/bsc/views/bsc_plugin_myprofile/new_contract.html.erb:1 | ||
196 | +#: plugins/bsc/views/bsc_plugin_myprofile/edit_contract.html.erb:1 | ||
197 | +msgid "New contract" | ||
198 | +msgstr "Nuevo contrato" | ||
199 | + | ||
200 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:6 | ||
201 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:7 | ||
202 | +msgid "Client type" | ||
203 | +msgstr "Tipo de cliente" | ||
204 | + | ||
205 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:7 | ||
206 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:8 | ||
207 | +msgid "Business type" | ||
208 | +msgstr "Tipo de negocio" | ||
209 | + | ||
210 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:10 | ||
211 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:11 | ||
212 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:5 | ||
213 | +msgid "Status" | ||
214 | +msgstr "Estado" | ||
215 | + | ||
216 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:18 | ||
217 | +msgid "Type in search term for enterprise" | ||
218 | +msgstr "Ingresa un término de búsqueda para la empresa" | ||
219 | + | ||
220 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:23 | ||
221 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:27 | ||
222 | +msgid "Quantity" | ||
223 | +msgstr "Cantidad" | ||
224 | + | ||
225 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:24 | ||
226 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:28 | ||
227 | +msgid "Unit price" | ||
228 | +msgstr "Precio unitario" | ||
229 | + | ||
230 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:27 | ||
231 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:38 | ||
232 | +msgid "Total" | ||
233 | +msgstr "Total" | ||
234 | + | ||
235 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:31 | ||
236 | +msgid "Add new product" | ||
237 | +msgstr "Añadir nuevo producto" | ||
238 | + | ||
239 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:35 | ||
240 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:13 | ||
241 | +msgid "Supply period" | ||
242 | +msgstr "Período de suministro" | ||
243 | + | ||
244 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:57 | ||
245 | +msgid "Type in a search term for product" | ||
246 | +msgstr "Ingresa un término de búsqueda para el producto" | ||
247 | + | ||
248 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:5 | ||
249 | +#: plugins/bsc/views/shared/_fields.html.erb:5 | ||
250 | +msgid "Basic information" | ||
251 | +msgstr "Información básica" | ||
252 | + | ||
253 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:12 | ||
254 | +msgid "Number of producers" | ||
255 | +msgstr "Número de productores" | ||
256 | + | ||
257 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:48 | ||
258 | +msgid "Annotations" | ||
259 | +msgstr "Anotaciones" | ||
260 | + | ||
261 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:17 | ||
262 | +msgid "Sort by" | ||
263 | +msgstr "Ordenar por" | ||
264 | + | ||
265 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
266 | +msgid "Date(newest first)" | ||
267 | +msgstr "Fecha (más reciente primero)" | ||
268 | + | ||
269 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
270 | +msgid "Date(oldest first)" | ||
271 | +msgstr "Fecha (más antiguo primero)" | ||
272 | + | ||
273 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
274 | +msgid "Client name(A-Z)" | ||
275 | +msgstr "Nombre del cliente (A-Z)" | ||
276 | + | ||
277 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
278 | +msgid "Client name(Z-A)" | ||
279 | +msgstr "Nombre del cliente (Z-A)" | ||
280 | + | ||
281 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:24 | ||
282 | +msgid "There are no contracts at all." | ||
283 | +msgstr "No hay ningún contrato." | ||
284 | + | ||
285 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35 | ||
286 | +msgid "Are you sure?" | ||
287 | +msgstr "¿Estás seguro?" | ||
288 | + | ||
289 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:45 | ||
290 | +msgid "Create new contract" | ||
291 | +msgstr "Crear nuevo contrato" | ||
292 | + | ||
293 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:2 | ||
294 | +msgid "Existing enterprises:" | ||
295 | +msgstr "Empresas existentes:" | ||
296 | + | ||
297 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:3 | ||
298 | +msgid "" | ||
299 | +"Were found %{count} enterprises with similar names on the same city, you can " | ||
300 | +"decide to associate one of them or create the new enterprise confirming the " | ||
301 | +"informations you typed in." | ||
302 | +msgstr "" | ||
303 | +"Fueron encontrados %{count} empresas con nombres similares en la misma " | ||
304 | +"ciudad, puedes decidir asociar una de ellos o crear la nueva empresa " | ||
305 | +"confirmando la información que escribiste." | ||
306 | + | ||
307 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:20 | ||
308 | +msgid "Associate" | ||
309 | +msgstr "Asociar" | ||
310 | + | ||
311 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:1 | ||
312 | +msgid "Transfer Ownership" | ||
313 | +msgstr "Transferir propiedad" | ||
314 | + | ||
315 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:4 | ||
316 | +msgid "" | ||
317 | +"This option allows you to transfer this enterprise's management to another " | ||
318 | +"user. This action will remove all the current administrators. Be careful " | ||
319 | +"when confirming this procedure." | ||
320 | +msgstr "" | ||
321 | +"Esta opción te permite transferir la administración de esta empresa a otro " | ||
322 | +"usuario. Esta acción eliminará a todos los administradores actuales. Ten " | ||
323 | +"cuidado cuando confirmes este proceso." | ||
324 | + | ||
325 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:8 | ||
326 | +msgid "Current administrators:" | ||
327 | +msgstr "Administradores actuales:" | ||
328 | + | ||
329 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:19 | ||
330 | +msgid "Administrator:" | ||
331 | +msgstr "Administrador:" | ||
332 | + | ||
333 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:22 | ||
334 | +msgid "Type in a search term for the new administrator" | ||
335 | +msgstr "Ingresa un término de búsqueda para el nuevo administrador" | ||
336 | + | ||
337 | +#: plugins/bsc/views/shared/_fields.html.erb:39 | ||
338 | +msgid "" | ||
339 | +"You are about to change the address, and this will break external links to " | ||
340 | +"this bsc or to posts inside it. Do you really want to change?" | ||
341 | +msgstr "" | ||
342 | +"Estás a punto de cambiar la dirección, y esto romperá los enlaces externos a " | ||
343 | +"este bsc o a las publicaciones su interior. ¿Estás seguro que quieres " | ||
344 | +"cambiarla?" | ||
345 | + | ||
346 | +#: plugins/bsc/views/bsc_plugin/mailer/admin_notification.html.erb:1 | ||
347 | +msgid "The management of %{bsc} was transferred to you." | ||
348 | +msgstr "La administración de %{bsc} te fue transferido." | ||
349 | + | ||
350 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:2 | ||
351 | +msgid "Contact phone: " | ||
352 | +msgstr "Teléfono de contacto: " | ||
353 | + | ||
354 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:3 | ||
355 | +msgid "Email: " | ||
356 | +msgstr "Correo electrónico: " | ||
357 | + | ||
358 | +#: plugins/bsc/views/bsc_plugin_admin/new.html.erb:2 | ||
359 | +msgid "BSC registration" | ||
360 | +msgstr "Registro de BSC" | ||
361 | + | ||
362 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:1 | ||
363 | +msgid "Validate enterprises" | ||
364 | +msgstr "Validar empresas" |
@@ -0,0 +1,412 @@ | @@ -0,0 +1,412 @@ | ||
1 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
2 | +# This file is distributed under the same license as the PACKAGE package. | ||
3 | +# | ||
4 | +# , 2009. | ||
5 | +msgid "" | ||
6 | +msgstr "" | ||
7 | +"Project-Id-Version: 1.0\n" | ||
8 | +"Report-Msgid-Bugs-To: \n" | ||
9 | +"POT-Creation-Date: 2015-02-02 21:43-0300\n" | ||
10 | +"PO-Revision-Date: 2014-12-12 14:22+0200\n" | ||
11 | +"Last-Translator: Michal Čihař <michal@cihar.com>\n" | ||
12 | +"Language-Team: French <https://hosted.weblate.org/projects/noosfero/noosfero/" | ||
13 | +"fr/>\n" | ||
14 | +"Language: fr\n" | ||
15 | +"MIME-Version: 1.0\n" | ||
16 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
17 | +"Content-Transfer-Encoding: 8bit\n" | ||
18 | +"Plural-Forms: nplurals=2; plural=n > 1;\n" | ||
19 | +"X-Generator: Weblate 2.2-dev\n" | ||
20 | + | ||
21 | +#: plugins/bsc/lib/bsc_plugin.rb:10 | ||
22 | +#, fuzzy | ||
23 | +msgid "Adds the Bsc feature" | ||
24 | +msgstr "Autres fonctionnalités" | ||
25 | + | ||
26 | +#: plugins/bsc/lib/bsc_plugin.rb:14 | ||
27 | +#, fuzzy | ||
28 | +msgid "Create Bsc" | ||
29 | +msgstr "Créer" | ||
30 | + | ||
31 | +#: plugins/bsc/lib/bsc_plugin.rb:15 | ||
32 | +#, fuzzy | ||
33 | +msgid "Validate Enterprises" | ||
34 | +msgstr "Valider l'entreprise" | ||
35 | + | ||
36 | +#: plugins/bsc/lib/bsc_plugin.rb:20 | ||
37 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:1 | ||
38 | +#, fuzzy | ||
39 | +msgid "Manage associated enterprises" | ||
40 | +msgstr "Gérer les entreprises" | ||
41 | + | ||
42 | +#: plugins/bsc/lib/bsc_plugin.rb:21 plugins/bsc/lib/bsc_plugin.rb:27 | ||
43 | +msgid "Transfer ownership" | ||
44 | +msgstr "" | ||
45 | + | ||
46 | +#: plugins/bsc/lib/bsc_plugin.rb:22 | ||
47 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:1 | ||
48 | +#, fuzzy | ||
49 | +msgid "Manage contracts" | ||
50 | +msgstr "Gérer les contacts." | ||
51 | + | ||
52 | +#: plugins/bsc/lib/bsc_plugin.rb:98 | ||
53 | +msgid "Bsc" | ||
54 | +msgstr "" | ||
55 | + | ||
56 | +#: plugins/bsc/lib/bsc_plugin.rb:109 | ||
57 | +#: plugins/bsc/views/shared/_fields.html.erb:53 | ||
58 | +msgid "Contact" | ||
59 | +msgstr "Contact " | ||
60 | + | ||
61 | +#: plugins/bsc/lib/bsc_plugin/bsc.rb:28 | ||
62 | +#, fuzzy | ||
63 | +msgid "Bsc info and settings" | ||
64 | +msgstr "Informations et paramètres" | ||
65 | + | ||
66 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:10 | ||
67 | +#, fuzzy | ||
68 | +msgid "BSC association" | ||
69 | +msgstr "Informations de contact" | ||
70 | + | ||
71 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:18 | ||
72 | +#, fuzzy | ||
73 | +msgid "%{requestor} wants to associate this enterprise with %{linked_subject}." | ||
74 | +msgstr "L'utilisateur «%{user}» veut activer l'adresse «%{email}»" | ||
75 | + | ||
76 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:35 | ||
77 | +msgid "%{enterprise} accepted your request to associate it with %{bsc}." | ||
78 | +msgstr "" | ||
79 | + | ||
80 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:39 | ||
81 | +msgid "%{enterprise} rejected your request to associate it with %{bsc}." | ||
82 | +msgstr "" | ||
83 | + | ||
84 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:41 | ||
85 | +msgid "" | ||
86 | +"Here is the reject explanation left by the administrator:\n" | ||
87 | +"\n" | ||
88 | +"%{reject_explanation}" | ||
89 | +msgstr "" | ||
90 | + | ||
91 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:46 | ||
92 | +#, fuzzy | ||
93 | +msgid "%{requestor} wants assoaciate %{bsc} as your BSC." | ||
94 | +msgstr "%s veut être votre contact." | ||
95 | + | ||
96 | +#: plugins/bsc/lib/bsc_plugin/mailer.rb:7 | ||
97 | +msgid "[%s] Bsc management transferred to you." | ||
98 | +msgstr "" | ||
99 | + | ||
100 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
101 | +#, fuzzy | ||
102 | +msgid "Opened" | ||
103 | +msgstr "ouvrir" | ||
104 | + | ||
105 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
106 | +#, fuzzy | ||
107 | +msgid "Negotiating" | ||
108 | +msgstr "Paramètres" | ||
109 | + | ||
110 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
111 | +#, fuzzy | ||
112 | +msgid "Executing" | ||
113 | +msgstr "Édition" | ||
114 | + | ||
115 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
116 | +#, fuzzy | ||
117 | +msgid "Closed" | ||
118 | +msgstr "Fermer" | ||
119 | + | ||
120 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:46 | ||
121 | +#, fuzzy | ||
122 | +msgid "Federal" | ||
123 | +msgstr "Tâche générique" | ||
124 | + | ||
125 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
126 | +#, fuzzy | ||
127 | +msgid "ProjectA" | ||
128 | +msgstr "Produit" | ||
129 | + | ||
130 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
131 | +#, fuzzy | ||
132 | +msgid "ProjectB" | ||
133 | +msgstr "Produit" | ||
134 | + | ||
135 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:38 | ||
136 | +#, fuzzy | ||
137 | +msgid "This Bsc associations were saved successfully." | ||
138 | +msgstr "Fonctionnalités mises à jour avec succès." | ||
139 | + | ||
140 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:42 | ||
141 | +#, fuzzy | ||
142 | +msgid "This Bsc associations couldn't be saved." | ||
143 | +msgstr "Ce fichier n'a pas pu être sauvegardé" | ||
144 | + | ||
145 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:71 | ||
146 | +#, fuzzy | ||
147 | +msgid "Enterprise ownership transferred." | ||
148 | +msgstr "Page d'accueil de l'entreprise" | ||
149 | + | ||
150 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:85 | ||
151 | +#, fuzzy | ||
152 | +msgid "Enterprise was created in association with %s." | ||
153 | +msgstr "Enregistrement de l'enterprise : \"%s\"" | ||
154 | + | ||
155 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:117 | ||
156 | +#, fuzzy | ||
157 | +msgid "Contract created." | ||
158 | +msgstr "Adresse électronique de contact" | ||
159 | + | ||
160 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:120 | ||
161 | +msgid "Contract created but some products could not be added." | ||
162 | +msgstr "" | ||
163 | + | ||
164 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:131 | ||
165 | +msgid "Contract doesn't exists! Maybe it was already removed." | ||
166 | +msgstr "" | ||
167 | + | ||
168 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:140 | ||
169 | +#, fuzzy | ||
170 | +msgid "Could not edit such contract." | ||
171 | +msgstr "Impossible de mettre à jour le produit" | ||
172 | + | ||
173 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:170 | ||
174 | +#, fuzzy | ||
175 | +msgid "Contract edited." | ||
176 | +msgstr "Adresse électronique de contact" | ||
177 | + | ||
178 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:173 | ||
179 | +#, fuzzy | ||
180 | +msgid "Contract edited but some products could not be added." | ||
181 | +msgstr "Bloc d'information de profil" | ||
182 | + | ||
183 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:183 | ||
184 | +#, fuzzy | ||
185 | +msgid "Contract removed." | ||
186 | +msgstr "Corps de l'article" | ||
187 | + | ||
188 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:185 | ||
189 | +#, fuzzy | ||
190 | +msgid "Contract could not be removed. Sorry! ^^" | ||
191 | +msgstr "Bloc d'information de profil" | ||
192 | + | ||
193 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:11 | ||
194 | +#, fuzzy | ||
195 | +msgid "Your Bsc was created." | ||
196 | +msgstr "Votre adresse e-mail %s vient d'être activée" | ||
197 | + | ||
198 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:21 | ||
199 | +#, fuzzy | ||
200 | +msgid "Enterprises validated." | ||
201 | +msgstr "Validations d'entreprises" | ||
202 | + | ||
203 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:24 | ||
204 | +#, fuzzy | ||
205 | +msgid "Enterprise validations couldn't be saved." | ||
206 | +msgstr "Validations d'entreprises" | ||
207 | + | ||
208 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:4 | ||
209 | +msgid "Associations awaiting approval:" | ||
210 | +msgstr "" | ||
211 | + | ||
212 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:16 | ||
213 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:5 | ||
214 | +#, fuzzy | ||
215 | +msgid "Type in a search term for enterprise" | ||
216 | +msgstr "Désactiver la recherche d'entreprises" | ||
217 | + | ||
218 | +# (second try of this knid of contents) | ||
219 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:19 | ||
220 | +#, fuzzy | ||
221 | +msgid "Add new enterprise" | ||
222 | +msgstr "Une entreprise" | ||
223 | + | ||
224 | +#: plugins/bsc/views/bsc_plugin_myprofile/new_contract.html.erb:1 | ||
225 | +#: plugins/bsc/views/bsc_plugin_myprofile/edit_contract.html.erb:1 | ||
226 | +#, fuzzy | ||
227 | +msgid "New contract" | ||
228 | +msgstr "Tout le contenu" | ||
229 | + | ||
230 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:6 | ||
231 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:7 | ||
232 | +#, fuzzy | ||
233 | +msgid "Client type" | ||
234 | +msgstr "Type de contenu" | ||
235 | + | ||
236 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:7 | ||
237 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:8 | ||
238 | +#, fuzzy | ||
239 | +msgid "Business type" | ||
240 | +msgstr "Nom de fichier" | ||
241 | + | ||
242 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:10 | ||
243 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:11 | ||
244 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:5 | ||
245 | +msgid "Status" | ||
246 | +msgstr "Statut" | ||
247 | + | ||
248 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:18 | ||
249 | +#, fuzzy | ||
250 | +msgid "Type in search term for enterprise" | ||
251 | +msgstr "Désactiver la recherche d'entreprises" | ||
252 | + | ||
253 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:23 | ||
254 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:27 | ||
255 | +#, fuzzy | ||
256 | +msgid "Quantity" | ||
257 | +msgstr "Qualité" | ||
258 | + | ||
259 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:24 | ||
260 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:28 | ||
261 | +#, fuzzy | ||
262 | +msgid "Unit price" | ||
263 | +msgstr "Distance :" | ||
264 | + | ||
265 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:27 | ||
266 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:38 | ||
267 | +#, fuzzy | ||
268 | +msgid "Total" | ||
269 | +msgstr "Pour : " | ||
270 | + | ||
271 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:31 | ||
272 | +#, fuzzy | ||
273 | +msgid "Add new product" | ||
274 | +msgstr "Ajouter un produit" | ||
275 | + | ||
276 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:35 | ||
277 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:13 | ||
278 | +#, fuzzy | ||
279 | +msgid "Supply period" | ||
280 | +msgstr "Fournisseur : %s" | ||
281 | + | ||
282 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:57 | ||
283 | +#, fuzzy | ||
284 | +msgid "Type in a search term for product" | ||
285 | +msgstr "Désactiver la recherche d'entreprises" | ||
286 | + | ||
287 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:5 | ||
288 | +#: plugins/bsc/views/shared/_fields.html.erb:5 | ||
289 | +#, fuzzy | ||
290 | +msgid "Basic information" | ||
291 | +msgstr "Informations de contact" | ||
292 | + | ||
293 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:12 | ||
294 | +#, fuzzy | ||
295 | +msgid "Number of producers" | ||
296 | +msgstr "Pas de produit" | ||
297 | + | ||
298 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:48 | ||
299 | +#, fuzzy | ||
300 | +msgid "Annotations" | ||
301 | +msgstr "Message d'invitation :" | ||
302 | + | ||
303 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:17 | ||
304 | +#, fuzzy | ||
305 | +msgid "Sort by" | ||
306 | +msgstr "Nouveau groupe" | ||
307 | + | ||
308 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
309 | +msgid "Date(newest first)" | ||
310 | +msgstr "" | ||
311 | + | ||
312 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
313 | +msgid "Date(oldest first)" | ||
314 | +msgstr "" | ||
315 | + | ||
316 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
317 | +msgid "Client name(A-Z)" | ||
318 | +msgstr "" | ||
319 | + | ||
320 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
321 | +msgid "Client name(Z-A)" | ||
322 | +msgstr "" | ||
323 | + | ||
324 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:24 | ||
325 | +#, fuzzy | ||
326 | +msgid "There are no contracts at all." | ||
327 | +msgstr "Vous n'avez pas encore de contact." | ||
328 | + | ||
329 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35 | ||
330 | +msgid "Are you sure?" | ||
331 | +msgstr "" | ||
332 | + | ||
333 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:45 | ||
334 | +#, fuzzy | ||
335 | +msgid "Create new contract" | ||
336 | +msgstr "Créer un nouveau groupe" | ||
337 | + | ||
338 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:2 | ||
339 | +#, fuzzy | ||
340 | +msgid "Existing enterprises:" | ||
341 | +msgstr "Éditer l'entreprise" | ||
342 | + | ||
343 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:3 | ||
344 | +msgid "" | ||
345 | +"Were found %{count} enterprises with similar names on the same city, you can " | ||
346 | +"decide to associate one of them or create the new enterprise confirming the " | ||
347 | +"informations you typed in." | ||
348 | +msgstr "" | ||
349 | + | ||
350 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:20 | ||
351 | +#, fuzzy | ||
352 | +msgid "Associate" | ||
353 | +msgstr "Activer" | ||
354 | + | ||
355 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:1 | ||
356 | +msgid "Transfer Ownership" | ||
357 | +msgstr "" | ||
358 | + | ||
359 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:4 | ||
360 | +msgid "" | ||
361 | +"This option allows you to transfer this enterprise's management to another " | ||
362 | +"user. This action will remove all the current administrators. Be careful " | ||
363 | +"when confirming this procedure." | ||
364 | +msgstr "" | ||
365 | + | ||
366 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:8 | ||
367 | +#, fuzzy | ||
368 | +msgid "Current administrators:" | ||
369 | +msgstr "Membres" | ||
370 | + | ||
371 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:19 | ||
372 | +#, fuzzy | ||
373 | +msgid "Administrator:" | ||
374 | +msgstr "Interface d'administration" | ||
375 | + | ||
376 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:22 | ||
377 | +msgid "Type in a search term for the new administrator" | ||
378 | +msgstr "" | ||
379 | + | ||
380 | +#: plugins/bsc/views/shared/_fields.html.erb:39 | ||
381 | +#, fuzzy | ||
382 | +msgid "" | ||
383 | +"You are about to change the address, and this will break external links to " | ||
384 | +"this bsc or to posts inside it. Do you really want to change?" | ||
385 | +msgstr "" | ||
386 | +"Vous êtes sur le point de modifier cette adresse, et cela risque de briser " | ||
387 | +"les liens extérieurs menant à la page d'accueil ou le contenu du site lui-" | ||
388 | +"même. Voulez-vous vraiment la modifier ?" | ||
389 | + | ||
390 | +#: plugins/bsc/views/bsc_plugin/mailer/admin_notification.html.erb:1 | ||
391 | +msgid "The management of %{bsc} was transferred to you." | ||
392 | +msgstr "" | ||
393 | + | ||
394 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:2 | ||
395 | +#, fuzzy | ||
396 | +msgid "Contact phone: " | ||
397 | +msgstr "Téléphone de contact :" | ||
398 | + | ||
399 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:3 | ||
400 | +#, fuzzy | ||
401 | +msgid "Email: " | ||
402 | +msgstr "Courrier électronique : %s" | ||
403 | + | ||
404 | +#: plugins/bsc/views/bsc_plugin_admin/new.html.erb:2 | ||
405 | +#, fuzzy | ||
406 | +msgid "BSC registration" | ||
407 | +msgstr "Enregistrement de l'enterprise : \"%s\"" | ||
408 | + | ||
409 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:1 | ||
410 | +#, fuzzy | ||
411 | +msgid "Validate enterprises" | ||
412 | +msgstr "Valider l'entreprise" |
@@ -0,0 +1,404 @@ | @@ -0,0 +1,404 @@ | ||
1 | +# SOME DESCRIPTIVE TITLE. | ||
2 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
3 | +# This file is distributed under the same license as the PACKAGE package. | ||
4 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
5 | +# | ||
6 | +msgid "" | ||
7 | +msgstr "" | ||
8 | +"Project-Id-Version: 1.0\n" | ||
9 | +"POT-Creation-Date: 2015-02-02 21:43-0300\n" | ||
10 | +"PO-Revision-Date: 2009-10-26 16:20-0300\n" | ||
11 | +"Last-Translator: Anahit Minassian <anahit.minassian@cooperation.net>\n" | ||
12 | +"Language-Team: LANGUAGE <LL@li.org>\n" | ||
13 | +"Language: hy\n" | ||
14 | +"MIME-Version: 1.0\n" | ||
15 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
16 | +"Content-Transfer-Encoding: 8bit\n" | ||
17 | +"Plural-Forms: nplurals=2; plural=(n > 1);\n" | ||
18 | +"X-Generator: Pootle 1.1.0\n" | ||
19 | + | ||
20 | +#: plugins/bsc/lib/bsc_plugin.rb:10 | ||
21 | +#, fuzzy | ||
22 | +msgid "Adds the Bsc feature" | ||
23 | +msgstr "Այլ առանձնահատկություն" | ||
24 | + | ||
25 | +#: plugins/bsc/lib/bsc_plugin.rb:14 | ||
26 | +#, fuzzy | ||
27 | +msgid "Create Bsc" | ||
28 | +msgstr "Ստեղծել" | ||
29 | + | ||
30 | +#: plugins/bsc/lib/bsc_plugin.rb:15 | ||
31 | +#, fuzzy | ||
32 | +msgid "Validate Enterprises" | ||
33 | +msgstr "Վավերացնել ձեռնարկությունը" | ||
34 | + | ||
35 | +#: plugins/bsc/lib/bsc_plugin.rb:20 | ||
36 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:1 | ||
37 | +#, fuzzy | ||
38 | +msgid "Manage associated enterprises" | ||
39 | +msgstr "Մեկ ձեռնարկություն" | ||
40 | + | ||
41 | +#: plugins/bsc/lib/bsc_plugin.rb:21 plugins/bsc/lib/bsc_plugin.rb:27 | ||
42 | +msgid "Transfer ownership" | ||
43 | +msgstr "" | ||
44 | + | ||
45 | +#: plugins/bsc/lib/bsc_plugin.rb:22 | ||
46 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:1 | ||
47 | +#, fuzzy | ||
48 | +msgid "Manage contracts" | ||
49 | +msgstr "Կառավարել բովանդակությունը:" | ||
50 | + | ||
51 | +#: plugins/bsc/lib/bsc_plugin.rb:98 | ||
52 | +msgid "Bsc" | ||
53 | +msgstr "" | ||
54 | + | ||
55 | +#: plugins/bsc/lib/bsc_plugin.rb:109 | ||
56 | +#: plugins/bsc/views/shared/_fields.html.erb:53 | ||
57 | +msgid "Contact" | ||
58 | +msgstr "" | ||
59 | + | ||
60 | +#: plugins/bsc/lib/bsc_plugin/bsc.rb:28 | ||
61 | +#, fuzzy | ||
62 | +msgid "Bsc info and settings" | ||
63 | +msgstr "Անհանատական էջի տվյալների բաժին" | ||
64 | + | ||
65 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:10 | ||
66 | +#, fuzzy | ||
67 | +msgid "BSC association" | ||
68 | +msgstr "Էլ. հասցե" | ||
69 | + | ||
70 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:18 | ||
71 | +#, fuzzy | ||
72 | +msgid "%{requestor} wants to associate this enterprise with %{linked_subject}." | ||
73 | +msgstr "%s-ը ցանկանում է %s-ի անդամ դառնալ:" | ||
74 | + | ||
75 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:35 | ||
76 | +msgid "%{enterprise} accepted your request to associate it with %{bsc}." | ||
77 | +msgstr "" | ||
78 | + | ||
79 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:39 | ||
80 | +msgid "%{enterprise} rejected your request to associate it with %{bsc}." | ||
81 | +msgstr "" | ||
82 | + | ||
83 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:41 | ||
84 | +msgid "" | ||
85 | +"Here is the reject explanation left by the administrator:\n" | ||
86 | +"\n" | ||
87 | +"%{reject_explanation}" | ||
88 | +msgstr "" | ||
89 | + | ||
90 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:46 | ||
91 | +#, fuzzy | ||
92 | +msgid "%{requestor} wants assoaciate %{bsc} as your BSC." | ||
93 | +msgstr "%s ցանկանում է Ձեր ընկերը դառնալ" | ||
94 | + | ||
95 | +#: plugins/bsc/lib/bsc_plugin/mailer.rb:7 | ||
96 | +msgid "[%s] Bsc management transferred to you." | ||
97 | +msgstr "" | ||
98 | + | ||
99 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
100 | +#, fuzzy | ||
101 | +msgid "Opened" | ||
102 | +msgstr "բացել" | ||
103 | + | ||
104 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
105 | +#, fuzzy | ||
106 | +msgid "Negotiating" | ||
107 | +msgstr "Պարամետրեր" | ||
108 | + | ||
109 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
110 | +#, fuzzy | ||
111 | +msgid "Executing" | ||
112 | +msgstr "Փոփոխում" | ||
113 | + | ||
114 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
115 | +#, fuzzy | ||
116 | +msgid "Closed" | ||
117 | +msgstr "Փակել" | ||
118 | + | ||
119 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:46 | ||
120 | +#, fuzzy | ||
121 | +msgid "Federal" | ||
122 | +msgstr "Ընդհանուր առաջադրանք" | ||
123 | + | ||
124 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
125 | +#, fuzzy | ||
126 | +msgid "ProjectA" | ||
127 | +msgstr "Արտադրանք" | ||
128 | + | ||
129 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
130 | +#, fuzzy | ||
131 | +msgid "ProjectB" | ||
132 | +msgstr "Արտադրանք" | ||
133 | + | ||
134 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:38 | ||
135 | +#, fuzzy | ||
136 | +msgid "This Bsc associations were saved successfully." | ||
137 | +msgstr "Առանձնահատկությունները հաջողությամբ թարմացված են:" | ||
138 | + | ||
139 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:42 | ||
140 | +#, fuzzy | ||
141 | +msgid "This Bsc associations couldn't be saved." | ||
142 | +msgstr "Անհանատական էջի տվյալների բաժին" | ||
143 | + | ||
144 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:71 | ||
145 | +#, fuzzy | ||
146 | +msgid "Enterprise ownership transferred." | ||
147 | +msgstr "Ձեռնարկության գլխավոր էջ" | ||
148 | + | ||
149 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:85 | ||
150 | +#, fuzzy | ||
151 | +msgid "Enterprise was created in association with %s." | ||
152 | +msgstr "Ձեռնարկության գրանցում «%s»" | ||
153 | + | ||
154 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:117 | ||
155 | +#, fuzzy | ||
156 | +msgid "Contract created." | ||
157 | +msgstr "էլ. հասցե" | ||
158 | + | ||
159 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:120 | ||
160 | +msgid "Contract created but some products could not be added." | ||
161 | +msgstr "" | ||
162 | + | ||
163 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:131 | ||
164 | +msgid "Contract doesn't exists! Maybe it was already removed." | ||
165 | +msgstr "" | ||
166 | + | ||
167 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:140 | ||
168 | +#, fuzzy | ||
169 | +msgid "Could not edit such contract." | ||
170 | +msgstr "Արտադրանք թարմացնելն անհնար է" | ||
171 | + | ||
172 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:170 | ||
173 | +#, fuzzy | ||
174 | +msgid "Contract edited." | ||
175 | +msgstr "էլ. հասցե" | ||
176 | + | ||
177 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:173 | ||
178 | +#, fuzzy | ||
179 | +msgid "Contract edited but some products could not be added." | ||
180 | +msgstr "Անհանատական էջի տվյալների բաժին" | ||
181 | + | ||
182 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:183 | ||
183 | +#, fuzzy | ||
184 | +msgid "Contract removed." | ||
185 | +msgstr "Բուն հոդված" | ||
186 | + | ||
187 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:185 | ||
188 | +#, fuzzy | ||
189 | +msgid "Contract could not be removed. Sorry! ^^" | ||
190 | +msgstr "Անհանատական էջի տվյալների բաժին" | ||
191 | + | ||
192 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:11 | ||
193 | +#, fuzzy | ||
194 | +msgid "Your Bsc was created." | ||
195 | +msgstr "%s վերացված է" | ||
196 | + | ||
197 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:21 | ||
198 | +#, fuzzy | ||
199 | +msgid "Enterprises validated." | ||
200 | +msgstr "Ձեռնարկությունների վավերացում" | ||
201 | + | ||
202 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:24 | ||
203 | +#, fuzzy | ||
204 | +msgid "Enterprise validations couldn't be saved." | ||
205 | +msgstr "Ձեռնարկությունների վավերացում" | ||
206 | + | ||
207 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:4 | ||
208 | +msgid "Associations awaiting approval:" | ||
209 | +msgstr "" | ||
210 | + | ||
211 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:16 | ||
212 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:5 | ||
213 | +#, fuzzy | ||
214 | +msgid "Type in a search term for enterprise" | ||
215 | +msgstr "Դիզակտիվացնել ձեռնարկությունների որոնումը" | ||
216 | + | ||
217 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:19 | ||
218 | +#, fuzzy | ||
219 | +msgid "Add new enterprise" | ||
220 | +msgstr "Մեկ ձեռնարկություն" | ||
221 | + | ||
222 | +#: plugins/bsc/views/bsc_plugin_myprofile/new_contract.html.erb:1 | ||
223 | +#: plugins/bsc/views/bsc_plugin_myprofile/edit_contract.html.erb:1 | ||
224 | +#, fuzzy | ||
225 | +msgid "New contract" | ||
226 | +msgstr "Ամբողջ բովանդակությունը" | ||
227 | + | ||
228 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:6 | ||
229 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:7 | ||
230 | +#, fuzzy | ||
231 | +msgid "Client type" | ||
232 | +msgstr "Բովանդակության տեսակ" | ||
233 | + | ||
234 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:7 | ||
235 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:8 | ||
236 | +#, fuzzy | ||
237 | +msgid "Business type" | ||
238 | +msgstr "Սեփականատիրոջ տեսակ" | ||
239 | + | ||
240 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:10 | ||
241 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:11 | ||
242 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:5 | ||
243 | +msgid "Status" | ||
244 | +msgstr "Կարգավիճակ" | ||
245 | + | ||
246 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:18 | ||
247 | +#, fuzzy | ||
248 | +msgid "Type in search term for enterprise" | ||
249 | +msgstr "Դիզակտիվացնել ձեռնարկությունների որոնումը" | ||
250 | + | ||
251 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:23 | ||
252 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:27 | ||
253 | +#, fuzzy | ||
254 | +msgid "Quantity" | ||
255 | +msgstr "Որակ" | ||
256 | + | ||
257 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:24 | ||
258 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:28 | ||
259 | +#, fuzzy | ||
260 | +msgid "Unit price" | ||
261 | +msgstr "Հեռավորություն" | ||
262 | + | ||
263 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:27 | ||
264 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:38 | ||
265 | +msgid "Total" | ||
266 | +msgstr "" | ||
267 | + | ||
268 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:31 | ||
269 | +#, fuzzy | ||
270 | +msgid "Add new product" | ||
271 | +msgstr "Կառավարել արտադրանքը" | ||
272 | + | ||
273 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:35 | ||
274 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:13 | ||
275 | +#, fuzzy | ||
276 | +msgid "Supply period" | ||
277 | +msgstr "Առաքիչ %s" | ||
278 | + | ||
279 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:57 | ||
280 | +#, fuzzy | ||
281 | +msgid "Type in a search term for product" | ||
282 | +msgstr "Դիզակտիվացնել ձեռնարկությունների որոնումը" | ||
283 | + | ||
284 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:5 | ||
285 | +#: plugins/bsc/views/shared/_fields.html.erb:5 | ||
286 | +#, fuzzy | ||
287 | +msgid "Basic information" | ||
288 | +msgstr "Էլ. հասցե" | ||
289 | + | ||
290 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:12 | ||
291 | +#, fuzzy | ||
292 | +msgid "Number of producers" | ||
293 | +msgstr "Արտադրանք չկա" | ||
294 | + | ||
295 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:48 | ||
296 | +#, fuzzy | ||
297 | +msgid "Annotations" | ||
298 | +msgstr "Կառավարման վահանակ" | ||
299 | + | ||
300 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:17 | ||
301 | +#, fuzzy | ||
302 | +msgid "Sort by" | ||
303 | +msgstr "Մեկ համայնք" | ||
304 | + | ||
305 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
306 | +msgid "Date(newest first)" | ||
307 | +msgstr "" | ||
308 | + | ||
309 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
310 | +msgid "Date(oldest first)" | ||
311 | +msgstr "" | ||
312 | + | ||
313 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
314 | +msgid "Client name(A-Z)" | ||
315 | +msgstr "" | ||
316 | + | ||
317 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
318 | +msgid "Client name(Z-A)" | ||
319 | +msgstr "" | ||
320 | + | ||
321 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:24 | ||
322 | +msgid "There are no contracts at all." | ||
323 | +msgstr "" | ||
324 | + | ||
325 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35 | ||
326 | +msgid "Are you sure?" | ||
327 | +msgstr "" | ||
328 | + | ||
329 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:45 | ||
330 | +#, fuzzy | ||
331 | +msgid "Create new contract" | ||
332 | +msgstr "Ստեղծել նոր համայնք" | ||
333 | + | ||
334 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:2 | ||
335 | +#, fuzzy | ||
336 | +msgid "Existing enterprises:" | ||
337 | +msgstr "Մեկ ձեռնարկություն" | ||
338 | + | ||
339 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:3 | ||
340 | +msgid "" | ||
341 | +"Were found %{count} enterprises with similar names on the same city, you can " | ||
342 | +"decide to associate one of them or create the new enterprise confirming the " | ||
343 | +"informations you typed in." | ||
344 | +msgstr "" | ||
345 | + | ||
346 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:20 | ||
347 | +#, fuzzy | ||
348 | +msgid "Associate" | ||
349 | +msgstr "Ակտիվացնել" | ||
350 | + | ||
351 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:1 | ||
352 | +msgid "Transfer Ownership" | ||
353 | +msgstr "" | ||
354 | + | ||
355 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:4 | ||
356 | +msgid "" | ||
357 | +"This option allows you to transfer this enterprise's management to another " | ||
358 | +"user. This action will remove all the current administrators. Be careful " | ||
359 | +"when confirming this procedure." | ||
360 | +msgstr "" | ||
361 | + | ||
362 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:8 | ||
363 | +#, fuzzy | ||
364 | +msgid "Current administrators:" | ||
365 | +msgstr "Անդամներ" | ||
366 | + | ||
367 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:19 | ||
368 | +#, fuzzy | ||
369 | +msgid "Administrator:" | ||
370 | +msgstr "Կառավարման վահանակ" | ||
371 | + | ||
372 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:22 | ||
373 | +msgid "Type in a search term for the new administrator" | ||
374 | +msgstr "" | ||
375 | + | ||
376 | +#: plugins/bsc/views/shared/_fields.html.erb:39 | ||
377 | +msgid "" | ||
378 | +"You are about to change the address, and this will break external links to " | ||
379 | +"this bsc or to posts inside it. Do you really want to change?" | ||
380 | +msgstr "" | ||
381 | + | ||
382 | +#: plugins/bsc/views/bsc_plugin/mailer/admin_notification.html.erb:1 | ||
383 | +msgid "The management of %{bsc} was transferred to you." | ||
384 | +msgstr "" | ||
385 | + | ||
386 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:2 | ||
387 | +#, fuzzy | ||
388 | +msgid "Contact phone: " | ||
389 | +msgstr "Հեռախոս" | ||
390 | + | ||
391 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:3 | ||
392 | +#, fuzzy | ||
393 | +msgid "Email: " | ||
394 | +msgstr "Էլ. հասցե" | ||
395 | + | ||
396 | +#: plugins/bsc/views/bsc_plugin_admin/new.html.erb:2 | ||
397 | +#, fuzzy | ||
398 | +msgid "BSC registration" | ||
399 | +msgstr "Ձեռնարկության գրանցում «%s»" | ||
400 | + | ||
401 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:1 | ||
402 | +#, fuzzy | ||
403 | +msgid "Validate enterprises" | ||
404 | +msgstr "Վավերացնել ձեռնարկությունը" |
@@ -0,0 +1,370 @@ | @@ -0,0 +1,370 @@ | ||
1 | +# translation of noosfero.po to | ||
2 | +# Krishnamurti Lelis Lima Vieira Nunes <krishna@colivre.coop.br>, 2007. | ||
3 | +# noosfero - Brazilian Portuguese translation | ||
4 | +# Copyright (C) 2007, | ||
5 | +# Forum Brasileiro de Economia Solidaria <http://www.fbes.org.br/> | ||
6 | +# Copyright (C) 2007, | ||
7 | +# Ynternet.org Foundation <http://www.ynternet.org/> | ||
8 | +# This file is distributed under the same license as noosfero itself. | ||
9 | +# Joenio Costa <joenio@colivre.coop.br>, 2008. | ||
10 | +# | ||
11 | +# | ||
12 | +msgid "" | ||
13 | +msgstr "" | ||
14 | +"Project-Id-Version: 1.0\n" | ||
15 | +"POT-Creation-Date: 2015-02-02 21:43-0300\n" | ||
16 | +"PO-Revision-Date: 2014-12-18 18:40-0200\n" | ||
17 | +"Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n" | ||
18 | +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | ||
19 | +"noosfero/pt/>\n" | ||
20 | +"Language: pt\n" | ||
21 | +"MIME-Version: 1.0\n" | ||
22 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
23 | +"Content-Transfer-Encoding: 8bit\n" | ||
24 | +"Plural-Forms: nplurals=2; plural=n != 1;\n" | ||
25 | +"X-Generator: Weblate 2.0\n" | ||
26 | + | ||
27 | +#: plugins/bsc/lib/bsc_plugin.rb:10 | ||
28 | +msgid "Adds the Bsc feature" | ||
29 | +msgstr "Adiciona a funcionalidades Bsc" | ||
30 | + | ||
31 | +#: plugins/bsc/lib/bsc_plugin.rb:14 | ||
32 | +msgid "Create Bsc" | ||
33 | +msgstr "Criar Bsc" | ||
34 | + | ||
35 | +#: plugins/bsc/lib/bsc_plugin.rb:15 | ||
36 | +msgid "Validate Enterprises" | ||
37 | +msgstr "Validar empreendimentos" | ||
38 | + | ||
39 | +#: plugins/bsc/lib/bsc_plugin.rb:20 | ||
40 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:1 | ||
41 | +msgid "Manage associated enterprises" | ||
42 | +msgstr "Gerenciar empreendimentos associados" | ||
43 | + | ||
44 | +#: plugins/bsc/lib/bsc_plugin.rb:21 plugins/bsc/lib/bsc_plugin.rb:27 | ||
45 | +msgid "Transfer ownership" | ||
46 | +msgstr "Transferir administração" | ||
47 | + | ||
48 | +#: plugins/bsc/lib/bsc_plugin.rb:22 | ||
49 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:1 | ||
50 | +msgid "Manage contracts" | ||
51 | +msgstr "Gerenciar contratos" | ||
52 | + | ||
53 | +#: plugins/bsc/lib/bsc_plugin.rb:98 | ||
54 | +msgid "Bsc" | ||
55 | +msgstr "Bsc" | ||
56 | + | ||
57 | +#: plugins/bsc/lib/bsc_plugin.rb:109 | ||
58 | +#: plugins/bsc/views/shared/_fields.html.erb:53 | ||
59 | +msgid "Contact" | ||
60 | +msgstr "Contato" | ||
61 | + | ||
62 | +#: plugins/bsc/lib/bsc_plugin/bsc.rb:28 | ||
63 | +msgid "Bsc info and settings" | ||
64 | +msgstr "Informações e Configurações do Bsc" | ||
65 | + | ||
66 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:10 | ||
67 | +msgid "BSC association" | ||
68 | +msgstr "Associação de BSC" | ||
69 | + | ||
70 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:18 | ||
71 | +msgid "%{requestor} wants to associate this enterprise with %{linked_subject}." | ||
72 | +msgstr "%{requestor} quer associar este empreendimento com %{linked_subject}." | ||
73 | + | ||
74 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:35 | ||
75 | +msgid "%{enterprise} accepted your request to associate it with %{bsc}." | ||
76 | +msgstr "%{enterprise} aceitou seu pedido para associá-lo com %{bsc}." | ||
77 | + | ||
78 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:39 | ||
79 | +msgid "%{enterprise} rejected your request to associate it with %{bsc}." | ||
80 | +msgstr "%{enterprise} rejeitou seu pedido para associá-lo com %{bsc}." | ||
81 | + | ||
82 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:41 | ||
83 | +msgid "" | ||
84 | +"Here is the reject explanation left by the administrator:\n" | ||
85 | +"\n" | ||
86 | +"%{reject_explanation}" | ||
87 | +msgstr "" | ||
88 | +"Segue a explicação de rejeição deixada pelo administrador:\n" | ||
89 | +"\n" | ||
90 | +"%{reject_explanation}" | ||
91 | + | ||
92 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:46 | ||
93 | +msgid "%{requestor} wants assoaciate %{bsc} as your BSC." | ||
94 | +msgstr "%{requestor} quer associar %{bsc} como seu BSC." | ||
95 | + | ||
96 | +#: plugins/bsc/lib/bsc_plugin/mailer.rb:7 | ||
97 | +msgid "[%s] Bsc management transferred to you." | ||
98 | +msgstr "[%s] Administração de Bsc transferida para você." | ||
99 | + | ||
100 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
101 | +msgid "Opened" | ||
102 | +msgstr "Aberto" | ||
103 | + | ||
104 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
105 | +msgid "Negotiating" | ||
106 | +msgstr "Em negociação" | ||
107 | + | ||
108 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
109 | +msgid "Executing" | ||
110 | +msgstr "Executando" | ||
111 | + | ||
112 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
113 | +msgid "Closed" | ||
114 | +msgstr "Fechado" | ||
115 | + | ||
116 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:46 | ||
117 | +msgid "Federal" | ||
118 | +msgstr "Federal" | ||
119 | + | ||
120 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
121 | +msgid "ProjectA" | ||
122 | +msgstr "ProjetoA" | ||
123 | + | ||
124 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
125 | +msgid "ProjectB" | ||
126 | +msgstr "ProjetoB" | ||
127 | + | ||
128 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:38 | ||
129 | +msgid "This Bsc associations were saved successfully." | ||
130 | +msgstr "As associações deste Bsc foram salvas com sucesso." | ||
131 | + | ||
132 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:42 | ||
133 | +msgid "This Bsc associations couldn't be saved." | ||
134 | +msgstr "As associações deste Bsc não puderam ser salvas." | ||
135 | + | ||
136 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:71 | ||
137 | +msgid "Enterprise ownership transferred." | ||
138 | +msgstr "A administração do empreendimento foi transferida." | ||
139 | + | ||
140 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:85 | ||
141 | +msgid "Enterprise was created in association with %s." | ||
142 | +msgstr "O empreendimento foi criado em associação com %s." | ||
143 | + | ||
144 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:117 | ||
145 | +msgid "Contract created." | ||
146 | +msgstr "O contrato foi criado." | ||
147 | + | ||
148 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:120 | ||
149 | +msgid "Contract created but some products could not be added." | ||
150 | +msgstr "O contrato foi criado mas alguns produtos não puderam ser adicionados." | ||
151 | + | ||
152 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:131 | ||
153 | +msgid "Contract doesn't exists! Maybe it was already removed." | ||
154 | +msgstr "O contrato não existe! Talvez ele já tenha sido removido." | ||
155 | + | ||
156 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:140 | ||
157 | +msgid "Could not edit such contract." | ||
158 | +msgstr "Não foi possível editar o contrato." | ||
159 | + | ||
160 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:170 | ||
161 | +msgid "Contract edited." | ||
162 | +msgstr "Contrato editado." | ||
163 | + | ||
164 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:173 | ||
165 | +msgid "Contract edited but some products could not be added." | ||
166 | +msgstr "" | ||
167 | +"O contrato foi editado mas alguns produtos não puderam ser adicionados." | ||
168 | + | ||
169 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:183 | ||
170 | +msgid "Contract removed." | ||
171 | +msgstr "Contrato removido." | ||
172 | + | ||
173 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:185 | ||
174 | +msgid "Contract could not be removed. Sorry! ^^" | ||
175 | +msgstr "O contrato não pôde ser removido. Desculpa!" | ||
176 | + | ||
177 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:11 | ||
178 | +msgid "Your Bsc was created." | ||
179 | +msgstr "Seu Bsc foi criado." | ||
180 | + | ||
181 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:21 | ||
182 | +msgid "Enterprises validated." | ||
183 | +msgstr "Empreendimento validados." | ||
184 | + | ||
185 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:24 | ||
186 | +msgid "Enterprise validations couldn't be saved." | ||
187 | +msgstr "As validações de empreendimento não puderam ser salvas." | ||
188 | + | ||
189 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:4 | ||
190 | +msgid "Associations awaiting approval:" | ||
191 | +msgstr "Associações aguardando aprovação:" | ||
192 | + | ||
193 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:16 | ||
194 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:5 | ||
195 | +msgid "Type in a search term for enterprise" | ||
196 | +msgstr "Digite um termo de pesquisa para empreendimentos" | ||
197 | + | ||
198 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:19 | ||
199 | +msgid "Add new enterprise" | ||
200 | +msgstr "Adicionar novo empreendimento" | ||
201 | + | ||
202 | +#: plugins/bsc/views/bsc_plugin_myprofile/new_contract.html.erb:1 | ||
203 | +#: plugins/bsc/views/bsc_plugin_myprofile/edit_contract.html.erb:1 | ||
204 | +msgid "New contract" | ||
205 | +msgstr "Novo contrato" | ||
206 | + | ||
207 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:6 | ||
208 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:7 | ||
209 | +msgid "Client type" | ||
210 | +msgstr "Tipo de cliente" | ||
211 | + | ||
212 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:7 | ||
213 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:8 | ||
214 | +msgid "Business type" | ||
215 | +msgstr "Tipo de negócio" | ||
216 | + | ||
217 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:10 | ||
218 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:11 | ||
219 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:5 | ||
220 | +msgid "Status" | ||
221 | +msgstr "Estado" | ||
222 | + | ||
223 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:18 | ||
224 | +msgid "Type in search term for enterprise" | ||
225 | +msgstr "Digite um termo de pesquisa para empreendimentos" | ||
226 | + | ||
227 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:23 | ||
228 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:27 | ||
229 | +msgid "Quantity" | ||
230 | +msgstr "Quantidade" | ||
231 | + | ||
232 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:24 | ||
233 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:28 | ||
234 | +msgid "Unit price" | ||
235 | +msgstr "Preço unitário" | ||
236 | + | ||
237 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:27 | ||
238 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:38 | ||
239 | +msgid "Total" | ||
240 | +msgstr "Total" | ||
241 | + | ||
242 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:31 | ||
243 | +msgid "Add new product" | ||
244 | +msgstr "Adicionar novo produto" | ||
245 | + | ||
246 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:35 | ||
247 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:13 | ||
248 | +msgid "Supply period" | ||
249 | +msgstr "Período de fornecimento" | ||
250 | + | ||
251 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:57 | ||
252 | +msgid "Type in a search term for product" | ||
253 | +msgstr "Digite um termo de pesquisa para produto" | ||
254 | + | ||
255 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:5 | ||
256 | +#: plugins/bsc/views/shared/_fields.html.erb:5 | ||
257 | +msgid "Basic information" | ||
258 | +msgstr "Informações Básicas" | ||
259 | + | ||
260 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:12 | ||
261 | +msgid "Number of producers" | ||
262 | +msgstr "Número de produtores" | ||
263 | + | ||
264 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:48 | ||
265 | +msgid "Annotations" | ||
266 | +msgstr "Anotações" | ||
267 | + | ||
268 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:17 | ||
269 | +msgid "Sort by" | ||
270 | +msgstr "Ordenar por" | ||
271 | + | ||
272 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
273 | +msgid "Date(newest first)" | ||
274 | +msgstr "Data(mais recentes primeiro)" | ||
275 | + | ||
276 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
277 | +msgid "Date(oldest first)" | ||
278 | +msgstr "Data(mais antigos primeiro)" | ||
279 | + | ||
280 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
281 | +msgid "Client name(A-Z)" | ||
282 | +msgstr "Nome do cliente(A-Z)" | ||
283 | + | ||
284 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
285 | +msgid "Client name(Z-A)" | ||
286 | +msgstr "Nome do cliente(Z-A)" | ||
287 | + | ||
288 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:24 | ||
289 | +msgid "There are no contracts at all." | ||
290 | +msgstr "Não há contratos." | ||
291 | + | ||
292 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35 | ||
293 | +msgid "Are you sure?" | ||
294 | +msgstr "Você tem certeza?" | ||
295 | + | ||
296 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:45 | ||
297 | +msgid "Create new contract" | ||
298 | +msgstr "Criar novo contrato" | ||
299 | + | ||
300 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:2 | ||
301 | +msgid "Existing enterprises:" | ||
302 | +msgstr "Empreendimentos existentes:" | ||
303 | + | ||
304 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:3 | ||
305 | +msgid "" | ||
306 | +"Were found %{count} enterprises with similar names on the same city, you can " | ||
307 | +"decide to associate one of them or create the new enterprise confirming the " | ||
308 | +"informations you typed in." | ||
309 | +msgstr "" | ||
310 | +"Foram encontrados %{count} empreendimentos com nomes similares na mesma " | ||
311 | +"cidade, você pode decidir associar um deles ou criar um novo empreendimento " | ||
312 | +"confirmando as informações que você digitou." | ||
313 | + | ||
314 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:20 | ||
315 | +msgid "Associate" | ||
316 | +msgstr "Associar" | ||
317 | + | ||
318 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:1 | ||
319 | +msgid "Transfer Ownership" | ||
320 | +msgstr "Transferir administração" | ||
321 | + | ||
322 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:4 | ||
323 | +msgid "" | ||
324 | +"This option allows you to transfer this enterprise's management to another " | ||
325 | +"user. This action will remove all the current administrators. Be careful " | ||
326 | +"when confirming this procedure." | ||
327 | +msgstr "" | ||
328 | +"Esta opção permite transferir a administração do empreendimento para outro " | ||
329 | +"usuário. Esta ação removerá todos os administradores atuais. Seja cuidadoso " | ||
330 | +"ao confirmar este procedimento." | ||
331 | + | ||
332 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:8 | ||
333 | +msgid "Current administrators:" | ||
334 | +msgstr "Administradores atuais:" | ||
335 | + | ||
336 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:19 | ||
337 | +msgid "Administrator:" | ||
338 | +msgstr "Administradores:" | ||
339 | + | ||
340 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:22 | ||
341 | +msgid "Type in a search term for the new administrator" | ||
342 | +msgstr "Digite um termo de pesquisa para o novo adiministrador" | ||
343 | + | ||
344 | +#: plugins/bsc/views/shared/_fields.html.erb:39 | ||
345 | +msgid "" | ||
346 | +"You are about to change the address, and this will break external links to " | ||
347 | +"this bsc or to posts inside it. Do you really want to change?" | ||
348 | +msgstr "" | ||
349 | +"Você está prestes a alterar o endereço, e isto vai quebrar links externos " | ||
350 | +"para esse bsc ou para artigos dentro dele. Você realmente deseja mudar?" | ||
351 | + | ||
352 | +#: plugins/bsc/views/bsc_plugin/mailer/admin_notification.html.erb:1 | ||
353 | +msgid "The management of %{bsc} was transferred to you." | ||
354 | +msgstr "A adminstração de %{bsc} foi transferida para você." | ||
355 | + | ||
356 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:2 | ||
357 | +msgid "Contact phone: " | ||
358 | +msgstr "Telefone de contato: " | ||
359 | + | ||
360 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:3 | ||
361 | +msgid "Email: " | ||
362 | +msgstr "Email: " | ||
363 | + | ||
364 | +#: plugins/bsc/views/bsc_plugin_admin/new.html.erb:2 | ||
365 | +msgid "BSC registration" | ||
366 | +msgstr "Registro de BSC" | ||
367 | + | ||
368 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:1 | ||
369 | +msgid "Validate enterprises" | ||
370 | +msgstr "Validar empreendimentos" |
@@ -0,0 +1,410 @@ | @@ -0,0 +1,410 @@ | ||
1 | +# Russian translation of noosfero. | ||
2 | +# Copyright (C) 2009 Anton Caceres | ||
3 | +# This file is distributed under the same license as the noosfero package. | ||
4 | +# Josef Spillner <josef.spillner@tu-dresden.de>, 2009. | ||
5 | +# | ||
6 | +msgid "" | ||
7 | +msgstr "" | ||
8 | +"Project-Id-Version: 1.0\n" | ||
9 | +"POT-Creation-Date: 2015-02-02 21:43-0300\n" | ||
10 | +"PO-Revision-Date: 2014-12-12 14:23+0200\n" | ||
11 | +"Last-Translator: Michal Čihař <michal@cihar.com>\n" | ||
12 | +"Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/" | ||
13 | +"noosfero/ru/>\n" | ||
14 | +"Language: ru\n" | ||
15 | +"MIME-Version: 1.0\n" | ||
16 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
17 | +"Content-Transfer-Encoding: 8bit\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.2-dev\n" | ||
21 | + | ||
22 | +#: plugins/bsc/lib/bsc_plugin.rb:10 | ||
23 | +#, fuzzy | ||
24 | +msgid "Adds the Bsc feature" | ||
25 | +msgstr "Системные возможности" | ||
26 | + | ||
27 | +#: plugins/bsc/lib/bsc_plugin.rb:14 | ||
28 | +#, fuzzy | ||
29 | +msgid "Create Bsc" | ||
30 | +msgstr "Создать" | ||
31 | + | ||
32 | +#: plugins/bsc/lib/bsc_plugin.rb:15 | ||
33 | +#, fuzzy | ||
34 | +msgid "Validate Enterprises" | ||
35 | +msgstr "Подтвердить компанию" | ||
36 | + | ||
37 | +#: plugins/bsc/lib/bsc_plugin.rb:20 | ||
38 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:1 | ||
39 | +#, fuzzy | ||
40 | +msgid "Manage associated enterprises" | ||
41 | +msgstr "Verwalte Unternehmensfelder" | ||
42 | + | ||
43 | +#: plugins/bsc/lib/bsc_plugin.rb:21 plugins/bsc/lib/bsc_plugin.rb:27 | ||
44 | +msgid "Transfer ownership" | ||
45 | +msgstr "" | ||
46 | + | ||
47 | +#: plugins/bsc/lib/bsc_plugin.rb:22 | ||
48 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:1 | ||
49 | +#, fuzzy | ||
50 | +msgid "Manage contracts" | ||
51 | +msgstr "Управлять контактами" | ||
52 | + | ||
53 | +#: plugins/bsc/lib/bsc_plugin.rb:98 | ||
54 | +msgid "Bsc" | ||
55 | +msgstr "" | ||
56 | + | ||
57 | +#: plugins/bsc/lib/bsc_plugin.rb:109 | ||
58 | +#: plugins/bsc/views/shared/_fields.html.erb:53 | ||
59 | +msgid "Contact" | ||
60 | +msgstr "Контакт" | ||
61 | + | ||
62 | +#: plugins/bsc/lib/bsc_plugin/bsc.rb:28 | ||
63 | +#, fuzzy | ||
64 | +msgid "Bsc info and settings" | ||
65 | +msgstr "Инфо профиля и настройки" | ||
66 | + | ||
67 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:10 | ||
68 | +#, fuzzy | ||
69 | +msgid "BSC association" | ||
70 | +msgstr "Основная информация" | ||
71 | + | ||
72 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:18 | ||
73 | +#, fuzzy | ||
74 | +msgid "%{requestor} wants to associate this enterprise with %{linked_subject}." | ||
75 | +msgstr "'%{user} хочет активировать E-Mail '%{email}' " | ||
76 | + | ||
77 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:35 | ||
78 | +msgid "%{enterprise} accepted your request to associate it with %{bsc}." | ||
79 | +msgstr "" | ||
80 | + | ||
81 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:39 | ||
82 | +msgid "%{enterprise} rejected your request to associate it with %{bsc}." | ||
83 | +msgstr "" | ||
84 | + | ||
85 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:41 | ||
86 | +msgid "" | ||
87 | +"Here is the reject explanation left by the administrator:\n" | ||
88 | +"\n" | ||
89 | +"%{reject_explanation}" | ||
90 | +msgstr "" | ||
91 | + | ||
92 | +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:46 | ||
93 | +#, fuzzy | ||
94 | +msgid "%{requestor} wants assoaciate %{bsc} as your BSC." | ||
95 | +msgstr "%s хочет быть вашим другом" | ||
96 | + | ||
97 | +#: plugins/bsc/lib/bsc_plugin/mailer.rb:7 | ||
98 | +msgid "[%s] Bsc management transferred to you." | ||
99 | +msgstr "" | ||
100 | + | ||
101 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
102 | +#, fuzzy | ||
103 | +msgid "Opened" | ||
104 | +msgstr "открыть" | ||
105 | + | ||
106 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
107 | +#, fuzzy | ||
108 | +msgid "Negotiating" | ||
109 | +msgstr "Настройки" | ||
110 | + | ||
111 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
112 | +#, fuzzy | ||
113 | +msgid "Executing" | ||
114 | +msgstr "Редактирование" | ||
115 | + | ||
116 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:33 | ||
117 | +#, fuzzy | ||
118 | +msgid "Closed" | ||
119 | +msgstr "Закрыть" | ||
120 | + | ||
121 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:46 | ||
122 | +#, fuzzy | ||
123 | +msgid "Federal" | ||
124 | +msgstr "Основная задача" | ||
125 | + | ||
126 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
127 | +#, fuzzy | ||
128 | +msgid "ProjectA" | ||
129 | +msgstr "Продукт" | ||
130 | + | ||
131 | +#: plugins/bsc/lib/bsc_plugin/contract.rb:59 | ||
132 | +#, fuzzy | ||
133 | +msgid "ProjectB" | ||
134 | +msgstr "Продукт" | ||
135 | + | ||
136 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:38 | ||
137 | +#, fuzzy | ||
138 | +msgid "This Bsc associations were saved successfully." | ||
139 | +msgstr "Все файлы успешно обновлены" | ||
140 | + | ||
141 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:42 | ||
142 | +#, fuzzy | ||
143 | +msgid "This Bsc associations couldn't be saved." | ||
144 | +msgstr "Файл не может быть сохранен" | ||
145 | + | ||
146 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:71 | ||
147 | +#, fuzzy | ||
148 | +msgid "Enterprise ownership transferred." | ||
149 | +msgstr "Домашняя страница компании" | ||
150 | + | ||
151 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:85 | ||
152 | +#, fuzzy | ||
153 | +msgid "Enterprise was created in association with %s." | ||
154 | +msgstr "Регистрация предприятия: \"%s\"" | ||
155 | + | ||
156 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:117 | ||
157 | +#, fuzzy | ||
158 | +msgid "Contract created." | ||
159 | +msgstr "Контактный email" | ||
160 | + | ||
161 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:120 | ||
162 | +msgid "Contract created but some products could not be added." | ||
163 | +msgstr "" | ||
164 | + | ||
165 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:131 | ||
166 | +msgid "Contract doesn't exists! Maybe it was already removed." | ||
167 | +msgstr "" | ||
168 | + | ||
169 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:140 | ||
170 | +#, fuzzy | ||
171 | +msgid "Could not edit such contract." | ||
172 | +msgstr "Невозможно обновить продукт" | ||
173 | + | ||
174 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:170 | ||
175 | +#, fuzzy | ||
176 | +msgid "Contract edited." | ||
177 | +msgstr "Контактный email" | ||
178 | + | ||
179 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:173 | ||
180 | +#, fuzzy | ||
181 | +msgid "Contract edited but some products could not be added." | ||
182 | +msgstr "Блок персональной информации" | ||
183 | + | ||
184 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:183 | ||
185 | +#, fuzzy | ||
186 | +msgid "Contract removed." | ||
187 | +msgstr "Тело статьи" | ||
188 | + | ||
189 | +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:185 | ||
190 | +#, fuzzy | ||
191 | +msgid "Contract could not be removed. Sorry! ^^" | ||
192 | +msgstr "Блок персональной информации" | ||
193 | + | ||
194 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:11 | ||
195 | +#, fuzzy | ||
196 | +msgid "Your Bsc was created." | ||
197 | +msgstr "Ваш E-Mail %s активирован" | ||
198 | + | ||
199 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:21 | ||
200 | +#, fuzzy | ||
201 | +msgid "Enterprises validated." | ||
202 | +msgstr "Утвердители компаний" | ||
203 | + | ||
204 | +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:24 | ||
205 | +#, fuzzy | ||
206 | +msgid "Enterprise validations couldn't be saved." | ||
207 | +msgstr "Утвердители компаний" | ||
208 | + | ||
209 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:4 | ||
210 | +msgid "Associations awaiting approval:" | ||
211 | +msgstr "" | ||
212 | + | ||
213 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:16 | ||
214 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:5 | ||
215 | +#, fuzzy | ||
216 | +msgid "Type in a search term for enterprise" | ||
217 | +msgstr "Отключить поиск по компаниям" | ||
218 | + | ||
219 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:19 | ||
220 | +#, fuzzy | ||
221 | +msgid "Add new enterprise" | ||
222 | +msgstr "Одна компания" | ||
223 | + | ||
224 | +#: plugins/bsc/views/bsc_plugin_myprofile/new_contract.html.erb:1 | ||
225 | +#: plugins/bsc/views/bsc_plugin_myprofile/edit_contract.html.erb:1 | ||
226 | +#, fuzzy | ||
227 | +msgid "New contract" | ||
228 | +msgstr "Весь контент" | ||
229 | + | ||
230 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:6 | ||
231 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:7 | ||
232 | +#, fuzzy | ||
233 | +msgid "Client type" | ||
234 | +msgstr "Тип контента" | ||
235 | + | ||
236 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:7 | ||
237 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:8 | ||
238 | +#, fuzzy | ||
239 | +msgid "Business type" | ||
240 | +msgstr "Название работы" | ||
241 | + | ||
242 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:10 | ||
243 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:11 | ||
244 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:5 | ||
245 | +msgid "Status" | ||
246 | +msgstr "Статус" | ||
247 | + | ||
248 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:18 | ||
249 | +#, fuzzy | ||
250 | +msgid "Type in search term for enterprise" | ||
251 | +msgstr "Отключить поиск по компаниям" | ||
252 | + | ||
253 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:23 | ||
254 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:27 | ||
255 | +#, fuzzy | ||
256 | +msgid "Quantity" | ||
257 | +msgstr "Качество" | ||
258 | + | ||
259 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:24 | ||
260 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:28 | ||
261 | +#, fuzzy | ||
262 | +msgid "Unit price" | ||
263 | +msgstr "Прайс:" | ||
264 | + | ||
265 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:27 | ||
266 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:38 | ||
267 | +#, fuzzy | ||
268 | +msgid "Total" | ||
269 | +msgstr "Получатель:" | ||
270 | + | ||
271 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:31 | ||
272 | +#, fuzzy | ||
273 | +msgid "Add new product" | ||
274 | +msgstr "Управление продуктами" | ||
275 | + | ||
276 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:35 | ||
277 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:13 | ||
278 | +#, fuzzy | ||
279 | +msgid "Supply period" | ||
280 | +msgstr "Поставщик: %s" | ||
281 | + | ||
282 | +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:57 | ||
283 | +#, fuzzy | ||
284 | +msgid "Type in a search term for product" | ||
285 | +msgstr "Отключить поиск по компаниям" | ||
286 | + | ||
287 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:5 | ||
288 | +#: plugins/bsc/views/shared/_fields.html.erb:5 | ||
289 | +msgid "Basic information" | ||
290 | +msgstr "Основная информация" | ||
291 | + | ||
292 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:12 | ||
293 | +#, fuzzy | ||
294 | +msgid "Number of producers" | ||
295 | +msgstr "Количество новостей" | ||
296 | + | ||
297 | +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:48 | ||
298 | +#, fuzzy | ||
299 | +msgid "Annotations" | ||
300 | +msgstr "Текст приглашения" | ||
301 | + | ||
302 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:17 | ||
303 | +#, fuzzy | ||
304 | +msgid "Sort by" | ||
305 | +msgstr "Отправлено %s." | ||
306 | + | ||
307 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
308 | +msgid "Date(newest first)" | ||
309 | +msgstr "" | ||
310 | + | ||
311 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18 | ||
312 | +msgid "Date(oldest first)" | ||
313 | +msgstr "" | ||
314 | + | ||
315 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
316 | +msgid "Client name(A-Z)" | ||
317 | +msgstr "" | ||
318 | + | ||
319 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19 | ||
320 | +msgid "Client name(Z-A)" | ||
321 | +msgstr "" | ||
322 | + | ||
323 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:24 | ||
324 | +#, fuzzy | ||
325 | +msgid "There are no contracts at all." | ||
326 | +msgstr "У вас еще нет контактов" | ||
327 | + | ||
328 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35 | ||
329 | +msgid "Are you sure?" | ||
330 | +msgstr "" | ||
331 | + | ||
332 | +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:45 | ||
333 | +#, fuzzy | ||
334 | +msgid "Create new contract" | ||
335 | +msgstr "Создать новое сообщество" | ||
336 | + | ||
337 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:2 | ||
338 | +#, fuzzy | ||
339 | +msgid "Existing enterprises:" | ||
340 | +msgstr "Unternehmen ändern" | ||
341 | + | ||
342 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:3 | ||
343 | +msgid "" | ||
344 | +"Were found %{count} enterprises with similar names on the same city, you can " | ||
345 | +"decide to associate one of them or create the new enterprise confirming the " | ||
346 | +"informations you typed in." | ||
347 | +msgstr "" | ||
348 | + | ||
349 | +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:20 | ||
350 | +#, fuzzy | ||
351 | +msgid "Associate" | ||
352 | +msgstr "Активировать" | ||
353 | + | ||
354 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:1 | ||
355 | +msgid "Transfer Ownership" | ||
356 | +msgstr "" | ||
357 | + | ||
358 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:4 | ||
359 | +msgid "" | ||
360 | +"This option allows you to transfer this enterprise's management to another " | ||
361 | +"user. This action will remove all the current administrators. Be careful " | ||
362 | +"when confirming this procedure." | ||
363 | +msgstr "" | ||
364 | + | ||
365 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:8 | ||
366 | +#, fuzzy | ||
367 | +msgid "Current administrators:" | ||
368 | +msgstr "Текущие участники" | ||
369 | + | ||
370 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:19 | ||
371 | +#, fuzzy | ||
372 | +msgid "Administrator:" | ||
373 | +msgstr "Администраторы:" | ||
374 | + | ||
375 | +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:22 | ||
376 | +msgid "Type in a search term for the new administrator" | ||
377 | +msgstr "" | ||
378 | + | ||
379 | +#: plugins/bsc/views/shared/_fields.html.erb:39 | ||
380 | +#, fuzzy | ||
381 | +msgid "" | ||
382 | +"You are about to change the address, and this will break external links to " | ||
383 | +"this bsc or to posts inside it. Do you really want to change?" | ||
384 | +msgstr "" | ||
385 | +"Вы собираетесь сменить адрес, это приведет к разрыву всех внешних ссылок, " | ||
386 | +"ведущих на вашу страницу. Вы уверены?" | ||
387 | + | ||
388 | +#: plugins/bsc/views/bsc_plugin/mailer/admin_notification.html.erb:1 | ||
389 | +msgid "The management of %{bsc} was transferred to you." | ||
390 | +msgstr "" | ||
391 | + | ||
392 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:2 | ||
393 | +#, fuzzy | ||
394 | +msgid "Contact phone: " | ||
395 | +msgstr "Kontakttelefon:" | ||
396 | + | ||
397 | +#: plugins/bsc/views/profile/_profile_tab.html.erb:3 | ||
398 | +#, fuzzy | ||
399 | +msgid "Email: " | ||
400 | +msgstr "E-Mail: %s" | ||
401 | + | ||
402 | +#: plugins/bsc/views/bsc_plugin_admin/new.html.erb:2 | ||
403 | +#, fuzzy | ||
404 | +msgid "BSC registration" | ||
405 | +msgstr "Регистрация предприятия" | ||
406 | + | ||
407 | +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:1 | ||
408 | +#, fuzzy | ||
409 | +msgid "Validate enterprises" | ||
410 | +msgstr "Подтвердить компанию" |
plugins/bsc/views/bsc_plugin_admin/new.html.erb
@@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
5 | <%= render :partial => 'shared/fields', :locals => {:f => f, :profile => @bsc} %> | 5 | <%= render :partial => 'shared/fields', :locals => {:f => f, :profile => @bsc} %> |
6 | 6 | ||
7 | <% button_bar do %> | 7 | <% button_bar do %> |
8 | - <%= submit_button('save', _('Save')) %> | ||
9 | - <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'}) %> | 8 | + <%= submit_button('save', c_('Save')) %> |
9 | + <%= button('cancel', c_('Cancel'), {:controller => 'admin_panel'}) %> | ||
10 | <% end %> | 10 | <% end %> |
11 | <% end %> | 11 | <% end %> |
plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | :focus => true }) %> | 6 | :focus => true }) %> |
7 | 7 | ||
8 | <% button_bar do %> | 8 | <% button_bar do %> |
9 | - <%= submit_button('save', _('Save'))%> | ||
10 | - <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'})%> | 9 | + <%= submit_button('save', c_('Save'))%> |
10 | + <%= button('cancel', c_('Cancel'), {:controller => 'admin_panel'})%> | ||
11 | <% end %> | 11 | <% end %> |
12 | <% end %> | 12 | <% end %> |
plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb
@@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
10 | <%= labelled_form_field(_('Status'), f.select(:status, BscPlugin::Contract::Status.types. | 10 | <%= labelled_form_field(_('Status'), f.select(:status, BscPlugin::Contract::Status.types. |
11 | map { |s| [BscPlugin::Contract::Status.names[s], s] })) %> | 11 | map { |s| [BscPlugin::Contract::Status.names[s], s] })) %> |
12 | <%= f.text_field(:number_of_producers, :size => 8, :id => 'bsc-plugin-contract-spinner') %> | 12 | <%= f.text_field(:number_of_producers, :size => 8, :id => 'bsc-plugin-contract-spinner') %> |
13 | - <%= _('Enterprises')+':' %> | 13 | + <%= c_('Enterprises')+':' %> |
14 | 14 | ||
15 | <% search_action = {:action => 'search_contract_enterprises', :profile => profile.identifier} %> | 15 | <% search_action = {:action => 'search_contract_enterprises', :profile => profile.identifier} %> |
16 | <%= token_input_field_tag(:enterprises, 'involved-enterprises', search_action, | 16 | <%= token_input_field_tag(:enterprises, 'involved-enterprises', search_action, |
@@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
19 | 19 | ||
20 | <table id="bsc-plugin-sales-table" class="alternate-colors"> | 20 | <table id="bsc-plugin-sales-table" class="alternate-colors"> |
21 | <tr> | 21 | <tr> |
22 | - <th class="bsc-plugin-sales-products-column"><%= _('Products') %></th> | 22 | + <th class="bsc-plugin-sales-products-column"><%= c_('Products') %></th> |
23 | <th class="bsc-plugin-sales-quantity-column" ><%= _('Quantity') %></th> | 23 | <th class="bsc-plugin-sales-quantity-column" ><%= _('Quantity') %></th> |
24 | <th class="bsc-plugin-sales-price-column" ><%= _('Unit price') %></th> | 24 | <th class="bsc-plugin-sales-price-column" ><%= _('Unit price') %></th> |
25 | </tr> | 25 | </tr> |
@@ -34,13 +34,13 @@ | @@ -34,13 +34,13 @@ | ||
34 | 34 | ||
35 | <%= labelled_form_field( _('Supply period'), | 35 | <%= labelled_form_field( _('Supply period'), |
36 | text_field_tag('contract[supply_start]', (@contract.supply_start ? @contract.supply_start.strftime("%Y-%m-%d") : nil), :id => 'from', :size => 9) + | 36 | text_field_tag('contract[supply_start]', (@contract.supply_start ? @contract.supply_start.strftime("%Y-%m-%d") : nil), :id => 'from', :size => 9) + |
37 | - _(' to ') + | 37 | + c_(' to ') + |
38 | text_field_tag('contract[supply_end]', (@contract.supply_end ? @contract.supply_end.strftime("%Y-%m-%d") : nil), :id => 'to', :size => 9) ) | 38 | text_field_tag('contract[supply_end]', (@contract.supply_end ? @contract.supply_end.strftime("%Y-%m-%d") : nil), :id => 'to', :size => 9) ) |
39 | %> | 39 | %> |
40 | 40 | ||
41 | <%= f.text_area(:annotations, :rows => 5, :cols => 68) %> | 41 | <%= f.text_area(:annotations, :rows => 5, :cols => 68) %> |
42 | <% button_bar do%> | 42 | <% button_bar do%> |
43 | - <%= submit_button(:save, _('Save'), :cancel => {:action => 'manage_contracts'})%> | 43 | + <%= submit_button(:save, c_('Save'), :cancel => {:action => 'manage_contracts'})%> |
44 | <% end %> | 44 | <% end %> |
45 | <% end %> | 45 | <% end %> |
46 | 46 | ||
@@ -55,8 +55,8 @@ | @@ -55,8 +55,8 @@ | ||
55 | BSCContracts.tokenInputOptions = { | 55 | BSCContracts.tokenInputOptions = { |
56 | minChars: 3, | 56 | minChars: 3, |
57 | hintText: <%= _('Type in a search term for product').to_json %>, | 57 | hintText: <%= _('Type in a search term for product').to_json %>, |
58 | - noResultsText: <%= _("No results").to_json %>, | ||
59 | - searchingText: <%= _("Searching...").to_json %>, | 58 | + noResultsText: <%= c_("No results").to_json %>, |
59 | + searchingText: <%= c_("Searching...").to_json %>, | ||
60 | searchDelay: 1000, | 60 | searchDelay: 1000, |
61 | preventDuplicates: true, | 61 | preventDuplicates: true, |
62 | backspaceDeleteItem: false, | 62 | backspaceDeleteItem: false, |
plugins/bsc/views/bsc_plugin_myprofile/create_enterprise.html.erb
@@ -9,12 +9,12 @@ | @@ -9,12 +9,12 @@ | ||
9 | <%= required f.text_field 'name', :onchange => "updateUrlField(this, 'create_enterprise_identifier')", :size => 40 %> | 9 | <%= required f.text_field 'name', :onchange => "updateUrlField(this, 'create_enterprise_identifier')", :size => 40 %> |
10 | <%= render :partial => 'shared/organization_custom_fields', :locals => { :f => f, :object_name => :create_enterprise, :profile => @create_enterprise } %> | 10 | <%= render :partial => 'shared/organization_custom_fields', :locals => { :f => f, :object_name => :create_enterprise, :profile => @create_enterprise } %> |
11 | <p style="border-bottom: 2px solid #babdb6"></p> | 11 | <p style="border-bottom: 2px solid #babdb6"></p> |
12 | - <%= required labelled_form_field(_('Address'), content_tag('code', environment.top_url + "/" + text_field(:create_enterprise, 'identifier', :size => 26))) %> | 12 | + <%= required labelled_form_field(c_('Address'), content_tag('code', environment.top_url + "/" + text_field(:create_enterprise, 'identifier', :size => 26))) %> |
13 | <p style="border-bottom: 2px solid #babdb6"></p> | 13 | <p style="border-bottom: 2px solid #babdb6"></p> |
14 | <%= render :partial => 'similar_enterprises', :locals => {:bsc => profile}%> | 14 | <%= render :partial => 'similar_enterprises', :locals => {:bsc => profile}%> |
15 | 15 | ||
16 | <% button_bar do %> | 16 | <% button_bar do %> |
17 | - <%= submit_button('save', _('Save'), :cancel => {:controller => 'profile_editor', :profile => profile.identifier}) %> | 17 | + <%= submit_button('save', c_('Save'), :cancel => {:controller => 'profile_editor', :profile => profile.identifier}) %> |
18 | <% end %> | 18 | <% end %> |
19 | <% end %> | 19 | <% end %> |
20 | 20 |
plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb
@@ -19,8 +19,8 @@ | @@ -19,8 +19,8 @@ | ||
19 | <%= button('add', _('Add new enterprise'), {:action => 'create_enterprise'}) %> | 19 | <%= button('add', _('Add new enterprise'), {:action => 'create_enterprise'}) %> |
20 | 20 | ||
21 | <% button_bar do %> | 21 | <% button_bar do %> |
22 | - <%= submit_button('save', _('Save'))%> | ||
23 | - <%= button('cancel', _('Cancel'), {:controller => 'profile_editor'})%> | 22 | + <%= submit_button('save', c_('Save'))%> |
23 | + <%= button('cancel', c_('Cancel'), {:controller => 'profile_editor'})%> | ||
24 | <% end %> | 24 | <% end %> |
25 | 25 | ||
26 | <% end %> | 26 | <% end %> |
plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | <br style="clear:both" /> | 9 | <br style="clear:both" /> |
10 | <% end %> | 10 | <% end %> |
11 | <br style="clear:both" /> | 11 | <br style="clear:both" /> |
12 | - <%= submit_button(:save, _('Filter')) %> | 12 | + <%= submit_button(:save, c_('Filter')) %> |
13 | </div> | 13 | </div> |
14 | 14 | ||
15 | <div id='bsc-plugin-contracts-results'> | 15 | <div id='bsc-plugin-contracts-results'> |
@@ -31,8 +31,8 @@ | @@ -31,8 +31,8 @@ | ||
31 | <%= content_tag('i', show_date(contract.created_at)) %> | 31 | <%= content_tag('i', show_date(contract.created_at)) %> |
32 | </td> | 32 | </td> |
33 | <td class="links"> | 33 | <td class="links"> |
34 | - <%= link_to(_('Edit'), :action => 'edit_contract', :contract_id => contract.id)%> | ||
35 | - <%= link_to(_('Remove'), {:action => 'destroy_contract', :contract_id => contract.id}, :confirm => _('Are you sure?'))%> | 34 | + <%= link_to(c_('Edit'), :action => 'edit_contract', :contract_id => contract.id)%> |
35 | + <%= link_to(c_('Remove'), {:action => 'destroy_contract', :contract_id => contract.id}, :confirm => _('Are you sure?'))%> | ||
36 | </td> | 36 | </td> |
37 | </tr> | 37 | </tr> |
38 | <% end %> | 38 | <% end %> |
@@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
41 | <% end %> | 41 | <% end %> |
42 | 42 | ||
43 | <% button_bar do %> | 43 | <% button_bar do %> |
44 | - <%= button(:back, _('Go back'), :controller => 'profile_editor') %> | 44 | + <%= button(:back, c_('Go back'), :controller => 'profile_editor') %> |
45 | <%= button(:new, _('Create new contract'), :action => 'new_contract')%> | 45 | <%= button(:new, _('Create new contract'), :action => 'new_contract')%> |
46 | <% end %> | 46 | <% end %> |
47 | </div> | 47 | </div> |