Commit 71439c6c8380b07ed1b54c5a89c177275e71ef74

Authored by Rodrigo Souto
2 parents be50abba ef453b43

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.

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