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
INSTALL.https.md
1 | -Setup Noosfero to use HTTPS | |
2 | -=========================== | |
1 | +# Setup Noosfero to use HTTPS | |
3 | 2 | |
4 | 3 | This document assumes that you have a fully and clean Noosfero |
5 | 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 | 8 | You should get a valid SSL certificate, but if you want to test |
11 | 9 | your setup before, you could generate a self-signed certificate |
... | ... | @@ -17,99 +15,106 @@ as below: |
17 | 15 | # openssl req -new -x509 -nodes -sha1 -days $[10*365] -key noosfero.key > noosfero.cert |
18 | 16 | # cat noosfero.key noosfero.cert > noosfero.pem |
19 | 17 | |
18 | +## Web server configuration | |
19 | + | |
20 | 20 | There are two ways of using SSL with Noosfero: 1) If you are not using |
21 | 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 | 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 | 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 | 46 | Be aware that if you had configured varnish, the requests won't reach |
47 | 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 | 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 | 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 | 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 | 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 | 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 @@ |
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 | 71 | end |
72 | 72 | end |
73 | 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 | 92 | end | ... | ... |
app/controllers/admin/templates_controller.rb
... | ... | @@ -40,8 +40,67 @@ class TemplatesController < AdminController |
40 | 40 | end |
41 | 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 | 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 | 104 | def create_organization_template(klass) |
46 | 105 | identifier = params[:name].to_slug |
47 | 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 | 127 | |
128 | 128 | # TODO: move this logic somewhere else (Domain class?) |
129 | 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 | 133 | @domain = Domain.find_by_name(request.host) |
131 | 134 | if @domain.nil? |
132 | 135 | @environment = Environment.default | ... | ... |
app/controllers/my_profile/cms_controller.rb
... | ... | @@ -180,6 +180,8 @@ class CmsController < MyProfileController |
180 | 180 | |
181 | 181 | post_only :set_home_page |
182 | 182 | def set_home_page |
183 | + return render_access_denied unless user.can_change_homepage? | |
184 | + | |
183 | 185 | article = params[:id].nil? ? nil : profile.articles.find(params[:id]) |
184 | 186 | profile.update_attribute(:home_page, article) |
185 | 187 | |
... | ... | @@ -218,6 +220,7 @@ class CmsController < MyProfileController |
218 | 220 | if @errors.any? |
219 | 221 | render :action => 'upload_files', :parent_id => @parent_id |
220 | 222 | else |
223 | + session[:notice] = _('File(s) successfully uploaded') | |
221 | 224 | if @back_to |
222 | 225 | redirect_to @back_to |
223 | 226 | elsif @parent | ... | ... |
app/controllers/my_profile/profile_design_controller.rb
... | ... | @@ -3,7 +3,16 @@ class ProfileDesignController < BoxOrganizerController |
3 | 3 | needs_profile |
4 | 4 | |
5 | 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 | 16 | def available_blocks |
8 | 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 | 78 | if request.post? |
79 | 79 | if @profile.destroy |
80 | 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 | 86 | else |
83 | 87 | session[:notice] = _('Could not delete profile') |
84 | 88 | end |
... | ... | @@ -100,6 +104,45 @@ class ProfileEditorController < MyProfileController |
100 | 104 | end |
101 | 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 | 146 | private |
104 | 147 | |
105 | 148 | def has_welcome_page |
... | ... | @@ -112,8 +155,4 @@ class ProfileEditorController < MyProfileController |
112 | 155 | end |
113 | 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 | 158 | end | ... | ... |
app/controllers/my_profile/profile_members_controller.rb
... | ... | @@ -20,7 +20,7 @@ class ProfileMembersController < MyProfileController |
20 | 20 | redirect_to :action => :last_admin |
21 | 21 | elsif @person.define_roles(@roles, profile) |
22 | 22 | session[:notice] = _('Roles successfuly updated') |
23 | - redirect_to :controller => 'profile_editor' | |
23 | + redirect_to :action => 'index' | |
24 | 24 | else |
25 | 25 | session[:notice] = _('Couldn\'t change the roles') |
26 | 26 | redirect_to :action => 'index' | ... | ... |
app/controllers/public/contact_controller.rb
1 | 1 | class ContactController < PublicController |
2 | 2 | |
3 | - before_filter :login_required | |
4 | - | |
5 | 3 | needs_profile |
6 | 4 | |
7 | 5 | def new |
8 | - @contact | |
6 | + @contact = build_contact | |
9 | 7 | if request.post? && params[:confirm] == 'true' |
10 | - @contact = user.build_contact(profile, params[:contact]) | |
11 | 8 | @contact.city = (!params[:city].blank? && City.exists?(params[:city])) ? City.find(params[:city]).name : nil |
12 | 9 | @contact.state = (!params[:state].blank? && State.exists?(params[:state])) ? State.find(params[:state]).name : nil |
13 | 10 | if @contact.deliver |
... | ... | @@ -16,8 +13,17 @@ class ContactController < PublicController |
16 | 13 | else |
17 | 14 | session[:notice] = _('Contact not sent') |
18 | 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 | 25 | else |
20 | - @contact = user.build_contact(profile) | |
26 | + Contact.new params[:contact].merge(dest: profile) | |
21 | 27 | end |
22 | 28 | end |
23 | 29 | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -433,19 +433,19 @@ module ApplicationHelper |
433 | 433 | end |
434 | 434 | |
435 | 435 | def theme_site_title |
436 | - theme_include('site_title') | |
436 | + @theme_site_title ||= theme_include 'site_title' | |
437 | 437 | end |
438 | 438 | |
439 | 439 | def theme_header |
440 | - theme_include('header') | |
440 | + @theme_header ||= theme_include 'header' | |
441 | 441 | end |
442 | 442 | |
443 | 443 | def theme_footer |
444 | - theme_include('footer') | |
444 | + @theme_footer ||= theme_include 'footer' | |
445 | 445 | end |
446 | 446 | |
447 | 447 | def theme_extra_navigation |
448 | - theme_include('navigation') | |
448 | + @theme_extra_navigation ||= theme_include 'navigation' | |
449 | 449 | end |
450 | 450 | |
451 | 451 | def is_testing_theme |
... | ... | @@ -674,13 +674,14 @@ module ApplicationHelper |
674 | 674 | html.join "\n" |
675 | 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 | 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 | 685 | end |
685 | 686 | |
686 | 687 | def file_field_or_thumbnail(label, image, i) |
... | ... | @@ -861,8 +862,9 @@ module ApplicationHelper |
861 | 862 | end |
862 | 863 | |
863 | 864 | def base_url |
864 | - environment.top_url | |
865 | + environment.top_url(request.scheme) | |
865 | 866 | end |
867 | + alias :top_url :base_url | |
866 | 868 | |
867 | 869 | def helper_for_article(article) |
868 | 870 | article_helper = ActionView::Base.new |
... | ... | @@ -944,9 +946,9 @@ module ApplicationHelper |
944 | 946 | # from Article model for an ArticleBlock. |
945 | 947 | def reference_to_article(text, article, anchor=nil) |
946 | 948 | if article.profile.domains.empty? |
947 | - href = "/#{article.url[:profile]}/" | |
949 | + href = "#{Noosfero.root}/#{article.url[:profile]}/" | |
948 | 950 | else |
949 | - href = "http://#{article.profile.domains.first.name}/" | |
951 | + href = "http://#{article.profile.domains.first.name}#{Noosfero.root}/" | |
950 | 952 | end |
951 | 953 | href += article.url[:page].join('/') |
952 | 954 | href += '#' + anchor if anchor |
... | ... | @@ -1325,10 +1327,8 @@ module ApplicationHelper |
1325 | 1327 | return '' if templates.count == 0 |
1326 | 1328 | return hidden_field_tag("#{field_name}[template_id]", templates.first.id) if templates.count == 1 |
1327 | 1329 | |
1328 | - counter = 0 | |
1329 | 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 | 1332 | end.join("\n") |
1333 | 1333 | |
1334 | 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 | 77 | content_tag('div', |
78 | 78 | radio_button(:article, :published, false) + |
79 | 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 | 133 | end |
87 | 134 | |
88 | 135 | def prepare_to_token_input(array) | ... | ... |
app/helpers/boxes_helper.rb
... | ... | @@ -170,49 +170,54 @@ module BoxesHelper |
170 | 170 | else |
171 | 171 | "before-block-#{block.id}" |
172 | 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 | 178 | end |
176 | 179 | |
177 | 180 | # makes the given block draggable so it can be moved away. |
178 | 181 | def block_handle(block) |
179 | - draggable_element("block-#{block.id}", :revert => true) | |
182 | + modifiable?(block) ? draggable_element("block-#{block.id}", :revert => true) : "" | |
180 | 183 | end |
181 | 184 | |
182 | 185 | def block_edit_buttons(block) |
183 | 186 | buttons = [] |
184 | 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 | 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 | 221 | end |
217 | 222 | |
218 | 223 | if block.respond_to?(:help) |
... | ... | @@ -248,5 +253,7 @@ module BoxesHelper |
248 | 253 | classes |
249 | 254 | end |
250 | 255 | |
251 | - | |
256 | + def modifiable?(block) | |
257 | + return !block.fixed || environment.admins.include?(user) | |
258 | + end | |
252 | 259 | end | ... | ... |
app/helpers/content_viewer_helper.rb
... | ... | @@ -45,7 +45,7 @@ module ContentViewerHelper |
45 | 45 | { article.environment.locales[translation.language] => { :href => url_for(translation.url) } } |
46 | 46 | end |
47 | 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 | 49 | :class => 'article-translations-menu simplemenu-trigger up'), |
50 | 50 | :class => 'article-translations') |
51 | 51 | end | ... | ... |
app/helpers/layout_helper.rb
... | ... | @@ -2,12 +2,31 @@ module LayoutHelper |
2 | 2 | |
3 | 3 | def body_classes |
4 | 4 | # Identify the current controller and action for the CSS: |
5 | + (logged_in? ? " logged-in" : "") + | |
5 | 6 | " controller-#{controller.controller_name}" + |
6 | 7 | " action-#{controller.controller_name}-#{controller.action_name}" + |
7 | 8 | " template-#{@layout_template || if profile.blank? then 'default' else profile.layout_template end}" + |
8 | 9 | (!profile.nil? && profile.is_on_homepage?(request.path,@page) ? " profile-homepage" : "") |
9 | 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 | 30 | def noosfero_javascript |
12 | 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 | 36 | unless plugins_javascripts.empty? |
18 | 37 | output += javascript_include_tag plugins_javascripts, :cache => "cache/plugins-#{Digest::MD5.hexdigest plugins_javascripts.to_s}" |
19 | 38 | end |
39 | + output += theme_javascript_ng.to_s | |
40 | + | |
20 | 41 | output |
21 | 42 | end |
22 | 43 | |
... | ... | @@ -85,6 +106,10 @@ module LayoutHelper |
85 | 106 | theme_path + '/style.css' |
86 | 107 | end |
87 | 108 | |
109 | + def layout_template | |
110 | + if profile then profile.layout_template else environment.layout_template end | |
111 | + end | |
112 | + | |
88 | 113 | def addthis_javascript |
89 | 114 | if NOOSFERO_CONF['addthis_enabled'] |
90 | 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 | 24 | } |
25 | 25 | } |
26 | 26 | |
27 | + COMMON_PROFILE_LIST_BLOCK = [ | |
28 | + :enterprises, | |
29 | + :people, | |
30 | + :communities | |
31 | + ] | |
32 | + | |
27 | 33 | # FIXME remove it after search_controler refactored |
28 | 34 | include EventsHelper |
29 | 35 | |
... | ... | @@ -100,6 +106,20 @@ module SearchHelper |
100 | 106 | end |
101 | 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 | 123 | def filters(asset) |
104 | 124 | return if !asset |
105 | 125 | klass = asset_class(asset) | ... | ... |
app/helpers/tinymce_helper.rb
... | ... | @@ -11,7 +11,7 @@ module TinymceHelper |
11 | 11 | end |
12 | 12 | |
13 | 13 | def tinymce_init_js options = {} |
14 | - options.merge! :document_base_url => environment.top_url, | |
14 | + options.merge! :document_base_url => top_url, | |
15 | 15 | :content_css => "/stylesheets/tinymce.css,#{macro_css_files}", |
16 | 16 | :plugins => %w[compat3x advlist autolink lists link image charmap print preview hr anchor pagebreak |
17 | 17 | searchreplace wordcount visualblocks visualchars code fullscreen | ... | ... |
app/models/approve_article.rb
... | ... | @@ -22,6 +22,7 @@ class ApproveArticle < Task |
22 | 22 | end |
23 | 23 | |
24 | 24 | settings_items :closing_statment, :article_parent_id, :highlighted |
25 | + settings_items :create_link, :type => :boolean, :default => false | |
25 | 26 | |
26 | 27 | def article_parent |
27 | 28 | Article.find_by_id article_parent_id.to_i |
... | ... | @@ -48,7 +49,11 @@ class ApproveArticle < Task |
48 | 49 | end |
49 | 50 | |
50 | 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 | 57 | end |
53 | 58 | |
54 | 59 | def title | ... | ... |
app/models/article.rb
... | ... | @@ -2,7 +2,14 @@ require 'hpricot' |
2 | 2 | |
3 | 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 | 14 | acts_as_having_image |
8 | 15 | |
... | ... | @@ -100,6 +107,11 @@ class Article < ActiveRecord::Base |
100 | 107 | self.activity.destroy if self.activity |
101 | 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 | 115 | xss_terminate :only => [ :name ], :on => 'validation', :with => 'white_list' |
104 | 116 | |
105 | 117 | scope :in_category, lambda { |category| |
... | ... | @@ -330,7 +342,7 @@ class Article < ActiveRecord::Base |
330 | 342 | def belongs_to_blog? |
331 | 343 | self.parent and self.parent.blog? |
332 | 344 | end |
333 | - | |
345 | + | |
334 | 346 | def belongs_to_forum? |
335 | 347 | self.parent and self.parent.forum? |
336 | 348 | end |
... | ... | @@ -442,6 +454,7 @@ class Article < ActiveRecord::Base |
442 | 454 | if self.parent && !self.parent.published? |
443 | 455 | return false |
444 | 456 | end |
457 | + | |
445 | 458 | true |
446 | 459 | else |
447 | 460 | false |
... | ... | @@ -475,14 +488,17 @@ class Article < ActiveRecord::Base |
475 | 488 | {:conditions => [" articles.published = ? OR |
476 | 489 | articles.last_changed_by_id = ? OR |
477 | 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 | 494 | end |
481 | 495 | |
496 | + | |
482 | 497 | def display_unpublished_article_to?(user) |
483 | 498 | user == author || allow_view_private_content?(user) || user == profile || |
484 | 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 | 502 | end |
487 | 503 | |
488 | 504 | def display_to?(user = nil) | ... | ... |
app/models/block.rb
1 | 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 | 5 | # to be able to generate HTML |
6 | 6 | include ActionView::Helpers::UrlHelper |
... | ... | @@ -64,7 +64,7 @@ class Block < ActiveRecord::Base |
64 | 64 | end |
65 | 65 | |
66 | 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 | 68 | end |
69 | 69 | |
70 | 70 | def display_always(context) |
... | ... | @@ -75,7 +75,7 @@ class Block < ActiveRecord::Base |
75 | 75 | if context[:article] |
76 | 76 | return context[:article] == owner.home_page |
77 | 77 | else |
78 | - return context[:request_path] == '/' | |
78 | + return home_page_path?(context[:request_path]) | |
79 | 79 | end |
80 | 80 | end |
81 | 81 | |
... | ... | @@ -83,7 +83,7 @@ class Block < ActiveRecord::Base |
83 | 83 | if context[:article] |
84 | 84 | return context[:article] != owner.home_page |
85 | 85 | else |
86 | - return context[:request_path] != '/' + (owner.kind_of?(Profile) ? owner.identifier : '') | |
86 | + return !home_page_path?(context[:request_path]) | |
87 | 87 | end |
88 | 88 | end |
89 | 89 | |
... | ... | @@ -110,11 +110,14 @@ class Block < ActiveRecord::Base |
110 | 110 | # * <tt>'all'</tt>: the block is always displayed |
111 | 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 | 116 | # returns the description of the block, used when the user sees a list of |
114 | 117 | # blocks to choose one to include in the design. |
115 | 118 | # |
116 | 119 | # Must be redefined in subclasses to match the description of each block |
117 | - # type. | |
120 | + # type. | |
118 | 121 | def self.description |
119 | 122 | '(dummy)' |
120 | 123 | end |
... | ... | @@ -124,13 +127,13 @@ class Block < ActiveRecord::Base |
124 | 127 | # This method can return several types of objects: |
125 | 128 | # |
126 | 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 | 131 | # * <tt>Proc</tt>: the Proc is evaluated in the scope of BoxesHelper. The |
129 | 132 | # block can then use <tt>render</tt>, <tt>link_to</tt>, etc. |
130 | 133 | # |
131 | 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 | 137 | def content(args={}) |
135 | 138 | "This is block number %d" % self.id |
136 | 139 | end |
... | ... | @@ -221,6 +224,7 @@ class Block < ActiveRecord::Base |
221 | 224 | 'all' => _('All users'), |
222 | 225 | 'logged' => _('Logged'), |
223 | 226 | 'not_logged' => _('Not logged'), |
227 | + 'followers' => owner.class != Environment && owner.organization? ? _('Members') : _('Friends') | |
224 | 228 | } |
225 | 229 | end |
226 | 230 | |
... | ... | @@ -239,4 +243,21 @@ class Block < ActiveRecord::Base |
239 | 243 | self.position = block.position |
240 | 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 | 263 | end | ... | ... |
app/models/blog.rb
... | ... | @@ -53,7 +53,7 @@ class Blog < Folder |
53 | 53 | def prepare_external_feed |
54 | 54 | unless self.external_feed_data.nil? |
55 | 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 | 57 | else |
58 | 58 | self.build_external_feed(self.external_feed_data, :without_protection => true) |
59 | 59 | end | ... | ... |
app/models/community.rb
app/models/domain.rb
... | ... | @@ -92,4 +92,11 @@ class Domain < ActiveRecord::Base |
92 | 92 | @hosting = {} |
93 | 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 | 102 | end | ... | ... |
app/models/enterprise.rb
... | ... | @@ -100,7 +100,12 @@ class Enterprise < Organization |
100 | 100 | self.tasks.where(:type => 'EnterpriseActivation').first |
101 | 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 | 109 | return if enabled |
105 | 110 | # must be set first for the following to work |
106 | 111 | self.enabled = true |
... | ... | @@ -162,7 +167,7 @@ class Enterprise < Organization |
162 | 167 | end |
163 | 168 | |
164 | 169 | def default_template |
165 | - environment.enterprise_template | |
170 | + environment.enterprise_default_template | |
166 | 171 | end |
167 | 172 | |
168 | 173 | def template_with_inactive_enterprise | ... | ... |
app/models/environment.rb
... | ... | @@ -285,6 +285,7 @@ class Environment < ActiveRecord::Base |
285 | 285 | www.flickr.com |
286 | 286 | www.gmodules.com |
287 | 287 | www.youtube.com |
288 | + openstreetmap.org | |
288 | 289 | ] + ('a' .. 'z').map{|i| "#{i}.yimg.com"} |
289 | 290 | |
290 | 291 | settings_items :enabled_plugins, :type => Array, :default => Noosfero::Plugin.available_plugin_names |
... | ... | @@ -658,8 +659,8 @@ class Environment < ActiveRecord::Base |
658 | 659 | { :controller => 'admin_panel', :action => 'index' } |
659 | 660 | end |
660 | 661 | |
661 | - def top_url | |
662 | - url = 'http://' | |
662 | + def top_url(scheme = 'http') | |
663 | + url = scheme + '://' | |
663 | 664 | url << (Noosfero.url_options.key?(:host) ? Noosfero.url_options[:host] : default_hostname) |
664 | 665 | url << ':' << Noosfero.url_options[:port].to_s if Noosfero.url_options.key?(:port) |
665 | 666 | url << Noosfero.root('') |
... | ... | @@ -730,31 +731,50 @@ class Environment < ActiveRecord::Base |
730 | 731 | ] |
731 | 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 | 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 | 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 | 756 | end |
741 | 757 | |
742 | - def person_template | |
758 | + def person_default_template | |
743 | 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 | 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 | 769 | end |
750 | 770 | |
751 | - def enterprise_template | |
771 | + def enterprise_default_template | |
752 | 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 | 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 | 778 | end |
759 | 779 | |
760 | 780 | def inactive_enterprise_template |
... | ... | @@ -856,10 +876,10 @@ class Environment < ActiveRecord::Base |
856 | 876 | person_template.visible = false |
857 | 877 | person_template.save! |
858 | 878 | |
859 | - self.enterprise_template = enterprise_template | |
879 | + self.enterprise_default_template = enterprise_template | |
860 | 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 | 883 | self.save! |
864 | 884 | end |
865 | 885 | |
... | ... | @@ -923,6 +943,10 @@ class Environment < ActiveRecord::Base |
923 | 943 | locales_list |
924 | 944 | end |
925 | 945 | |
946 | + def has_license? | |
947 | + self.licenses.any? | |
948 | + end | |
949 | + | |
926 | 950 | private |
927 | 951 | |
928 | 952 | def default_language_available | ... | ... |
app/models/event.rb
... | ... | @@ -19,7 +19,7 @@ class Event < Article |
19 | 19 | maybe_add_http(self.setting[:link]) |
20 | 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 | 24 | def initialize(*args) |
25 | 25 | super(*args) | ... | ... |
app/models/external_feed.rb
... | ... | @@ -10,7 +10,7 @@ class ExternalFeed < ActiveRecord::Base |
10 | 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 | 15 | def add_item(title, link, date, content) |
16 | 16 | return if content.blank? | ... | ... |
app/models/folder.rb
... | ... | @@ -12,7 +12,7 @@ class Folder < Article |
12 | 12 | |
13 | 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 | 17 | include WhiteListFilter |
18 | 18 | filter_iframes :body | ... | ... |
app/models/invitation.rb
... | ... | @@ -76,14 +76,12 @@ class Invitation < Task |
76 | 76 | {:person => person, :target => user.person} |
77 | 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 | 85 | end |
88 | 86 | end |
89 | 87 | end | ... | ... |
... | ... | @@ -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 | 25 | scope :not_members_of, lambda { |resources| |
26 | 26 | resources = [resources] if !resources.kind_of?(Array) |
27 | 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 | 37 | def has_permission_with_plugins?(permission, profile) |
... | ... | @@ -85,6 +91,10 @@ class Person < Profile |
85 | 91 | |
86 | 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 | 98 | def can_control_scrap?(scrap) |
89 | 99 | begin |
90 | 100 | !self.scraps(scrap).nil? |
... | ... | @@ -311,7 +321,7 @@ class Person < Profile |
311 | 321 | end |
312 | 322 | |
313 | 323 | def default_template |
314 | - environment.person_template | |
324 | + environment.person_default_template | |
315 | 325 | end |
316 | 326 | |
317 | 327 | def apply_type_specific_template(template) | ... | ... |
app/models/person_notifier.rb
app/models/product.rb
... | ... | @@ -10,7 +10,7 @@ class Product < ActiveRecord::Base |
10 | 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 | 15 | def self.default_search_display |
16 | 16 | 'full' | ... | ... |
app/models/profile.rb
... | ... | @@ -107,8 +107,8 @@ class Profile < ActiveRecord::Base |
107 | 107 | alias_method_chain :count, :distinct |
108 | 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 | 112 | end |
113 | 113 | |
114 | 114 | acts_as_having_boxes |
... | ... | @@ -120,7 +120,9 @@ class Profile < ActiveRecord::Base |
120 | 120 | end |
121 | 121 | |
122 | 122 | scope :visible, :conditions => { :visible => true } |
123 | + scope :disabled, :conditions => { :visible => false } | |
123 | 124 | scope :public, :conditions => { :visible => true, :public_profile => true } |
125 | + scope :enabled, :conditions => { :enabled => true } | |
124 | 126 | |
125 | 127 | # Subclasses must override this method |
126 | 128 | scope :more_popular |
... | ... | @@ -404,7 +406,7 @@ class Profile < ActiveRecord::Base |
404 | 406 | end |
405 | 407 | |
406 | 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 | 411 | include WhiteListFilter |
410 | 412 | filter_iframes :custom_header, :custom_footer |
... | ... | @@ -803,7 +805,7 @@ private :generate_url, :url_options |
803 | 805 | end |
804 | 806 | |
805 | 807 | include Noosfero::Plugin::HotSpot |
806 | - | |
808 | + | |
807 | 809 | def folder_types |
808 | 810 | types = Article.folder_types |
809 | 811 | plugins.dispatch(:content_types).each {|type| |
... | ... | @@ -927,6 +929,13 @@ private :generate_url, :url_options |
927 | 929 | end |
928 | 930 | |
929 | 931 | def disable |
932 | + self.visible = false | |
933 | + self.save | |
934 | + end | |
935 | + | |
936 | + def enable | |
937 | + self.visible = true | |
938 | + self.save | |
930 | 939 | end |
931 | 940 | |
932 | 941 | def control_panel_settings_button | ... | ... |
app/views/admin_panel/index.html.erb
... | ... | @@ -20,6 +20,7 @@ |
20 | 20 | <tr><td><%= link_to _('Users'), :controller => 'users' %></td></tr> |
21 | 21 | <tr><td><%= link_to _('Profile templates'), :controller => 'templates' %></td></tr> |
22 | 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 | 24 | </table> |
24 | 25 | |
25 | 26 | ... | ... |
app/views/admin_panel/manage_organizations_status.html.erb
0 → 100644
... | ... | @@ -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 | 70 | \ No newline at end of file | ... | ... |
app/views/box_organizer/edit.html.erb
... | ... | @@ -5,6 +5,12 @@ |
5 | 5 | |
6 | 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 | 14 | <%= render :partial => partial_for_class(@block.class) %> |
9 | 15 | |
10 | 16 | <div class="display"> | ... | ... |
app/views/cms/_general_fields.html.erb
1 | 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 | 20 | <h5><%= _('Uploading files to %s') % content_tag('code', @target) %></h5> |
21 | 21 | |
22 | 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 | 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 | 2 | <%= _('Content management') %> |
3 | 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 | 6 | <div class="cms-homepage"> |
7 | 7 | <%= _('Profile homepage:') %> |
8 | 8 | <% if profile.home_page %> |
... | ... | @@ -69,7 +69,7 @@ |
69 | 69 | <%= expirable_button article, :edit, _('Edit'), {:action => 'edit', :id => article.id} if !remove_content_button(:edit, article) %> |
70 | 70 | <%= button_without_text :eyes, _('Public view'), article.view_url %> |
71 | 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 | 73 | <% if profile.home_page != article %> |
74 | 74 | <%= expirable_button article, :home, _('Use as homepage'), { :action => 'set_home_page', :id => article.id }, :method => :post %> |
75 | 75 | <% else %> | ... | ... |
app/views/contact/new.html.erb
... | ... | @@ -13,11 +13,16 @@ |
13 | 13 | |
14 | 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 | 22 | <% unless environment.enabled?('disable_select_city_for_contact') || location_fields.blank? %> |
19 | 23 | <%= labelled_form_field _('City and state'), location_fields %> |
20 | 24 | <% end %> |
25 | + | |
21 | 26 | <%= required f.text_field(:subject) %> |
22 | 27 | |
23 | 28 | <%= render :file => 'shared/tiny_mce' %> |
... | ... | @@ -25,5 +30,9 @@ |
25 | 30 | |
26 | 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 | 38 | <% end %> | ... | ... |
app/views/content_viewer/view_page.html.erb
... | ... | @@ -70,37 +70,36 @@ |
70 | 70 | |
71 | 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 | 75 | <h3 <%= 'class="no-comments-yet"' if @comments_count == 0 %>> |
77 | 76 | <%= display_number_of_comments(@comments_count) %> |
78 | 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 | 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 | 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 | 104 | </div><!-- end id="article" --> |
106 | 105 | <%= add_zoom_to_article_images %> | ... | ... |
app/views/enterprise_registration/basic_information.html.erb
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | |
21 | 21 | <%= labelled_form_for :create_enterprise do |f| %> |
22 | 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 | 24 | <%= render :partial => 'shared/organization_custom_fields', :locals => { :f => f, :object_name => :create_enterprise, :profile => @create_enterprise } %> |
25 | 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 | 3 | <div id='agenda-toolbar'> |
4 | 4 | <%= button :back, _('Back to %s') % profile.name, profile.url %> |
5 | 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 | 7 | <% end %> |
8 | 8 | </div> |
9 | 9 | ... | ... |
app/views/layouts/application-ng.html.erb
1 | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
2 | -<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 | 3 | <head> |
4 | 4 | <title><%= h page_title %></title> |
5 | 5 | <%= yield(:feeds) %> |
... | ... | @@ -12,24 +12,9 @@ |
12 | 12 | <meta name="twitter:title" content="<%= h page_title %>"> |
13 | 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 | 15 | <!-- site root --> |
23 | 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 | 18 | <link rel="shortcut icon" href="<%= image_path(theme_favicon) %>" type="image/x-icon" /> |
34 | 19 | <%= noosfero_javascript %> |
35 | 20 | <%= noosfero_stylesheets %> |
... | ... | @@ -72,10 +57,7 @@ |
72 | 57 | <div id="navigation-end"></div> |
73 | 58 | </div><!-- end id="navigation" --> |
74 | 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 | 61 | </div><!-- end id="content" --> |
80 | 62 | </div><!-- end id="wrap-2" --> |
81 | 63 | </div><!-- end id="wrap-1" --> |
... | ... | @@ -84,7 +66,6 @@ |
84 | 66 | <%= theme_footer %> |
85 | 67 | </div><!-- end id="theme-footer" --> |
86 | 68 | <%= noosfero_layout_features %> |
87 | - <%= theme_javascript_ng %> | |
88 | 69 | <%= addthis_javascript %> |
89 | 70 | <%= |
90 | 71 | @plugins.dispatch(:body_ending).map do |content| | ... | ... |
app/views/layouts/application.html.erb
1 | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
2 | -<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 | 3 | <head> |
4 | 4 | <title><%= h page_title %></title> |
5 | 5 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
... | ... | @@ -68,7 +68,7 @@ |
68 | 68 | |
69 | 69 | <div id="navigation_bar"> |
70 | 70 | <%= link_to "<span>"+ @environment.name() +"</span>", |
71 | - @environment.top_url, | |
71 | + top_url, | |
72 | 72 | :id=>"menu_link_to_envhome", |
73 | 73 | :title=>@environment.name %> |
74 | 74 | <% unless environment.enabled?(:disable_categories) %> | ... | ... |
app/views/manage_products/_edit_info.html.erb
... | ... | @@ -47,7 +47,7 @@ |
47 | 47 | <%= button_to_function( |
48 | 48 | :add, |
49 | 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 | 52 | <%= hidden_field_tag "product[qualifiers_list][nil]" %> |
53 | 53 | <% end %> | ... | ... |
app/views/profile_editor/edit.html.erb
1 | 1 | <h1><%= _('Profile settings for %s') % profile.name %></h1> |
2 | 2 | |
3 | +<%= javascript_include_tag 'deactivate_profile' %> | |
3 | 4 | <%= error_messages_for :profile_data %> |
4 | 5 | |
5 | 6 | <%= labelled_form_for :profile_data, :html => { :id => 'profile-data', :multipart => true } do |f| %> |
... | ... | @@ -73,6 +74,15 @@ |
73 | 74 | <% if user && user.has_permission?('destroy_profile', profile) %> |
74 | 75 | <% button_bar(:id => 'delete-profile') do %> |
75 | 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 | 86 | <% end %> |
77 | 87 | <% end %> |
78 | 88 | -<% end %> |
89 | +<% end %> | |
79 | 90 | \ No newline at end of file | ... | ... |
app/views/search/_display_results.html.erb
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | |
15 | 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 | 18 | <ul> |
19 | 19 | <% search[:results].each do |hit| %> |
20 | 20 | <% partial = partial_for_class(hit.class, display) %> | ... | ... |
app/views/tasks/_approve_article_accept_details.html.erb
1 | 1 | <%= render :file => 'shared/tiny_mce' %> |
2 | 2 | |
3 | +<%= labelled_form_field(_('Create a link'), f.check_box(:create_link)) %> | |
4 | + | |
3 | 5 | <%= labelled_form_field(_('Name for publishing'), f.text_field(:name)) %> |
4 | 6 | <%= select_profile_folder(_('Select the folder where the article must be published'), "tasks[#{task.id}][task][article_parent_id]", task.target) %> |
5 | 7 | <%= labelled_form_field(_('Highlight this article'), f.check_box(:highlighted)) %> | ... | ... |
app/views/templates/index.html.erb
... | ... | @@ -2,10 +2,11 @@ |
2 | 2 | |
3 | 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 | 6 | [_('Community') , environment.communities.templates, 'community' ], |
7 | 7 | [_('Enterprise'), environment.enterprises.templates, 'enterprise']] %> |
8 | 8 | |
9 | + | |
9 | 10 | <% list_of_templates.each do |title, templates, kind|%> |
10 | 11 | <div class='template-kind'> |
11 | 12 | <h2><%= title %></h2> |
... | ... | @@ -20,6 +21,11 @@ |
20 | 21 | <td> |
21 | 22 | <%#= image_tag "icons-app/#{kind}-icon.png" %> |
22 | 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 | 29 | </td> |
24 | 30 | <td> |
25 | 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 | 111 | # Make sure the secret is at least 30 characters and all random, |
112 | 112 | # no regular words or you'll be exposed to dictionary attacks. |
113 | 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 | 116 | config.paths['db/migrate'] += Dir.glob "#{Rails.root}/{baseplugins,config/plugins}/*/db/migrate" |
122 | 117 | config.i18n.load_path += Dir.glob "#{Rails.root}/{baseplugins,config/plugins}/*/locales/*.{rb,yml}" | ... | ... |
... | ... | @@ -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 | 3 | # from http://russbrooks.com/2010/10/20/rails-cache-memcache-on-passenger-with-smart-spawning |
4 | 4 | PhusionPassenger.on_event :starting_worker_process do |forked| |
5 | 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 | 7 | end |
8 | 8 | end |
9 | 9 | end | ... | ... |
db/migrate/20140724134600_remove_environment_statistics_block_sooner.rb
0 → 100644
... | ... | @@ -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 | 11 | # |
12 | 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 | 16 | create_table "abuse_reports", :force => true do |t| |
17 | 17 | t.integer "reporter_id" |
... | ... | @@ -149,6 +149,7 @@ ActiveRecord::Schema.define(:version => 20140827191326) do |
149 | 149 | t.integer "spam_comments_count", :default => 0 |
150 | 150 | t.integer "author_id" |
151 | 151 | t.integer "created_by_id" |
152 | + t.boolean "show_to_followers", :default => false | |
152 | 153 | end |
153 | 154 | |
154 | 155 | add_index "articles", ["comments_count"], :name => "index_articles_on_comments_count" |
... | ... | @@ -315,7 +316,7 @@ ActiveRecord::Schema.define(:version => 20140827191326) do |
315 | 316 | create_table "external_feeds", :force => true do |t| |
316 | 317 | t.string "feed_title" |
317 | 318 | t.datetime "fetched_at" |
318 | - t.string "address" | |
319 | + t.text "address" | |
319 | 320 | t.integer "blog_id", :null => false |
320 | 321 | t.boolean "enabled", :default => true, :null => false |
321 | 322 | t.boolean "only_once", :default => true, :null => false | ... | ... |
debian/control
... | ... | @@ -61,6 +61,12 @@ Depends: |
61 | 61 | dbconfig-common, |
62 | 62 | adduser, |
63 | 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 | 70 | ${misc:Depends} |
65 | 71 | Recommends: |
66 | 72 | postgresql, | ... | ... |
etc/init.d/noosfero
etc/noosfero/varnish-noosfero.vcl
... | ... | @@ -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 | 20 | sub vcl_error { |
14 | 21 | set obj.http.Content-Type = "text/html; charset=utf-8"; |
15 | 22 | ... | ... |
etc/pound.cfg
... | ... | @@ -5,7 +5,7 @@ TimeOut 300 |
5 | 5 | Control "/var/run/pound/poundctl.socket" |
6 | 6 | |
7 | 7 | ListenHTTP |
8 | - Address 192.168.1.86 | |
8 | + Address 0.0.0.0 | |
9 | 9 | Port 80 |
10 | 10 | xHTTP 1 |
11 | 11 | # uncomment code above if you are using chat |
... | ... | @@ -22,7 +22,8 @@ ListenHTTP |
22 | 22 | End |
23 | 23 | |
24 | 24 | ListenHTTPS |
25 | - Address 192.168.1.86 | |
25 | + Address 0.0.0.0 | |
26 | + AddHeader "X-Forwarded-Proto: https" | |
26 | 27 | Port 443 |
27 | 28 | Cert "/etc/noosfero/ssl/noosfero.pem" |
28 | 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 | 47 | Then I should see "Access denied" |
48 | 48 | |
49 | 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 | 72 | Scenario: show exception users field when you choose the private option |
51 | 73 | Given the following communities |
52 | 74 | | name | identifier | owner | | ... | ... |
features/step_definitions/activate_enterprise_steps.rb
lib/noosfero.rb
... | ... | @@ -70,16 +70,6 @@ module Noosfero |
70 | 70 | end |
71 | 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 | 73 | def self.url_options |
84 | 74 | case Rails.env |
85 | 75 | when 'development' | ... | ... |
lib/noosfero/i18n.rb
... | ... | @@ -4,15 +4,23 @@ class Object |
4 | 4 | include FastGettext::Translation |
5 | 5 | alias :gettext :_ |
6 | 6 | alias :ngettext :n_ |
7 | + alias :c_ :_ | |
8 | + alias :cN_ :N_ | |
7 | 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 | 14 | repos = [] |
12 | 15 | if File.exists?(custom_locale_dir) |
13 | 16 | repos << FastGettext::TranslationRepository.build('environment', :type => 'po', :path => custom_locale_dir) |
14 | 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 | 24 | # translations in place? |
17 | 25 | locale_dir = Rails.root.join('locale') |
18 | 26 | if File.exists?(locale_dir) |
... | ... | @@ -22,3 +30,15 @@ end |
22 | 30 | |
23 | 31 | FastGettext.add_text_domain 'noosfero', :type => :chain, :chain => repos |
24 | 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 | 88 | # This is a generic method that initialize any possible filter defined by a |
89 | 89 | # plugin to a specific controller |
90 | 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 | 114 | end |
104 | 115 | end |
105 | 116 | end |
... | ... | @@ -406,6 +417,12 @@ class Noosfero::Plugin |
406 | 417 | nil |
407 | 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 | 426 | # -> Adds fields to the signup form |
410 | 427 | # returns = proc that creates html code |
411 | 428 | def signup_extra_contents |
... | ... | @@ -557,6 +574,12 @@ class Noosfero::Plugin |
557 | 574 | [] |
558 | 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 | 583 | # -> Adds additional blocks to profiles and environments. |
561 | 584 | # Your plugin must implements a class method called 'extra_blocks' |
562 | 585 | # that returns a hash with the following syntax. | ... | ... |
lib/noosfero/version.rb
lib/tasks/ci.rake
... | ... | @@ -5,7 +5,13 @@ namespace :ci do |
5 | 5 | |
6 | 6 | current_branch = `git rev-parse --abbrev-ref HEAD`.strip |
7 | 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 | 11 | to = ENV['HEAD'] || current_branch |
12 | + | |
13 | + puts "Testing changes between #{from} and #{to} ..." | |
14 | + | |
9 | 15 | changed_files = `git diff --name-only #{from}..#{to}`.split.select do |f| |
10 | 16 | File.exist?(f) && f.split(File::SEPARATOR).first != 'vendor' |
11 | 17 | end |
... | ... | @@ -33,14 +39,23 @@ namespace :ci do |
33 | 39 | end |
34 | 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 | 47 | sh 'testrb', '-Itest', *tests unless tests.empty? |
37 | 48 | sh 'cucumber', *features unless features.empty? |
38 | 49 | sh 'xvfb-run', 'cucumber', '-p', 'selenium', *features unless features.empty? |
39 | 50 | |
40 | 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 | 59 | end |
45 | 60 | |
46 | 61 | end | ... | ... |
lib/tasks/gettext.rake
... | ... | @@ -16,6 +16,14 @@ file makemo_stamp => Dir.glob('po/*/noosfero.po') do |
16 | 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 | 27 | FileUtils.mkdir_p 'tmp' |
20 | 28 | FileUtils.touch makemo_stamp |
21 | 29 | end |
... | ... | @@ -54,7 +62,6 @@ task :updatepo do |
54 | 62 | 'config/initializers/*.rb', |
55 | 63 | 'public/*.html.erb', |
56 | 64 | 'public/designs/themes/{base,noosfero,profile-base}/*.{rhtml,html.erb}', |
57 | - 'plugins/**/{controllers,models,lib,views}/**/*.{rhtml,html.erb,rb}', | |
58 | 65 | ].map { |pattern| Dir.glob(pattern) }.flatten |
59 | 66 | |
60 | 67 | require 'gettext' |
... | ... | @@ -67,7 +74,33 @@ task :updatepo do |
67 | 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 | 104 | end |
72 | 105 | |
73 | 106 | task :checkpo do | ... | ... |
lib/tasks/plugins_tests.rake
1 | -@broken_plugins = %w[ | |
1 | +$broken_plugins = %w[ | |
2 | 2 | anti_spam |
3 | 3 | bsc |
4 | 4 | comment_classification |
5 | 5 | ldap |
6 | 6 | solr |
7 | + stoa | |
7 | 8 | ] |
8 | 9 | |
9 | 10 | @all_plugins = Dir.glob('plugins/*').map { |f| File.basename(f) } - ['template'] |
... | ... | @@ -204,14 +205,14 @@ namespace :test do |
204 | 205 | @all_tasks.each do |taskname| |
205 | 206 | desc "Run #{taskname} tests for all plugins" |
206 | 207 | task taskname do |
207 | - test_sequence(@all_plugins - @broken_plugins, taskname) | |
208 | + test_sequence(@all_plugins - $broken_plugins, taskname) | |
208 | 209 | end |
209 | 210 | end |
210 | 211 | end |
211 | 212 | |
212 | 213 | desc "Run all tests for all plugins" |
213 | 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 | 216 | plugins_status_report(failed) |
216 | 217 | end |
217 | 218 | end |
... | ... | @@ -228,7 +229,7 @@ def plugins_status_report(failed) |
228 | 229 | printf ('-' * w) + ' ' + ('-' * 20) + "\n" |
229 | 230 | |
230 | 231 | @all_plugins.each do |plugin| |
231 | - if @broken_plugins.include?(plugin) | |
232 | + if $broken_plugins.include?(plugin) | |
232 | 233 | status = "SKIP" |
233 | 234 | elsif !failed[plugin] || failed[plugin].empty? |
234 | 235 | status = "PASS" | ... | ... |
lib/tasks/release.rake
... | ... | @@ -137,7 +137,17 @@ EOF |
137 | 137 | new_version += '~rc1' |
138 | 138 | end |
139 | 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 | 151 | end |
142 | 152 | |
143 | 153 | puts "Current version: #{$version}" | ... | ... |
lib/unifreire_terminology.rb
... | ... | @@ -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 | -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 @@ |
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 @@ |
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 | <%= labelled_form_field _('API key'), f.text_field(:api_key, :size => 40) %> |
8 | 8 | |
9 | 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 | 11 | <% end %> |
12 | 12 | |
13 | 13 | <% end %> | ... | ... |
plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb
... | ... | @@ -53,7 +53,7 @@ class BreadcrumbsPlugin::ContentBreadcrumbsBlock < Block |
53 | 53 | |
54 | 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 | 58 | def cms_action(action) |
59 | 59 | CMS_ACTIONS[action.to_sym] || action | ... | ... |
... | ... | @@ -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 | 101 | else |
102 | 102 | content = lambda { product.enterprise.name } |
103 | 103 | end |
104 | - properties << { :name => _('Supplier'), :content => content } | |
104 | + properties << { :name => c_('Supplier'), :content => content } | |
105 | 105 | end |
106 | 106 | |
107 | 107 | def profile_tabs | ... | ... |
plugins/bsc/lib/bsc_plugin/bsc_helper.rb
... | ... | @@ -4,9 +4,9 @@ module BscPlugin::BscHelper |
4 | 4 | |
5 | 5 | def token_input_field_tag(name, element_id, search_action, options = {}, text_field_options = {}, html_options = {}) |
6 | 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 | 10 | options[:search_delay] ||= 1000 |
11 | 11 | options[:prevent_duplicates] ||= true |
12 | 12 | options[:backspace_delete_item] ||= false | ... | ... |
plugins/bsc/lib/bsc_plugin/contract.rb
... | ... | @@ -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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 | 5 | <%= render :partial => 'shared/fields', :locals => {:f => f, :profile => @bsc} %> |
6 | 6 | |
7 | 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 | 10 | <% end %> |
11 | 11 | <% end %> | ... | ... |
plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | :focus => true }) %> |
7 | 7 | |
8 | 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 | 11 | <% end %> |
12 | 12 | <% end %> | ... | ... |
plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | <%= labelled_form_field(_('Status'), f.select(:status, BscPlugin::Contract::Status.types. |
11 | 11 | map { |s| [BscPlugin::Contract::Status.names[s], s] })) %> |
12 | 12 | <%= f.text_field(:number_of_producers, :size => 8, :id => 'bsc-plugin-contract-spinner') %> |
13 | - <%= _('Enterprises')+':' %> | |
13 | + <%= c_('Enterprises')+':' %> | |
14 | 14 | |
15 | 15 | <% search_action = {:action => 'search_contract_enterprises', :profile => profile.identifier} %> |
16 | 16 | <%= token_input_field_tag(:enterprises, 'involved-enterprises', search_action, |
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 | |
20 | 20 | <table id="bsc-plugin-sales-table" class="alternate-colors"> |
21 | 21 | <tr> |
22 | - <th class="bsc-plugin-sales-products-column"><%= _('Products') %></th> | |
22 | + <th class="bsc-plugin-sales-products-column"><%= c_('Products') %></th> | |
23 | 23 | <th class="bsc-plugin-sales-quantity-column" ><%= _('Quantity') %></th> |
24 | 24 | <th class="bsc-plugin-sales-price-column" ><%= _('Unit price') %></th> |
25 | 25 | </tr> |
... | ... | @@ -34,13 +34,13 @@ |
34 | 34 | |
35 | 35 | <%= labelled_form_field( _('Supply period'), |
36 | 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 | 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 | 41 | <%= f.text_area(:annotations, :rows => 5, :cols => 68) %> |
42 | 42 | <% button_bar do%> |
43 | - <%= submit_button(:save, _('Save'), :cancel => {:action => 'manage_contracts'})%> | |
43 | + <%= submit_button(:save, c_('Save'), :cancel => {:action => 'manage_contracts'})%> | |
44 | 44 | <% end %> |
45 | 45 | <% end %> |
46 | 46 | |
... | ... | @@ -55,8 +55,8 @@ |
55 | 55 | BSCContracts.tokenInputOptions = { |
56 | 56 | minChars: 3, |
57 | 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 | 60 | searchDelay: 1000, |
61 | 61 | preventDuplicates: true, |
62 | 62 | backspaceDeleteItem: false, | ... | ... |
plugins/bsc/views/bsc_plugin_myprofile/create_enterprise.html.erb
... | ... | @@ -9,12 +9,12 @@ |
9 | 9 | <%= required f.text_field 'name', :onchange => "updateUrlField(this, 'create_enterprise_identifier')", :size => 40 %> |
10 | 10 | <%= render :partial => 'shared/organization_custom_fields', :locals => { :f => f, :object_name => :create_enterprise, :profile => @create_enterprise } %> |
11 | 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 | 13 | <p style="border-bottom: 2px solid #babdb6"></p> |
14 | 14 | <%= render :partial => 'similar_enterprises', :locals => {:bsc => profile}%> |
15 | 15 | |
16 | 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 | 18 | <% end %> |
19 | 19 | <% end %> |
20 | 20 | ... | ... |
plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb
... | ... | @@ -19,8 +19,8 @@ |
19 | 19 | <%= button('add', _('Add new enterprise'), {:action => 'create_enterprise'}) %> |
20 | 20 | |
21 | 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 | 24 | <% end %> |
25 | 25 | |
26 | 26 | <% end %> | ... | ... |
plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | <br style="clear:both" /> |
10 | 10 | <% end %> |
11 | 11 | <br style="clear:both" /> |
12 | - <%= submit_button(:save, _('Filter')) %> | |
12 | + <%= submit_button(:save, c_('Filter')) %> | |
13 | 13 | </div> |
14 | 14 | |
15 | 15 | <div id='bsc-plugin-contracts-results'> |
... | ... | @@ -31,8 +31,8 @@ |
31 | 31 | <%= content_tag('i', show_date(contract.created_at)) %> |
32 | 32 | </td> |
33 | 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 | 36 | </td> |
37 | 37 | </tr> |
38 | 38 | <% end %> |
... | ... | @@ -41,7 +41,7 @@ |
41 | 41 | <% end %> |
42 | 42 | |
43 | 43 | <% button_bar do %> |
44 | - <%= button(:back, _('Go back'), :controller => 'profile_editor') %> | |
44 | + <%= button(:back, c_('Go back'), :controller => 'profile_editor') %> | |
45 | 45 | <%= button(:new, _('Create new contract'), :action => 'new_contract')%> |
46 | 46 | <% end %> |
47 | 47 | </div> | ... | ... |