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.

Gemfile
1 1 source "https://rubygems.org"
2 2 gem 'rails', '~> 3.2.19'
  3 +gem 'minitest', '~> 3.2.0'
3 4 gem 'fast_gettext', '~> 0.6.8'
4 5 gem 'acts-as-taggable-on', '~> 3.0.2'
5 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 3 This document assumes that you have a fully and clean Noosfero
5 4 installation as explained at the `INSTALL.md` file.
6 5  
7   -SSL certificate
8   -+++++++++++++++
  6 +## Creating a self-signed SSL certificate
9 7  
10 8 You should get a valid SSL certificate, but if you want to test
11 9 your setup before, you could generate a self-signed certificate
... ... @@ -17,99 +15,106 @@ as below:
17 15 # openssl req -new -x509 -nodes -sha1 -days $[10*365] -key noosfero.key > noosfero.cert
18 16 # cat noosfero.key noosfero.cert > noosfero.pem
19 17  
  18 +## Web server configuration
  19 +
20 20 There are two ways of using SSL with Noosfero: 1) If you are not using
21 21 Varnish; and 2) If you are using Varnish.
22 22  
23   -1) If you are are not using Varnish
24   -+++++++++++++++++++++++++++++++++++
  23 +### 1) If you are are not using Varnish
25 24  
26 25 Simply do a redirect in apache to force all connections with SSL:
27 26  
28   - <VirtualHost *:8080>
29   - ServerName test.stoa.usp.br
30   -
31   - Redirect / https://example.com/
32   - </VirtualHost>
  27 +```
  28 +<VirtualHost *:8080>
  29 + ServerName test.stoa.usp.br
  30 + Redirect / https://example.com/
  31 +</VirtualHost>
  32 +```
33 33  
34 34 And set a vhost to receive then:
35 35  
36   - <VirtualHost *:443>
37   - ServerName example.com
38   -
39   - SSLEngine On
40   - SSLCertificateFile /etc/ssl/certs/cert.pem
41   - SSLCertificateKeyFile /etc/ssl/private/cert.key
42   -
43   - Include /etc/noosfero/apache/virtualhost.conf
44   - </VirtualHost>
  36 +```
  37 +<VirtualHost *:443>
  38 + ServerName example.com
  39 + SSLEngine On
  40 + SSLCertificateFile /etc/ssl/certs/cert.pem
  41 + SSLCertificateKeyFile /etc/ssl/private/cert.key
  42 + Include /etc/noosfero/apache/virtualhost.conf
  43 +</VirtualHost>
  44 +```
45 45  
46 46 Be aware that if you had configured varnish, the requests won't reach
47 47 it with this configuration.
48 48  
49   -2) If you are using Varnish
50   -+++++++++++++++++++++++++++
51   -
52   -Varnish isn't able to communicate with the SSL protocol, so we will
53   -need some one who do this and Pound[1] can do the job. In order to
54   -install it in Debian based systems:
  49 +### 2) If you are using Varnish
55 50  
56   - $ sudo apt-get install pound
  51 +Varnish isn't able to communicate with the SSL protocol, so we will need some
  52 +one else who do this and [Pound](http://www.apsis.ch/pound) can do the job. In
  53 +order to install it in Debian based systems:
57 54  
58   -Set Varnish to listen in other port than 80:
  55 +```
  56 +$ sudo apt-get install pound
  57 +```
59 58  
60   -/etc/defaults/varnish
61   ----------------------
  59 +Set Varnish to listen in other port than 80 in `/etc/defaults/varnish`:
62 60  
63   - DAEMON_OPTS="-a localhost:6081 \
64   - -T localhost:6082 \
65   - -f /etc/varnish/default.vcl \
66   - -S /etc/varnish/secret \
67   - -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"
  61 +```
  62 +DAEMON_OPTS="-a localhost:6081 \
  63 + -T localhost:6082 \
  64 + -f /etc/varnish/default.vcl \
  65 + -S /etc/varnish/secret \
  66 + -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"
  67 +```
68 68  
69 69 Configure Pound:
70 70  
71   - # cp /usr/share/noosfero/etc/pound.cfg /etc/pound/
72   -
73   -Edit /etc/pound.cfg and set the IP and domain of your server.
  71 +```
  72 +# cp /usr/share/noosfero/etc/pound.cfg /etc/pound/
  73 +```
74 74  
75   -Configure Pound to start at system initialization:
  75 +Edit `/etc/pound.cfg` and set the IP and domain of your server.
76 76  
77   -/etc/default/pound
  77 +Configure Pound to start at system initialization. At `/etc/default/pound`:
78 78 ------------------
79 79  
80   - startup=1
  80 +```
  81 +startup=1
  82 +```
81 83  
82   -Set Apache to only listen to localhost:
  84 +Set Apache to only listen to localhost, at `/etc/apache2/ports.conf`:
83 85  
84   -/etc/apache2/ports.conf
85   ------------------------
86   -
87   - Listen 127.0.0.1:8080
  86 +```
  87 +Listen 127.0.0.1:8080
  88 +```
88 89  
89 90 Restart the services:
90 91  
91   - $ sudo service apache2 restart
92   - $ sudo service varnish restart
  92 +```
  93 +$ sudo service apache2 restart
  94 +$ sudo service varnish restart
  95 +```
93 96  
94 97 Start pound:
95 98  
96   - $ sudo service pound start
97   -
98   -[1] http://www.apsis.ch/pound
  99 +```
  100 +$ sudo service pound start
  101 +```
99 102  
100   -Noosfero XMPP chat
101   -++++++++++++++++++
  103 +## Noosfero XMPP chat
102 104  
103 105 If you want to use chat over HTTPS, then you should add the domain
104   -and IP of your server in the /etc/hosts file, example:
  106 +and IP of your server in the /etc/hosts file, example
105 107  
106   -/etc/hosts
107   -----------
  108 +`/etc/hosts:`
108 109  
109   - 192.168.1.86 mydomain.example.com
  110 +```
  111 +192.168.1.86 mydomain.example.com
  112 +```
110 113  
111   -Also, it's recomended that you remove lines above from the file
  114 +Also, it's recomended that you remove the lines below from the file
112 115 `/etc/apache2/sites-enabled/noosfero`:
113 116  
114   - RewriteEngine On
115   - Include /usr/share/noosfero/util/chat/apache/xmpp.conf
  117 +```
  118 +RewriteEngine On
  119 +Include /usr/share/noosfero/util/chat/apache/xmpp.conf
  120 +```
... ...
INSTALL.locales.md 0 → 100644
... ... @@ -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 71 end
72 72 end
73 73 end
  74 +
  75 + def manage_organizations_status
  76 + scope = environment.organizations
  77 + @filter = params[:filter] || 'any'
  78 + @title = "Organization profiles"
  79 + @title = @title+" - "+@filter if @filter != 'any'
  80 +
  81 + if @filter == 'enabled'
  82 + scope = scope.visible
  83 + elsif @filter == 'disabled'
  84 + scope = scope.disabled
  85 + end
  86 +
  87 + scope = scope.order('name ASC')
  88 +
  89 + @q = params[:q]
  90 + @collection = find_by_contents(:organizations, scope, @q, {:per_page => 10, :page => params[:npage]})[:results]
  91 + end
74 92 end
... ...
app/controllers/admin/plugin_admin_controller.rb 0 → 100644
... ... @@ -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 40 end
41 41 end
42 42  
  43 + def set_community_as_default
  44 + begin
  45 + community = environment.communities.find(params[:template_id])
  46 + rescue ActiveRecord::RecordNotFound
  47 + message = _('Community not found. The template could no be changed.')
  48 + community = nil
  49 + end
  50 +
  51 + message = _('%s defined as default') % community.name if set_as_default(community)
  52 + session[:notice] = message
  53 +
  54 + redirect_to :action => 'index'
  55 + end
  56 +
  57 + def set_person_as_default
  58 + begin
  59 + person = environment.people.find(params[:template_id])
  60 + rescue ActiveRecord::RecordNotFound
  61 + message = _('Person not found. The template could no be changed.')
  62 + person = nil
  63 + end
  64 +
  65 + message = _('%s defined as default') % person.name if set_as_default(person)
  66 + session[:notice] = message
  67 +
  68 + redirect_to :action => 'index'
  69 + end
  70 +
  71 + def set_enterprise_as_default
  72 + begin
  73 + enterprise = environment.enterprises.find(params[:template_id])
  74 + rescue ActiveRecord::RecordNotFound
  75 + message = _('Enterprise not found. The template could no be changed.')
  76 + enterprise = nil
  77 + end
  78 +
  79 + message = _('%s defined as default') % enterprise.name if set_as_default(enterprise)
  80 + session[:notice] = message
  81 +
  82 + redirect_to :action => 'index'
  83 + end
  84 +
43 85 private
44 86  
  87 + def set_as_default(obj)
  88 + return nil if obj.nil?
  89 + case obj.class.name
  90 + when 'Community' then
  91 + environment.community_default_template = obj
  92 + environment.save!
  93 + when 'Person' then
  94 + environment.person_default_template = obj
  95 + environment.save!
  96 + when 'Enterprise' then
  97 + environment.enterprise_default_template = obj
  98 + environment.save!
  99 + else
  100 + nil
  101 + end
  102 + end
  103 +
45 104 def create_organization_template(klass)
46 105 identifier = params[:name].to_slug
47 106 template = klass.new(:name => params[:name], :identifier => identifier, :is_template => true)
... ...
app/controllers/application_controller.rb
... ... @@ -127,6 +127,9 @@ class ApplicationController &lt; ActionController::Base
127 127  
128 128 # TODO: move this logic somewhere else (Domain class?)
129 129 def detect_stuff_by_domain
  130 + # Sets text domain based on request host for custom internationalization
  131 + FastGettext.text_domain = Domain.custom_locale(request.host)
  132 +
130 133 @domain = Domain.find_by_name(request.host)
131 134 if @domain.nil?
132 135 @environment = Environment.default
... ...
app/controllers/my_profile/cms_controller.rb
... ... @@ -180,6 +180,8 @@ class CmsController &lt; MyProfileController
180 180  
181 181 post_only :set_home_page
182 182 def set_home_page
  183 + return render_access_denied unless user.can_change_homepage?
  184 +
183 185 article = params[:id].nil? ? nil : profile.articles.find(params[:id])
184 186 profile.update_attribute(:home_page, article)
185 187  
... ... @@ -218,6 +220,7 @@ class CmsController &lt; MyProfileController
218 220 if @errors.any?
219 221 render :action => 'upload_files', :parent_id => @parent_id
220 222 else
  223 + session[:notice] = _('File(s) successfully uploaded')
221 224 if @back_to
222 225 redirect_to @back_to
223 226 elsif @parent
... ...
app/controllers/my_profile/profile_design_controller.rb
... ... @@ -3,7 +3,16 @@ class ProfileDesignController &lt; BoxOrganizerController
3 3 needs_profile
4 4  
5 5 protect 'edit_profile_design', :profile
6   -
  6 +
  7 + before_filter :protect_fixed_block, :only => [:save, :move_block]
  8 +
  9 + def protect_fixed_block
  10 + block = boxes_holder.blocks.find(params[:id].gsub(/^block-/, ''))
  11 + if block.fixed && !current_person.is_admin?
  12 + render_access_denied
  13 + end
  14 + end
  15 +
7 16 def available_blocks
8 17 blocks = [ ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock, LinkListBlock, MyNetworkBlock, FeedReaderBlock, ProfileImageBlock, LocationBlock, SlideshowBlock, ProfileSearchBlock, HighlightsBlock ]
9 18  
... ...
app/controllers/my_profile/profile_editor_controller.rb
... ... @@ -78,7 +78,11 @@ class ProfileEditorController &lt; MyProfileController
78 78 if request.post?
79 79 if @profile.destroy
80 80 session[:notice] = _('The profile was deleted.')
81   - redirect_to :controller => 'home'
  81 + if(params[:return_to])
  82 + redirect_to params[:return_to]
  83 + else
  84 + redirect_to :controller => 'home'
  85 + end
82 86 else
83 87 session[:notice] = _('Could not delete profile')
84 88 end
... ... @@ -100,6 +104,45 @@ class ProfileEditorController &lt; MyProfileController
100 104 end
101 105 end
102 106  
  107 + def deactivate_profile
  108 + if environment.admins.include?(current_person)
  109 + profile = environment.profiles.find(params[:id])
  110 + if profile.disable
  111 + profile.save
  112 + session[:notice] = _("The profile '#{profile.name}' was deactivated.")
  113 + else
  114 + session[:notice] = _('Could not deactivate profile.')
  115 + end
  116 + end
  117 +
  118 + redirect_to_previous_location
  119 + end
  120 +
  121 + def activate_profile
  122 + if environment.admins.include?(current_person)
  123 + profile = environment.profiles.find(params[:id])
  124 +
  125 + if profile.enable
  126 + session[:notice] = _("The profile '#{profile.name}' was activated.")
  127 + else
  128 + session[:notice] = _('Could not activate the profile.')
  129 + end
  130 + end
  131 +
  132 + redirect_to_previous_location
  133 + end
  134 +
  135 + protected
  136 +
  137 + def redirect_to_previous_location
  138 + redirect_to @back_to
  139 + end
  140 +
  141 + #TODO Consider using this as a general controller feature to be available on every action.
  142 + def back_to
  143 + @back_to = params[:back_to] || request.referer || "/"
  144 + end
  145 +
103 146 private
104 147  
105 148 def has_welcome_page
... ... @@ -112,8 +155,4 @@ class ProfileEditorController &lt; MyProfileController
112 155 end
113 156 end
114 157  
115   - #TODO Consider using this as a general controller feature to be available on every action.
116   - def back_to
117   - @back_to = params[:back_to] || request.referer
118   - end
119 158 end
... ...
app/controllers/my_profile/profile_members_controller.rb
... ... @@ -20,7 +20,7 @@ class ProfileMembersController &lt; MyProfileController
20 20 redirect_to :action => :last_admin
21 21 elsif @person.define_roles(@roles, profile)
22 22 session[:notice] = _('Roles successfuly updated')
23   - redirect_to :controller => 'profile_editor'
  23 + redirect_to :action => 'index'
24 24 else
25 25 session[:notice] = _('Couldn\'t change the roles')
26 26 redirect_to :action => 'index'
... ...
app/controllers/public/contact_controller.rb
1 1 class ContactController < PublicController
2 2  
3   - before_filter :login_required
4   -
5 3 needs_profile
6 4  
7 5 def new
8   - @contact
  6 + @contact = build_contact
9 7 if request.post? && params[:confirm] == 'true'
10   - @contact = user.build_contact(profile, params[:contact])
11 8 @contact.city = (!params[:city].blank? && City.exists?(params[:city])) ? City.find(params[:city]).name : nil
12 9 @contact.state = (!params[:state].blank? && State.exists?(params[:state])) ? State.find(params[:state]).name : nil
13 10 if @contact.deliver
... ... @@ -16,8 +13,17 @@ class ContactController &lt; PublicController
16 13 else
17 14 session[:notice] = _('Contact not sent')
18 15 end
  16 + end
  17 + end
  18 +
  19 + protected
  20 +
  21 + def build_contact
  22 + params[:contact] ||= {}
  23 + if logged_in?
  24 + user.build_contact profile, params[:contact]
19 25 else
20   - @contact = user.build_contact(profile)
  26 + Contact.new params[:contact].merge(dest: profile)
21 27 end
22 28 end
23 29  
... ...
app/helpers/application_helper.rb
... ... @@ -433,19 +433,19 @@ module ApplicationHelper
433 433 end
434 434  
435 435 def theme_site_title
436   - theme_include('site_title')
  436 + @theme_site_title ||= theme_include 'site_title'
437 437 end
438 438  
439 439 def theme_header
440   - theme_include('header')
  440 + @theme_header ||= theme_include 'header'
441 441 end
442 442  
443 443 def theme_footer
444   - theme_include('footer')
  444 + @theme_footer ||= theme_include 'footer'
445 445 end
446 446  
447 447 def theme_extra_navigation
448   - theme_include('navigation')
  448 + @theme_extra_navigation ||= theme_include 'navigation'
449 449 end
450 450  
451 451 def is_testing_theme
... ... @@ -674,13 +674,14 @@ module ApplicationHelper
674 674 html.join "\n"
675 675 end
676 676  
  677 + def theme_javascript_src
  678 + script = File.join theme_path, 'theme.js'
  679 + script if File.exists? File.join(Rails.root, 'public', script)
  680 + end
  681 +
677 682 def theme_javascript_ng
678   - script = File.join(theme_path, 'theme.js')
679   - if File.exists?(File.join(Rails.root, 'public', script))
680   - javascript_include_tag script
681   - else
682   - nil
683   - end
  683 + script = theme_javascript_src
  684 + javascript_include_tag script if script
684 685 end
685 686  
686 687 def file_field_or_thumbnail(label, image, i)
... ... @@ -861,8 +862,9 @@ module ApplicationHelper
861 862 end
862 863  
863 864 def base_url
864   - environment.top_url
  865 + environment.top_url(request.scheme)
865 866 end
  867 + alias :top_url :base_url
866 868  
867 869 def helper_for_article(article)
868 870 article_helper = ActionView::Base.new
... ... @@ -944,9 +946,9 @@ module ApplicationHelper
944 946 # from Article model for an ArticleBlock.
945 947 def reference_to_article(text, article, anchor=nil)
946 948 if article.profile.domains.empty?
947   - href = "/#{article.url[:profile]}/"
  949 + href = "#{Noosfero.root}/#{article.url[:profile]}/"
948 950 else
949   - href = "http://#{article.profile.domains.first.name}/"
  951 + href = "http://#{article.profile.domains.first.name}#{Noosfero.root}/"
950 952 end
951 953 href += article.url[:page].join('/')
952 954 href += '#' + anchor if anchor
... ... @@ -1325,10 +1327,8 @@ module ApplicationHelper
1325 1327 return '' if templates.count == 0
1326 1328 return hidden_field_tag("#{field_name}[template_id]", templates.first.id) if templates.count == 1
1327 1329  
1328   - counter = 0
1329 1330 radios = templates.map do |template|
1330   - counter += 1
1331   - content_tag('li', labelled_radio_button(link_to(template.name, template.url, :target => '_blank'), "#{field_name}[template_id]", template.id, counter==1))
  1331 + content_tag('li', labelled_radio_button(link_to(template.name, template.url, :target => '_blank'), "#{field_name}[template_id]", template.id, environment.is_default_template?(template)))
1332 1332 end.join("\n")
1333 1333  
1334 1334 content_tag('div', content_tag('label', _('Profile organization'), :for => 'template-options', :class => 'formlabel') +
... ...
app/helpers/article_helper.rb
... ... @@ -77,12 +77,59 @@ module ArticleHelper
77 77 content_tag('div',
78 78 radio_button(:article, :published, false) +
79 79 content_tag('label', _('Private'), :for => 'article_published_false', :id => "label_private")
80   - ) +
81   - (article.profile.community? ? content_tag('div',
82   - content_tag('label', _('Fill in the search field to add the exception users to see this content'), :id => "text-input-search-exception-users") +
83   - token_input_field_tag(:q, 'search-article-privacy-exceptions', {:action => 'search_article_privacy_exceptions'},
84   - {:focus => false, :hint_text => _('Type in a search term for a user'), :pre_populate => tokenized_children})) :
85   - ''))
  80 + ) +
  81 + privacity_exceptions(article, tokenized_children)
  82 + )
  83 + end
  84 +
  85 + def privacity_exceptions(article, tokenized_children)
  86 + content_tag('div',
  87 + content_tag('div',
  88 + (
  89 + if article.profile
  90 + add_option_to_followers(article, tokenized_children)
  91 + else
  92 + ''
  93 + end
  94 + )
  95 + ),
  96 + :style => "margin-left:10px"
  97 + )
  98 + end
  99 +
  100 + def add_option_to_followers(article, tokenized_children)
  101 + label_message = article.profile.organization? ? _('For all community members') : _('For all your friends')
  102 +
  103 + check_box(
  104 + :article,
  105 + :show_to_followers,
  106 + {:class => "custom_privacy_option"}
  107 + ) +
  108 + content_tag(
  109 + 'label',
  110 + label_message,
  111 + :for => 'article_show_to_followers',
  112 + :id => 'label_show_to_followers'
  113 + ) +
  114 + (article.profile.community? ?
  115 + content_tag(
  116 + 'div',
  117 + content_tag(
  118 + 'label',
  119 + _('Fill in the search field to add the exception users to see this content'),
  120 + :id => "text-input-search-exception-users"
  121 + ) +
  122 + token_input_field_tag(
  123 + :q,
  124 + 'search-article-privacy-exceptions',
  125 + {:action => 'search_article_privacy_exceptions'},
  126 + {
  127 + :focus => false,
  128 + :hint_text => _('Type in a search term for a user'),
  129 + :pre_populate => tokenized_children
  130 + }
  131 + )
  132 + ) : '')
86 133 end
87 134  
88 135 def prepare_to_token_input(array)
... ...
app/helpers/boxes_helper.rb
... ... @@ -170,49 +170,54 @@ module BoxesHelper
170 170 else
171 171 "before-block-#{block.id}"
172 172 end
173   -
174   - content_tag('div', '&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 178 end
176 179  
177 180 # makes the given block draggable so it can be moved away.
178 181 def block_handle(block)
179   - draggable_element("block-#{block.id}", :revert => true)
  182 + modifiable?(block) ? draggable_element("block-#{block.id}", :revert => true) : ""
180 183 end
181 184  
182 185 def block_edit_buttons(block)
183 186 buttons = []
184 187 nowhere = 'javascript: return false;'
185 188  
186   - if block.first?
187   - buttons << icon_button('up-disabled', _("Can't move up anymore."), nowhere)
188   - else
189   - buttons << icon_button('up', _('Move block up'), { :action => 'move_block_up', :id => block.id }, { :method => 'post' })
190   - end
  189 + if modifiable?(block)
  190 + if block.first?
  191 + buttons << icon_button('up-disabled', _("Can't move up anymore."), nowhere)
  192 + else
  193 + buttons << icon_button('up', _('Move block up'), { :action => 'move_block_up', :id => block.id }, { :method => 'post' })
  194 + end
191 195  
192   - if block.last?
193   - buttons << icon_button('down-disabled', _("Can't move down anymore."), nowhere)
194   - else
195   - buttons << icon_button(:down, _('Move block down'), { :action => 'move_block_down' ,:id => block.id }, { :method => 'post'})
196   - end
  196 + if block.last?
  197 + buttons << icon_button('down-disabled', _("Can't move down anymore."), nowhere)
  198 + else
  199 + buttons << icon_button(:down, _('Move block down'), { :action => 'move_block_down' ,:id => block.id }, { :method => 'post'})
  200 + end
197 201  
198   - holder = block.owner
199   - # move to opposite side
200   - # FIXME too much hardcoded stuff
201   - if holder.layout_template == 'default'
202   - if block.box.position == 2 # area 2, left side => move to right side
203   - buttons << icon_button('right', _('Move to the opposite side'), { :action => 'move_block', :target => 'end-of-box-' + holder.boxes[2].id.to_s, :id => block.id }, :method => 'post' )
204   - elsif block.box.position == 3 # area 3, right side => move to left side
205   - buttons << icon_button('left', _('Move to the opposite side'), { :action => 'move_block', :target => 'end-of-box-' + holder.boxes[1].id.to_s, :id => block.id }, :method => 'post' )
  202 + holder = block.owner
  203 + # move to opposite side
  204 + # FIXME too much hardcoded stuff
  205 + if holder.layout_template == 'default'
  206 + if block.box.position == 2 # area 2, left side => move to right side
  207 + buttons << icon_button('right', _('Move to the opposite side'), { :action => 'move_block', :target => 'end-of-box-' + holder.boxes[2].id.to_s, :id => block.id }, :method => 'post' )
  208 + elsif block.box.position == 3 # area 3, right side => move to left side
  209 + buttons << icon_button('left', _('Move to the opposite side'), { :action => 'move_block', :target => 'end-of-box-' + holder.boxes[1].id.to_s, :id => block.id }, :method => 'post' )
  210 + end
206 211 end
207   - end
208 212  
209   - if block.editable?
210   - buttons << colorbox_icon_button(:edit, _('Edit'), { :action => 'edit', :id => block.id })
211   - end
  213 + if block.editable?
  214 + buttons << colorbox_icon_button(:edit, _('Edit'), { :action => 'edit', :id => block.id })
  215 + end
212 216  
213   - if !block.main?
214   - buttons << icon_button(:delete, _('Remove block'), { :action => 'remove', :id => block.id }, { :method => 'post', :confirm => _('Are you sure you want to remove this block?')})
215   - buttons << icon_button(:clone, _('Clone'), { :action => 'clone_block', :id => block.id }, { :method => 'post' })
  217 + if !block.main?
  218 + buttons << icon_button(:delete, _('Remove block'), { :action => 'remove', :id => block.id }, { :method => 'post', :confirm => _('Are you sure you want to remove this block?')})
  219 + buttons << icon_button(:clone, _('Clone'), { :action => 'clone_block', :id => block.id }, { :method => 'post' })
  220 + end
216 221 end
217 222  
218 223 if block.respond_to?(:help)
... ... @@ -248,5 +253,7 @@ module BoxesHelper
248 253 classes
249 254 end
250 255  
251   -
  256 + def modifiable?(block)
  257 + return !block.fixed || environment.admins.include?(user)
  258 + end
252 259 end
... ...
app/helpers/content_viewer_helper.rb
... ... @@ -45,7 +45,7 @@ module ContentViewerHelper
45 45 { article.environment.locales[translation.language] => { :href => url_for(translation.url) } }
46 46 end
47 47 content_tag(:div, link_to(_('Translations'), '#',
48   - :onmouseover => "toggleSubmenu(this, '#{_('Translations')}', #{links.to_json}); return false",
  48 + :onmouseover => "toggleSubmenu(this, '#{_('Translations')}', #{CGI::escape_html(links.to_json)}); return false",
49 49 :class => 'article-translations-menu simplemenu-trigger up'),
50 50 :class => 'article-translations')
51 51 end
... ...
app/helpers/layout_helper.rb
... ... @@ -2,12 +2,31 @@ module LayoutHelper
2 2  
3 3 def body_classes
4 4 # Identify the current controller and action for the CSS:
  5 + (logged_in? ? " logged-in" : "") +
5 6 " controller-#{controller.controller_name}" +
6 7 " action-#{controller.controller_name}-#{controller.action_name}" +
7 8 " template-#{@layout_template || if profile.blank? then 'default' else profile.layout_template end}" +
8 9 (!profile.nil? && profile.is_on_homepage?(request.path,@page) ? " profile-homepage" : "")
9 10 end
10 11  
  12 + def html_tag_classes
  13 + [
  14 + body_classes, (
  15 + profile.blank? ? nil : [
  16 + 'profile-type-is-' + profile.class.name.downcase,
  17 + 'profile-name-is-' + profile.identifier,
  18 + ]
  19 + ), 'theme-' + current_theme,
  20 + @plugins.dispatch(:html_tag_classes).map do |content|
  21 + if content.respond_to?(:call)
  22 + instance_exec(&content)
  23 + else
  24 + content.html_safe
  25 + end
  26 + end
  27 + ].flatten.compact.join(' ')
  28 + end
  29 +
11 30 def noosfero_javascript
12 31 plugins_javascripts = @plugins.map { |plugin| [plugin.js_files].flatten.map { |js| plugin.class.public_path(js) } }.flatten
13 32  
... ... @@ -17,6 +36,8 @@ module LayoutHelper
17 36 unless plugins_javascripts.empty?
18 37 output += javascript_include_tag plugins_javascripts, :cache => "cache/plugins-#{Digest::MD5.hexdigest plugins_javascripts.to_s}"
19 38 end
  39 + output += theme_javascript_ng.to_s
  40 +
20 41 output
21 42 end
22 43  
... ... @@ -85,6 +106,10 @@ module LayoutHelper
85 106 theme_path + '/style.css'
86 107 end
87 108  
  109 + def layout_template
  110 + if profile then profile.layout_template else environment.layout_template end
  111 + end
  112 +
88 113 def addthis_javascript
89 114 if NOOSFERO_CONF['addthis_enabled']
90 115 '<script src="https://s7.addthis.com/js/152/addthis_widget.js"></script>'
... ...
app/helpers/person_notifier_helper.rb
... ... @@ -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 24 }
25 25 }
26 26  
  27 + COMMON_PROFILE_LIST_BLOCK = [
  28 + :enterprises,
  29 + :people,
  30 + :communities
  31 + ]
  32 +
27 33 # FIXME remove it after search_controler refactored
28 34 include EventsHelper
29 35  
... ... @@ -100,6 +106,20 @@ module SearchHelper
100 106 end
101 107 end
102 108  
  109 + def display_selector(asset, display, float = 'right')
  110 + display = nil if display.blank?
  111 + display ||= asset_class(asset).default_search_display
  112 + if [display?(asset, :map), display?(asset, :compact), display?(asset, :full)].select {|option| option}.count > 1
  113 + compact_link = display?(asset, :compact) ? (display == 'compact' ? _('Compact') : link_to(_('Compact'), params.merge(:display => 'compact'))) : nil
  114 + map_link = display?(asset, :map) ? (display == 'map' ? _('Map') : link_to(_('Map'), params.merge(:display => 'map'))) : nil
  115 + full_link = display?(asset, :full) ? (display == 'full' ? _('Full') : link_to(_('Full'), params.merge(:display => 'full'))) : nil
  116 + content_tag('div',
  117 + content_tag('strong', _('Display')) + ': ' + [compact_link, map_link, full_link].compact.join(' | ').html_safe,
  118 + :class => 'search-customize-options'
  119 + )
  120 + end
  121 + end
  122 +
103 123 def filters(asset)
104 124 return if !asset
105 125 klass = asset_class(asset)
... ...
app/helpers/tinymce_helper.rb
... ... @@ -11,7 +11,7 @@ module TinymceHelper
11 11 end
12 12  
13 13 def tinymce_init_js options = {}
14   - options.merge! :document_base_url => environment.top_url,
  14 + options.merge! :document_base_url => top_url,
15 15 :content_css => "/stylesheets/tinymce.css,#{macro_css_files}",
16 16 :plugins => %w[compat3x advlist autolink lists link image charmap print preview hr anchor pagebreak
17 17 searchreplace wordcount visualblocks visualchars code fullscreen
... ...
app/models/approve_article.rb
... ... @@ -22,6 +22,7 @@ class ApproveArticle &lt; Task
22 22 end
23 23  
24 24 settings_items :closing_statment, :article_parent_id, :highlighted
  25 + settings_items :create_link, :type => :boolean, :default => false
25 26  
26 27 def article_parent
27 28 Article.find_by_id article_parent_id.to_i
... ... @@ -48,7 +49,11 @@ class ApproveArticle &lt; Task
48 49 end
49 50  
50 51 def perform
51   - article.copy!(:name => name, :abstract => abstract, :body => body, :profile => target, :reference_article => article, :parent => article_parent, :highlighted => highlighted, :source => article.source, :last_changed_by_id => article.last_changed_by_id, :created_by_id => article.created_by_id)
  52 + if create_link
  53 + LinkArticle.create!(:reference_article => article, :profile => target, :parent => article_parent, :highlighted => highlighted)
  54 + else
  55 + article.copy!(:name => name, :abstract => abstract, :body => body, :profile => target, :reference_article => article, :parent => article_parent, :highlighted => highlighted, :source => article.source, :last_changed_by_id => article.last_changed_by_id, :created_by_id => article.created_by_id)
  56 + end
52 57 end
53 58  
54 59 def title
... ...
app/models/article.rb
... ... @@ -2,7 +2,14 @@ require &#39;hpricot&#39;
2 2  
3 3 class Article < ActiveRecord::Base
4 4  
5   - attr_accessible :name, :body, :abstract, :profile, :tag_list, :parent, :allow_members_to_edit, :translation_of_id, :language, :license_id, :parent_id, :display_posts_in_current_language, :category_ids, :posts_per_page, :moderate_comments, :accept_comments, :feed, :published, :source, :highlighted, :notify_comments, :display_hits, :slug, :external_feed_builder, :display_versions, :external_link, :image_builder
  5 + attr_accessible :name, :body, :abstract, :profile, :tag_list, :parent,
  6 + :allow_members_to_edit, :translation_of_id, :language,
  7 + :license_id, :parent_id, :display_posts_in_current_language,
  8 + :category_ids, :posts_per_page, :moderate_comments,
  9 + :accept_comments, :feed, :published, :source,
  10 + :highlighted, :notify_comments, :display_hits, :slug,
  11 + :external_feed_builder, :display_versions, :external_link,
  12 + :image_builder, :show_to_followers
6 13  
7 14 acts_as_having_image
8 15  
... ... @@ -100,6 +107,11 @@ class Article &lt; ActiveRecord::Base
100 107 self.activity.destroy if self.activity
101 108 end
102 109  
  110 + after_destroy :destroy_link_article
  111 + def destroy_link_article
  112 + Article.where(:reference_article_id => self.id, :type => LinkArticle).destroy_all
  113 + end
  114 +
103 115 xss_terminate :only => [ :name ], :on => 'validation', :with => 'white_list'
104 116  
105 117 scope :in_category, lambda { |category|
... ... @@ -330,7 +342,7 @@ class Article &lt; ActiveRecord::Base
330 342 def belongs_to_blog?
331 343 self.parent and self.parent.blog?
332 344 end
333   -
  345 +
334 346 def belongs_to_forum?
335 347 self.parent and self.parent.forum?
336 348 end
... ... @@ -442,6 +454,7 @@ class Article &lt; ActiveRecord::Base
442 454 if self.parent && !self.parent.published?
443 455 return false
444 456 end
  457 +
445 458 true
446 459 else
447 460 false
... ... @@ -475,14 +488,17 @@ class Article &lt; ActiveRecord::Base
475 488 {:conditions => [" articles.published = ? OR
476 489 articles.last_changed_by_id = ? OR
477 490 articles.profile_id = ? OR
478   - ?",
479   - true, user.id, user.id, user.has_permission?(:view_private_content, profile)] }
  491 + ? OR articles.show_to_followers = ? AND ?",
  492 + true, user.id, user.id, user.has_permission?(:view_private_content, profile),
  493 + true, user.follows?(profile)]}
480 494 end
481 495  
  496 +
482 497 def display_unpublished_article_to?(user)
483 498 user == author || allow_view_private_content?(user) || user == profile ||
484 499 user.is_admin?(profile.environment) || user.is_admin?(profile) ||
485   - article_privacy_exceptions.include?(user)
  500 + article_privacy_exceptions.include?(user) ||
  501 + (self.show_to_followers && user.follows?(profile))
486 502 end
487 503  
488 504 def display_to?(user = nil)
... ...
app/models/block.rb
1 1 class Block < ActiveRecord::Base
2 2  
3   - attr_accessible :title, :display, :limit, :box_id, :posts_per_page, :visualization_format, :language, :display_user, :box
  3 + attr_accessible :title, :display, :limit, :box_id, :posts_per_page, :visualization_format, :language, :display_user, :box, :fixed
4 4  
5 5 # to be able to generate HTML
6 6 include ActionView::Helpers::UrlHelper
... ... @@ -64,7 +64,7 @@ class Block &lt; ActiveRecord::Base
64 64 end
65 65  
66 66 def display_to_user?(user)
67   - display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged')
  67 + display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') || (user && display_user == 'followers' && user.follows?(owner))
68 68 end
69 69  
70 70 def display_always(context)
... ... @@ -75,7 +75,7 @@ class Block &lt; ActiveRecord::Base
75 75 if context[:article]
76 76 return context[:article] == owner.home_page
77 77 else
78   - return context[:request_path] == '/'
  78 + return home_page_path?(context[:request_path])
79 79 end
80 80 end
81 81  
... ... @@ -83,7 +83,7 @@ class Block &lt; ActiveRecord::Base
83 83 if context[:article]
84 84 return context[:article] != owner.home_page
85 85 else
86   - return context[:request_path] != '/' + (owner.kind_of?(Profile) ? owner.identifier : '')
  86 + return !home_page_path?(context[:request_path])
87 87 end
88 88 end
89 89  
... ... @@ -110,11 +110,14 @@ class Block &lt; ActiveRecord::Base
110 110 # * <tt>'all'</tt>: the block is always displayed
111 111 settings_items :language, :type => :string, :default => 'all'
112 112  
  113 + # The block can be configured to be fixed. Only can be edited by environment admins
  114 + settings_items :fixed, :type => :boolean, :default => false
  115 +
113 116 # returns the description of the block, used when the user sees a list of
114 117 # blocks to choose one to include in the design.
115 118 #
116 119 # Must be redefined in subclasses to match the description of each block
117   - # type.
  120 + # type.
118 121 def self.description
119 122 '(dummy)'
120 123 end
... ... @@ -124,13 +127,13 @@ class Block &lt; ActiveRecord::Base
124 127 # This method can return several types of objects:
125 128 #
126 129 # * <tt>String</tt>: if the string starts with <tt>http://</tt> or <tt>https://</tt>, then it is assumed to be address of an IFRAME. Otherwise it's is used as regular HTML.
127   - # * <tt>Hash</tt>: the hash is used to build an URL that is used as the address for a IFRAME.
  130 + # * <tt>Hash</tt>: the hash is used to build an URL that is used as the address for a IFRAME.
128 131 # * <tt>Proc</tt>: the Proc is evaluated in the scope of BoxesHelper. The
129 132 # block can then use <tt>render</tt>, <tt>link_to</tt>, etc.
130 133 #
131 134 # The method can also return <tt>nil</tt>, which means "no content".
132 135 #
133   - # See BoxesHelper#extract_block_content for implementation details.
  136 + # See BoxesHelper#extract_block_content for implementation details.
134 137 def content(args={})
135 138 "This is block number %d" % self.id
136 139 end
... ... @@ -221,6 +224,7 @@ class Block &lt; ActiveRecord::Base
221 224 'all' => _('All users'),
222 225 'logged' => _('Logged'),
223 226 'not_logged' => _('Not logged'),
  227 + 'followers' => owner.class != Environment && owner.organization? ? _('Members') : _('Friends')
224 228 }
225 229 end
226 230  
... ... @@ -239,4 +243,21 @@ class Block &lt; ActiveRecord::Base
239 243 self.position = block.position
240 244 end
241 245  
  246 + private
  247 +
  248 + def home_page_path
  249 + home_page_url = Noosfero.root('/')
  250 +
  251 + if owner.kind_of?(Profile)
  252 + home_page_url += "profile/" if owner.home_page.nil?
  253 + home_page_url += owner.identifier
  254 + end
  255 +
  256 + return home_page_url
  257 + end
  258 +
  259 + def home_page_path? path
  260 + return path == home_page_path || path == (home_page_path + '/')
  261 + end
  262 +
242 263 end
... ...
app/models/blog.rb
... ... @@ -53,7 +53,7 @@ class Blog &lt; Folder
53 53 def prepare_external_feed
54 54 unless self.external_feed_data.nil?
55 55 if self.external_feed(true) && self.external_feed.id == self.external_feed_data[:id].to_i
56   - self.external_feed.attributes = self.external_feed_data
  56 + self.external_feed.attributes = self.external_feed_data.except(:id)
57 57 else
58 58 self.build_external_feed(self.external_feed_data, :without_protection => true)
59 59 end
... ...
app/models/community.rb
... ... @@ -68,7 +68,7 @@ class Community &lt; Organization
68 68 end
69 69  
70 70 def default_template
71   - environment.community_template
  71 + environment.community_default_template
72 72 end
73 73  
74 74 def news(limit = 30, highlight = false)
... ...
app/models/domain.rb
... ... @@ -92,4 +92,11 @@ class Domain &lt; ActiveRecord::Base
92 92 @hosting = {}
93 93 end
94 94  
  95 + # Detects a domain's custom text domain chain if available based on a domain
  96 + # served on multitenancy configuration or a registered domain.
  97 + def self.custom_locale(domainname)
  98 + domain = Noosfero::MultiTenancy.mapping[domainname] || domainname[/(.*?)\./,1]
  99 + FastGettext.translation_repositories.keys.include?(domain) ? domain : FastGettext.default_text_domain
  100 + end
  101 +
95 102 end
... ...
app/models/enterprise.rb
... ... @@ -100,7 +100,12 @@ class Enterprise &lt; Organization
100 100 self.tasks.where(:type => 'EnterpriseActivation').first
101 101 end
102 102  
103   - def enable(owner)
  103 + def enable(owner = nil)
  104 + if owner.nil?
  105 + self.visible = true
  106 + return self.save
  107 + end
  108 +
104 109 return if enabled
105 110 # must be set first for the following to work
106 111 self.enabled = true
... ... @@ -162,7 +167,7 @@ class Enterprise &lt; Organization
162 167 end
163 168  
164 169 def default_template
165   - environment.enterprise_template
  170 + environment.enterprise_default_template
166 171 end
167 172  
168 173 def template_with_inactive_enterprise
... ...
app/models/environment.rb
... ... @@ -285,6 +285,7 @@ class Environment &lt; ActiveRecord::Base
285 285 www.flickr.com
286 286 www.gmodules.com
287 287 www.youtube.com
  288 + openstreetmap.org
288 289 ] + ('a' .. 'z').map{|i| "#{i}.yimg.com"}
289 290  
290 291 settings_items :enabled_plugins, :type => Array, :default => Noosfero::Plugin.available_plugin_names
... ... @@ -658,8 +659,8 @@ class Environment &lt; ActiveRecord::Base
658 659 { :controller => 'admin_panel', :action => 'index' }
659 660 end
660 661  
661   - def top_url
662   - url = 'http://'
  662 + def top_url(scheme = 'http')
  663 + url = scheme + '://'
663 664 url << (Noosfero.url_options.key?(:host) ? Noosfero.url_options[:host] : default_hostname)
664 665 url << ':' << Noosfero.url_options[:port].to_s if Noosfero.url_options.key?(:port)
665 666 url << Noosfero.root('')
... ... @@ -730,31 +731,50 @@ class Environment &lt; ActiveRecord::Base
730 731 ]
731 732 end
732 733  
733   - def community_template
  734 + def is_default_template?(template)
  735 + is_default = template == community_default_template
  736 + is_default = is_default || template == person_default_template
  737 + is_default = is_default || template == enterprise_default_template
  738 + is_default
  739 + end
  740 +
  741 + def community_templates
  742 + self.communities.templates
  743 + end
  744 +
  745 + def community_default_template
734 746 template = Community.find_by_id settings[:community_template_id]
735   - template if template && template.is_template
  747 + template if template && template.is_template?
  748 + end
  749 +
  750 + def community_default_template=(value)
  751 + settings[:community_template_id] = value.kind_of?(Community) ? value.id : value
736 752 end
737 753  
738   - def community_template=(value)
739   - settings[:community_template_id] = value.id
  754 + def person_templates
  755 + self.people.templates
740 756 end
741 757  
742   - def person_template
  758 + def person_default_template
743 759 template = Person.find_by_id settings[:person_template_id]
744   - template if template && template.is_template
  760 + template if template && template.is_template?
  761 + end
  762 +
  763 + def person_default_template=(value)
  764 + settings[:person_template_id] = value.kind_of?(Person) ? value.id : value
745 765 end
746 766  
747   - def person_template=(value)
748   - settings[:person_template_id] = value.id
  767 + def enterprise_templates
  768 + self.enterprises.templates
749 769 end
750 770  
751   - def enterprise_template
  771 + def enterprise_default_template
752 772 template = Enterprise.find_by_id settings[:enterprise_template_id]
753   - template if template && template.is_template
  773 + template if template && template.is_template?
754 774 end
755 775  
756   - def enterprise_template=(value)
757   - settings[:enterprise_template_id] = value.id
  776 + def enterprise_default_template=(value)
  777 + settings[:enterprise_template_id] = value.kind_of?(Enterprise) ? value.id : value
758 778 end
759 779  
760 780 def inactive_enterprise_template
... ... @@ -856,10 +876,10 @@ class Environment &lt; ActiveRecord::Base
856 876 person_template.visible = false
857 877 person_template.save!
858 878  
859   - self.enterprise_template = enterprise_template
  879 + self.enterprise_default_template = enterprise_template
860 880 self.inactive_enterprise_template = inactive_enterprise_template
861   - self.community_template = community_template
862   - self.person_template = person_template
  881 + self.community_default_template = community_template
  882 + self.person_default_template = person_template
863 883 self.save!
864 884 end
865 885  
... ... @@ -923,6 +943,10 @@ class Environment &lt; ActiveRecord::Base
923 943 locales_list
924 944 end
925 945  
  946 + def has_license?
  947 + self.licenses.any?
  948 + end
  949 +
926 950 private
927 951  
928 952 def default_language_available
... ...
app/models/event.rb
... ... @@ -19,7 +19,7 @@ class Event &lt; Article
19 19 maybe_add_http(self.setting[:link])
20 20 end
21 21  
22   - xss_terminate :only => [ :body, :link, :address ], :with => 'white_list', :on => 'validation'
  22 + xss_terminate :only => [ :name, :body, :link, :address ], :with => 'white_list', :on => 'validation'
23 23  
24 24 def initialize(*args)
25 25 super(*args)
... ...
app/models/external_feed.rb
... ... @@ -10,7 +10,7 @@ class ExternalFeed &lt; ActiveRecord::Base
10 10 { :conditions => ['(fetched_at is NULL) OR (fetched_at < ?)', Time.now - FeedUpdater.update_interval] }
11 11 }
12 12  
13   - attr_accessible :address, :enabled
  13 + attr_accessible :address, :enabled, :only_once
14 14  
15 15 def add_item(title, link, date, content)
16 16 return if content.blank?
... ...
app/models/folder.rb
... ... @@ -12,7 +12,7 @@ class Folder &lt; Article
12 12  
13 13 acts_as_having_settings :field => :setting
14 14  
15   - xss_terminate :only => [ :body ], :with => 'white_list', :on => 'validation'
  15 + xss_terminate :only => [ :name, :body ], :with => 'white_list', :on => 'validation'
16 16  
17 17 include WhiteListFilter
18 18 filter_iframes :body
... ...
app/models/invitation.rb
... ... @@ -76,14 +76,12 @@ class Invitation &lt; Task
76 76 {:person => person, :target => user.person}
77 77 end
78 78  
79   - if !task_args.nil?
80   - if profile.person?
81   - InviteFriend.create(task_args)
82   - elsif profile.community?
83   - InviteMember.create(task_args.merge(:community_id => profile.id))
84   - else
85   - raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s
86   - end
  79 + if profile.person?
  80 + InviteFriend.create(task_args) if user.nil? || !user.person.is_a_friend?(person)
  81 + elsif profile.community?
  82 + InviteMember.create(task_args.merge(:community_id => profile.id)) if user.nil? || !user.person.is_member_of?(profile)
  83 + else
  84 + raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s
87 85 end
88 86 end
89 87 end
... ...
app/models/link_article.rb 0 → 100644
... ... @@ -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 25 scope :not_members_of, lambda { |resources|
26 26 resources = [resources] if !resources.kind_of?(Array)
27 27 conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ')
28   - { :select => 'DISTINCT profiles.*', :conditions => ['"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "role_assignments" ON "role_assignments"."accessor_id" = "profiles"."id" AND "role_assignments"."accessor_type" = (\'Profile\') WHERE "profiles"."type" IN (\'Person\') AND (%s))' % conditions] }
  28 + { :select => 'DISTINCT profiles.*', :conditions => ['"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "role_assignments" ON "role_assignments"."accessor_id" = "profiles"."id" AND "role_assignments"."accessor_type" = (\'Profile\') WHERE "profiles"."type" IN (\'Person\') AND (%s))' % conditions]
  29 + }
  30 +
  31 + scope :by_role, lambda { |roles|
  32 + roles = [roles] unless roles.kind_of?(Array)
  33 + { :select => 'DISTINCT profiles.*', :joins => :role_assignments, :conditions => ['role_assignments.role_id IN (?)',
  34 +roles] }
29 35 }
30 36  
31 37 def has_permission_with_plugins?(permission, profile)
... ... @@ -85,6 +91,10 @@ class Person &lt; Profile
85 91  
86 92 belongs_to :user, :dependent => :delete
87 93  
  94 + def can_change_homepage?
  95 + !environment.enabled?('cant_change_homepage') || is_admin?
  96 + end
  97 +
88 98 def can_control_scrap?(scrap)
89 99 begin
90 100 !self.scraps(scrap).nil?
... ... @@ -311,7 +321,7 @@ class Person &lt; Profile
311 321 end
312 322  
313 323 def default_template
314   - environment.person_template
  324 + environment.person_default_template
315 325 end
316 326  
317 327 def apply_type_specific_template(template)
... ...
app/models/person_notifier.rb
... ... @@ -67,7 +67,7 @@ class PersonNotifier
67 67  
68 68 class Mailer < ActionMailer::Base
69 69  
70   - add_template_helper(PersonNotifierHelper)
  70 + add_template_helper(ApplicationHelper)
71 71  
72 72 def session
73 73 {:theme => nil}
... ...
app/models/product.rb
... ... @@ -10,7 +10,7 @@ class Product &lt; ActiveRecord::Base
10 10 :display => %w[full map]
11 11 }
12 12  
13   - attr_accessible :name, :product_category, :highlighted, :price, :enterprise, :image_builder, :description, :available, :qualifiers, :unit_id, :discount, :inputs
  13 + attr_accessible :name, :product_category, :highlighted, :price, :enterprise, :image_builder, :description, :available, :qualifiers, :unit_id, :discount, :inputs, :qualifiers_list
14 14  
15 15 def self.default_search_display
16 16 'full'
... ...
app/models/profile.rb
... ... @@ -107,8 +107,8 @@ class Profile &lt; ActiveRecord::Base
107 107 alias_method_chain :count, :distinct
108 108 end
109 109  
110   - def members_by_role(role)
111   - Person.members_of(self).all(:conditions => ['role_assignments.role_id = ?', role.id])
  110 + def members_by_role(roles)
  111 + Person.members_of(self).by_role(roles)
112 112 end
113 113  
114 114 acts_as_having_boxes
... ... @@ -120,7 +120,9 @@ class Profile &lt; ActiveRecord::Base
120 120 end
121 121  
122 122 scope :visible, :conditions => { :visible => true }
  123 + scope :disabled, :conditions => { :visible => false }
123 124 scope :public, :conditions => { :visible => true, :public_profile => true }
  125 + scope :enabled, :conditions => { :enabled => true }
124 126  
125 127 # Subclasses must override this method
126 128 scope :more_popular
... ... @@ -404,7 +406,7 @@ class Profile &lt; ActiveRecord::Base
404 406 end
405 407  
406 408 xss_terminate :only => [ :name, :nickname, :address, :contact_phone, :description ], :on => 'validation'
407   - xss_terminate :only => [ :custom_footer, :custom_header ], :with => 'white_list', :on => 'validation'
  409 + xss_terminate :only => [ :custom_footer, :custom_header ], :with => 'white_list'
408 410  
409 411 include WhiteListFilter
410 412 filter_iframes :custom_header, :custom_footer
... ... @@ -803,7 +805,7 @@ private :generate_url, :url_options
803 805 end
804 806  
805 807 include Noosfero::Plugin::HotSpot
806   -
  808 +
807 809 def folder_types
808 810 types = Article.folder_types
809 811 plugins.dispatch(:content_types).each {|type|
... ... @@ -927,6 +929,13 @@ private :generate_url, :url_options
927 929 end
928 930  
929 931 def disable
  932 + self.visible = false
  933 + self.save
  934 + end
  935 +
  936 + def enable
  937 + self.visible = true
  938 + self.save
930 939 end
931 940  
932 941 def control_panel_settings_button
... ...
app/views/admin_panel/index.html.erb
... ... @@ -20,6 +20,7 @@
20 20 <tr><td><%= link_to _('Users'), :controller => 'users' %></td></tr>
21 21 <tr><td><%= link_to _('Profile templates'), :controller => 'templates' %></td></tr>
22 22 <tr><td><%= link_to _('Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr>
  23 + <tr><td><%= link_to _('Manage organizations status'), :action => 'manage_organizations_status' %></td></tr>
23 24 </table>
24 25  
25 26  
... ...
app/views/admin_panel/manage_organizations_status.html.erb 0 → 100644
... ... @@ -0,0 +1,69 @@
  1 +<h1><%= _('Manage organizations') %></h1>
  2 +
  3 +<%= form_tag( { :action => 'manage_organizations_status' }, :method => 'get', :class => 'users-search' ) do %>
  4 +
  5 + <div class="search-field">
  6 + <span class="formfield">
  7 + <%= text_field_tag 'q', @q, :title => _("Find profiles"), :style=>"width:85%" %>
  8 + </span>
  9 +
  10 + <%= submit_button(:search, _('Search')) %>
  11 + </div>
  12 +
  13 + <div class="environment-users-results-header">
  14 + <div id='environment-users-filter-title'><%= @title %></div>
  15 +
  16 + <div id="environment-users-filter-filter">
  17 + <strong><%= _("Filter by: ") %></strong>
  18 +
  19 + <select id="profile_filter_select">
  20 + <%= options_for_select([['Any', 'any'],["Disabled profiles", "disabled"], ["Enabled profiles", "enabled"]], @filter) %>
  21 + </select>
  22 + </div>
  23 + <div style="clear: both"></div>
  24 + </div>
  25 +
  26 + <table>
  27 + <colgroup>
  28 + <col width="80%">
  29 + <col width="20%">
  30 + </colgroup>
  31 +
  32 + <tr>
  33 + <th><%= _('Member') %></th>
  34 + <th><%= _('Actions') %></th>
  35 + </tr>
  36 +
  37 + <% @collection.each do |p| %>
  38 + <tr title="<%= p.name %>">
  39 + <td><%= link_to_profile p.short_name, p.identifier, :title => p.name %> </td>
  40 +
  41 + <td class='actions'>
  42 + <div class="members-buttons-cell">
  43 + <% if p.visible %>
  44 + <%= button_without_text :'deactivate-user', _('Deactivate'), {:controller => "profile_editor", :action => 'deactivate_profile', :profile => p.identifier, :id => p.id}, :confirm => _("Do you want to deactivate this profile ?") %>
  45 + <% else %>
  46 + <%= button_without_text :'activate-user', _('Activate'), {:controller => "profile_editor", :action => 'activate_profile', :profile => p.identifier, :id => p.id}, :confirm => _("Do you want to activate this profile ?") %>
  47 + <% end %>
  48 + <%= button_without_text :'delete', _('Remove'), {:controller => "profile_editor", :action => 'destroy_profile', :profile => p.identifier, :id => p.id, :return_to => "/admin/admin_panel/manage_organizations_status"}, :method => :post, :confirm => _("Do you want to deactivate this profile ?") %>
  49 + </div>
  50 + </td>
  51 + </tr>
  52 + <% end %>
  53 + </table>
  54 +
  55 +<% end %>
  56 +
  57 +<%= pagination_links @collection, {:param_name => 'npage', :page_links => true} %>
  58 +
  59 +<% button_bar do %>
  60 + <%= button :back, _('Back'), :controller => 'admin_panel' %>
  61 +<% end %>
  62 +
  63 +<script type="text/javascript">
  64 + jQuery(document).ready(function(){
  65 + jQuery("#profile_filter_select").change(function(){
  66 + document.location.href = '/admin/admin_panel/manage_organizations_status?filter='+this.value;
  67 + });
  68 + });
  69 +</script>
0 70 \ No newline at end of file
... ...
app/views/box_organizer/edit.html.erb
... ... @@ -5,6 +5,12 @@
5 5  
6 6 <%= labelled_form_field(_('Custom title for this block: '), text_field(:block, :title, :maxlength => 20)) %>
7 7  
  8 + <% if environment.admins.include?(user) %>
  9 + <div class="fixed_block">
  10 + <%= labelled_check_box(_("Fixed"), "block[fixed]", value = "1", checked = @block.fixed) %>
  11 + </div>
  12 + <% end %>
  13 +
8 14 <%= render :partial => partial_for_class(@block.class) %>
9 15  
10 16 <div class="display">
... ...
app/views/cms/_general_fields.html.erb
1 1 <%= select_profile_folder(_('Parent folder:'), 'article[parent_id]', profile, @article.parent_id) %>
2   -<%= labelled_form_field(_('License'), select(:article, :license_id, options_for_select_with_title([[_('None'), nil]] + profile.environment.licenses.map {|license| [license.name, license.id]}, @article.license ? @article.license.id : nil))) %>
  2 +<% if profile.environment.has_license? %>
  3 + <%= labelled_form_field(_('License'), select(:article, :license_id, options_for_select_with_title([[_('None'), nil]] + profile.environment.licenses.map {|license| [license.name, license.id]}, @article.license ? @article.license.id : nil))) %>
  4 +<% end %>
... ...
app/views/cms/_link_article.html.erb 0 → 100644
... ... @@ -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 20 <h5><%= _('Uploading files to %s') % content_tag('code', @target) %></h5>
21 21  
22 22 <%= form_for('uploaded_file', :url => { :action => 'upload_files' }, :html => {:multipart => true}) do |f| %>
  23 +
  24 + <%= @plugins.dispatch(:upload_files_extra_fields, params[:parent_id]).collect { |content| instance_exec(&content) }.join("") %>
  25 +
23 26 <%= render :partial => 'upload_file_form', :locals => { :size => '45'} %>
24   -<% end %>
  27 +
  28 +<% end %>
  29 +
... ...
app/views/cms/view.html.erb
... ... @@ -2,7 +2,7 @@
2 2 <%= _('Content management') %>
3 3 </h1>
4 4  
5   -<% if !environment.enabled?('cant_change_homepage') && !remove_content_button(:home, profile.home_page) %>
  5 +<% if user.can_change_homepage? && !remove_content_button(:home, profile.home_page) %>
6 6 <div class="cms-homepage">
7 7 <%= _('Profile homepage:') %>
8 8 <% if profile.home_page %>
... ... @@ -69,7 +69,7 @@
69 69 <%= expirable_button article, :edit, _('Edit'), {:action => 'edit', :id => article.id} if !remove_content_button(:edit, article) %>
70 70 <%= button_without_text :eyes, _('Public view'), article.view_url %>
71 71 <%= display_spread_button(article) unless remove_content_button(:spread, article) %>
72   - <% if !environment.enabled?('cant_change_homepage') && !remove_content_button(:home, article) %>
  72 + <% if user.can_change_homepage? && !remove_content_button(:home, article) %>
73 73 <% if profile.home_page != article %>
74 74 <%= expirable_button article, :home, _('Use as homepage'), { :action => 'set_home_page', :id => article.id }, :method => :post %>
75 75 <% else %>
... ...
app/views/contact/new.html.erb
... ... @@ -13,11 +13,16 @@
13 13  
14 14 <%= required_fields_message %>
15 15  
16   - <% location_fields = select_city(true) %>
  16 + <% unless logged_in? %>
  17 + <%= required f.text_field(:name) %>
  18 + <%= required f.text_field(:email) %>
  19 + <% end %>
17 20  
  21 + <% location_fields = select_city(true) %>
18 22 <% unless environment.enabled?('disable_select_city_for_contact') || location_fields.blank? %>
19 23 <%= labelled_form_field _('City and state'), location_fields %>
20 24 <% end %>
  25 +
21 26 <%= required f.text_field(:subject) %>
22 27  
23 28 <%= render :file => 'shared/tiny_mce' %>
... ... @@ -25,5 +30,9 @@
25 30  
26 31 <%= labelled_form_field check_box(:contact, :receive_a_copy) + _('I want to receive a copy of the message in my e-mail.'), '' %>
27 32  
28   - <%= submit_button(:send, _('Send'), :onclick => "$('confirm').value = 'true'") %>
  33 + <% unless logged_in? %>
  34 + <%= recaptcha_tags :ajax => true, :display => {:theme => 'clean'} %>
  35 + <% end %>
  36 +
  37 + <%= submit_button(:send, _('Send'), :onclick => "jQuery('#confirm').val('true')") %>
29 38 <% end %>
... ...
app/views/content_viewer/view_page.html.erb
... ... @@ -70,37 +70,36 @@
70 70  
71 71 <%= @plugins.dispatch(:article_extra_contents, @page).collect { |content| instance_exec(&content) }.join("") %>
72 72  
73   -<div class="comments" id="comments_list">
74   -
75   - <% if @page.accept_comments? || @comments_count > 0 %>
  73 +<% if @page.accept_comments? || @comments_count > 0 %>
  74 + <div class="comments" id="comments_list">
76 75 <h3 <%= 'class="no-comments-yet"' if @comments_count == 0 %>>
77 76 <%= display_number_of_comments(@comments_count) %>
78 77 </h3>
79   - <% end %>
80 78  
81   - <% if @comments.present? && @comments.count > 1 %>
82   - <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form', :id => 'top-post-comment-button', :onclick => "jQuery('#page-comment-form .display-comment-form').first().click();") if @page.accept_comments? %>
  79 + <% if @comments.present? && @comments.count > 1 %>
  80 + <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form', :id => 'top-post-comment-button', :onclick => "jQuery('#page-comment-form .display-comment-form').first().click();") if @page.accept_comments? %>
  81 +
  82 + <%= hidden_field_tag("page_url", url_for(:controller=>'content_viewer', :action=>'view_page', :profile=>profile.identifier, :page => @page.explode_path)) %>
  83 + <%= javascript_include_tag "comment_order.js" %>
  84 + <div class="comment-order">
  85 + <%= form_tag({:controller=>'content_viewer' , :action=>'view_page'}, {:method=>'get', :id=>"form_order"}) do %>
  86 + <%= select_tag 'comment_order', options_for_select({_('Oldest first')=>'oldest', _('Newest first')=>'newest'}, @comment_order) %>
  87 + <% end %>
  88 + </div>
  89 + <% end %>
83 90  
84   - <%= hidden_field_tag("page_url", url_for(:controller=>'content_viewer', :action=>'view_page', :profile=>profile.identifier, :page => @page.explode_path)) %>
85   - <%= javascript_include_tag "comment_order.js" %>
86   - <div class="comment-order">
87   - <%= form_tag({:controller=>'content_viewer' , :action=>'view_page'}, {:method=>'get', :id=>"form_order"}) do %>
88   - <%= select_tag 'comment_order', options_for_select({_('Oldest first')=>'oldest', _('Newest first')=>'newest'}, @comment_order) %>
  91 + <ul class="article-comments-list">
  92 + <% if @comments.present? %>
  93 + <%= render :partial => 'comment/comment', :collection => @comments %>
  94 + <%= pagination_links @comments, :param_name => 'comment_page' %>
89 95 <% end %>
90   - </div>
91   - <% end %>
  96 + </ul>
92 97  
93   - <ul class="article-comments-list">
94   - <% if @comments.present? %>
95   - <%= render :partial => 'comment/comment', :collection => @comments %>
96   - <%= pagination_links @comments, :param_name => 'comment_page' %>
  98 + <% if @page.accept_comments? %>
  99 + <div id='page-comment-form' class='page-comment-form'><%= render :partial => 'comment/comment_form', :locals =>{:url => {:controller => :comment, :action => :create}, :display_link => true, :cancel_triggers_hide => true}%></div>
97 100 <% end %>
98   - </ul>
99   -
100   - <% if @page.accept_comments? %>
101   - <div id='page-comment-form' class='page-comment-form'><%= render :partial => 'comment/comment_form', :locals =>{:url => {:controller => :comment, :action => :create}, :display_link => true, :cancel_triggers_hide => true}%></div>
102   - <% end %>
103   -</div><!-- end class="comments" -->
  101 + </div><!-- end class="comments" -->
  102 +<% end %>
104 103  
105 104 </div><!-- end id="article" -->
106 105 <%= add_zoom_to_article_images %>
... ...
app/views/enterprise_registration/basic_information.html.erb
... ... @@ -20,7 +20,7 @@
20 20  
21 21 <%= labelled_form_for :create_enterprise do |f| %>
22 22 <%= required f.text_field 'name', :onchange => "updateUrlField(this, 'create_enterprise_identifier')", :size => 40 %>
23   - <%= required labelled_form_field(_('Address'), content_tag('code', environment.top_url + "/" + text_field(:create_enterprise, 'identifier', :size => 26))) %>
  23 + <%= required labelled_form_field(_('Address'), content_tag('code', top_url + "/" + text_field(:create_enterprise, 'identifier', :size => 26))) %>
24 24 <%= render :partial => 'shared/organization_custom_fields', :locals => { :f => f, :object_name => :create_enterprise, :profile => @create_enterprise } %>
25 25 <%= required labelled_form_field(_('Region'), f.select('region_id', @regions)) if @validation == :region %>
26 26  
... ...
app/views/events/events.html.erb
... ... @@ -3,7 +3,7 @@
3 3 <div id='agenda-toolbar'>
4 4 <%= button :back, _('Back to %s') % profile.name, profile.url %>
5 5 <% if user && user.has_permission?('post_content', profile) %>
6   - <%= button :new, _('New event'), myprofile_url(:controller => 'cms', :action => 'new', :type => 'Event') %>
  6 + <%= button :new, _('New event'), myprofile_path(:controller => 'cms', :action => 'new', :type => 'Event') %>
7 7 <% end %>
8 8 </div>
9 9  
... ...
app/views/layouts/_content.html.erb 0 → 100644
... ... @@ -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 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2   -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>">
  2 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>" class="<%= h html_tag_classes %>">
3 3 <head>
4 4 <title><%= h page_title %></title>
5 5 <%= yield(:feeds) %>
... ... @@ -12,24 +12,9 @@
12 12 <meta name="twitter:title" content="<%= h page_title %>">
13 13 <meta name="twitter:description" content="<%= meta_description_tag(@page) %>">
14 14  
15   - <!-- Open Graph -->
16   - <meta property="og:type" content="<%= @page ? 'article' : 'website' %>">
17   - <meta property="og:url" content="<%= @page ? url_for(@page.url) : @environment.top_url %>">
18   - <meta property="og:title" content="<%= h page_title %>">
19   - <meta property="og:site_name" content="<%= profile ? profile.name : @environment.name %>">
20   - <meta property="og:description" content="<%= meta_description_tag(@page) %>">
21   -
22 15 <!-- site root -->
23 16 <meta property="noosfero:root" content="<%= Noosfero.root %>"/>
24 17  
25   - <% if @page %>
26   - <meta property="article:published_time" content="<%= show_date(@page.published_at) %>">
27   - <% @page.body_images_paths.each do |img| %>
28   - <meta name="twitter:image" content="<%= img.to_s %>">
29   - <meta property="og:image" content="<%= img.to_s %>">
30   - <% end %>
31   - <% end %>
32   -
33 18 <link rel="shortcut icon" href="<%= image_path(theme_favicon) %>" type="image/x-icon" />
34 19 <%= noosfero_javascript %>
35 20 <%= noosfero_stylesheets %>
... ... @@ -72,10 +57,7 @@
72 57 <div id="navigation-end"></div>
73 58 </div><!-- end id="navigation" -->
74 59 <div id="content">
75   - <div id="content-inner">
76   - <%= insert_boxes(yield) %>
77   - <br style='clear: both'/>
78   - </div><!-- end id="content-inner" -->
  60 + <%= render 'layouts/content' %>
79 61 </div><!-- end id="content" -->
80 62 </div><!-- end id="wrap-2" -->
81 63 </div><!-- end id="wrap-1" -->
... ... @@ -84,7 +66,6 @@
84 66 <%= theme_footer %>
85 67 </div><!-- end id="theme-footer" -->
86 68 <%= noosfero_layout_features %>
87   - <%= theme_javascript_ng %>
88 69 <%= addthis_javascript %>
89 70 <%=
90 71 @plugins.dispatch(:body_ending).map do |content|
... ...
app/views/layouts/application.html.erb
1 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2   -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>">
  2 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= html_language %>" lang="<%= html_language %>" class="<%= h html_tag_classes %>">
3 3 <head>
4 4 <title><%= h page_title %></title>
5 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
... ... @@ -68,7 +68,7 @@
68 68  
69 69 <div id="navigation_bar">
70 70 <%= link_to "<span>"+ @environment.name() +"</span>",
71   - @environment.top_url,
  71 + top_url,
72 72 :id=>"menu_link_to_envhome",
73 73 :title=>@environment.name %>
74 74 <% unless environment.enabled?(:disable_categories) %>
... ...
app/views/manage_products/_edit_info.html.erb
... ... @@ -47,7 +47,7 @@
47 47 <%= button_to_function(
48 48 :add,
49 49 _('Add new qualifier'),
50   - "new_qualifier_row('#product-qualifiers-list', '#{escape_javascript(select_qualifiers(@product))}', '#{escape_javascript(remove_qualifier_button)}')"
  50 + "new_qualifier_row('#product-qualifiers-list', '#{escape_javascript(CGI::escape_html(select_qualifiers(@product)))}', '#{escape_javascript(CGI::escape_html(remove_qualifier_button))}')"
51 51 ) %>
52 52 <%= hidden_field_tag "product[qualifiers_list][nil]" %>
53 53 <% end %>
... ...
app/views/profile_editor/edit.html.erb
1 1 <h1><%= _('Profile settings for %s') % profile.name %></h1>
2 2  
  3 +<%= javascript_include_tag 'deactivate_profile' %>
3 4 <%= error_messages_for :profile_data %>
4 5  
5 6 <%= labelled_form_for :profile_data, :html => { :id => 'profile-data', :multipart => true } do |f| %>
... ... @@ -73,6 +74,15 @@
73 74 <% if user && user.has_permission?('destroy_profile', profile) %>
74 75 <% button_bar(:id => 'delete-profile') do %>
75 76 <%= button(:remove, _('Delete profile'), {:action => :destroy_profile}) %>
  77 +
  78 + <% if environment.admins.include?(current_person) %>
  79 +
  80 + <% if profile.visible? %>
  81 + <%= button(:remove, _('Deactivate profile'), {:action => :deactivate_profile, :id=>profile.id}, :id=>'deactivate_profile_button', :data => {:confirm=>_("Are you sure you want to deactivate this profile?")}) %>
  82 + <% else %>
  83 + <%= button(:add, _('Activate profile'), {:action => :activate_profile, :id=>profile.id}, :data => {:confirm=>_("Are you sure you want to deactivate this profile?")}) %>
  84 + <% end %>
  85 + <% end %>
76 86 <% end %>
77 87 <% end %>
78 88 -<% end %>
  89 +<% end %>
79 90 \ No newline at end of file
... ...
app/views/search/_display_results.html.erb
... ... @@ -14,7 +14,7 @@
14 14  
15 15 <% display = display_filter(name, params[:display]) %>
16 16  
17   - <div class="search-results-innerbox search-results-type-<%= name.to_s.singularize %> <%= 'common-profile-list-block' if [:enterprises, :people, :communities].include?(name) %>">
  17 + <div class="search-results-innerbox search-results-type-<%= name.to_s.singularize %> <%= 'common-profile-list-block' if SearchHelper::COMMON_PROFILE_LIST_BLOCK.include?(name) %>">
18 18 <ul>
19 19 <% search[:results].each do |hit| %>
20 20 <% partial = partial_for_class(hit.class, display) %>
... ...
app/views/tasks/_approve_article_accept_details.html.erb
1 1 <%= render :file => 'shared/tiny_mce' %>
2 2  
  3 +<%= labelled_form_field(_('Create a link'), f.check_box(:create_link)) %>
  4 +
3 5 <%= labelled_form_field(_('Name for publishing'), f.text_field(:name)) %>
4 6 <%= select_profile_folder(_('Select the folder where the article must be published'), "tasks[#{task.id}][task][article_parent_id]", task.target) %>
5 7 <%= labelled_form_field(_('Highlight this article'), f.check_box(:highlighted)) %>
... ...
app/views/templates/index.html.erb
... ... @@ -2,10 +2,11 @@
2 2  
3 3 <%= _('Manage the templates used on creation of profiles') %>
4 4  
5   -<% list_of_templates = [[_('Person') , environment.people.templates , 'person' ],
  5 +<% list_of_templates = [[_('Person') , environment.person_templates , 'person' ],
6 6 [_('Community') , environment.communities.templates, 'community' ],
7 7 [_('Enterprise'), environment.enterprises.templates, 'enterprise']] %>
8 8  
  9 +
9 10 <% list_of_templates.each do |title, templates, kind|%>
10 11 <div class='template-kind'>
11 12 <h2><%= title %></h2>
... ... @@ -20,6 +21,11 @@
20 21 <td>
21 22 <%#= image_tag "icons-app/#{kind}-icon.png" %>
22 23 <%= link_to(template.name, {:controller => 'profile_editor', :profile => template.identifier}, :title => _('Edit template "%s"') % template.name ) %>
  24 + <% if environment.is_default_template?(template) %>
  25 + <%= _('is the default template') %>
  26 + <% else %>
  27 + <%= link_to(_('Set as default'), {:action => "set_#{kind}_as_default", :template_id => template.id}, :title => _('Set %s template as default') % template.name ) %>
  28 + <% end %>
23 29 </td>
24 30 <td>
25 31 <%= button_without_text 'edit', _('Edit settings'), {:controller => 'profile_editor', :profile => template.identifier, :action => 'edit'} %>
... ...
config/application.rb
... ... @@ -111,12 +111,7 @@ module Noosfero
111 111 # Make sure the secret is at least 30 characters and all random,
112 112 # no regular words or you'll be exposed to dictionary attacks.
113 113 config.secret_token = noosfero_session_secret
114   - config.action_dispatch.session = {
115   - :key => '_noosfero_session',
116   - }
117   -
118   - config.time_zone = File.read('/etc/timezone').split("\n").first
119   - config.active_record.default_timezone = :local
  114 + config.session_store :cookie_store, :key => '_noosfero_session'
120 115  
121 116 config.paths['db/migrate'] += Dir.glob "#{Rails.root}/{baseplugins,config/plugins}/*/db/migrate"
122 117 config.i18n.load_path += Dir.glob "#{Rails.root}/{baseplugins,config/plugins}/*/locales/*.{rb,yml}"
... ...
config/initializers/noosfero_urls.rb 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +if Rails.env == 'development'
  2 + ActionController::Base.send(:prepend_before_filter) do |controller|
  3 + # XXX note that this is not thread-safe! Accessing a Noosfero instance in
  4 + # development mode under different ports concurrently _will_ lead to weird
  5 + # things happening.
  6 + if [80,443].include?(controller.request.port)
  7 + url_options = {}
  8 + else
  9 + url_options = { :port => controller.request.port }
  10 + end
  11 + Noosfero.instance_variable_set('@development_url_options', url_options)
  12 + end
  13 +end
... ...
config/initializers/passenger.rb
... ... @@ -3,7 +3,7 @@ if defined? PhusionPassenger
3 3 # from http://russbrooks.com/2010/10/20/rails-cache-memcache-on-passenger-with-smart-spawning
4 4 PhusionPassenger.on_event :starting_worker_process do |forked|
5 5 if forked
6   - Rails.cache.instance_variable_get(:@data).reset if Rails.cache.class == ActiveSupport::Cache::MemCacheStore
  6 + Rails.cache.instance_variable_get(:@data).reset if Rails.cache.class.name == 'ActiveSupport::Cache::MemCacheStore'
7 7 end
8 8 end
9 9 end
... ...
db/migrate/20140724134600_remove_environment_statistics_block_sooner.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class RemoveEnvironmentStatisticsBlockSooner < ActiveRecord::Migration
  2 + def self.up
  3 + update("UPDATE blocks SET type = 'StatisticsBlock' WHERE type = 'EnvironmentStatisticsBlock'")
  4 + end
  5 +
  6 + def self.down
  7 + say("Nothing to undo (cannot recover the data)")
  8 + end
  9 +end
... ...
db/migrate/20150113131617_add_show_to_followers_for_article.rb 0 → 100644
... ... @@ -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 @@
  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
... ...
db/schema.rb
... ... @@ -11,7 +11,7 @@
11 11 #
12 12 # It's strongly recommended to check this file into your version control system.
13 13  
14   -ActiveRecord::Schema.define(:version => 20140827191326) do
  14 +ActiveRecord::Schema.define(:version => 20150122165042) do
15 15  
16 16 create_table "abuse_reports", :force => true do |t|
17 17 t.integer "reporter_id"
... ... @@ -149,6 +149,7 @@ ActiveRecord::Schema.define(:version =&gt; 20140827191326) do
149 149 t.integer "spam_comments_count", :default => 0
150 150 t.integer "author_id"
151 151 t.integer "created_by_id"
  152 + t.boolean "show_to_followers", :default => false
152 153 end
153 154  
154 155 add_index "articles", ["comments_count"], :name => "index_articles_on_comments_count"
... ... @@ -315,7 +316,7 @@ ActiveRecord::Schema.define(:version =&gt; 20140827191326) do
315 316 create_table "external_feeds", :force => true do |t|
316 317 t.string "feed_title"
317 318 t.datetime "fetched_at"
318   - t.string "address"
  319 + t.text "address"
319 320 t.integer "blog_id", :null => false
320 321 t.boolean "enabled", :default => true, :null => false
321 322 t.boolean "only_once", :default => true, :null => false
... ...
debian/control
... ... @@ -61,6 +61,12 @@ Depends:
61 61 dbconfig-common,
62 62 adduser,
63 63 exim4 | mail-transport-agent,
  64 +# to minimize upgrade issues:
  65 + ruby-feedparser (>= 0.7-3~),
  66 + ruby-eventmachine (>= 0.12.10-4~),
  67 + ruby-rack (>= 1.4.5-2~),
  68 + ruby-tzinfo (>= 1.1.0-2~),
  69 + ruby-minitest,
64 70 ${misc:Depends}
65 71 Recommends:
66 72 postgresql,
... ...
etc/init.d/noosfero
... ... @@ -115,8 +115,11 @@ do_stop() {
115 115 }
116 116  
117 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 125 running(){
... ...
etc/noosfero/varnish-noosfero.vcl
... ... @@ -10,6 +10,13 @@ sub vcl_recv {
10 10 }
11 11 }
12 12  
  13 +sub vcl_deliver {
  14 + # Force clients to aways hit the server again for HTML pages
  15 + if (resp.http.Content-Type ~ "^text/html") {
  16 + set resp.http.Cache-Control = "no-cache";
  17 + }
  18 +}
  19 +
13 20 sub vcl_error {
14 21 set obj.http.Content-Type = "text/html; charset=utf-8";
15 22  
... ...
etc/pound.cfg
... ... @@ -5,7 +5,7 @@ TimeOut 300
5 5 Control "/var/run/pound/poundctl.socket"
6 6  
7 7 ListenHTTP
8   - Address 192.168.1.86
  8 + Address 0.0.0.0
9 9 Port 80
10 10 xHTTP 1
11 11 # uncomment code above if you are using chat
... ... @@ -22,7 +22,8 @@ ListenHTTP
22 22 End
23 23  
24 24 ListenHTTPS
25   - Address 192.168.1.86
  25 + Address 0.0.0.0
  26 + AddHeader "X-Forwarded-Proto: https"
26 27 Port 443
27 28 Cert "/etc/noosfero/ssl/noosfero.pem"
28 29 Ciphers "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM"
... ...
features/edit_article.feature
... ... @@ -47,6 +47,28 @@ Feature: edit article
47 47 Then I should see "Access denied"
48 48  
49 49 @selenium
  50 + Scenario: Hide token field when show to members is activated
  51 + Given the following communities
  52 + | name | identifier | owner |
  53 + | Free Software | freesoftware | joaosilva |
  54 + And the following users
  55 + | login | name |
  56 + | mario | Mario Souto |
  57 + | maria | Maria Silva |
  58 + And "Mario Souto" is a member of "Free Software"
  59 + And "Maria Silva" is a member of "Free Software"
  60 + And I am on freesoftware's control panel
  61 + And I follow "Manage Content"
  62 + And I should see "New content"
  63 + And I follow "New content"
  64 + And I should see "Folder"
  65 + When I follow "Folder"
  66 + And I fill in "Title" with "My Folder"
  67 + And I choose "article_published_false"
  68 + And I check "article_show_to_followers"
  69 + Then I should not see "Fill in the search"
  70 +
  71 + @selenium
50 72 Scenario: show exception users field when you choose the private option
51 73 Given the following communities
52 74 | name | identifier | owner |
... ...
features/step_definitions/activate_enterprise_steps.rb
... ... @@ -19,7 +19,7 @@ Given /^&quot;([^\&quot;]*)&quot; is the active enterprise template$/ do |enterprise|
19 19 template.save!
20 20  
21 21 e = Environment.default
22   - e.enterprise_template = template
  22 + e.enterprise_default_template = template
23 23 e.save
24 24 end
25 25  
... ...
lib/noosfero.rb
... ... @@ -70,16 +70,6 @@ module Noosfero
70 70 end
71 71 end
72 72  
73   - def self.term(t)
74   - self.terminology.get(t)
75   - end
76   - def self.terminology
77   - @terminology ||= Noosfero::Terminology::Default.instance
78   - end
79   - def self.terminology=(term)
80   - @terminology = term
81   - end
82   -
83 73 def self.url_options
84 74 case Rails.env
85 75 when 'development'
... ...
lib/noosfero/i18n.rb
... ... @@ -4,15 +4,23 @@ class Object
4 4 include FastGettext::Translation
5 5 alias :gettext :_
6 6 alias :ngettext :n_
  7 + alias :c_ :_
  8 + alias :cN_ :N_
7 9 end
8 10  
9 11  
10   -custom_locale_dir = Rails.root.join('custom_locales', Rails.env)
  12 +# Adds custom locales for a whole environment
  13 +custom_locale_dir = Rails.root.join('config', 'custom_locales', Rails.env)
11 14 repos = []
12 15 if File.exists?(custom_locale_dir)
13 16 repos << FastGettext::TranslationRepository.build('environment', :type => 'po', :path => custom_locale_dir)
14 17 end
15 18  
  19 +Dir.glob('{baseplugins,config/plugins}/*/locale') do |plugin_locale_dir|
  20 + plugin = File.basename(File.dirname(plugin_locale_dir))
  21 + repos << FastGettext::TranslationRepository.build(plugin, :type => 'mo', :path => plugin_locale_dir)
  22 +end
  23 +
16 24 # translations in place?
17 25 locale_dir = Rails.root.join('locale')
18 26 if File.exists?(locale_dir)
... ... @@ -22,3 +30,15 @@ end
22 30  
23 31 FastGettext.add_text_domain 'noosfero', :type => :chain, :chain => repos
24 32 FastGettext.default_text_domain = 'noosfero'
  33 +
  34 +# Adds custom locales for specific domains; Domains are identified by the
  35 +# sequence before the first dot, while tenants are identified by schema name
  36 +hosted_environments = Noosfero::MultiTenancy.mapping.values
  37 +hosted_environments += Domain.all.map { |domain| domain.name[/(.*?)\./,1] } if Domain.table_exists?
  38 +
  39 +hosted_environments.uniq.each do |env|
  40 + custom_locale_dir = Rails.root.join('config', 'custom_locales', env)
  41 + if File.exists?(custom_locale_dir)
  42 + FastGettext.add_text_domain(env, :type => :chain, :chain => [FastGettext::TranslationRepository.build('environment', :type => 'po', :path => custom_locale_dir)] + repos)
  43 + end
  44 +end
... ...
lib/noosfero/plugin.rb
... ... @@ -88,18 +88,29 @@ class Noosfero::Plugin
88 88 # This is a generic method that initialize any possible filter defined by a
89 89 # plugin to a specific controller
90 90 def load_plugin_filters(plugin)
91   - plugin_methods = plugin.instance_methods.select {|m| m.to_s.end_with?('_filters')}
92   - plugin_methods.each do |plugin_method|
93   - controller_class = plugin_method.to_s.gsub('_filters', '').camelize.constantize
94   - filters = plugin.new.send(plugin_method)
95   - filters = [filters] if !filters.kind_of?(Array)
96   -
97   - filters.each do |plugin_filter|
98   - filter_method = (plugin.name.underscore.gsub('/','_') + '_' + plugin_filter[:method_name]).to_sym
99   - controller_class.send(plugin_filter[:type], filter_method, (plugin_filter[:options] || {}))
100   - controller_class.send(:define_method, filter_method) do
101   - instance_eval(&plugin_filter[:block]) if environment.plugin_enabled?(plugin)
102   - end
  91 + Rails.configuration.to_prepare do
  92 + filters = plugin.new.send 'application_controller_filters' rescue []
  93 + Noosfero::Plugin.add_controller_filters ApplicationController, plugin, filters
  94 +
  95 + plugin_methods = plugin.instance_methods.select {|m| m.to_s.end_with?('_filters')}
  96 + plugin_methods.each do |plugin_method|
  97 + controller_class = plugin_method.to_s.gsub('_filters', '').camelize.constantize
  98 +
  99 + filters = plugin.new.send(plugin_method)
  100 + Noosfero::Plugin.add_controller_filters controller_class, plugin, filters
  101 + end
  102 + end
  103 + end
  104 +
  105 + def add_controller_filters(controller_class, plugin, filters)
  106 + unless filters.is_a?(Array)
  107 + filters = [filters]
  108 + end
  109 + filters.each do |plugin_filter|
  110 + filter_method = (plugin.name.underscore.gsub('/','_') + '_' + plugin_filter[:method_name]).to_sym
  111 + controller_class.send(plugin_filter[:type], filter_method, (plugin_filter[:options] || {}))
  112 + controller_class.send(:define_method, filter_method) do
  113 + instance_exec(&plugin_filter[:block]) if environment.plugin_enabled?(plugin)
103 114 end
104 115 end
105 116 end
... ... @@ -406,6 +417,12 @@ class Noosfero::Plugin
406 417 nil
407 418 end
408 419  
  420 + # -> Adds adicional fields to a view
  421 + # returns = proc block that creates html code
  422 + def upload_files_extra_fields(article)
  423 + nil
  424 + end
  425 +
409 426 # -> Adds fields to the signup form
410 427 # returns = proc that creates html code
411 428 def signup_extra_contents
... ... @@ -557,6 +574,12 @@ class Noosfero::Plugin
557 574 []
558 575 end
559 576  
  577 + # -> Adds css class to <html> tag
  578 + # returns = ['class1', 'class2']
  579 + def html_tag_classes
  580 + nil
  581 + end
  582 +
560 583 # -> Adds additional blocks to profiles and environments.
561 584 # Your plugin must implements a class method called 'extra_blocks'
562 585 # that returns a hash with the following syntax.
... ...
lib/noosfero/version.rb
... ... @@ -2,3 +2,7 @@ module Noosfero
2 2 PROJECT = 'noosfero'
3 3 VERSION = '1.0'
4 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 5  
6 6 current_branch = `git rev-parse --abbrev-ref HEAD`.strip
7 7 from = ENV['PREV_HEAD'] || "origin/#{current_branch}"
  8 + if !system("git show-ref --verify --quiet refs/remotes/#{from}")
  9 + from = 'origin/master'
  10 + end
8 11 to = ENV['HEAD'] || current_branch
  12 +
  13 + puts "Testing changes between #{from} and #{to} ..."
  14 +
9 15 changed_files = `git diff --name-only #{from}..#{to}`.split.select do |f|
10 16 File.exist?(f) && f.split(File::SEPARATOR).first != 'vendor'
11 17 end
... ... @@ -33,14 +39,23 @@ namespace :ci do
33 39 end
34 40 end
35 41  
  42 + if tests.empty? && features.empty? && changed_plugins.empty?
  43 + puts "Could not figure out specific changes to be tested in isolation!"
  44 + end
  45 + puts
  46 +
36 47 sh 'testrb', '-Itest', *tests unless tests.empty?
37 48 sh 'cucumber', *features unless features.empty?
38 49 sh 'xvfb-run', 'cucumber', '-p', 'selenium', *features unless features.empty?
39 50  
40 51 changed_plugins.each do |plugin|
41   - task = "test:noosfero_plugins:#{plugin}"
42   - puts "Running #{task}"
43   - Rake::Task[task].execute
  52 + if $broken_plugins.include?(plugin)
  53 + puts "Skipping plugins/#{plugin}: marked as broken"
  54 + else
  55 + task = "test:noosfero_plugins:#{plugin}"
  56 + puts "Running #{task}"
  57 + Rake::Task[task].execute
  58 + end
44 59 end
45 60  
46 61 end
... ...
lib/tasks/gettext.rake
... ... @@ -16,6 +16,14 @@ file makemo_stamp =&gt; Dir.glob(&#39;po/*/noosfero.po&#39;) do
16 16 mo_root: 'locale',
17 17 )
18 18  
  19 + Dir.glob('plugins/*').each do |plugindir|
  20 + GetText.create_mofiles(
  21 + verbose: true,
  22 + po_root: File.join(plugindir, 'po'),
  23 + mo_root: File.join(plugindir, 'locale'),
  24 + )
  25 + end
  26 +
19 27 FileUtils.mkdir_p 'tmp'
20 28 FileUtils.touch makemo_stamp
21 29 end
... ... @@ -54,7 +62,6 @@ task :updatepo do
54 62 'config/initializers/*.rb',
55 63 'public/*.html.erb',
56 64 'public/designs/themes/{base,noosfero,profile-base}/*.{rhtml,html.erb}',
57   - 'plugins/**/{controllers,models,lib,views}/**/*.{rhtml,html.erb,rb}',
58 65 ].map { |pattern| Dir.glob(pattern) }.flatten
59 66  
60 67 require 'gettext'
... ... @@ -67,7 +74,33 @@ task :updatepo do
67 74 po_root: 'po',
68 75 }
69 76 )
  77 +end
70 78  
  79 +Dir.glob('plugins/*').each do |plugindir|
  80 + plugin = File.basename(plugindir)
  81 + task :updatepo => "updatepo:plugin:#{plugin}"
  82 +
  83 + desc "Extract strings from #{plugin} plugin"
  84 + task "updatepo:plugin:#{plugin}" do
  85 + files = Dir.glob("#{plugindir}/**/*.{rb,html.erb}")
  86 + po_root = File.join(plugindir, 'po')
  87 + require 'gettext'
  88 + require 'gettext/tools'
  89 + GetText.update_pofiles(
  90 + plugin,
  91 + files,
  92 + Noosfero::VERSION,
  93 + {
  94 + po_root: po_root,
  95 + }
  96 + )
  97 + plugin_pot = File.join(po_root, "#{plugin}.pot")
  98 + if File.exists?(plugin_pot) && system("LANG=C msgfmt --statistics --output /dev/null #{plugin_pot} 2>&1 | grep -q '^0 translated messages.'")
  99 + rm_f plugin_pot
  100 + end
  101 + sh 'find', po_root, '-type', 'd', '-empty', '-delete'
  102 + puts
  103 + end
71 104 end
72 105  
73 106 task :checkpo do
... ...
lib/tasks/plugins_tests.rake
1   -@broken_plugins = %w[
  1 +$broken_plugins = %w[
2 2 anti_spam
3 3 bsc
4 4 comment_classification
5 5 ldap
6 6 solr
  7 + stoa
7 8 ]
8 9  
9 10 @all_plugins = Dir.glob('plugins/*').map { |f| File.basename(f) } - ['template']
... ... @@ -204,14 +205,14 @@ namespace :test do
204 205 @all_tasks.each do |taskname|
205 206 desc "Run #{taskname} tests for all plugins"
206 207 task taskname do
207   - test_sequence(@all_plugins - @broken_plugins, taskname)
  208 + test_sequence(@all_plugins - $broken_plugins, taskname)
208 209 end
209 210 end
210 211 end
211 212  
212 213 desc "Run all tests for all plugins"
213 214 task :noosfero_plugins do
214   - test_sequence(@all_plugins - @broken_plugins, @all_tasks) do |failed|
  215 + test_sequence(@all_plugins - $broken_plugins, @all_tasks) do |failed|
215 216 plugins_status_report(failed)
216 217 end
217 218 end
... ... @@ -228,7 +229,7 @@ def plugins_status_report(failed)
228 229 printf ('-' * w) + ' ' + ('-' * 20) + "\n"
229 230  
230 231 @all_plugins.each do |plugin|
231   - if @broken_plugins.include?(plugin)
  232 + if $broken_plugins.include?(plugin)
232 233 status = "SKIP"
233 234 elsif !failed[plugin] || failed[plugin].empty?
234 235 status = "PASS"
... ...
lib/tasks/release.rake
... ... @@ -137,7 +137,17 @@ EOF
137 137 new_version += '~rc1'
138 138 end
139 139 else
140   - new_version.sub!(/~rc[0-9]+/, '')
  140 + if new_version =~ /~rc\d+/
  141 + new_version.sub!(/~rc[0-9]+/, '')
  142 + else
  143 + components = new_version.split('.').map(&:to_i)
  144 + if components.size < 3
  145 + components << 1
  146 + else
  147 + components[-1] += 1
  148 + end
  149 + new_version = components.join('.')
  150 + end
141 151 end
142 152  
143 153 puts "Current version: #{$version}"
... ...
lib/unifreire_terminology.rb
... ... @@ -1,44 +0,0 @@
1   -require 'noosfero/terminology'
2   -
3   -class UnifreireTerminology < Noosfero::Terminology::Custom
4   -
5   - def initialize
6   - # NOTE: the hash values must be marked for translation!!
7   - super({
8   - 'Enterprises' => N_('Institutions'),
9   - 'enterprises' => N_('institutions'),
10   - 'The enterprises where this user works.' => N_('The institution where this user belongs.'),
11   - 'A block that displays your enterprises' => N_('A block that displays your institutions.'),
12   - 'All enterprises' => N_('All institutions'),
13   - 'Disable search for enterprises' => N_('Disable search for institutions'),
14   - 'One enterprise' => N_('One institution'),
15   - '%{num} enterprises' => N_('%{num} institutions'),
16   - 'Favorite Enterprises' => N_('Favorite Institutions'),
17   - 'This user\'s favorite enterprises.' => N_('This user\'s favorite institutions'),
18   - 'A block that displays your favorite enterprises' => N_('A block that displays your favorite institutions'),
19   - 'All favorite enterprises' => N_('All favorite institutions'),
20   - 'A search for enterprises by products selled and local' => N_('A search for institutions by products selled and local'),
21   - 'Edit message for disabled enterprises' => N_('Edit message for disabled institutions'),
22   - 'Add favorite enterprise' => N_('Add favorite institution'),
23   - 'Validation info is the information the enterprises will see about how your organization processes the enterprises validations it receives: validation methodology, restrictions to the types of enterprises the organization validates etc.' => N_('Validation info is the information the institutions will see about how your organization processes the institutions validations it receives: validation methodology, restrictions to the types of institutions the organization validates etc.'),
24   - 'Here are all <b>%s</b>\'s enterprises.' => N_('Here are all <b>%s</b>\'s institutions.'),
25   - 'Here are all <b>%s</b>\'s favorite enterprises.' => N_('Here are all <b>%s</b>\'s favorite institutions.'),
26   - 'Favorite Enterprises' => N_('Favorite Institutions'),
27   - 'Enterprises in "%s"' => N_('Institutions in "%s"'),
28   - 'Register a new Enterprise' => N_('Register a new Institution'),
29   - 'Events' => N_('Schedule'),
30   - 'Manage enterprise fields' => N_('Manage institutions fields'),
31   - "%s's enterprises" => N_("%s's institutions"),
32   - 'Activate your enterprise' => N_('Activate your institution'),
33   - 'Enterprise activation code' => N_('Institution activation code'),
34   - 'Disable activation of enterprises' => N_('Disable activation of institutions'),
35   - "%s's favorite enterprises" => N_("%s's favorite institutions"),
36   - 'Disable Enterprise' => N_('Disable Institution'),
37   - 'Enable Enterprise' => N_('Enable Institution'),
38   - 'Enterprise Validation' => N_('Institution Validation'),
39   - 'Enterprise Info and settings' => N_('Institution Info and settings'),
40   - 'Enterprises are disabled when created' => N_('Institutions are disabled when created'),
41   - })
42   - end
43   -
44   -end
lib/zen3_terminology.rb
... ... @@ -1,88 +0,0 @@
1   -require 'noosfero/terminology'
2   -
3   -class Zen3Terminology < Noosfero::Terminology::Custom
4   -
5   - def initialize
6   - # NOTE: the hash values must be marked for translation!!
7   - super({
8   - 'My Home Page' => N_('My ePortfolio'),
9   - 'Homepage' => N_('ePortfolio'),
10   - 'Communities' => N_('Groups'),
11   - 'communities' => N_('groups'),
12   - 'A block that displays your communities' => N_('A block that displays your groups'),
13   - 'A block that displays your friends' => N_('A block that displays your contacts'),
14   - 'The communities in which the user is a member' => N_('The groups in which the user is a member'),
15   - 'All communities' => N_('All groups'),
16   - 'Community' => N_('Group'),
17   - 'One community' => N_('One group'),
18   - '%{num} communities' => N_('%{num} groups'),
19   - 'Disable search for communities' => N_('Disable search for groups'),
20   - 'Enterprises' => N_('Organizations'),
21   - 'enterprises' => N_('organizations'),
22   - 'The enterprises where this user works.' => N_('The organizations where this user works.'),
23   - 'A block that displays your enterprises' => N_('A block that displays your organizations.'),
24   - 'All enterprises' => N_('All organizations'),
25   - 'Disable search for enterprises' => N_('Disable search for organizations'),
26   - 'One enterprise' => N_('One organization'),
27   - '%{num} enterprises' => N_('%{num} organizations'),
28   - 'Favorite Enterprises' => N_('Favorite Organizations'),
29   - 'This user\'s favorite enterprises.' => N_('This user\'s favorite organizations'),
30   - 'A block that displays your favorite enterprises' => N_('A block that displays your favorite organizations'),
31   - 'All favorite enterprises' => N_('All favorite organizations'),
32   - 'A search for enterprises by products selled and local' => N_('A search for organizations by products selled and local'),
33   - 'Edit message for disabled enterprises' => N_('Edit message for disabled organizations'),
34   - 'Add enterprise as favorite' => N_('Add organization as favorite'),
35   - 'Validation info is the information the enterprises will see about how your organization processes the enterprises validations it receives: validation methodology, restrictions to the types of enterprises the organization validates etc.' => N_('Validation info is the information the organizations will see about how your organization processes the organizations validations it receives: validation methodology, restrictions to the types of organizations the organization validates etc.'),
36   - 'Here are all <b>%s</b>\'s enterprises.' => N_('Here all all <b>%s</b>\'s organizations.'),
37   - 'Here are all <b>%s</b>\'s favorite enterprises.' => N_('Here are all <b>%s</b>\'s favorite organizations.'),
38   - 'Favorite Enterprises' => N_('Favorite Organizations'),
39   - 'Enterprises in "%s"' => N_('Organizations in "%s"'),
40   - 'Register a new Enterprise' => N_('Register a new organization'),
41   - 'One friend' => N_('One contact'),
42   - '%s friends' => N_('%s contacts'),
43   - '%s communities' => N_('%s groups'),
44   - 'Are you sure you want to remove %s from your friends list?' => N_('Are you sure you want to remove %s from your contacts list?'),
45   - 'Note that %s will still have you as a friend, unless he/she also wants to remove you from his/her friend list.' => N_('Note that %s will still have you as a contact, unless he/she also wants to remove you from his/her contact list.'),
46   - 'Yes, I want to remove %s from my friend list' => N_('Yes, I want to remove %s from my contact list'),
47   - 'Adding %s as a friend' => N_('Adding %s as a contact'),
48   - 'Are you sure you want to add %s as your friend?' => N_('Are you sure you want to add %s as your contact?'),
49   - 'Note that %s will need to accept being added as your friend.' => N_('Note that %s will need to accept being added as your contact.'),
50   - 'Classify your new friend %s: ' => N_('Classify your new contact %s: '),
51   - 'Yes, I want to add %s as my friend' => N_('Yes, I want to add %s as my contact'),
52   - 'Manage friends' => N_('Manage contacts'),
53   - 'Add friend' => N_('Add contact'),
54   - 'Removing friend: %s' => N_('Removing friend: %s'),
55   - 'Clicking on this button will remove your friend relation with %s.' => N_('Clicking on this button will remove your contact relation with %s.'),
56   - 'You have no friends yet.' => N_('You have no contacts yet.'),
57   - '%s\'s friends' => N_('%s\'s contacts'),
58   - 'Here are all <b>%s</b>\'s friends.' => N_('Here are all <b>%s</b>\'s contacts.'),
59   - 'Friends' => N_('Contacts'),
60   - 'Creating new community' => N_('Creating new group'),
61   - 'Do you want to join this community?' => N_('Do you want to join this group?'),
62   - 'Activate your enterprise' => N_('Activate your organization'),
63   - 'Enterprise activation code' => N_('Organization activation code'),
64   - 'Disable activation of enterprises' => N_('Disable activation of organizations'),
65   - 'Manage community fields' => N_('Manage group fields'),
66   - 'Create a new community' => N_('Create a new group'),
67   - 'Preferred domain name:' => N_('Choose your host community:'),
68   - 'My communities' => N_('My groups'),
69   - 'Community Info and settings' => N_('Group Info and Settings'),
70   - '{#} community' => N_('{#} group'),
71   - '{#} communities' => N_('{#} groups'),
72   - '{#} enterprise' => N_('{#} organization'),
73   - '{#} enterprises' => N_('{#} organizations'),
74   - '{#} friend' => N_('{#} contact'),
75   - '{#} friends' => N_('{#} contacts'),
76   - "%s's favorite enterprises" => N_("%s's favorite organizations"),
77   - 'Disable Enterprise' => N_('Disable Organization'),
78   - 'Enable Enterprise' => N_('Enable Organization'),
79   - 'Enterprise Validation' => N_('Organization Validation'),
80   - 'Enterprise Info and settings' => N_('Organization Info and settings'),
81   - 'Choose the communities you want to join and/or create your own.' => N_('Choose the groups you want to join and/or create your own.'),
82   - 'New community' => N_('New group'),
83   - "Tags are important to new users, they'll be able to find your new community more easily." => N_("Tags are important to new users, they'll be able to find your new group more easily."),
84   - 'Enterprises are disabled when created' => N_('Organizations are disabled when created'),
85   - })
86   - end
87   -
88   -end
plugins/anti_spam/controllers/anti_spam_plugin_admin_controller.rb
1   -class AntiSpamPluginAdminController < AdminController
  1 +class AntiSpamPluginAdminController < PluginAdminController
2 2 append_view_path File.join(File.dirname(__FILE__) + '/../views')
3 3  
4 4 def index
... ...
plugins/anti_spam/po/de/anti_spam.po 0 → 100644
... ... @@ -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 @@
  1 +# translation of noosfero.po to
  2 +# Krishnamurti Lelis Lima Vieira Nunes <krishna@colivre.coop.br>, 2007.
  3 +# noosfero - Brazilian Portuguese translation
  4 +# Copyright (C) 2007,
  5 +# Forum Brasileiro de Economia Solidaria <http://www.fbes.org.br/>
  6 +# Copyright (C) 2007,
  7 +# Ynternet.org Foundation <http://www.ynternet.org/>
  8 +# This file is distributed under the same license as noosfero itself.
  9 +# Joenio Costa <joenio@colivre.coop.br>, 2008.
  10 +#
  11 +#
  12 +msgid ""
  13 +msgstr ""
  14 +"Project-Id-Version: 1.0\n"
  15 +"POT-Creation-Date: 2015-02-02 21:44-0300\n"
  16 +"PO-Revision-Date: 2014-12-18 18:40-0200\n"
  17 +"Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
  18 +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
  19 +"noosfero/pt/>\n"
  20 +"Language: pt\n"
  21 +"MIME-Version: 1.0\n"
  22 +"Content-Type: text/plain; charset=UTF-8\n"
  23 +"Content-Transfer-Encoding: 8bit\n"
  24 +"Plural-Forms: nplurals=2; plural=n != 1;\n"
  25 +"X-Generator: Weblate 2.0\n"
  26 +
  27 +#: plugins/anti_spam/lib/anti_spam_plugin.rb:8
  28 +msgid ""
  29 +"Tests comments and suggested articles against a spam checking service "
  30 +"compatible with the Akismet API"
  31 +msgstr ""
  32 +"Testa comentários e sugestões de artigo contra um serviço de verificação de "
  33 +"spams compatível com a API Akismet"
  34 +
  35 +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:1
  36 +msgid "AntiSpam settings"
  37 +msgstr "Configurações de AntiSpam"
  38 +
  39 +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:5
  40 +msgid "Host"
  41 +msgstr "Host"
  42 +
  43 +#: plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb:7
  44 +msgid "API key"
  45 +msgstr "Chave da API"
... ...
plugins/anti_spam/views/anti_spam_plugin_admin/index.html.erb
... ... @@ -7,7 +7,7 @@
7 7 <%= labelled_form_field _('API key'), f.text_field(:api_key, :size => 40) %>
8 8  
9 9 <% button_bar do %>
10   - <%= submit_button(:save, _('Save'), :cancel => {:controller => 'plugins', :action => 'index'}) %>
  10 + <%= submit_button(:save, c_('Save'), :cancel => {:controller => 'plugins', :action => 'index'}) %>
11 11 <% end %>
12 12  
13 13 <% end %>
... ...
plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb
... ... @@ -53,7 +53,7 @@ class BreadcrumbsPlugin::ContentBreadcrumbsBlock &lt; Block
53 53  
54 54 protected
55 55  
56   - CMS_ACTIONS = {:edit => _('Edit'), :upload_files => _('Upload Files'), :new => _('New')}
  56 + CMS_ACTIONS = {:edit => c_('Edit'), :upload_files => _('Upload Files'), :new => c_('New')}
57 57  
58 58 def cms_action(action)
59 59 CMS_ACTIONS[action.to_sym] || action
... ...
plugins/breadcrumbs/po/pt/breadcrumbs.po 0 → 100644
... ... @@ -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 101 else
102 102 content = lambda { product.enterprise.name }
103 103 end
104   - properties << { :name => _('Supplier'), :content => content }
  104 + properties << { :name => c_('Supplier'), :content => content }
105 105 end
106 106  
107 107 def profile_tabs
... ...
plugins/bsc/lib/bsc_plugin/bsc_helper.rb
... ... @@ -4,9 +4,9 @@ module BscPlugin::BscHelper
4 4  
5 5 def token_input_field_tag(name, element_id, search_action, options = {}, text_field_options = {}, html_options = {})
6 6 options[:min_chars] ||= 3
7   - options[:hint_text] ||= _("Type in a search term")
8   - options[:no_results_text] ||= _("No results")
9   - options[:searching_text] ||= _("Searching...")
  7 + options[:hint_text] ||= c_("Type in a search term")
  8 + options[:no_results_text] ||= c_("No results")
  9 + options[:searching_text] ||= c_("Searching...")
10 10 options[:search_delay] ||= 1000
11 11 options[:prevent_duplicates] ||= true
12 12 options[:backspace_delete_item] ||= false
... ...
plugins/bsc/lib/bsc_plugin/contract.rb
... ... @@ -43,7 +43,7 @@ class BscPlugin::Contract &lt; Noosfero::Plugin::ActiveRecord
43 43 end
44 44  
45 45 def self.names
46   - [_('State'), _('Federal')]
  46 + [c_('State'), _('Federal')]
47 47 end
48 48 end
49 49  
... ...
plugins/bsc/po/de/bsc.po 0 → 100644
... ... @@ -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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  1 +# Russian translation of noosfero.
  2 +# Copyright (C) 2009 Anton Caceres
  3 +# This file is distributed under the same license as the noosfero package.
  4 +# Josef Spillner <josef.spillner@tu-dresden.de>, 2009.
  5 +#
  6 +msgid ""
  7 +msgstr ""
  8 +"Project-Id-Version: 1.0\n"
  9 +"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  10 +"PO-Revision-Date: 2014-12-12 14:23+0200\n"
  11 +"Last-Translator: Michal Čihař <michal@cihar.com>\n"
  12 +"Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/"
  13 +"noosfero/ru/>\n"
  14 +"Language: ru\n"
  15 +"MIME-Version: 1.0\n"
  16 +"Content-Type: text/plain; charset=UTF-8\n"
  17 +"Content-Transfer-Encoding: 8bit\n"
  18 +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
  19 +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
  20 +"X-Generator: Weblate 2.2-dev\n"
  21 +
  22 +#: plugins/bsc/lib/bsc_plugin.rb:10
  23 +#, fuzzy
  24 +msgid "Adds the Bsc feature"
  25 +msgstr "Системные возможности"
  26 +
  27 +#: plugins/bsc/lib/bsc_plugin.rb:14
  28 +#, fuzzy
  29 +msgid "Create Bsc"
  30 +msgstr "Создать"
  31 +
  32 +#: plugins/bsc/lib/bsc_plugin.rb:15
  33 +#, fuzzy
  34 +msgid "Validate Enterprises"
  35 +msgstr "Подтвердить компанию"
  36 +
  37 +#: plugins/bsc/lib/bsc_plugin.rb:20
  38 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:1
  39 +#, fuzzy
  40 +msgid "Manage associated enterprises"
  41 +msgstr "Verwalte Unternehmensfelder"
  42 +
  43 +#: plugins/bsc/lib/bsc_plugin.rb:21 plugins/bsc/lib/bsc_plugin.rb:27
  44 +msgid "Transfer ownership"
  45 +msgstr ""
  46 +
  47 +#: plugins/bsc/lib/bsc_plugin.rb:22
  48 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:1
  49 +#, fuzzy
  50 +msgid "Manage contracts"
  51 +msgstr "Управлять контактами"
  52 +
  53 +#: plugins/bsc/lib/bsc_plugin.rb:98
  54 +msgid "Bsc"
  55 +msgstr ""
  56 +
  57 +#: plugins/bsc/lib/bsc_plugin.rb:109
  58 +#: plugins/bsc/views/shared/_fields.html.erb:53
  59 +msgid "Contact"
  60 +msgstr "Контакт"
  61 +
  62 +#: plugins/bsc/lib/bsc_plugin/bsc.rb:28
  63 +#, fuzzy
  64 +msgid "Bsc info and settings"
  65 +msgstr "Инфо профиля и настройки"
  66 +
  67 +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:10
  68 +#, fuzzy
  69 +msgid "BSC association"
  70 +msgstr "Основная информация"
  71 +
  72 +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:18
  73 +#, fuzzy
  74 +msgid "%{requestor} wants to associate this enterprise with %{linked_subject}."
  75 +msgstr "'%{user} хочет активировать E-Mail '%{email}' "
  76 +
  77 +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:35
  78 +msgid "%{enterprise} accepted your request to associate it with %{bsc}."
  79 +msgstr ""
  80 +
  81 +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:39
  82 +msgid "%{enterprise} rejected your request to associate it with %{bsc}."
  83 +msgstr ""
  84 +
  85 +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:41
  86 +msgid ""
  87 +"Here is the reject explanation left by the administrator:\n"
  88 +"\n"
  89 +"%{reject_explanation}"
  90 +msgstr ""
  91 +
  92 +#: plugins/bsc/lib/bsc_plugin/associate_enterprise.rb:46
  93 +#, fuzzy
  94 +msgid "%{requestor} wants assoaciate %{bsc} as your BSC."
  95 +msgstr "%s хочет быть вашим другом"
  96 +
  97 +#: plugins/bsc/lib/bsc_plugin/mailer.rb:7
  98 +msgid "[%s] Bsc management transferred to you."
  99 +msgstr ""
  100 +
  101 +#: plugins/bsc/lib/bsc_plugin/contract.rb:33
  102 +#, fuzzy
  103 +msgid "Opened"
  104 +msgstr "открыть"
  105 +
  106 +#: plugins/bsc/lib/bsc_plugin/contract.rb:33
  107 +#, fuzzy
  108 +msgid "Negotiating"
  109 +msgstr "Настройки"
  110 +
  111 +#: plugins/bsc/lib/bsc_plugin/contract.rb:33
  112 +#, fuzzy
  113 +msgid "Executing"
  114 +msgstr "Редактирование"
  115 +
  116 +#: plugins/bsc/lib/bsc_plugin/contract.rb:33
  117 +#, fuzzy
  118 +msgid "Closed"
  119 +msgstr "Закрыть"
  120 +
  121 +#: plugins/bsc/lib/bsc_plugin/contract.rb:46
  122 +#, fuzzy
  123 +msgid "Federal"
  124 +msgstr "Основная задача"
  125 +
  126 +#: plugins/bsc/lib/bsc_plugin/contract.rb:59
  127 +#, fuzzy
  128 +msgid "ProjectA"
  129 +msgstr "Продукт"
  130 +
  131 +#: plugins/bsc/lib/bsc_plugin/contract.rb:59
  132 +#, fuzzy
  133 +msgid "ProjectB"
  134 +msgstr "Продукт"
  135 +
  136 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:38
  137 +#, fuzzy
  138 +msgid "This Bsc associations were saved successfully."
  139 +msgstr "Все файлы успешно обновлены"
  140 +
  141 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:42
  142 +#, fuzzy
  143 +msgid "This Bsc associations couldn't be saved."
  144 +msgstr "Файл не может быть сохранен"
  145 +
  146 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:71
  147 +#, fuzzy
  148 +msgid "Enterprise ownership transferred."
  149 +msgstr "Домашняя страница компании"
  150 +
  151 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:85
  152 +#, fuzzy
  153 +msgid "Enterprise was created in association with %s."
  154 +msgstr "Регистрация предприятия: \"%s\""
  155 +
  156 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:117
  157 +#, fuzzy
  158 +msgid "Contract created."
  159 +msgstr "Контактный email"
  160 +
  161 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:120
  162 +msgid "Contract created but some products could not be added."
  163 +msgstr ""
  164 +
  165 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:131
  166 +msgid "Contract doesn't exists! Maybe it was already removed."
  167 +msgstr ""
  168 +
  169 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:140
  170 +#, fuzzy
  171 +msgid "Could not edit such contract."
  172 +msgstr "Невозможно обновить продукт"
  173 +
  174 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:170
  175 +#, fuzzy
  176 +msgid "Contract edited."
  177 +msgstr "Контактный email"
  178 +
  179 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:173
  180 +#, fuzzy
  181 +msgid "Contract edited but some products could not be added."
  182 +msgstr "Блок персональной информации"
  183 +
  184 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:183
  185 +#, fuzzy
  186 +msgid "Contract removed."
  187 +msgstr "Тело статьи"
  188 +
  189 +#: plugins/bsc/controllers/bsc_plugin_myprofile_controller.rb:185
  190 +#, fuzzy
  191 +msgid "Contract could not be removed. Sorry! ^^"
  192 +msgstr "Блок персональной информации"
  193 +
  194 +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:11
  195 +#, fuzzy
  196 +msgid "Your Bsc was created."
  197 +msgstr "Ваш E-Mail %s активирован"
  198 +
  199 +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:21
  200 +#, fuzzy
  201 +msgid "Enterprises validated."
  202 +msgstr "Утвердители компаний"
  203 +
  204 +#: plugins/bsc/controllers/bsc_plugin_admin_controller.rb:24
  205 +#, fuzzy
  206 +msgid "Enterprise validations couldn't be saved."
  207 +msgstr "Утвердители компаний"
  208 +
  209 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:4
  210 +msgid "Associations awaiting approval:"
  211 +msgstr ""
  212 +
  213 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:16
  214 +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:5
  215 +#, fuzzy
  216 +msgid "Type in a search term for enterprise"
  217 +msgstr "Отключить поиск по компаниям"
  218 +
  219 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb:19
  220 +#, fuzzy
  221 +msgid "Add new enterprise"
  222 +msgstr "Одна компания"
  223 +
  224 +#: plugins/bsc/views/bsc_plugin_myprofile/new_contract.html.erb:1
  225 +#: plugins/bsc/views/bsc_plugin_myprofile/edit_contract.html.erb:1
  226 +#, fuzzy
  227 +msgid "New contract"
  228 +msgstr "Весь контент"
  229 +
  230 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:6
  231 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:7
  232 +#, fuzzy
  233 +msgid "Client type"
  234 +msgstr "Тип контента"
  235 +
  236 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:7
  237 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:8
  238 +#, fuzzy
  239 +msgid "Business type"
  240 +msgstr "Название работы"
  241 +
  242 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:10
  243 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:11
  244 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:5
  245 +msgid "Status"
  246 +msgstr "Статус"
  247 +
  248 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:18
  249 +#, fuzzy
  250 +msgid "Type in search term for enterprise"
  251 +msgstr "Отключить поиск по компаниям"
  252 +
  253 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:23
  254 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:27
  255 +#, fuzzy
  256 +msgid "Quantity"
  257 +msgstr "Качество"
  258 +
  259 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:24
  260 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:28
  261 +#, fuzzy
  262 +msgid "Unit price"
  263 +msgstr "Прайс:"
  264 +
  265 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:27
  266 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:38
  267 +#, fuzzy
  268 +msgid "Total"
  269 +msgstr "Получатель:"
  270 +
  271 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:31
  272 +#, fuzzy
  273 +msgid "Add new product"
  274 +msgstr "Управление продуктами"
  275 +
  276 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:35
  277 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:13
  278 +#, fuzzy
  279 +msgid "Supply period"
  280 +msgstr "Поставщик: %s"
  281 +
  282 +#: plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb:57
  283 +#, fuzzy
  284 +msgid "Type in a search term for product"
  285 +msgstr "Отключить поиск по компаниям"
  286 +
  287 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:5
  288 +#: plugins/bsc/views/shared/_fields.html.erb:5
  289 +msgid "Basic information"
  290 +msgstr "Основная информация"
  291 +
  292 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:12
  293 +#, fuzzy
  294 +msgid "Number of producers"
  295 +msgstr "Количество новостей"
  296 +
  297 +#: plugins/bsc/views/bsc_plugin_myprofile/view_contract.html.erb:48
  298 +#, fuzzy
  299 +msgid "Annotations"
  300 +msgstr "Текст приглашения"
  301 +
  302 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:17
  303 +#, fuzzy
  304 +msgid "Sort by"
  305 +msgstr "Отправлено %s."
  306 +
  307 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18
  308 +msgid "Date(newest first)"
  309 +msgstr ""
  310 +
  311 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:18
  312 +msgid "Date(oldest first)"
  313 +msgstr ""
  314 +
  315 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19
  316 +msgid "Client name(A-Z)"
  317 +msgstr ""
  318 +
  319 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:19
  320 +msgid "Client name(Z-A)"
  321 +msgstr ""
  322 +
  323 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:24
  324 +#, fuzzy
  325 +msgid "There are no contracts at all."
  326 +msgstr "У вас еще нет контактов"
  327 +
  328 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:35
  329 +msgid "Are you sure?"
  330 +msgstr ""
  331 +
  332 +#: plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb:45
  333 +#, fuzzy
  334 +msgid "Create new contract"
  335 +msgstr "Создать новое сообщество"
  336 +
  337 +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:2
  338 +#, fuzzy
  339 +msgid "Existing enterprises:"
  340 +msgstr "Unternehmen ändern"
  341 +
  342 +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:3
  343 +msgid ""
  344 +"Were found %{count} enterprises with similar names on the same city, you can "
  345 +"decide to associate one of them or create the new enterprise confirming the "
  346 +"informations you typed in."
  347 +msgstr ""
  348 +
  349 +#: plugins/bsc/views/bsc_plugin_myprofile/_similar_enterprises.html.erb:20
  350 +#, fuzzy
  351 +msgid "Associate"
  352 +msgstr "Активировать"
  353 +
  354 +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:1
  355 +msgid "Transfer Ownership"
  356 +msgstr ""
  357 +
  358 +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:4
  359 +msgid ""
  360 +"This option allows you to transfer this enterprise's management to another "
  361 +"user. This action will remove all the current administrators. Be careful "
  362 +"when confirming this procedure."
  363 +msgstr ""
  364 +
  365 +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:8
  366 +#, fuzzy
  367 +msgid "Current administrators:"
  368 +msgstr "Текущие участники"
  369 +
  370 +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:19
  371 +#, fuzzy
  372 +msgid "Administrator:"
  373 +msgstr "Администраторы:"
  374 +
  375 +#: plugins/bsc/views/bsc_plugin_myprofile/transfer_ownership.html.erb:22
  376 +msgid "Type in a search term for the new administrator"
  377 +msgstr ""
  378 +
  379 +#: plugins/bsc/views/shared/_fields.html.erb:39
  380 +#, fuzzy
  381 +msgid ""
  382 +"You are about to change the address, and this will break external links to "
  383 +"this bsc or to posts inside it. Do you really want to change?"
  384 +msgstr ""
  385 +"Вы собираетесь сменить адрес, это приведет к разрыву всех внешних ссылок, "
  386 +"ведущих на вашу страницу. Вы уверены?"
  387 +
  388 +#: plugins/bsc/views/bsc_plugin/mailer/admin_notification.html.erb:1
  389 +msgid "The management of %{bsc} was transferred to you."
  390 +msgstr ""
  391 +
  392 +#: plugins/bsc/views/profile/_profile_tab.html.erb:2
  393 +#, fuzzy
  394 +msgid "Contact phone: "
  395 +msgstr "Kontakttelefon:"
  396 +
  397 +#: plugins/bsc/views/profile/_profile_tab.html.erb:3
  398 +#, fuzzy
  399 +msgid "Email: "
  400 +msgstr "E-Mail: %s"
  401 +
  402 +#: plugins/bsc/views/bsc_plugin_admin/new.html.erb:2
  403 +#, fuzzy
  404 +msgid "BSC registration"
  405 +msgstr "Регистрация предприятия"
  406 +
  407 +#: plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb:1
  408 +#, fuzzy
  409 +msgid "Validate enterprises"
  410 +msgstr "Подтвердить компанию"
... ...
plugins/bsc/views/bsc_plugin_admin/new.html.erb
... ... @@ -5,7 +5,7 @@
5 5 <%= render :partial => 'shared/fields', :locals => {:f => f, :profile => @bsc} %>
6 6  
7 7 <% button_bar do %>
8   - <%= submit_button('save', _('Save')) %>
9   - <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'}) %>
  8 + <%= submit_button('save', c_('Save')) %>
  9 + <%= button('cancel', c_('Cancel'), {:controller => 'admin_panel'}) %>
10 10 <% end %>
11 11 <% end %>
... ...
plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb
... ... @@ -6,7 +6,7 @@
6 6 :focus => true }) %>
7 7  
8 8 <% button_bar do %>
9   - <%= submit_button('save', _('Save'))%>
10   - <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'})%>
  9 + <%= submit_button('save', c_('Save'))%>
  10 + <%= button('cancel', c_('Cancel'), {:controller => 'admin_panel'})%>
11 11 <% end %>
12 12 <% end %>
... ...
plugins/bsc/views/bsc_plugin_myprofile/_contract_form.html.erb
... ... @@ -10,7 +10,7 @@
10 10 <%= labelled_form_field(_('Status'), f.select(:status, BscPlugin::Contract::Status.types.
11 11 map { |s| [BscPlugin::Contract::Status.names[s], s] })) %>
12 12 <%= f.text_field(:number_of_producers, :size => 8, :id => 'bsc-plugin-contract-spinner') %>
13   - <%= _('Enterprises')+':' %>
  13 + <%= c_('Enterprises')+':' %>
14 14  
15 15 <% search_action = {:action => 'search_contract_enterprises', :profile => profile.identifier} %>
16 16 <%= token_input_field_tag(:enterprises, 'involved-enterprises', search_action,
... ... @@ -19,7 +19,7 @@
19 19  
20 20 <table id="bsc-plugin-sales-table" class="alternate-colors">
21 21 <tr>
22   - <th class="bsc-plugin-sales-products-column"><%= _('Products') %></th>
  22 + <th class="bsc-plugin-sales-products-column"><%= c_('Products') %></th>
23 23 <th class="bsc-plugin-sales-quantity-column" ><%= _('Quantity') %></th>
24 24 <th class="bsc-plugin-sales-price-column" ><%= _('Unit price') %></th>
25 25 </tr>
... ... @@ -34,13 +34,13 @@
34 34  
35 35 <%= labelled_form_field( _('Supply period'),
36 36 text_field_tag('contract[supply_start]', (@contract.supply_start ? @contract.supply_start.strftime("%Y-%m-%d") : nil), :id => 'from', :size => 9) +
37   - _(' to ') +
  37 + c_(' to ') +
38 38 text_field_tag('contract[supply_end]', (@contract.supply_end ? @contract.supply_end.strftime("%Y-%m-%d") : nil), :id => 'to', :size => 9) )
39 39 %>
40 40  
41 41 <%= f.text_area(:annotations, :rows => 5, :cols => 68) %>
42 42 <% button_bar do%>
43   - <%= submit_button(:save, _('Save'), :cancel => {:action => 'manage_contracts'})%>
  43 + <%= submit_button(:save, c_('Save'), :cancel => {:action => 'manage_contracts'})%>
44 44 <% end %>
45 45 <% end %>
46 46  
... ... @@ -55,8 +55,8 @@
55 55 BSCContracts.tokenInputOptions = {
56 56 minChars: 3,
57 57 hintText: <%= _('Type in a search term for product').to_json %>,
58   - noResultsText: <%= _("No results").to_json %>,
59   - searchingText: <%= _("Searching...").to_json %>,
  58 + noResultsText: <%= c_("No results").to_json %>,
  59 + searchingText: <%= c_("Searching...").to_json %>,
60 60 searchDelay: 1000,
61 61 preventDuplicates: true,
62 62 backspaceDeleteItem: false,
... ...
plugins/bsc/views/bsc_plugin_myprofile/create_enterprise.html.erb
... ... @@ -9,12 +9,12 @@
9 9 <%= required f.text_field 'name', :onchange => "updateUrlField(this, 'create_enterprise_identifier')", :size => 40 %>
10 10 <%= render :partial => 'shared/organization_custom_fields', :locals => { :f => f, :object_name => :create_enterprise, :profile => @create_enterprise } %>
11 11 <p style="border-bottom: 2px solid #babdb6"></p>
12   - <%= required labelled_form_field(_('Address'), content_tag('code', environment.top_url + "/" + text_field(:create_enterprise, 'identifier', :size => 26))) %>
  12 + <%= required labelled_form_field(c_('Address'), content_tag('code', environment.top_url + "/" + text_field(:create_enterprise, 'identifier', :size => 26))) %>
13 13 <p style="border-bottom: 2px solid #babdb6"></p>
14 14 <%= render :partial => 'similar_enterprises', :locals => {:bsc => profile}%>
15 15  
16 16 <% button_bar do %>
17   - <%= submit_button('save', _('Save'), :cancel => {:controller => 'profile_editor', :profile => profile.identifier}) %>
  17 + <%= submit_button('save', c_('Save'), :cancel => {:controller => 'profile_editor', :profile => profile.identifier}) %>
18 18 <% end %>
19 19 <% end %>
20 20  
... ...
plugins/bsc/views/bsc_plugin_myprofile/manage_associated_enterprises.html.erb
... ... @@ -19,8 +19,8 @@
19 19 <%= button('add', _('Add new enterprise'), {:action => 'create_enterprise'}) %>
20 20  
21 21 <% button_bar do %>
22   - <%= submit_button('save', _('Save'))%>
23   - <%= button('cancel', _('Cancel'), {:controller => 'profile_editor'})%>
  22 + <%= submit_button('save', c_('Save'))%>
  23 + <%= button('cancel', c_('Cancel'), {:controller => 'profile_editor'})%>
24 24 <% end %>
25 25  
26 26 <% end %>
... ...
plugins/bsc/views/bsc_plugin_myprofile/manage_contracts.html.erb
... ... @@ -9,7 +9,7 @@
9 9 <br style="clear:both" />
10 10 <% end %>
11 11 <br style="clear:both" />
12   - <%= submit_button(:save, _('Filter')) %>
  12 + <%= submit_button(:save, c_('Filter')) %>
13 13 </div>
14 14  
15 15 <div id='bsc-plugin-contracts-results'>
... ... @@ -31,8 +31,8 @@
31 31 <%= content_tag('i', show_date(contract.created_at)) %>
32 32 </td>
33 33 <td class="links">
34   - <%= link_to(_('Edit'), :action => 'edit_contract', :contract_id => contract.id)%>
35   - <%= link_to(_('Remove'), {:action => 'destroy_contract', :contract_id => contract.id}, :confirm => _('Are you sure?'))%>
  34 + <%= link_to(c_('Edit'), :action => 'edit_contract', :contract_id => contract.id)%>
  35 + <%= link_to(c_('Remove'), {:action => 'destroy_contract', :contract_id => contract.id}, :confirm => _('Are you sure?'))%>
36 36 </td>
37 37 </tr>
38 38 <% end %>
... ... @@ -41,7 +41,7 @@
41 41 <% end %>
42 42  
43 43 <% button_bar do %>
44   - <%= button(:back, _('Go back'), :controller => 'profile_editor') %>
  44 + <%= button(:back, c_('Go back'), :controller => 'profile_editor') %>
45 45 <%= button(:new, _('Create new contract'), :action => 'new_contract')%>
46 46 <% end %>
47 47 </div>
... ...