Commit 6f872902d343d319f6716a6e99bab1f1fa3b5e08

Authored by Leandro Santos
2 parents e1398378 82193169

Merge branch 'next' into AI3133-email_article_to_community_members

Showing 242 changed files with 25499 additions and 14541 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 242 files displayed.

AUTHORS.md
... ... @@ -120,16 +120,21 @@ Diego Araujo + Rodrigo Souto + Rafael Manzo <rr.manzo@gmail.com>
120 120 Diego + Jefferson <diegoamc90@gmail.com>
121 121 Diego Martinez <diegoamc90@gmail.com>
122 122 Diego + Renan <renanteruoc@gmail.com>
  123 +DylanGuedes <djmgguedes@gmail.com>
  124 +Eduardo Passos <eduardo@risa.localdomain.localhost>
  125 +Eduardo Passos <eduardosteps@gmail.com>
123 126 Eduardo Tourinho Edington <eduardo.edington@serpro.gov.br>
124 127 Evandro Jr <evandrojr@gmail.com>
125 128 Evandro Junior <evandrojr@gmail.com>
126 129 Fabio Teixeira <fabio1079@gmail.com>
  130 +FAMMA TV NOTICIAS MEDIOS DE CO <revistafammatvmusic.oficial@gmail.com>
127 131 Fernanda Lopes <nanda.listas+psl@gmail.com>
128 132 Francisco Marcelo A. Lima Júnior <francisco.lima-junior@serpro.gov.br>
129 133 Francisco Marcelo de Araujo Lima Junior <79350259591@serpro-1457614.(none)>
130 134 Francisco Marcelo de Araújo Lima Júnior <francisco.lima-junior@serpro.gov.br>
131 135 Francisco Marcelo de Araújo Lima Júnior <maljunior@gmail.com>
132 136 Gabriela Navarro <navarro1703@gmail.com>
  137 +Gonzalo Exequiel Pedone <hipersayan.x@gmail.com>
133 138 Grazieno Pellegrino <grazieno@gmail.com>
134 139 Gust <darksshades@hotmail.com>
135 140 Hebert Douglas <hebertdougl@gmail.com>
... ... @@ -186,18 +191,23 @@ Leandro Nunes dos Santos &lt;81665687568@serpro-1541727.(none)&gt;
186 191 Leandro Nunes dos Santos <leandronunes@gmail.com>
187 192 Leandro Nunes dos Santos <leandro.santos@serpro.gov.br>
188 193 LinguÁgil 2010 <linguagil.bahia@gmail.com>
  194 +Lucas Kanashiro <kanashiro.duarte@gmail.com>
189 195 Lucas Melo <lucas@colivre.coop.br>
190 196 Lucas Melo <lucaspradomelo@gmail.com>
191 197 Luciano <lucianopcbr@gmail.com>
192 198 Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>
193 199 Luis David Aguilar Carlos <ludwig9003@gmail.com>
194 200 Luiz Fernando de Freitas Matos <luiz@luizff.matos@gmail.com>
  201 +Marcos <marcos.rpj2@gmail.com>
195 202 Marcos Ramos <ms.ramos@outlook.com>
196 203 Martín Olivera <molivera@solar.org.ar>
  204 +Maurilio Atila <cabelotaina@gmail.com>
  205 +M for Momo <mo@rtnp.org>
197 206 Michal Čihař <michal@cihar.com>
198 207 Moises Machado <moises@colivre.coop.br>
199 208 Naíla Alves <naila@colivre.coop.br>
200 209 Nanda Lopes <nanda.listas+psl@gmail.com>
  210 +Niemand Jedermann <predatorix@web.de>
201 211 Parley Martins <parleypachecomartins@gmail.com>
202 212 Paulo Meirelles + Alessandro Palmeira + João M. M. da Silva <paulo@softwarelivre.org>
203 213 Paulo Meirelles + Alessandro Palmeira <paulo@softwarelivre.org>
... ... @@ -234,8 +244,11 @@ Ronny Kursawe &lt;kursawe.ronny@googlemail.com&gt;
234 244 root <root@debian.sdr.serpro>
235 245 Samuel R. C. Vale <srcvale@holoscopio.com>
236 246 Tallys Martins <tallysmartins@gmail.com>
  247 +Tallys Martins <tallysmartins@yahoo.com.br>
  248 +tallys <tallys@tallys>
237 249 tallys <tallys@tallys.(none)>
238 250 Thiago Zoroastro <thiago.zoroastro@bol.com.br>
  251 +Tuux <tuxa@galaxie.eu.org>
239 252 Valessio Brito <contato@valessiobrito.com.br>
240 253 Valessio Brito <contato@valessiobrito.info>
241 254 Valessio Brito <valessio@gmail.com>
... ...
Gemfile
... ... @@ -2,7 +2,7 @@ source &quot;https://rubygems.org&quot;
2 2 gem 'rails', '~> 3.2.21'
3 3 gem 'minitest', '~> 3.2.0'
4 4 gem 'fast_gettext', '~> 0.6.8'
5   -gem 'acts-as-taggable-on', '~> 3.0.2'
  5 +gem 'acts-as-taggable-on', '~> 3.4.2'
6 6 gem 'rails_autolink', '~> 1.1.5'
7 7 gem 'pg', '~> 0.13.2'
8 8 gem 'rmagick', '~> 2.13.1'
... ... @@ -15,10 +15,10 @@ gem &#39;nokogiri&#39;, &#39;~&gt; 1.5.5&#39;
15 15 gem 'rake', :require => false
16 16 gem 'rest-client', '~> 1.6.7'
17 17 gem 'exception_notification', '~> 4.0.1'
18   -gem 'gettext', '~> 2.2.1', :require => false, :group => :development
  18 +gem 'gettext', '~> 2.2.1', :require => false
19 19 gem 'locale', '~> 2.0.5'
20 20 gem 'whenever', :require => false
21   -gem 'eita-jrails', :require => false
  21 +gem 'eita-jrails', '>= 0.9.5', :require => 'jrails'
22 22  
23 23 group :production do
24 24 gem 'dalli', '~> 2.7.0'
... ...
HACKING.themes.md 0 → 100644
... ... @@ -0,0 +1,60 @@
  1 +Noosfero Instructions for Theme Developers
  2 +==========================================
  3 +
  4 +To build Noosfero themes you must to know HTML and CSS. You may also get some advantages with Ruby and Noosfero hacking knowledge because all customizable pieces of the theme's HTML structure are [erb](http://en.wikipedia.org/wiki/ERuby) files.
  5 +
  6 +
  7 +Organization Basics
  8 +-------------------
  9 +
  10 +A theme is a directory and must inside `noosfero/public/designs/themes`, and you will find tis themes in a fresh installation:
  11 +`noosfero`, `aluminium`, `base`, `butter`, `chameleon`, `chocolate`, `orange`, `plum`, `scarletred` and `skyblue`. The `default` is only a link to `noosfero` and you can change this link to any other.
  12 +
  13 +`noosfero` is the default theme with a big header. All other are colored themes with a thin header. That colored ones can be used as additional themes for any environment, as they will search for `/images/thin-logo.png` inside the current environment.theme, to use as top left logo.
  14 +
  15 +Inside a theme we can found:
  16 +* `theme.yml` — Theme description with some nice configuration options.
  17 +* `preview.png` — A 100x100 screenshot of this theme to the theme selection UI.
  18 +* `style.css` — The main file. The magic happens here.
  19 +* `errors.css` — Change the error page look. (only if this theme is linked by `defaut`)
  20 +* `favicon.ico` — The identifier icon for your web site.
  21 +* `images` — Another name can be found by your CSS, but will not allow to reuse the logo.
  22 + * `thin-logo.png` — The logo to be reused by the colored themes.
  23 + * *many images...*
  24 +* `site_title.html.erb` — A nice place to put your logo, any code here will be placed inside `h1#site-title`.
  25 +* `header.html.erb` — That goes inside `div#theme-header`.
  26 +* `navigation.html.erb` — That goes inside `div#navigation ul`, so use `<li>`s.
  27 +* `footer.html.erb` — That goes inside `div#theme-footer`.
  28 +
  29 +You can add more files like javascript and modularized CSS, but you must to refer that by the described files above.
  30 +
  31 +To refer one of this files trough the web the path is `<domain>/designs/themes/<thistheme>/<somefile>`.
  32 +
  33 +
  34 +theme.yml
  35 +---------
  36 +
  37 +A simple definition file. See this example:
  38 +```yml
  39 +name: "My Cool Theme"
  40 +layout: "application-ng"
  41 +jquery_theme: "smoothness"
  42 +icon_theme: [default, pidgin]
  43 +gravatar: "retro"
  44 +```
  45 +
  46 +About non obvious:
  47 +* `layout` is about the theme structure to use. The `application-ng` is enough for 99.97358% use cases. If you want to use another structure, you must add a new `*.html.erb` file at `app/views/layouts/`.
  48 +* `icon_theme` point to something inside `public/designs/icons/`.
  49 +* `gravatar` set the default gravatar *(avatar picture)* for people without picture.
  50 +
  51 +
  52 +Theme Intervention from Environment Theme
  53 +-----------------------------------------
  54 +
  55 +Sometimes an environment (as instace http://cirandas.net) wants to allow profiles to set its own theme, but with some environment identification or functions, like a top bar with the social network logo and a top menu (as instace http://cirandas.net/rango-vegan).
  56 +To make the magic happens you can add some files to the environment theme.
  57 +All are optional:
  58 +* `global.css` — this must be used to style all extra html added by your intervention partials. As it is a free form css file you can style anything, but this is a conflict risk.
  59 +* `global_header.html.erb` — Will add content to `#global-header`.
  60 +* `global_footer.html.erb` — Will add content to `#global-footer`.
... ...
Rakefile.release 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +# This Rakefile is intentionally independent from Rails to it can be used to
  2 +# handle release-related tasks without having to load the entire Rails
  3 +# environment (which is slow, requires a database connection and several other
  4 +# inconveniences).
  5 +
  6 +$: << 'lib'
  7 +require 'noosfero'
  8 +require 'noosfero/version'
  9 +
  10 +load 'lib/tasks/gettext.rake'
  11 +load 'lib/tasks/doc.rake'
  12 +load 'lib/tasks/error_messages.rake'
  13 +load 'lib/tasks/translation.rake'
  14 +
  15 +load 'lib/tasks/package.rake'
  16 +load 'lib/tasks/release.rake'
  17 +
  18 +task :default => 'noosfero:translations:compile'
... ...
app/controllers/application_controller.rb
... ... @@ -179,6 +179,7 @@ class ApplicationController &lt; ActionController::Base
179 179 include SearchTermHelper
180 180  
181 181 def find_by_contents(asset, context, scope, query, paginate_options={:page => 1}, options={})
  182 + scope = scope.with_templates(options[:template_id]) unless options[:template_id].blank?
182 183 search = plugins.dispatch_first(:find_by_contents, asset, scope, query, paginate_options, options)
183 184 register_search_term(query, scope.count, search[:results].count, context, asset)
184 185 search
... ...
app/controllers/public/account_controller.rb
... ... @@ -315,7 +315,11 @@ class AccountController &lt; ApplicationController
315 315 session[:notice] = nil # consume the notice
316 316 end
317 317  
318   - @plugins.each { |plugin| user_data.merge!(plugin.user_data_extras) }
  318 + @plugins.each do |plugin|
  319 + user_data_extras = plugin.user_data_extras
  320 + user_data_extras = instance_exec(&user_data_extras) if user_data_extras.kind_of?(Proc)
  321 + user_data.merge!(user_data_extras)
  322 + end
319 323  
320 324 render :text => user_data.to_json, :layout => false, :content_type => "application/javascript"
321 325 end
... ...
app/controllers/public/content_viewer_controller.rb
... ... @@ -221,7 +221,7 @@ class ContentViewerController &lt; ApplicationController
221 221 # relation.
222 222 posts = posts.native_translations if blog_with_translation?(@page)
223 223  
224   - @posts = posts.paginate({ :page => params[:npage], :per_page => @page.posts_per_page }.merge(Article.display_filter(user, profile))).to_a
  224 + @posts = posts.display_filter(user, profile).paginate({ :page => params[:npage], :per_page => @page.posts_per_page }).to_a
225 225  
226 226 if blog_with_translation?(@page)
227 227 @posts.replace @posts.map{ |p| p.get_translation_to(FastGettext.locale) }.compact
... ...
app/controllers/public/search_controller.rb
... ... @@ -9,6 +9,7 @@ class SearchController &lt; PublicController
9 9 before_filter :load_search_assets, :except => :suggestions
10 10 before_filter :load_query, :except => :suggestions
11 11 before_filter :load_order, :except => :suggestions
  12 + before_filter :load_templates, :except => :suggestions
12 13  
13 14 # Backwards compatibility with old URLs
14 15 def redirect_asset_param
... ... @@ -61,7 +62,7 @@ class SearchController &lt; PublicController
61 62 end
62 63  
63 64 def articles
64   - @scope = @environment.articles.public
  65 + @scope = @environment.articles.public.paginate(paginate_options)
65 66 full_text_search
66 67 end
67 68  
... ... @@ -75,7 +76,7 @@ class SearchController &lt; PublicController
75 76 end
76 77  
77 78 def products
78   - @scope = @environment.products
  79 + @scope = @environment.products.paginate(paginate_options)
79 80 full_text_search
80 81 end
81 82  
... ... @@ -210,6 +211,11 @@ class SearchController &lt; PublicController
210 211 end
211 212 end
212 213  
  214 + def load_templates
  215 + @templates = {}
  216 + @templates[@asset] = environment.send(@asset.to_s).templates if [:people, :enterprises, :communities].include?(@asset)
  217 + end
  218 +
213 219 def limit
214 220 if map_search?(@searches)
215 221 MAP_SEARCH_LIMIT
... ... @@ -230,7 +236,7 @@ class SearchController &lt; PublicController
230 236 end
231 237  
232 238 def full_text_search
233   - @searches[@asset] = find_by_contents(@asset, environment, @scope, @query, paginate_options, {:category => @category, :filter => @order})
  239 + @searches[@asset] = find_by_contents(@asset, environment, @scope, @query, paginate_options, {:category => @category, :filter => @order, :template_id => params[:template_id]})
234 240 end
235 241  
236 242 private
... ... @@ -238,7 +244,7 @@ class SearchController &lt; PublicController
238 244 def visible_profiles(klass, *extra_relations)
239 245 relations = [:image, :domains, :environment, :preferred_domain]
240 246 relations += extra_relations
241   - @environment.send(klass.name.underscore.pluralize).visible.includes(relations)
  247 + @environment.send(klass.name.underscore.pluralize).visible.includes(relations).paginate(paginate_options)
242 248 end
243 249  
244 250 def per_page
... ...
app/controllers/public_controller.rb
... ... @@ -13,7 +13,7 @@ class PublicController &lt; ApplicationController
13 13  
14 14 def private_profile
15 15 private_profile_partial_parameters
16   - render :template => 'shared/access_denied.html.erb', :status => 403
  16 + render :template => 'profile/_private_profile', :status => 403, :formats => [:html]
17 17 end
18 18  
19 19 def invisible_profile
... ...
app/helpers/application_helper.rb
... ... @@ -212,6 +212,7 @@ module ApplicationHelper
212 212 end
213 213  
214 214 def button(type, label, url, html_options = {})
  215 + html_options ||= {}
215 216 the_class = 'with-text'
216 217 if html_options.has_key?(:class)
217 218 the_class << ' ' << html_options[:class]
... ... @@ -398,19 +399,27 @@ module ApplicationHelper
398 399 end
399 400 end
400 401  
401   - def theme_view_file(template)
  402 + def theme_view_file(template, theme=nil)
402 403 # Since we cannot control what people are doing in external themes, we
403 404 # will keep looking for the deprecated .rhtml extension here.
404   - file = Rails.root.join('public', theme_path[1..-1], template + '.html.erb')
  405 + addr = theme ? "designs/themes/#{theme}" : theme_path[1..-1]
  406 + file = Rails.root.join('public', addr, template + '.html.erb')
405 407 return file if File.exists?(file)
406 408 nil
407 409 end
408 410  
409 411 def theme_include(template, options = {})
410   - file = theme_view_file(template)
411   - options.merge!({:file => file, :use_full_path => false})
  412 + from_theme_include(nil, template, options)
  413 + end
  414 +
  415 + def env_theme_include(template, options = {})
  416 + from_theme_include(environment.theme, template, options)
  417 + end
  418 +
  419 + def from_theme_include(theme, template, options = {})
  420 + file = theme_view_file(template, theme)
412 421 if file
413   - render options
  422 + render options.merge(file: file, use_full_path: false)
414 423 else
415 424 nil
416 425 end
... ... @@ -446,6 +455,14 @@ module ApplicationHelper
446 455 @theme_extra_navigation ||= theme_include 'navigation'
447 456 end
448 457  
  458 + def global_header
  459 + @global_header ||= env_theme_include 'global_header'
  460 + end
  461 +
  462 + def global_footer
  463 + @global_footer ||= env_theme_include 'global_footer'
  464 + end
  465 +
449 466 def is_testing_theme
450 467 !controller.session[:theme].nil?
451 468 end
... ...
app/helpers/cms_helper.rb
... ... @@ -9,12 +9,6 @@ module CmsHelper
9 9 mime_type.gsub('/', '_').gsub('-', '')
10 10 end
11 11  
12   - def add_upload_file_field(name, locals)
13   - button_to_function :add, name, nil do |page|
14   - page.insert_html :bottom, :uploaded_files, CGI::escapeHTML(render(:partial => 'upload_file', :locals => locals, :object => UploadedFile.new))
15   - end
16   - end
17   -
18 12 def pagination_links(collection, options={})
19 13 options = {:previous_label => '&laquo; ', :next_label => ' &raquo;', :page_links => false}.merge(options)
20 14 will_paginate(collection, options)
... ...
app/helpers/dates_helper.rb
... ... @@ -2,13 +2,15 @@ require &#39;noosfero/i18n&#39;
2 2  
3 3 module DatesHelper
4 4  
5   - MONTHS = I18n.t('date.month_names')
  5 + def months
  6 + I18n.t('date.month_names')
  7 + end
6 8  
7 9 def month_name(n, abbreviated = false)
8 10 if abbreviated
9 11 I18n.t('date.abbr_month_names')[n]
10 12 else
11   - MONTHS[n]
  13 + months[n]
12 14 end
13 15 end
14 16  
... ... @@ -37,7 +39,7 @@ module DatesHelper
37 39 end
38 40 end
39 41  
40   - # formats a datetime for displaying.
  42 + # formats a datetime for displaying.
41 43 def show_time(time)
42 44 if time
43 45 _('%{day} %{month} %{year}, %{hour}:%{minutes}') % { :year => time.year, :month => month_name(time.month), :day => time.day, :hour => time.hour, :minutes => time.strftime("%M") }
... ... @@ -138,7 +140,7 @@ module DatesHelper
138 140 else
139 141 order = [:day, :month, :year]
140 142 end
141   - date_select(object, method, html_options.merge(options.merge(:include_blank => true, :order => order, :use_month_names => MONTHS)))
  143 + date_select(object, method, html_options.merge(options.merge(:include_blank => true, :order => order, :use_month_names => months)))
142 144 end
143 145  
144 146 end
... ...
app/helpers/layout_helper.rb
... ... @@ -49,24 +49,33 @@ module LayoutHelper
49 49 'selectordie',
50 50 'inputosaurus',
51 51 'chat',
  52 + 'selectordie-theme',
52 53 pngfix_stylesheet_path,
53 54 ] + tokeninput_stylesheets
54   - plugins_stylesheets = @plugins.select(&:stylesheet?).map { |plugin| plugin.class.public_path('style.css') }
55   -
56   - output = ''
57   - output += stylesheet_link_tag standard_stylesheets, :cache => 'cache/application'
58   - output += stylesheet_link_tag template_stylesheet_path
59   - output += stylesheet_link_tag icon_theme_stylesheet_path
60   - output += stylesheet_link_tag jquery_ui_theme_stylesheet_path
  55 + plugins_stylesheets = @plugins.select(&:stylesheet?).map { |plugin|
  56 + plugin.class.public_path('style.css')
  57 + }
  58 + global_css_pub = "/designs/themes/#{environment.theme}/global.css"
  59 + global_css_at_fs = Rails.root.join 'public' + global_css_pub
  60 +
  61 + output = []
  62 + output << stylesheet_link_tag(standard_stylesheets, :cache => 'cache/application')
  63 + output << stylesheet_link_tag(template_stylesheet_path)
  64 + output << stylesheet_link_tag(icon_theme_stylesheet_path)
  65 + output << stylesheet_link_tag(jquery_ui_theme_stylesheet_path)
61 66 unless plugins_stylesheets.empty?
62   - output += stylesheet_link_tag plugins_stylesheets, :cache => "cache/plugins-#{Digest::MD5.hexdigest plugins_stylesheets.to_s}"
  67 + cacheid = "cache/plugins-#{Digest::MD5.hexdigest plugins_stylesheets.to_s}"
  68 + output << stylesheet_link_tag(plugins_stylesheets, :cache => cacheid)
63 69 end
64   - output += stylesheet_link_tag theme_stylesheet_path
65   - output
  70 + if File.exists? global_css_at_fs
  71 + output << stylesheet_link_tag(global_css_pub)
  72 + end
  73 + output << stylesheet_link_tag(theme_stylesheet_path)
  74 + output.join "\n"
66 75 end
67 76  
68 77 def pngfix_stylesheet_path
69   - 'iepngfix/iepngfix.css'
  78 + 'iepngfix/iepngfix.css' #TODO: deprecate it
70 79 end
71 80  
72 81 def tokeninput_stylesheets
... ...
app/helpers/plugins_helper.rb
... ... @@ -6,4 +6,11 @@ module PluginsHelper
6 6 end
7 7 end
8 8  
  9 + def plugins_toolbar_actions_for_article(article)
  10 + toolbar_actions = Array.wrap(@plugins.dispatch(:article_extra_toolbar_buttons, article))
  11 + toolbar_actions.each do |action|
  12 + [:title, :url, :icon].each { |param| raise "No #{param} was passed as parameter for #{action}" unless action.has_key?(param) }
  13 + end
  14 + end
  15 +
9 16 end
... ...
app/helpers/search_helper.rb
... ... @@ -148,4 +148,11 @@ module SearchHelper
148 148 link_to(@enabled_searches[asset], "/search/#{asset}")
149 149 end
150 150  
  151 + def assets_submenu(asset)
  152 + return '' if @templates[asset].blank? || @templates[asset].length == 1
  153 + options = @templates[asset].map {|template| [template.name, template.id]}
  154 + options = options_for_select([[_('Choose a template'), nil]] + options, selected: (params[:template_id]))
  155 + select_tag('template_id', options, :id => 'submenu')
  156 + end
  157 +
151 158 end
... ...
app/models/add_friend.rb
... ... @@ -4,7 +4,7 @@ class AddFriend &lt; Task
4 4  
5 5 validates_presence_of :requestor_id, :target_id
6 6  
7   - validates_uniqueness_of :target_id, :scope => [ :requestor_id ]
  7 + validates_uniqueness_of :target_id, scope: [ :requestor_id, :status ], if: proc{ |t| t.status == Task::Status::ACTIVE }
8 8  
9 9 validates_length_of :group_for_person, :group_for_friend, :maximum => 150, :allow_nil => true
10 10  
... ...
app/models/article.rb
... ... @@ -486,15 +486,18 @@ class Article &lt; ActiveRecord::Base
486 486 scope :more_comments, :order => "comments_count DESC"
487 487 scope :more_recent, :order => "created_at DESC"
488 488  
489   - def self.display_filter(user, profile)
490   - return {:conditions => ['articles.published = ?', true]} if !user
491   - {:conditions => [" articles.published = ? OR
492   - articles.last_changed_by_id = ? OR
493   - articles.profile_id = ? OR
494   - ? OR articles.show_to_followers = ? AND ?",
495   - true, user.id, user.id, user.has_permission?(:view_private_content, profile),
496   - true, user.follows?(profile)]}
497   - end
  489 + scope :display_filter, lambda {|user, profile|
  490 + return published if (user.nil? && profile && profile.public?)
  491 + return [] if user.nil? || (profile && !profile.public? && !user.follows?(profile))
  492 + where(
  493 + [
  494 + "published = ? OR last_changed_by_id = ? OR profile_id = ? OR ?
  495 + OR (show_to_followers = ? AND ?)", true, user.id, user.id,
  496 + profile.nil? ? false : user.has_permission?(:view_private_content, profile),
  497 + true, user.follows?(profile)
  498 + ]
  499 + )
  500 + }
498 501  
499 502  
500 503 def display_unpublished_article_to?(user)
... ...
app/models/comment.rb
... ... @@ -33,6 +33,8 @@ class Comment &lt; ActiveRecord::Base
33 33 end
34 34 end
35 35  
  36 + acts_as_having_settings
  37 +
36 38 xss_terminate :only => [ :body, :title, :name ], :on => 'validation'
37 39  
38 40 def comment_root
... ...
app/models/event.rb
... ... @@ -145,11 +145,9 @@ class Event &lt; Article
145 145 ((self.end_date || self.start_date) - self.start_date).to_i
146 146 end
147 147  
  148 + alias_method :article_lead, :lead
148 149 def lead
149   - content_tag('div',
150   - show_period(start_date, end_date),
151   - :class => 'event-dates'
152   - ) + super
  150 + self.class.action_view.render 'content_viewer/event_lead', event: self
153 151 end
154 152  
155 153 def event?
... ...
app/models/main_block.rb
... ... @@ -24,4 +24,10 @@ class MainBlock &lt; Block
24 24 ['always', 'except_home_page']
25 25 end
26 26  
  27 + def display_user_options
  28 + @display_user_options = {
  29 + 'all' => _('All users')
  30 + }
  31 + end
  32 +
27 33 end
... ...
app/models/person.rb
... ... @@ -150,7 +150,7 @@ roles] }
150 150 end
151 151  
152 152 def already_request_friendship?(person)
153   - person.tasks.find_by_requestor_id(self.id, :conditions => { :type => 'AddFriend' })
  153 + person.tasks.where(requestor_id: self.id, type: 'AddFriend', status: Task::Status::ACTIVE).first
154 154 end
155 155  
156 156 def remove_friend(friend)
... ... @@ -435,6 +435,7 @@ roles] }
435 435 end
436 436  
437 437 def follows?(profile)
  438 + return false if profile.nil?
438 439 profile.followed_by?(self)
439 440 end
440 441  
... ...
app/models/profile.rb
... ... @@ -3,7 +3,7 @@
3 3 # which by default is the one returned by Environment:default.
4 4 class Profile < ActiveRecord::Base
5 5  
6   - attr_accessible :name, :identifier, :public_profile, :nickname, :custom_footer, :custom_header, :address, :zip_code, :contact_phone, :image_builder, :description, :closed, :template_id, :environment, :lat, :lng, :is_template, :fields_privacy, :preferred_domain_id, :category_ids, :country, :city, :state, :national_region_code, :email, :contact_email, :redirect_l10n, :notification_time, :redirection_after_login, :email_suggestions, :allow_members_to_invite, :invite_friends_only
  6 + attr_accessible :name, :identifier, :public_profile, :nickname, :custom_footer, :custom_header, :address, :zip_code, :contact_phone, :image_builder, :description, :closed, :template_id, :environment, :lat, :lng, :is_template, :fields_privacy, :preferred_domain_id, :category_ids, :country, :city, :state, :national_region_code, :email, :contact_email, :redirect_l10n, :notification_time, :redirection_after_login, :email_suggestions, :allow_members_to_invite, :invite_friends_only, :secret
7 7  
8 8 # use for internationalizable human type names in search facets
9 9 # reimplement on subclasses
... ... @@ -85,7 +85,15 @@ class Profile &lt; ActiveRecord::Base
85 85 #FIXME: these will work only if the subclass is already loaded
86 86 scope :enterprises, lambda { {:conditions => (Enterprise.send(:subclasses).map(&:name) << 'Enterprise').map { |klass| "profiles.type = '#{klass}'"}.join(" OR ")} }
87 87 scope :communities, lambda { {:conditions => (Community.send(:subclasses).map(&:name) << 'Community').map { |klass| "profiles.type = '#{klass}'"}.join(" OR ")} }
88   - scope :templates, {:conditions => {:is_template => true}}
  88 + scope :templates, lambda { |template_id = nil|
  89 + conditions = {:conditions => {:is_template => true}}
  90 + conditions[:conditions].merge!({:id => template_id}) unless template_id.nil?
  91 + conditions
  92 + }
  93 +
  94 + scope :with_templates, lambda { |templates|
  95 + {:conditions => {:template_id => templates}}
  96 + }
89 97 scope :no_templates, {:conditions => {:is_template => false}}
90 98  
91 99 def members
... ... @@ -119,9 +127,9 @@ class Profile &lt; ActiveRecord::Base
119 127 Profile.column_names.map{|n| [Profile.table_name, n].join('.')}.join(',')
120 128 end
121 129  
122   - scope :visible, :conditions => { :visible => true }
  130 + scope :visible, :conditions => { :visible => true, :secret => false }
123 131 scope :disabled, :conditions => { :visible => false }
124   - scope :public, :conditions => { :visible => true, :public_profile => true }
  132 + scope :public, :conditions => { :visible => true, :public_profile => true, :secret => false }
125 133 scope :enabled, :conditions => { :enabled => true }
126 134  
127 135 # Subclasses must override this method
... ...
app/models/user.rb
... ... @@ -159,6 +159,7 @@ class User &lt; ActiveRecord::Base
159 159 @task.name = self.name
160 160 @task.email = self.email
161 161 @task.target = self.environment
  162 + @task.requestor = self.person
162 163 @task.save
163 164 end
164 165  
... ... @@ -301,6 +302,10 @@ class User &lt; ActiveRecord::Base
301 302 end
302 303 end
303 304  
  305 + def moderate_registration_pending?
  306 + return ModerateUserRegistration.exists?(:requestor_id => self.person.id, :target_id => self.environment.id, :status => Task::Status::ACTIVE)
  307 + end
  308 +
304 309 def data_hash(gravatar_default = nil)
305 310 friends_list = {}
306 311 enterprises = person.enterprises.map { |e| { 'name' => e.short_name, 'identifier' => e.identifier } }
... ...
app/views/cms/_upload_file.html.erb
1 1 <p><%= file_field_tag('uploaded_files[]', :size => size) %></p>
2   -<%= javascript_tag("jQuery('#uploaded_files')[0].scrollTop = jQuery('#uploaded_files')[0].scrollHeight") %>
... ...
app/views/cms/_upload_file_form.html.erb
... ... @@ -13,7 +13,7 @@
13 13 <%= hidden_field_tag('back_to', @back_to) %>
14 14  
15 15 <% button_bar do %>
16   - <%= add_upload_file_field(_('More files'), {:size => size}) %>
  16 + <%= button_to_function :add, _('More files'), "add_new_file_fields()" %>
17 17 <% if @back_to %>
18 18 <%= submit_button :save, _('Upload'), :cancel => @back_to %>
19 19 <% else %>
... ...
app/views/content_viewer/_article_toolbar.html.erb
... ... @@ -50,6 +50,10 @@
50 50 <%= button(:clock, _('All versions'), {:controller => 'content_viewer', :profile => profile.identifier, :action => 'article_versions'}, :id => 'article-versions-link') %>
51 51 <% end %>
52 52  
  53 + <% plugins_toolbar_actions_for_article(@page).each do |plugin_button| %>
  54 + <%= button plugin_button[:icon], plugin_button[:title], plugin_button[:url], plugin_button[:html_options] %>
  55 + <% end %>
  56 +
53 57 <%= report_abuse(profile, :link, @page) %>
54 58  
55 59 </div>
... ...
app/views/content_viewer/_event_lead.html.erb 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +
  2 +<div class="event-dates">
  3 + <%= show_period event.start_date, event.end_date %>
  4 +</div>
  5 +
  6 +<%= event.article_lead %>
  7 +
... ...
app/views/favorite_enterprises/index.html.erb
... ... @@ -9,7 +9,7 @@
9 9 enterprise.identifier, :class => 'profile-link' %>
10 10 <%# profile_image_link enterprise, :portrait, 'div' %>
11 11 <div class="controll">
12   - <%= button(:delete, _('remove'), { :action => 'remove', :id => enterprise.id },:title => _('remove')) %>
  12 + <%= button_without_text(:delete, _('remove'), { :action => 'remove', :id => enterprise.id },:title => _('remove')) %>
13 13 </div><!-- end class="controll" -->
14 14 </li>
15 15 <% end %>
... ...
app/views/layouts/application-ng.html.erb
... ... @@ -5,7 +5,10 @@
5 5 <%= yield(:feeds) %>
6 6 <!--<meta http-equiv="refresh" content="1"/>-->
7 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
8   - <meta name="description" content="<%= @environment.name %>" />
  8 +
  9 + <% unless defined? MetadataPlugin and environment.enabled_plugins.include? 'MetadataPlugin' %>
  10 + <meta name="description" content="<%= @environment.name %>" />
  11 + <% end %>
9 12  
10 13 <!-- site root -->
11 14 <meta property="noosfero:root" content="<%= Noosfero.root %>"/>
... ... @@ -22,7 +25,7 @@
22 25 end.join("\n")
23 26 %>
24 27  
25   - <script type='text/javascript'>
  28 + <script type="text/javascript">
26 29 DEFAULT_LOADING_MESSAGE = <%="'#{ _('loading...') }'" %>;
27 30 </script>
28 31  
... ... @@ -35,9 +38,12 @@
35 38 if content.respond_to?(:call) then instance_exec(&content).to_s.html_safe else content.to_s.html_safe end
36 39 end.join("\n")
37 40 %>
  41 + <div id="global-header">
  42 + <%= global_header %>
  43 + </div>
38 44  
39 45 <div id="wrap-1">
40   - <div id='theme-header'>
  46 + <div id="theme-header">
41 47 <%= theme_header %>
42 48 </div>
43 49 <div id="wrap-2">
... ... @@ -57,9 +63,14 @@
57 63 </div><!-- end id="wrap-2" -->
58 64 </div><!-- end id="wrap-1" -->
59 65 <%= render_environment_features(:logged_in) if logged_in? %>
60   - <div id="theme-footer">
61   - <%= theme_footer %>
62   - </div><!-- end id="theme-footer" -->
  66 + <div id="footer">
  67 + <div id="theme-footer">
  68 + <%= theme_footer %>
  69 + </div><!-- end id="theme-footer" -->
  70 + <div id="global-footer">
  71 + <%= global_footer %>
  72 + </div><!-- end id="global-footer" -->
  73 + </div><!-- end id="footer" -->
63 74 <%= noosfero_layout_features %>
64 75 <%= addthis_javascript %>
65 76 <%=
... ...
app/views/layouts/application.html.erb
... ... @@ -52,6 +52,9 @@
52 52 registerDocumentSize();
53 53 // -->
54 54 </script>
  55 + <div id="global-header">
  56 + <%= global_header %>
  57 + </div>
55 58  
56 59 <div id="accessibility_menu">
57 60 <a href="#content" id="link_go_content"><span><%= _('Go to content') %></span></a>
... ... @@ -112,8 +115,13 @@
112 115 </div><!-- id="wrap" -->
113 116  
114 117 <div id="footer">
115   - <%= theme_footer %>
116   - </div><!-- id="footer" -->
  118 + <div id="theme-footer">
  119 + <%= theme_footer %>
  120 + </div><!-- end id="theme-footer" -->
  121 + <div id="global-footer">
  122 + <%= global_footer %>
  123 + </div><!-- end id="global-footer" -->
  124 + </div><!-- end id="footer" -->
117 125  
118 126 <%# if you need to add HTML stuff to the layout, include it in
119 127 app/views/shared/noosfero_layout_features.html.erb! %>
... ...
app/views/profile_editor/edit.html.erb
... ... @@ -34,10 +34,13 @@
34 34 </div>
35 35 <% else %>
36 36 <div>
37   - <%= labelled_radio_button _('Public &mdash; show content of this group to all internet users'), 'profile_data[public_profile]', true, @profile.public_profile? %>
  37 + <%= labelled_check_box _("Secret &mdash; hide the community and all its contents for non members and other people can't join this community unless they are invited to."), 'profile_data[secret]', true, profile.secret, :class => "profile-secret-box" %>
38 38 </div>
39 39 <div>
40   - <%= labelled_radio_button _('Private &mdash; show content of this group only to members'), 'profile_data[public_profile]', false, !@profile.public_profile? %>
  40 + <%= labelled_radio_button _('Public &mdash; show content of this group to all internet users'), 'profile_data[public_profile]', true, @profile.public_profile?, :class => "public-community-button" %>
  41 + </div>
  42 + <div>
  43 + <%= labelled_radio_button _('Private &mdash; show content of this group only to members'), 'profile_data[public_profile]', false, !@profile.public_profile?, :class => "private-community-button" %>
41 44 </div>
42 45 <% end %>
43 46  
... ... @@ -85,4 +88,6 @@
85 88 <% end %>
86 89 <% end %>
87 90 <% end %>
88   -<% end %>
89 91 \ No newline at end of file
  92 +<% end %>
  93 +
  94 +<%= javascript_include_tag 'profile_editor' %>
... ...
app/views/search/_search_content.html.erb
1 1 <div id='search-content'>
  2 + <div class='total'>
  3 + <%= _('Total of %s results ') % @searches[@asset][:results].total_entries.inspect %>
  4 + </div>
  5 +
2 6 <%= display_results(@searches, @asset) %>
3 7 <% if params[:display] != 'map' %>
4 8 <%= pagination_links @searches[@asset][:results] %>
... ...
app/views/search/_search_form.html.erb
... ... @@ -5,8 +5,12 @@
5 5 <div id='search-header'>
6 6 <%= assets_menu(@asset) %>
7 7 <%= filters(@asset) %>
  8 + <div class="clear"></div>
8 9 </div>
9 10  
  11 + <div id='search-subheader'>
  12 + <%= assets_submenu(@asset) %>
  13 + </div>
10 14 <div class="search-field">
11 15 <span class="formfield">
12 16 <%= search_input_with_suggestions('query', @asset, @query, {:id => 'search-input', :size => 50, :placeholder => hint}) %>
... ...
app/views/shared/logged_in/xmpp_chat.html.erb
... ... @@ -82,7 +82,7 @@
82 82 <a data-id='%{jid_id}' class='icon-menu-%{presence_status}-11' href='#'>
83 83 <span class="unread-messages"></span>
84 84 %{avatar}
85   - <span class="name">%{name}<span>
  85 + <span class="name">%{name}</span>
86 86 </a>
87 87 </li>
88 88 </div>
... ...
config/bashrc
... ... @@ -1,2 +0,0 @@
1   -export PS1="[Noosfero upgrade] (\w) $ "
2   -eval `dircolors -b`
config/initializers/jrails.rb
... ... @@ -1 +0,0 @@
1   -require 'jrails'
db/migrate/20150116181243_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb 0 → 100644
... ... @@ -0,0 +1,15 @@
  1 +# This migration comes from acts_as_taggable_on_engine (originally 3)
  2 +class AddTaggingsCounterCacheToTags < ActiveRecord::Migration
  3 + def self.up
  4 + add_column :tags, :taggings_count, :integer, default: 0
  5 +
  6 + ActsAsTaggableOn::Tag.reset_column_information
  7 + ActsAsTaggableOn::Tag.find_each do |tag|
  8 + ActsAsTaggableOn::Tag.reset_counters(tag.id, :taggings)
  9 + end
  10 + end
  11 +
  12 + def self.down
  13 + remove_column :tags, :taggings_count
  14 + end
  15 +end
... ...
db/migrate/20150116181244_add_missing_taggable_index.acts_as_taggable_on_engine.rb 0 → 100644
... ... @@ -0,0 +1,10 @@
  1 +# This migration comes from acts_as_taggable_on_engine (originally 4)
  2 +class AddMissingTaggableIndex < ActiveRecord::Migration
  3 + def self.up
  4 + add_index :taggings, [:taggable_id, :taggable_type, :context]
  5 + end
  6 +
  7 + def self.down
  8 + remove_index :taggings, [:taggable_id, :taggable_type, :context]
  9 + end
  10 +end
... ...
db/migrate/20150223180806_add_secret_to_profile.rb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +class AddSecretToProfile < ActiveRecord::Migration
  2 + def change
  3 + add_column :profiles, :secret, :boolean, :default => false
  4 + end
  5 +end
... ...
db/migrate/20150408231524_add_settings_to_comments.rb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +class AddSettingsToComments < ActiveRecord::Migration
  2 + def change
  3 + add_column :comments, :settings, :text
  4 + end
  5 +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 => 20150122165042) do
  14 +ActiveRecord::Schema.define(:version => 20150223180806) do
15 15  
16 16 create_table "abuse_reports", :force => true do |t|
17 17 t.integer "reporter_id"
... ... @@ -535,6 +535,7 @@ ActiveRecord::Schema.define(:version =&gt; 20150122165042) do
535 535 t.integer "welcome_page_id"
536 536 t.boolean "allow_members_to_invite", :default => true
537 537 t.boolean "invite_friends_only", :default => false
  538 + t.boolean "secret", :default => false
538 539 end
539 540  
540 541 add_index "profiles", ["activities_count"], :name => "index_profiles_on_activities_count"
... ... @@ -655,12 +656,14 @@ ActiveRecord::Schema.define(:version =&gt; 20150122165042) do
655 656 end
656 657  
657 658 add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], :name => "taggings_idx", :unique => true
  659 + add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
658 660 add_index "taggings", ["taggable_id", "taggable_type"], :name => "index_taggings_on_taggable_id_and_taggable_type"
659 661  
660 662 create_table "tags", :force => true do |t|
661 663 t.string "name"
662 664 t.integer "parent_id"
663   - t.boolean "pending", :default => false
  665 + t.boolean "pending", :default => false
  666 + t.integer "taggings_count", :default => 0
664 667 end
665 668  
666 669 add_index "tags", ["name"], :name => "index_tags_on_name", :unique => true
... ...
debian/changelog
  1 +noosfero (1.1~rc2) wheezy; urgency=low
  2 +
  3 + * Second release candidate for Noosfero 1.1
  4 +
  5 + -- Antonio Terceiro <terceiro@colivre.coop.br> Mon, 09 Mar 2015 12:47:39 -0300
  6 +
  7 +noosfero (1.1~rc1) wheezy; urgency=low
  8 +
  9 + * First release candidate for Noosfero 1.1
  10 +
  11 + -- Antonio Terceiro <terceiro@colivre.coop.br> Thu, 05 Mar 2015 12:35:49 -0300
  12 +
1 13 noosfero (1.0) wheezy; urgency=low
2 14  
3 15 * Noosfero 1.0 \o/
... ...
debian/control
... ... @@ -42,7 +42,7 @@ Depends: adduser,
42 42 ruby-acts-as-taggable-on,
43 43 ruby-daemons,
44 44 ruby-dalli,
45   - ruby-eita-jrails (>= 0.9.3-3~),
  45 + ruby-eita-jrails (>= 0.9.3-5~),
46 46 ruby-eventmachine (>= 0.12.10-4~),
47 47 ruby-exception-notification,
48 48 ruby-fast-gettext,
... ...
debian/noosfero.install
... ... @@ -9,6 +9,7 @@ config/environments usr/share/noosfero/config
9 9 config/initializers usr/share/noosfero/config
10 10 config/locales usr/share/noosfero/config
11 11 config/routes.rb usr/share/noosfero/config
  12 +config/schedule.rb usr/share/noosfero/config
12 13 db usr/share/noosfero
13 14 debian/database.yml.template usr/share/noosfero/config
14 15 debian/dbinstall usr/lib/noosfero
... ...
debian/noosfero.links
1   -usr/share/rails-ruby1.8 usr/share/noosfero/vendor/rails
2 1 var/tmp/noosfero usr/share/noosfero/tmp
3 2 var/log/noosfero usr/share/noosfero/log
4 3 etc/noosfero/database.yml usr/share/noosfero/config/database.yml
... ...
debian/rules
... ... @@ -33,4 +33,4 @@ override_dh_clean:
33 33  
34 34 override_dh_auto_build:
35 35 dh_auto_build
36   - rake noosfero:translations:compile > /dev/null
  36 + rake -f Rakefile.release > /dev/null
... ...
etc/init.d/noosfero
... ... @@ -36,7 +36,9 @@ NOOSFERO_USER=noosfero
36 36 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
37 37  
38 38 # Load the VERBOSE setting and other rcS variables
39   -. /lib/init/vars.sh
  39 +if [ -e /lib/init/vars.sh ]; then
  40 + . /lib/init/vars.sh
  41 +fi
40 42  
41 43 if [ -z "$NOOSFERO_DIR" ] || [ -z "$NOOSFERO_USER" ]; then
42 44 echo "NOOSFERO_DIR or NOOSFERO_USER not defined, noosfero not being started."
... ... @@ -123,7 +125,7 @@ do_restart() {
123 125 }
124 126  
125 127 running(){
126   - pgrep -u noosfero -f 'thin server' > /dev/null
  128 + main_script running
127 129 }
128 130  
129 131 case "$1" in
... ...
features/secret_community.feature 0 → 100644
... ... @@ -0,0 +1,60 @@
  1 +Feature: Use a secret community
  2 + As a community administrator
  3 + I want to manage the community privacy
  4 +
  5 + Background:
  6 + Given the following users
  7 + | login | name |
  8 + | jose | Jose Wilker |
  9 + | maria | Maria Carminha |
  10 + And the following community
  11 + | identifier | name |
  12 + | mycommunity | My Community |
  13 + And "Jose Wilker" is admin of "My Community"
  14 + And I am logged in as "jose"
  15 + And I go to mycommunity's control panel
  16 + And I follow "Community Info and settings"
  17 + And I check "Secret"
  18 + And I press "Save"
  19 + And I follow "Logout"
  20 +
  21 + @selenium
  22 + Scenario: Hide privacity options when secret is checked
  23 + Given I am logged in as "jose"
  24 + And I go to mycommunity's control panel
  25 + And I follow "Community Info and settings"
  26 + Then I should not see "Public — show content of this group to all internet users"
  27 + And I should not see "Private — show content of this group only to members"
  28 + And I uncheck "Secret"
  29 + Then I should see "Public — show content of this group to all internet users"
  30 + Then I should see "Private — show content of this group only to members"
  31 +
  32 + @selenium
  33 + Scenario: Non members shouldn't see secret communit's content
  34 + Given I am logged in as "maria"
  35 + And I go to mycommunity's homepage
  36 + And I should see "Access denied"
  37 + And I follow "Communities"
  38 + Then I should not see "My Community"
  39 +
  40 + Scenario: A member should see the secret community's content
  41 + Given I am logged in as "maria"
  42 + And "Maria Carminha" is a member of "My Community"
  43 + And I go to maria's control panel
  44 + And I follow "Manage my groups"
  45 + And I follow "My Community"
  46 + Then I should see "My Community"
  47 +
  48 + @selenium
  49 + Scenario: public article on a secret profile should not be displayed
  50 + Given I am logged in as "jose"
  51 + And I go to mycommunity's control panel
  52 + And I follow "Manage Content"
  53 + And I follow "New content"
  54 + And I follow "Text article with visual editor"
  55 + And I fill in "Title" with "My public article"
  56 + And I choose "Public"
  57 + And I press "Save and continue"
  58 + When I am logged in as "maria"
  59 + And I go to /mycommunity/my-public-article
  60 + Then I should not see "My public article"
... ...
lib/acts_as_filesystem.rb
... ... @@ -85,6 +85,13 @@ module ActsAsFileSystem
85 85 end
86 86 end
87 87  
  88 + def descendents_options
  89 + ["#{self.ancestry_column} LIKE ?", "%#{self.formatted_ancestry_id}%"]
  90 + end
  91 + def descendents
  92 + self.class.scoped :conditions => descendents_options
  93 + end
  94 +
88 95 # calculates the level of the record in the records hierarchy. Top-level
89 96 # records have level 0; the children of the top-level records have
90 97 # level 1; the children of records with level 1 have level 2, and so on.
... ...
lib/noosfero/core_ext/active_record.rb
... ... @@ -6,6 +6,22 @@ class ActiveRecord::Base
6 6 ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
7 7 end
8 8  
  9 + # an ActionView instance for rendering views on models
  10 + def self.action_view
  11 + @action_view ||= begin
  12 + view_paths = ActionController::Base.view_paths
  13 + action_view = ActionView::Base.new view_paths
  14 + # for using Noosfero helpers inside render calls
  15 + action_view.extend ApplicationHelper
  16 + action_view
  17 + end
  18 + end
  19 +
  20 + # default value needed for the above ActionView
  21 + def to_partial_path
  22 + self.class.name.underscore
  23 + end
  24 +
9 25 alias :meta_cache_key :cache_key
10 26 def cache_key
11 27 key = [Noosfero::VERSION, meta_cache_key]
... ...
lib/noosfero/plugin.rb
... ... @@ -437,6 +437,19 @@ class Noosfero::Plugin
437 437 []
438 438 end
439 439  
  440 + # -> Adds aditional action buttons to article
  441 + # returns = { :title => title, :icon => icon, :url => url, :html_options => {} }
  442 + # title = name that will be displayed.
  443 + # icon = css class name (for customized icons include them in a css file).
  444 + # url = url or route to which the button will redirect.
  445 + # html_options = Html options for customization
  446 + #
  447 + # Multiple values could be passed as parameter.
  448 + # returns = [{:title => title, :icon => icon}, {:title => title, :icon => icon}]
  449 + def article_extra_toolbar_buttons(article)
  450 + []
  451 + end
  452 +
440 453 # -> Adds adicional content to article
441 454 # returns = lambda block that creates html code
442 455 def article_extra_contents(article)
... ... @@ -685,6 +698,8 @@ class Noosfero::Plugin
685 698 # returns = string with reason of expiration
686 699 elsif method.to_s =~ /^content_expire_(#{content_actions.join('|')})$/
687 700 nil
  701 + elsif context.respond_to?(method)
  702 + context.send(method)
688 703 else
689 704 super
690 705 end
... ...
lib/noosfero/plugin/routes.rb
... ... @@ -18,7 +18,7 @@ Dir.glob(Rails.root.join(plugins_root, &#39;*&#39;, &#39;controllers&#39;)) do |controllers_dir|
18 18 controllers_by_folder.each do |folder, controllers|
19 19 controllers.each do |controller|
20 20 controller_name = controller.gsub("#{plugin_name}_plugin_",'')
21   - if %w[profile myprofile].include?(folder)
  21 + if %w[profile myprofile].include?(folder.to_s)
22 22 match "#{prefixes_by_folder[folder]}/#{plugin_name}/#{controller_name}(/:action(/:id))", :controller => controller, :profile => /#{Noosfero.identifier_format}/
23 23 else
24 24 match "#{prefixes_by_folder[folder]}/#{plugin_name}/#{controller_name}(/:action(/:id))", :controller => controller
... ...
lib/noosfero/version.rb
1 1 module Noosfero
2 2 PROJECT = 'noosfero'
3   - VERSION = '1.0'
  3 + VERSION = '1.1~rc2'
4 4 end
5 5  
6   -if File.exist?(File.join(Rails.root, '.git'))
7   - Noosfero::VERSION.clear << Dir.chdir(Rails.root) { `git describe --tags`.strip }
  6 +root = File.expand_path(File.dirname(__FILE__) + '/../..')
  7 +if File.exist?(File.join(root, '.git'))
  8 + Noosfero::VERSION.clear << Dir.chdir(root) { `git describe --tags`.strip.sub('-rc', '~rc') }
8 9 end
... ...
lib/tasks/doc.rake
  1 +require 'noosfero'
  2 +require 'pathname'
  3 +
1 4 namespace :noosfero do
2 5 namespace :doc do
3 6 def plugins_textiles
... ... @@ -9,8 +12,9 @@ namespace :noosfero do
9 12 end
10 13 end
11 14 task :unlink_plugins_textiles do
12   - rm_f Dir.glob(Rails.root.join('doc/noosfero/plugins/*.textile')) -
13   - [Rails.root.join('doc/noosfero/plugins/index.textile')]
  15 + root = Pathname.new(File.dirname(__FILE__) + '/../..').expand_path
  16 + rm_f Dir.glob(root.join('doc/noosfero/plugins/*.textile')) -
  17 + [root.join('doc/noosfero/plugins/index.textile')]
14 18 end
15 19 input = Dir.glob('doc/noosfero/**/*.textile') + plugins_textiles.map{|i| "doc/noosfero/plugins/#{File.basename(i)}"}
16 20 topics_xhtml = input.map { |item| item.sub('.textile', '.en.xhtml') }.uniq
... ... @@ -22,7 +26,8 @@ namespace :noosfero do
22 26 begin
23 27 require 'redcloth'
24 28 File.open(output ,'w') do |output_file|
25   - output_file.write(RedCloth.new(File.read(input)).to_html)
  29 + text = File.read(input, encoding: Encoding::UTF_8)
  30 + output_file.write(RedCloth.new(text).to_html)
26 31 puts "#{input} -> #{output}"
27 32 end
28 33 rescue Exception => e
... ...
lib/tasks/error_messages.rake
1   -templates = Dir.glob(Rails.root.join('public', '*.html.erb'))
  1 +root = Pathname(File.dirname(__FILE__)).join('../../').expand_path
  2 +templates = Dir.glob(root.join('public', '*.html.erb'))
2 3 targets = []
3 4 templates.each do |template|
4 5 target = template.gsub(/.erb$/, '')
... ... @@ -16,6 +17,6 @@ end
16 17 namespace :noosfero do
17 18 namespace 'error-pages' do
18 19 desc 'Translates Noosfero error pages'
19   - task :translate => [:environment] + targets
  20 + task :translate => targets
20 21 end
21 22 end
... ...
lib/tasks/gettext.rake
... ... @@ -2,6 +2,8 @@
2 2 # Added for Ruby-GetText-Package
3 3 #
4 4  
  5 +require 'pathname'
  6 +
5 7 makemo_stamp = 'tmp/makemo.stamp'
6 8 desc "Create mo-files for L10n"
7 9 task :makemo => makemo_stamp
... ... @@ -37,14 +39,15 @@ task :symlinkmo do
37 39 langmap = {
38 40 'pt' => 'pt_BR',
39 41 }
40   - mkdir_p(Rails.root.join('locale'))
41   - Dir.glob(Rails.root.join('po/*/')).each do |dir|
  42 + root = Pathname.new(File.dirname(__FILE__) + '/../..').expand_path
  43 + mkdir_p(root.join('locale'))
  44 + Dir.glob(root.join('po/*/')).each do |dir|
42 45 lang = File.basename(dir)
43 46 orig_lang = langmap[lang] || lang
44   - mkdir_p(Rails.root.join('locale', "#{lang}", 'LC_MESSAGES'))
  47 + mkdir_p(root.join('locale', "#{lang}", 'LC_MESSAGES'))
45 48 ['iso_3166'].each do |domain|
46 49 origin = "/usr/share/locale/#{orig_lang}/LC_MESSAGES/#{domain}.mo"
47   - target = Rails.root.join('locale', "#{lang}", 'LC_MESSAGES', "#{domain}.mo")
  50 + target = root.join('locale', "#{lang}", 'LC_MESSAGES', "#{domain}.mo")
48 51 if !File.symlink?(target)
49 52 ln_s origin, target
50 53 end
... ...
lib/tasks/package.rake
1   -
2 1 desc "Generate source tarball"
3 2 task :package => 'package:clobber' do
4 3 require_dependency 'noosfero'
... ...
lib/tasks/release.rake
1 1 # encoding: UTF-8
2 2  
3   -require 'noosfero/version'
4 3 $version = Noosfero::VERSION
5 4  
6 5 namespace :noosfero do
... ... @@ -132,13 +131,13 @@ EOF
132 131  
133 132 if target =~ /-test$/
134 133 if new_version =~ /~rc\d+/
135   - new_version.sub!(/\~rc([0-9]+)/) { "~rc#{$1.to_i + 1}" }
  134 + new_version.sub!(/\~rc([0-9]+).*/) { "~rc#{$1.to_i + 1}" }
136 135 else
137 136 new_version += '~rc1'
138 137 end
139 138 else
140   - if new_version =~ /~rc\d+/
141   - new_version.sub!(/~rc[0-9]+/, '')
  139 + if new_version =~ /~rc\d+.*/
  140 + new_version.sub!(/~rc[0-9]+.*/, '')
142 141 else
143 142 components = new_version.split('.').map(&:to_i)
144 143 if components.size < 3
... ... @@ -158,9 +157,10 @@ EOF
158 157 sh "sed -i \"s/VERSION = '[^']*'/VERSION = '#{new_version}'/\" lib/noosfero/version.rb"
159 158 ENV['DEBFULLNAME'] ||= `git config user.name`.strip
160 159 ENV['DEBEMAIL'] ||= `git config user.email`.strip
161   - sh "dch --newversion #{new_version} --distribution #{target} --force-distribution '#{release_message}'"
  160 + distribution = `dpkg-parsechangelog | sed '/Distribution:/!d; s/^.*:\s*//'`.strip
  161 + sh "dch --newversion #{new_version} --distribution #{distribution} --force-distribution '#{release_message}'"
162 162  
163   - sh 'git diff debian/changelog lib/noosfero/version.rb'
  163 + sh 'git diff --color debian/changelog lib/noosfero/version.rb'
164 164 if confirm("Commit version bump to #{new_version} on #{target} distribution")
165 165 sh 'git add debian/changelog lib/noosfero/version.rb'
166 166 sh "git commit -m 'Bumping version #{new_version}'"
... ...
lib/tasks/translation.rake
... ... @@ -5,7 +5,7 @@ namespace :noosfero do
5 5 task :update => ['updatepo', 'noosfero:doc:rebuild']
6 6  
7 7 desc 'Compiles all translations'
8   - task :compile => ['makemo', 'environment', 'noosfero:doc:translate']
  8 + task :compile => ['makemo', 'noosfero:doc:translate']
9 9  
10 10 end
11 11 end
... ...
lib/user_activation_job.rb
1 1 class UserActivationJob < Struct.new(:user_id)
2 2 def perform
3 3 user = User.find(user_id)
4   - user.destroy unless user.activated? || user.person.is_template?
  4 + user.destroy unless user.activated? || user.person.is_template? || user.moderate_registration_pending?
5 5 end
6 6 end
... ...
plugins/anti_spam/po/de/anti_spam.po
... ... @@ -6,8 +6,8 @@
6 6 #
7 7 msgid ""
8 8 msgstr ""
9   -"Project-Id-Version: 1.0\n"
10   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
  9 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  10 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
11 11 "PO-Revision-Date: 2014-12-12 14:23+0200\n"
12 12 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
13 13 "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/"
... ...
plugins/anti_spam/po/pt/anti_spam.po
... ... @@ -11,8 +11,8 @@
11 11 #
12 12 msgid ""
13 13 msgstr ""
14   -"Project-Id-Version: 1.0\n"
15   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
16 16 "PO-Revision-Date: 2014-12-18 18:40-0200\n"
17 17 "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
18 18 "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/breadcrumbs/lib/breadcrumbs_plugin/content_breadcrumbs_block.rb
... ... @@ -2,8 +2,9 @@ class BreadcrumbsPlugin::ContentBreadcrumbsBlock &lt; Block
2 2  
3 3 settings_items :show_cms_action, :type => :boolean, :default => true
4 4 settings_items :show_profile, :type => :boolean, :default => true
  5 + settings_items :show_section_name, :type => :boolean, :default => true
5 6  
6   - attr_accessible :show_cms_action, :show_profile
  7 + attr_accessible :show_cms_action, :show_profile, :show_section_name
7 8  
8 9 def self.description
9 10 _('Content Breadcrumbs')
... ... @@ -40,7 +41,18 @@ class BreadcrumbsPlugin::ContentBreadcrumbsBlock &lt; Block
40 41 proc do
41 42 trail = block.trail(@page, @profile, params)
42 43 if !trail.empty?
43   - trail.map { |t| link_to(t[:name], t[:url], :class => 'item') }.join(content_tag('span', ' > ', :class => 'separator'))
  44 + separator = content_tag('span', ' > ', :class => 'separator')
  45 +
  46 + breadcrumb = trail.map do |t|
  47 + link_to(t[:name], t[:url], :class => 'item')
  48 + end.join(separator)
  49 +
  50 + if block.show_section_name
  51 + section_name = block.show_profile ? trail.second[:name] : trail.first[:name]
  52 + breadcrumb << content_tag('div', section_name, :class => 'section-name')
  53 + end
  54 +
  55 + breadcrumb
44 56 else
45 57 ''
46 58 end
... ...
plugins/breadcrumbs/po/pt/breadcrumbs.po
... ... @@ -11,8 +11,8 @@
11 11 #
12 12 msgid ""
13 13 msgstr ""
14   -"Project-Id-Version: 1.0\n"
15   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
16 16 "PO-Revision-Date: 2014-12-18 18:40-0200\n"
17 17 "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
18 18 "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/breadcrumbs/test/functional/profile_design_controller_test.rb
... ... @@ -41,4 +41,9 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
41 41 assert !@block.show_cms_action
42 42 end
43 43  
  44 + should 'be able save breadcrumbs block with show_section_name option' do
  45 + get :edit, :id => @block.id, :profile => @profile.identifier
  46 + post :save, :id => @block.id, :profile => @profile.identifier, :block => {:title => 'breadcrumbs', :show_cms_action => false, :show_profile => true, :show_section_name => true }
  47 + assert @block.show_section_name
  48 + end
44 49 end
... ...
plugins/breadcrumbs/views/box_organizer/breadcrumbs_plugin/_content_breadcrumbs_block.html.erb
1 1 <div id='edit-breadcrumbs-block'>
2 2 <%= labelled_form_field check_box(:block, :show_cms_action) + _('Show cms action'), '' %>
3 3 <%= labelled_form_field check_box(:block, :show_profile) + _('Show profile'), '' %>
  4 + <%= labelled_form_field check_box(:block, :show_section_name) + _('Show section name'), '' %>
4 5 </div>
... ...
plugins/bsc/po/de/bsc.po
... ... @@ -6,8 +6,8 @@
6 6 #
7 7 msgid ""
8 8 msgstr ""
9   -"Project-Id-Version: 1.0\n"
10   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  9 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  10 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
11 11 "PO-Revision-Date: 2014-12-12 14:23+0200\n"
12 12 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
13 13 "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/"
... ...
plugins/bsc/po/es/bsc.po
... ... @@ -5,8 +5,8 @@
5 5 #
6 6 msgid ""
7 7 msgstr ""
8   -"Project-Id-Version: 1.0\n"
9   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
10 10 "PO-Revision-Date: 2014-11-03 15:52+0200\n"
11 11 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
12 12 "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/bsc/po/fr/bsc.po
... ... @@ -4,9 +4,9 @@
4 4 # , 2009.
5 5 msgid ""
6 6 msgstr ""
7   -"Project-Id-Version: 1.0\n"
  7 +"Project-Id-Version: 1.0-690-gcb6e853\n"
8 8 "Report-Msgid-Bugs-To: \n"
9   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
10 10 "PO-Revision-Date: 2014-12-12 14:22+0200\n"
11 11 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
12 12 "Language-Team: French <https://hosted.weblate.org/projects/noosfero/noosfero/"
... ...
plugins/bsc/po/hy/bsc.po
... ... @@ -5,8 +5,8 @@
5 5 #
6 6 msgid ""
7 7 msgstr ""
8   -"Project-Id-Version: 1.0\n"
9   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
10 10 "PO-Revision-Date: 2009-10-26 16:20-0300\n"
11 11 "Last-Translator: Anahit Minassian <anahit.minassian@cooperation.net>\n"
12 12 "Language-Team: LANGUAGE <LL@li.org>\n"
... ...
plugins/bsc/po/pt/bsc.po
... ... @@ -11,8 +11,8 @@
11 11 #
12 12 msgid ""
13 13 msgstr ""
14   -"Project-Id-Version: 1.0\n"
15   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
16 16 "PO-Revision-Date: 2014-12-18 18:40-0200\n"
17 17 "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
18 18 "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/bsc/po/ru/bsc.po
... ... @@ -5,8 +5,8 @@
5 5 #
6 6 msgid ""
7 7 msgstr ""
8   -"Project-Id-Version: 1.0\n"
9   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
10 10 "PO-Revision-Date: 2014-12-12 14:23+0200\n"
11 11 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
12 12 "Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/comment_classification/po/de/comment_classification.po
... ... @@ -6,18 +6,18 @@
6 6 #
7 7 msgid ""
8 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"
  9 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  10 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  11 +"PO-Revision-Date: 2015-02-23 11:38+0200\n"
12 12 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
13   -"Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/"
14   -"de/>\n"
  13 +"Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-"
  14 +"comment-classification/de/>\n"
15 15 "Language: de\n"
16 16 "MIME-Version: 1.0\n"
17 17 "Content-Type: text/plain; charset=UTF-8\n"
18 18 "Content-Transfer-Encoding: 8bit\n"
19 19 "Plural-Forms: nplurals=2; plural=n != 1;\n"
20   -"X-Generator: Weblate 2.2-dev\n"
  20 +"X-Generator: Weblate 2.3-dev\n"
21 21  
22 22 #: plugins/comment_classification/lib/comment_classification_plugin.rb:11
23 23 #, fuzzy
... ... @@ -127,7 +127,7 @@ msgstr &quot;Verwaltungsinformationen&quot;
127 127 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:6
128 128 #: plugins/comment_classification/views/comment_classification_plugin_status/_form.html.erb:6
129 129 msgid "Name"
130   -msgstr ""
  130 +msgstr "Name"
131 131  
132 132 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:7
133 133 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:10
... ... @@ -173,7 +173,7 @@ msgstr &quot;Aktiviert&quot;
173 173 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:12
174 174 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:12
175 175 msgid "Actions"
176   -msgstr ""
  176 +msgstr "Aktionen"
177 177  
178 178 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:21
179 179 #, fuzzy
... ... @@ -212,7 +212,7 @@ msgstr &quot;Sind Sie sicher, dass Sie diesen Eintrag entfernen möchten?&quot;
212 212  
213 213 #: plugins/comment_classification/views/comment/comments_labels_select.html.erb:3
214 214 msgid "[Select ...]"
215   -msgstr ""
  215 +msgstr "[Auswahl...]"
216 216  
217 217 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:1
218 218 #, fuzzy
... ...
plugins/comment_classification/po/es/comment_classification.po
... ... @@ -5,85 +5,72 @@
5 5 #
6 6 msgid ""
7 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"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  10 +"PO-Revision-Date: 2015-02-24 20:46+0200\n"
  11 +"Last-Translator: Gonzalo Exequiel Pedone <hipersayan.x@gmail.com>\n"
  12 +"Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"comment-classification/es/>\n"
14 14 "Language: es\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 17 "Content-Transfer-Encoding: 8bit\n"
18 18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19   -"X-Generator: Weblate 2.0-dev\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
20 20  
21 21 #: plugins/comment_classification/lib/comment_classification_plugin.rb:11
22   -#, fuzzy
23 22 msgid "A plugin that allow classification of comments."
24   -msgstr "Un bloque que muestra tus grupos"
  23 +msgstr "Un plugin que permite clasificar comentarios."
25 24  
26 25 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:16
27   -#, fuzzy
28 26 msgid "Label created"
29   -msgstr "Licencia"
  27 +msgstr "Etiqueta creada"
30 28  
31 29 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:19
32   -#, fuzzy
33 30 msgid "Label could not be created"
34   -msgstr "%s no pudo ser actualizado"
  31 +msgstr "La etiqueta no pudo ser creada"
35 32  
36 33 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:31
37   -#, fuzzy
38 34 msgid "Label updated"
39   -msgstr "Última actualización"
  35 +msgstr "Etiqueta actualizada"
40 36  
41 37 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:34
42   -#, fuzzy
43 38 msgid "Failed to edit label"
44   -msgstr "No se pudo editar el rol"
  39 +msgstr "Fallo al editar la etiqueta"
45 40  
46 41 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:45
47   -#, fuzzy
48 42 msgid "Label removed"
49   -msgstr "Artículo eliminado."
  43 +msgstr "Etiqueta eliminada"
50 44  
51 45 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:47
52 46 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:50
53   -#, fuzzy
54 47 msgid "Label could not be removed"
55   -msgstr "%s no pudo ser actualizado"
  48 +msgstr "No se puede eliminar la etiqueta"
56 49  
57 50 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:15
58   -#, fuzzy
59 51 msgid "Status created"
60   -msgstr "Contrato creado."
  52 +msgstr "Estado creado"
61 53  
62 54 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:18
63   -#, fuzzy
64 55 msgid "Status could not be created"
65   -msgstr "%s no pudo ser actualizado"
  56 +msgstr "No se puede crear el estado"
66 57  
67 58 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:29
68   -#, fuzzy
69 59 msgid "Status updated"
70   -msgstr "Fecha de inicio"
  60 +msgstr "Estado actualizado"
71 61  
72 62 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:32
73   -#, fuzzy
74 63 msgid "Failed to edit status"
75   -msgstr "No se pudo editar el rol"
  64 +msgstr "Fallo al editar el estado"
76 65  
77 66 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:43
78   -#, fuzzy
79 67 msgid "Status removed"
80   -msgstr "Contrato eliminado."
  68 +msgstr "Estado eliminado"
81 69  
82 70 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:45
83 71 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:48
84   -#, fuzzy
85 72 msgid "Status could not be removed"
86   -msgstr "El contrato no puede ser eliminado. ¡Perdón! ^^"
  73 +msgstr "No se puede eliminar el estado"
87 74  
88 75 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/_status_form.html.erb:6
89 76 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:9
... ... @@ -92,79 +79,72 @@ msgid &quot;Status&quot;
92 79 msgstr "Estado"
93 80  
94 81 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/_status_form.html.erb:7
95   -#, fuzzy
96 82 msgid "Reason:"
97   -msgstr "Razón"
  83 +msgstr "Razón:"
98 84  
99 85 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:1
100   -#, fuzzy
101 86 msgid "Status for comment"
102   -msgstr "sin comentarios"
  87 +msgstr "Estado del comentario"
103 88  
104 89 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:16
105 90 msgid ""
106 91 "<i>%{user}</i> added the status <i>%{status_name}</i> at <i>%{created_at}</"
107 92 "i>."
108 93 msgstr ""
  94 +"<i>%{user}</i> ha agregado el estado <i>%{status_name}</i> en "
  95 +"<i>%{created_at}</i>."
109 96  
110 97 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:18
111 98 msgid "<i>Reason:</i> %s"
112   -msgstr ""
  99 +msgstr "<i>Razón:</i> %s"
113 100  
114 101 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:24
115 102 #: plugins/comment_classification/views/comment_classification_plugin_status/create.html.erb:1
116 103 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:29
117   -#, fuzzy
118 104 msgid "Add a new status"
119   -msgstr "Añadir nuevo producto"
  105 +msgstr "Agregar nuevo estado"
120 106  
121 107 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/index.html.erb:1
122   -#, fuzzy
123 108 msgid "Manage comment classification"
124   -msgstr "Información de gestión"
  109 +msgstr "Gestionar la clasificación de comentarios"
125 110  
126 111 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:6
127 112 #: plugins/comment_classification/views/comment_classification_plugin_status/_form.html.erb:6
128 113 msgid "Name"
129   -msgstr ""
  114 +msgstr "Nombre"
130 115  
131 116 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:7
132 117 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:10
133 118 msgid "Color"
134   -msgstr ""
  119 +msgstr "Color"
135 120  
136 121 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:8
137   -#, fuzzy
138 122 msgid "Enable this label?"
139   -msgstr "Habilitar correo electrónico"
  123 +msgstr "¿Habilitar esta etiqueta?"
140 124  
141 125 #: plugins/comment_classification/views/comment_classification_plugin_labels/edit.html.erb:1
142   -#, fuzzy
143 126 msgid "Editing label %s"
144   -msgstr "Editando %s"
  127 +msgstr "Editar etiqueta %s"
145 128  
146 129 #: plugins/comment_classification/views/comment_classification_plugin_labels/create.html.erb:1
147 130 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:29
148   -#, fuzzy
149 131 msgid "Add a new label"
150   -msgstr "Agregar un archivo CSS"
  132 +msgstr "Agregar una nueva etiqueta"
151 133  
152 134 # pendiente
153 135 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:1
154   -#, fuzzy
155 136 msgid "Manage comments labels"
156   -msgstr "Manejar los campos de la comunidad"
  137 +msgstr "Gestionar la etiqueta de los comentarios"
157 138  
158 139 # Le ponemos "no registrado" o "sin registrar"? O no especificado?
159 140 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:5
160   -#, fuzzy
161 141 msgid "(no label registered yet)"
162   -msgstr "(producto no registrado aun)"
  142 +msgstr "(todavía no se ha registrado una etiqueta)"
163 143  
164 144 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:9
165 145 #: plugins/comment_classification/views/comment/comments_labels_select.html.erb:3
166 146 msgid "Label"
167   -msgstr ""
  147 +msgstr "Etiqueta"
168 148  
169 149 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:11
170 150 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:10
... ... @@ -174,60 +154,50 @@ msgstr &quot;Habilitado&quot;
174 154 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:12
175 155 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:12
176 156 msgid "Actions"
177   -msgstr ""
  157 +msgstr "Acciones"
178 158  
179 159 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:21
180   -#, fuzzy
181 160 msgid "Are you sure you want to remove this label?"
182   -msgstr "¿Estás seguro de que deseas eliminar este bloque?"
  161 +msgstr "¿Estás seguro de que deseas eliminar esta etiqueta?"
183 162  
184 163 #: plugins/comment_classification/views/comment_classification_plugin_status/_form.html.erb:7
185   -#, fuzzy
186 164 msgid "Enable this status?"
187   -msgstr "Habilitar \"contáctanos\""
  165 +msgstr "¿Habilitar este estado?"
188 166  
189 167 #: plugins/comment_classification/views/comment_classification_plugin_status/edit.html.erb:1
190   -#, fuzzy
191 168 msgid "Editing status %s"
192   -msgstr "Editando %s"
  169 +msgstr "Editando el estado %s"
193 170  
194 171 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:1
195   -#, fuzzy
196 172 msgid "Manage comments status"
197   -msgstr "Administrar contactos"
  173 +msgstr "Gestionar el estado de los comentarios"
198 174  
199 175 # Le ponemos "no registrado" o "sin registrar"? O no especificado?
200 176 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:5
201   -#, fuzzy
202 177 msgid "(no status registered yet)"
203   -msgstr "(producto no registrado aun)"
  178 +msgstr "(todavía no se ha registrado un estado)"
204 179  
205 180 # habilitado o permitido? estaba o está?
206 181 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:11
207   -#, fuzzy
208 182 msgid "Reason enabled?"
209   -msgstr "No habilitado"
  183 +msgstr "¿Razón habilitada?"
210 184  
211 185 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:21
212   -#, fuzzy
213 186 msgid "Are you sure you want to remove this status?"
214   -msgstr "¿Estás seguro de que deseas eliminar este elemento?"
  187 +msgstr "¿Estás seguro de que deseas eliminar este estado?"
215 188  
216 189 #: plugins/comment_classification/views/comment/comments_labels_select.html.erb:3
217 190 msgid "[Select ...]"
218   -msgstr ""
  191 +msgstr "[Seleccione ...]"
219 192  
220 193 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:1
221   -#, fuzzy
222 194 msgid "Comments classification options"
223   -msgstr "Opciones de moderación"
  195 +msgstr "Opciones de clasificación de comentarios"
224 196  
225 197 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:4
226   -#, fuzzy
227 198 msgid "Manage Labels"
228   -msgstr "Administrar campos"
  199 +msgstr "Gestionar Etiquetas"
229 200  
230 201 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:5
231   -#, fuzzy
232 202 msgid "Manage Status"
233   -msgstr "Administrar contactos"
  203 +msgstr "Gestionar Estados"
... ...
plugins/comment_classification/po/fr/comment_classification.po
... ... @@ -4,167 +4,147 @@
4 4 # , 2009.
5 5 msgid ""
6 6 msgstr ""
7   -"Project-Id-Version: 1.0\n"
  7 +"Project-Id-Version: 1.0-690-gcb6e853\n"
8 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"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  10 +"PO-Revision-Date: 2015-03-07 12:26+0200\n"
  11 +"Last-Translator: Tuux <tuxa@galaxie.eu.org>\n"
  12 +"Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"comment-classification/fr/>\n"
14 14 "Language: fr\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 17 "Content-Transfer-Encoding: 8bit\n"
18 18 "Plural-Forms: nplurals=2; plural=n > 1;\n"
19   -"X-Generator: Weblate 2.2-dev\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
20 20  
21 21 #: plugins/comment_classification/lib/comment_classification_plugin.rb:11
22   -#, fuzzy
23 22 msgid "A plugin that allow classification of comments."
24   -msgstr "Un bloc qui affiche vos groupes"
  23 +msgstr "Un greffon qui permet de ranger du contenue."
25 24  
26 25 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:16
27   -#, fuzzy
28 26 msgid "Label created"
29   -msgstr "Adresse électronique de contact"
  27 +msgstr "Label crée"
30 28  
31 29 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:19
32   -#, fuzzy
33 30 msgid "Label could not be created"
34   -msgstr "Ce fichier n'a pas pu être sauvegardé"
  31 +msgstr "Le label n'a pas pu êtres créer"
35 32  
36 33 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:31
37   -#, fuzzy
38 34 msgid "Label updated"
39   -msgstr "Dernière mise à jour"
  35 +msgstr "Label mis à jour"
40 36  
41 37 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:34
42   -#, fuzzy
43 38 msgid "Failed to edit label"
44   -msgstr "Échec dans l'édition du rôle"
  39 +msgstr "Erreur lors de l'édition du label"
45 40  
46 41 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:45
47   -#, fuzzy
48 42 msgid "Label removed"
49   -msgstr "Corps de l'article"
  43 +msgstr "Label supprimé"
50 44  
51 45 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:47
52 46 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_labels_controller.rb:50
53   -#, fuzzy
54 47 msgid "Label could not be removed"
55   -msgstr "Ce fichier n'a pas pu être sauvegardé"
  48 +msgstr "Le label n'a pas pu êtres supprimé"
56 49  
57 50 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:15
58   -#, fuzzy
59 51 msgid "Status created"
60   -msgstr "Adresse électronique de contact"
  52 +msgstr "Statut créé"
61 53  
62 54 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:18
63   -#, fuzzy
64 55 msgid "Status could not be created"
65   -msgstr "Ce fichier n'a pas pu être sauvegardé"
  56 +msgstr "Les statuts n'ont pas pu êtres créés"
66 57  
67 58 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:29
68   -#, fuzzy
69 59 msgid "Status updated"
70   -msgstr "Date de début"
  60 +msgstr "Les statuts sont à jour"
71 61  
72 62 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:32
73   -#, fuzzy
74 63 msgid "Failed to edit status"
75   -msgstr "Échec dans l'édition du rôle"
  64 +msgstr "Échec dans l'édition des statuts"
76 65  
77 66 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:43
78   -#, fuzzy
79 67 msgid "Status removed"
80   -msgstr "Corps de l'article"
  68 +msgstr "Les statuts ont été supprimés"
81 69  
82 70 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:45
83 71 #: plugins/comment_classification/controllers/admin/comment_classification_plugin_status_controller.rb:48
84   -#, fuzzy
85 72 msgid "Status could not be removed"
86   -msgstr "Ce fichier n'a pas pu être sauvegardé"
  73 +msgstr "Les statuts ne peuvent pas êtres supprimés"
87 74  
88 75 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/_status_form.html.erb:6
89 76 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:9
90 77 #: plugins/comment_classification/views/comment/comment_extra.html.erb:12
91 78 msgid "Status"
92   -msgstr "Statut"
  79 +msgstr "Statuts"
93 80  
94 81 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/_status_form.html.erb:7
95   -#, fuzzy
96 82 msgid "Reason:"
97   -msgstr "Région"
  83 +msgstr "Raison:"
98 84  
99 85 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:1
100   -#, fuzzy
101 86 msgid "Status for comment"
102   -msgstr "Un commentaire"
  87 +msgstr "Statuts pour le commentaire"
103 88  
104 89 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:16
105 90 msgid ""
106 91 "<i>%{user}</i> added the status <i>%{status_name}</i> at <i>%{created_at}</"
107 92 "i>."
108 93 msgstr ""
  94 +"<i>%{utilisateur}</i> ajout des statuts <i>%{nom_ du_statut}</i> à "
  95 +"<i>%{creer_a}</i>."
109 96  
110 97 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:18
111 98 msgid "<i>Reason:</i> %s"
112   -msgstr ""
  99 +msgstr "<i>Raison:</i> %s"
113 100  
114 101 # (second try of this knid of contents)
115 102 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/add_status.html.erb:24
116 103 #: plugins/comment_classification/views/comment_classification_plugin_status/create.html.erb:1
117 104 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:29
118   -#, fuzzy
119 105 msgid "Add a new status"
120   -msgstr "Une entreprise"
  106 +msgstr "Ajouter un nouveau statut"
121 107  
122 108 #: plugins/comment_classification/views/comment_classification_plugin_myprofile/index.html.erb:1
123   -#, fuzzy
124 109 msgid "Manage comment classification"
125   -msgstr "Information sur les dirigeants"
  110 +msgstr "Manager le rangement de commentaire"
126 111  
127 112 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:6
128 113 #: plugins/comment_classification/views/comment_classification_plugin_status/_form.html.erb:6
129 114 msgid "Name"
130   -msgstr ""
  115 +msgstr "Nom"
131 116  
132 117 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:7
133 118 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:10
134 119 msgid "Color"
135   -msgstr ""
  120 +msgstr "Couleur"
136 121  
137 122 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:8
138   -#, fuzzy
139 123 msgid "Enable this label?"
140   -msgstr "Activer l'entreprise"
  124 +msgstr "Activer ce label?"
141 125  
142 126 #: plugins/comment_classification/views/comment_classification_plugin_labels/edit.html.erb:1
143   -#, fuzzy
144 127 msgid "Editing label %s"
145   -msgstr "Édition de %s"
  128 +msgstr "Édition du label %s"
146 129  
147 130 # (second try of this knid of contents)
148 131 #: plugins/comment_classification/views/comment_classification_plugin_labels/create.html.erb:1
149 132 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:29
150   -#, fuzzy
151 133 msgid "Add a new label"
152   -msgstr "Une entreprise"
  134 +msgstr "Ajouter un nouveau label"
153 135  
154 136 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:1
155   -#, fuzzy
156 137 msgid "Manage comments labels"
157   -msgstr "Gérer les champs des groupes"
  138 +msgstr "Gérer les commentaires des labels"
158 139  
159 140 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:5
160   -#, fuzzy
161 141 msgid "(no label registered yet)"
162   -msgstr "(pas encore de matière brute enregistrée)"
  142 +msgstr "(pour le moment aucun label n'est enregistré)"
163 143  
164 144 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:9
165 145 #: plugins/comment_classification/views/comment/comments_labels_select.html.erb:3
166 146 msgid "Label"
167   -msgstr ""
  147 +msgstr "Label"
168 148  
169 149 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:11
170 150 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:10
... ... @@ -174,32 +154,27 @@ msgstr &quot;Activé&quot;
174 154 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:12
175 155 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:12
176 156 msgid "Actions"
177   -msgstr ""
  157 +msgstr "Actions"
178 158  
179 159 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:21
180   -#, fuzzy
181 160 msgid "Are you sure you want to remove this label?"
182   -msgstr "Êtes-vous sûr(e) que vous voulez retirer ce commentaire ?"
  161 +msgstr "Êtes-vous sûr(e) que vous voulez retirer ce label ?"
183 162  
184 163 #: plugins/comment_classification/views/comment_classification_plugin_status/_form.html.erb:7
185   -#, fuzzy
186 164 msgid "Enable this status?"
187   -msgstr "Gérer les contacts."
  165 +msgstr "Activer ce statut?"
188 166  
189 167 #: plugins/comment_classification/views/comment_classification_plugin_status/edit.html.erb:1
190   -#, fuzzy
191 168 msgid "Editing status %s"
192   -msgstr "Édition de %s"
  169 +msgstr "Édition du statut %s"
193 170  
194 171 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:1
195   -#, fuzzy
196 172 msgid "Manage comments status"
197   -msgstr "Gérer les contacts."
  173 +msgstr "Gérer les commentaires des statuts"
198 174  
199 175 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:5
200   -#, fuzzy
201 176 msgid "(no status registered yet)"
202   -msgstr "genre non enregistré"
  177 +msgstr "(il n'y a pas de statut enregistré pour le moment)"
203 178  
204 179 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:11
205 180 #, fuzzy
... ... @@ -207,25 +182,21 @@ msgid &quot;Reason enabled?&quot;
207 182 msgstr "%s n'était pas activé(e)"
208 183  
209 184 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:21
210   -#, fuzzy
211 185 msgid "Are you sure you want to remove this status?"
212   -msgstr "Êtes-vous sûr(e) de vouloir ôter cet élément ?"
  186 +msgstr "Êtes-vous sûr(e) de vouloir supprimer ce statut?"
213 187  
214 188 #: plugins/comment_classification/views/comment/comments_labels_select.html.erb:3
215 189 msgid "[Select ...]"
216   -msgstr ""
  190 +msgstr "[Choisir...]"
217 191  
218 192 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:1
219   -#, fuzzy
220 193 msgid "Comments classification options"
221   -msgstr "Options de modération"
  194 +msgstr "Options de rangement des commentaires"
222 195  
223 196 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:4
224   -#, fuzzy
225 197 msgid "Manage Labels"
226   -msgstr "Gérer les champs"
  198 +msgstr "Gérer les labels"
227 199  
228 200 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:5
229   -#, fuzzy
230 201 msgid "Manage Status"
231   -msgstr "Gérer les contacts."
  202 +msgstr "Gérer les statuts"
... ...
plugins/comment_classification/po/hy/comment_classification.po
... ... @@ -5,17 +5,18 @@
5 5 #
6 6 msgid ""
7 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"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  10 +"PO-Revision-Date: 2015-02-23 11:37+0200\n"
  11 +"Last-Translator: Michal Čihař <michal@cihar.com>\n"
  12 +"Language-Team: Armenian <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"comment-classification/hy/>\n"
13 14 "Language: hy\n"
14 15 "MIME-Version: 1.0\n"
15 16 "Content-Type: text/plain; charset=UTF-8\n"
16 17 "Content-Transfer-Encoding: 8bit\n"
17   -"Plural-Forms: nplurals=2; plural=(n > 1);\n"
18   -"X-Generator: Pootle 1.1.0\n"
  18 +"Plural-Forms: nplurals=2; plural=(n != 1);\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
19 20  
20 21 #: plugins/comment_classification/lib/comment_classification_plugin.rb:11
21 22 #, fuzzy
... ... @@ -125,7 +126,7 @@ msgstr &quot;Տեղեկություններ ղեկավարության մասին&quot;
125 126 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:6
126 127 #: plugins/comment_classification/views/comment_classification_plugin_status/_form.html.erb:6
127 128 msgid "Name"
128   -msgstr ""
  129 +msgstr "Անվանում"
129 130  
130 131 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:7
131 132 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:10
... ... @@ -171,7 +172,7 @@ msgstr &quot;Ակտիվացված է&quot;
171 172 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:12
172 173 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:12
173 174 msgid "Actions"
174   -msgstr ""
  175 +msgstr "Գործողություններ"
175 176  
176 177 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:21
177 178 #, fuzzy
... ...
plugins/comment_classification/po/pt/comment_classification.po
... ... @@ -11,18 +11,18 @@
11 11 #
12 12 msgid ""
13 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"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  16 +"PO-Revision-Date: 2015-02-23 11:38+0200\n"
  17 +"Last-Translator: Michal Čihař <michal@cihar.com>\n"
  18 +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero"
  19 +"/plugin-comment-classification/pt/>\n"
20 20 "Language: pt\n"
21 21 "MIME-Version: 1.0\n"
22 22 "Content-Type: text/plain; charset=UTF-8\n"
23 23 "Content-Transfer-Encoding: 8bit\n"
24 24 "Plural-Forms: nplurals=2; plural=n != 1;\n"
25   -"X-Generator: Weblate 2.0\n"
  25 +"X-Generator: Weblate 2.3-dev\n"
26 26  
27 27 #: plugins/comment_classification/lib/comment_classification_plugin.rb:11
28 28 msgid "A plugin that allow classification of comments."
... ... @@ -117,7 +117,7 @@ msgstr &quot;Gerenciar classificação de comentário&quot;
117 117 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:6
118 118 #: plugins/comment_classification/views/comment_classification_plugin_status/_form.html.erb:6
119 119 msgid "Name"
120   -msgstr ""
  120 +msgstr "Nome"
121 121  
122 122 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:7
123 123 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:10
... ... @@ -158,7 +158,7 @@ msgstr &quot;Habilitado&quot;
158 158 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:12
159 159 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:12
160 160 msgid "Actions"
161   -msgstr ""
  161 +msgstr "Ações"
162 162  
163 163 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:21
164 164 msgid "Are you sure you want to remove this label?"
... ... @@ -190,7 +190,7 @@ msgstr &quot;Tem certeza de que quer excluir este status?&quot;
190 190  
191 191 #: plugins/comment_classification/views/comment/comments_labels_select.html.erb:3
192 192 msgid "[Select ...]"
193   -msgstr ""
  193 +msgstr "[Selecione ...]"
194 194  
195 195 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:1
196 196 msgid "Comments classification options"
... ...
plugins/comment_classification/po/ru/comment_classification.po
... ... @@ -5,19 +5,19 @@
5 5 #
6 6 msgid ""
7 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"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  10 +"PO-Revision-Date: 2015-02-23 11:37+0200\n"
11 11 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
12   -"Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/"
13   -"noosfero/ru/>\n"
  12 +"Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"comment-classification/ru/>\n"
14 14 "Language: ru\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 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"
  18 +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
  19 +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
  20 +"X-Generator: Weblate 2.3-dev\n"
21 21  
22 22 #: plugins/comment_classification/lib/comment_classification_plugin.rb:11
23 23 #, fuzzy
... ... @@ -127,7 +127,7 @@ msgstr &quot;Информация о менеджменте&quot;
127 127 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:6
128 128 #: plugins/comment_classification/views/comment_classification_plugin_status/_form.html.erb:6
129 129 msgid "Name"
130   -msgstr ""
  130 +msgstr "Имя"
131 131  
132 132 #: plugins/comment_classification/views/comment_classification_plugin_labels/_form.html.erb:7
133 133 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:10
... ... @@ -173,7 +173,7 @@ msgstr &quot;Разрешено&quot;
173 173 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:12
174 174 #: plugins/comment_classification/views/comment_classification_plugin_status/index.html.erb:12
175 175 msgid "Actions"
176   -msgstr ""
  176 +msgstr "Действия"
177 177  
178 178 #: plugins/comment_classification/views/comment_classification_plugin_labels/index.html.erb:21
179 179 #, fuzzy
... ... @@ -212,7 +212,7 @@ msgstr &quot;Вы уверены что хотите удалить этот элем
212 212  
213 213 #: plugins/comment_classification/views/comment/comments_labels_select.html.erb:3
214 214 msgid "[Select ...]"
215   -msgstr ""
  215 +msgstr "[Выберите...]"
216 216  
217 217 #: plugins/comment_classification/views/comment_classification_plugin_admin/index.html.erb:1
218 218 #, fuzzy
... ...
plugins/comment_group/po/pt/comment_group.po
... ... @@ -11,8 +11,8 @@
11 11 #
12 12 msgid ""
13 13 msgstr ""
14   -"Project-Id-Version: 1.0\n"
15   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
16 16 "PO-Revision-Date: 2014-12-18 18:40-0200\n"
17 17 "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
18 18 "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/community_block/po/pt/community_block.po
... ... @@ -11,8 +11,8 @@
11 11 #
12 12 msgid ""
13 13 msgstr ""
14   -"Project-Id-Version: 1.0\n"
15   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
16 16 "PO-Revision-Date: 2014-12-18 18:40-0200\n"
17 17 "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
18 18 "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/community_track/po/de/community_track.po
... ... @@ -6,8 +6,8 @@
6 6 #
7 7 msgid ""
8 8 msgstr ""
9   -"Project-Id-Version: 1.0\n"
10   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  9 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  10 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
11 11 "PO-Revision-Date: 2014-12-12 14:23+0200\n"
12 12 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
13 13 "Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/"
... ...
plugins/community_track/po/es/community_track.po
... ... @@ -5,23 +5,22 @@
5 5 #
6 6 msgid ""
7 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"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  10 +"PO-Revision-Date: 2015-02-24 19:06+0200\n"
  11 +"Last-Translator: Gonzalo Exequiel Pedone <hipersayan.x@gmail.com>\n"
  12 +"Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"community-track/es/>\n"
14 14 "Language: es\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 17 "Content-Transfer-Encoding: 8bit\n"
18 18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19   -"X-Generator: Weblate 2.0-dev\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
20 20  
21 21 #: plugins/community_track/lib/community_track_plugin.rb:8
22   -#, fuzzy
23 22 msgid "New kind of content for communities."
24   -msgstr "Deshabilitar búsqueda por organizaciones"
  23 +msgstr "Nuevo tipo de contenido para las comunidades."
25 24  
26 25 #: plugins/community_track/lib/community_track_plugin/step.rb:13
27 26 #, fuzzy
... ... @@ -34,15 +33,15 @@ msgstr &quot;&quot;
34 33  
35 34 #: plugins/community_track/lib/community_track_plugin/step.rb:52
36 35 msgid "Step"
37   -msgstr ""
  36 +msgstr "Paso"
38 37  
39 38 #: plugins/community_track/lib/community_track_plugin/step.rb:56
40 39 msgid "Defines a step."
41   -msgstr ""
  40 +msgstr "Definir un paso."
42 41  
43 42 #: plugins/community_track/lib/community_track_plugin/track_card_list_block.rb:4
44 43 msgid "Track Card List"
45   -msgstr ""
  44 +msgstr "Seguimiento de Lista de Tarjetas"
46 45  
47 46 #: plugins/community_track/lib/community_track_plugin/track_card_list_block.rb:8
48 47 #, fuzzy
... ... @@ -54,23 +53,22 @@ msgid &quot;Closed&quot;
54 53 msgstr "Cerrado"
55 54  
56 55 #: plugins/community_track/lib/community_track_plugin/step_helper.rb:4
57   -#, fuzzy
58 56 msgid "Join!"
59   -msgstr "Unirse"
  57 +msgstr "Unete!"
60 58  
61 59 #: plugins/community_track/lib/community_track_plugin/step_helper.rb:4
62 60 #: plugins/community_track/test/unit/community_track_plugin/step_helper_test.rb:33
63 61 msgid "Soon"
64   -msgstr ""
  62 +msgstr "Pronto"
65 63  
66 64 #: plugins/community_track/lib/community_track_plugin/track.rb:11
67   -#, fuzzy
68 65 msgid "should not be blank."
69   -msgstr "%s no pudo ser actualizado"
  66 +msgstr "no debe estar vacío."
70 67  
71 68 #: plugins/community_track/lib/community_track_plugin/track.rb:19
  69 +#, fuzzy
72 70 msgid "Track"
73   -msgstr ""
  71 +msgstr "Seguir"
74 72  
75 73 #: plugins/community_track/lib/community_track_plugin/track.rb:23
76 74 msgid "Defines a track."
... ... @@ -176,7 +174,7 @@ msgstr &quot;Oculto&quot;
176 174  
177 175 #: plugins/community_track/views/blocks/_track_card.html.erb:25
178 176 msgid "hits"
179   -msgstr ""
  177 +msgstr "aciertos"
180 178  
181 179 #: plugins/community_track/views/blocks/_track_list_more.html.erb:5
182 180 #, fuzzy
... ...
plugins/community_track/po/pt/community_track.po
... ... @@ -11,8 +11,8 @@
11 11 #
12 12 msgid ""
13 13 msgstr ""
14   -"Project-Id-Version: 1.0\n"
15   -"POT-Creation-Date: 2015-02-02 21:43-0300\n"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
16 16 "PO-Revision-Date: 2014-12-18 18:40-0200\n"
17 17 "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
18 18 "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/container_block/po/pt/container_block.po
... ... @@ -11,8 +11,8 @@
11 11 #
12 12 msgid ""
13 13 msgstr ""
14   -"Project-Id-Version: 1.0\n"
15   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
16 16 "PO-Revision-Date: 2014-12-18 18:40-0200\n"
17 17 "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
18 18 "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/container_block/public/container_block.js
1 1 function enableMoveContainerChildren(container, box) {
2 2 var div = jQuery('#box-'+box+' > .block-outer > .block');
3 3 if(!div.is('.ui-resizable')) {
  4 + div.removeClass('ui-draggable');
4 5 div.resizable({
5 6 handles: 'e, w',
6 7 containment: '#block-'+container+' .block-inner-2',
... ... @@ -14,6 +15,7 @@ function enableMoveContainerChildren(container, box) {
14 15 function disableMoveContainerChildren(container, box) {
15 16 var div = jQuery('#box-'+box+' > .block-outer > .block');
16 17 if(div.is('.ui-resizable')) {
  18 + div.addClass('ui-draggable');
17 19 div.resizable('destroy');
18 20 }
19 21 }
... ...
plugins/container_block/views/blocks/container.html.erb
... ... @@ -10,7 +10,7 @@
10 10 <div class="clear"></div>
11 11  
12 12 <style>
13   - <% box_decorator.select_blocks(block.blocks, { :article => @page, :request_path => request.path, :locale => locale }).each do |child| %>
  13 + <% box_decorator.select_blocks(block, block.blocks, { :article => @page, :request_path => request.path, :locale => locale, params: request.params, controller: controller}).each do |child| %>
14 14 #block-<%=block.id%> #block-<%=child.id%> { width: <%= block.child_width(child.id) %>px; }
15 15 <% end %>
16 16 </style>
... ...
plugins/context_content/po/pt/context_content.po
... ... @@ -11,8 +11,8 @@
11 11 #
12 12 msgid ""
13 13 msgstr ""
14   -"Project-Id-Version: 1.0\n"
15   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
16 16 "PO-Revision-Date: 2014-12-18 18:40-0200\n"
17 17 "Last-Translator: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>\n"
18 18 "Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/"
... ...
plugins/custom_forms/controllers/custom_forms_plugin_profile_controller.rb
... ... @@ -9,7 +9,7 @@ class CustomFormsPluginProfileController &lt; ProfileController
9 9 @submission = CustomFormsPlugin::Submission.find_by_form_id_and_profile_id(@form.id,user.id)
10 10 @submission ||= CustomFormsPlugin::Submission.new(:form => @form, :profile => user)
11 11 else
12   - @submission = CustomFormsPlugin::Submission.new(:form => @for)
  12 + @submission = CustomFormsPlugin::Submission.new(:form => @form)
13 13 end
14 14  
15 15 # build the answers
... ...
plugins/custom_forms/lib/custom_forms_plugin/submission.rb
... ... @@ -5,7 +5,7 @@ class CustomFormsPlugin::Submission &lt; Noosfero::Plugin::ActiveRecord
5 5 # validation is done manually, see below
6 6 has_many :answers, :class_name => 'CustomFormsPlugin::Answer', :dependent => :destroy, :validate => false
7 7  
8   - attr_accessible :form, :profile
  8 + attr_accessible :form, :profile, :author_name, :author_email
9 9  
10 10 validates_presence_of :form
11 11 validates_presence_of :author_name, :author_email, :if => lambda {|submission| submission.profile.nil?}
... ... @@ -13,13 +13,16 @@ class CustomFormsPlugin::Submission &lt; Noosfero::Plugin::ActiveRecord
13 13 validates_format_of :author_email, :with => Noosfero::Constants::EMAIL_FORMAT, :if => (lambda {|submission| !submission.author_email.blank?})
14 14 validate :check_answers
15 15  
16   - def self.human_attribute_name(attrib)
17   - if /\d+/ =~ attrib and (f = CustomFormsPlugin::Field.find_by_id(attrib.to_i))
  16 + def self.human_attribute_name_with_customization(attrib, options={})
  17 + if /\d+/ =~ attrib and (f = CustomFormsPlugin::Field.find_by_id(attrib.to_s))
18 18 f.name
19 19 else
20   - attrib
  20 + _(self.human_attribute_name_without_customization(attrib))
21 21 end
22 22 end
  23 + class << self
  24 + alias_method_chain :human_attribute_name, :customization
  25 + end
23 26  
24 27 before_create do |submission|
25 28 if submission.profile
... ...
plugins/custom_forms/po/de/custom_forms.po
... ... @@ -6,18 +6,18 @@
6 6 #
7 7 msgid ""
8 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"
  9 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  10 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
  11 +"PO-Revision-Date: 2015-03-09 09:51+0200\n"
12 12 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
13   -"Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/"
14   -"de/>\n"
  13 +"Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-"
  14 +"custom-forms/de/>\n"
15 15 "Language: de\n"
16 16 "MIME-Version: 1.0\n"
17 17 "Content-Type: text/plain; charset=UTF-8\n"
18 18 "Content-Transfer-Encoding: 8bit\n"
19 19 "Plural-Forms: nplurals=2; plural=n != 1;\n"
20   -"X-Generator: Weblate 2.2-dev\n"
  20 +"X-Generator: Weblate 2.3-dev\n"
21 21  
22 22 #: plugins/custom_forms/lib/custom_forms_plugin/form.rb:67
23 23 msgid "Invalid string format of access."
... ... @@ -188,7 +188,7 @@ msgstr &quot;Neues Formular&quot;
188 188 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_form.html.erb:5
189 189 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:6
190 190 msgid "Name"
191   -msgstr ""
  191 +msgstr "Name"
192 192  
193 193 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:6
194 194 msgid "Value"
... ... @@ -198,6 +198,10 @@ msgstr &quot;Wert&quot;
198 198 msgid "Add a new option"
199 199 msgstr "Neue Option hinzufügen"
200 200  
  201 +#: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:29
  202 +msgid "Ok"
  203 +msgstr "OK"
  204 +
201 205 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_alternative.html.erb:10
202 206 #, fuzzy
203 207 msgid "Remove alternative"
... ... @@ -355,7 +359,7 @@ msgstr &quot;Beiträge&quot;
355 359  
356 360 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:10
357 361 msgid "Actions"
358   -msgstr ""
  362 +msgstr "Aktionen"
359 363  
360 364 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:20
361 365 msgid "Pending"
... ...
plugins/custom_forms/po/eo/custom_forms.po
... ... @@ -5,8 +5,8 @@
5 5 #
6 6 msgid ""
7 7 msgstr ""
8   -"Project-Id-Version: 1.0\n"
9   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
10 10 "PO-Revision-Date: 2014-11-05 13:05+0200\n"
11 11 "Last-Translator: Aurélio A. Heckert <aurelio@colivre.coop.br>\n"
12 12 "Language-Team: Esperanto <https://hosted.weblate.org/projects/noosfero/"
... ... @@ -184,6 +184,10 @@ msgstr &quot;&quot;
184 184 msgid "Add a new option"
185 185 msgstr ""
186 186  
  187 +#: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:29
  188 +msgid "Ok"
  189 +msgstr ""
  190 +
187 191 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_alternative.html.erb:10
188 192 msgid "Remove alternative"
189 193 msgstr ""
... ...
plugins/custom_forms/po/es/custom_forms.po
... ... @@ -5,18 +5,18 @@
5 5 #
6 6 msgid ""
7 7 msgstr ""
8   -"Project-Id-Version: 1.0\n"
9   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
10   -"PO-Revision-Date: 2014-11-03 15:52+0200\n"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
  10 +"PO-Revision-Date: 2015-03-09 09:51+0200\n"
11 11 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
12   -"Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/"
13   -"noosfero/es/>\n"
  12 +"Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"custom-forms/es/>\n"
14 14 "Language: es\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 17 "Content-Transfer-Encoding: 8bit\n"
18 18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19   -"X-Generator: Weblate 2.0-dev\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
20 20  
21 21 #: plugins/custom_forms/lib/custom_forms_plugin/form.rb:67
22 22 #, fuzzy
... ... @@ -201,7 +201,7 @@ msgstr &quot;Forma Legal&quot;
201 201 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_form.html.erb:5
202 202 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:6
203 203 msgid "Name"
204   -msgstr ""
  204 +msgstr "Nombre"
205 205  
206 206 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:6
207 207 msgid "Value"
... ... @@ -212,6 +212,10 @@ msgstr &quot;&quot;
212 212 msgid "Add a new option"
213 213 msgstr "Añadir nuevo producto"
214 214  
  215 +#: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:29
  216 +msgid "Ok"
  217 +msgstr "Ok"
  218 +
215 219 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_alternative.html.erb:10
216 220 #, fuzzy
217 221 msgid "Remove alternative"
... ... @@ -377,7 +381,7 @@ msgstr &quot;Permisos&quot;
377 381  
378 382 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:10
379 383 msgid "Actions"
380   -msgstr ""
  384 +msgstr "Acciones"
381 385  
382 386 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:20
383 387 msgid "Pending"
... ...
plugins/custom_forms/po/fr/custom_forms.po
... ... @@ -4,19 +4,19 @@
4 4 # , 2009.
5 5 msgid ""
6 6 msgstr ""
7   -"Project-Id-Version: 1.0\n"
  7 +"Project-Id-Version: 1.0-690-gcb6e853\n"
8 8 "Report-Msgid-Bugs-To: \n"
9   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
10   -"PO-Revision-Date: 2014-12-12 14:22+0200\n"
  9 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
  10 +"PO-Revision-Date: 2015-02-23 11:38+0200\n"
11 11 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
12   -"Language-Team: French <https://hosted.weblate.org/projects/noosfero/noosfero/"
13   -"fr/>\n"
  12 +"Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"custom-forms/fr/>\n"
14 14 "Language: fr\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 17 "Content-Transfer-Encoding: 8bit\n"
18 18 "Plural-Forms: nplurals=2; plural=n > 1;\n"
19   -"X-Generator: Weblate 2.2-dev\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
20 20  
21 21 #: plugins/custom_forms/lib/custom_forms_plugin/form.rb:67
22 22 msgid "Invalid string format of access."
... ... @@ -199,7 +199,7 @@ msgstr &quot;Nouveau dossier&quot;
199 199 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_form.html.erb:5
200 200 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:6
201 201 msgid "Name"
202   -msgstr ""
  202 +msgstr "Nom"
203 203  
204 204 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:6
205 205 msgid "Value"
... ... @@ -211,6 +211,10 @@ msgstr &quot;&quot;
211 211 msgid "Add a new option"
212 212 msgstr "Une entreprise"
213 213  
  214 +#: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:29
  215 +msgid "Ok"
  216 +msgstr ""
  217 +
214 218 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_alternative.html.erb:10
215 219 #, fuzzy
216 220 msgid "Remove alternative"
... ... @@ -383,7 +387,7 @@ msgstr &quot;Permissions&quot;
383 387  
384 388 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:10
385 389 msgid "Actions"
386   -msgstr ""
  390 +msgstr "Actions"
387 391  
388 392 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:20
389 393 #, fuzzy
... ...
plugins/custom_forms/po/hy/custom_forms.po
... ... @@ -5,17 +5,18 @@
5 5 #
6 6 msgid ""
7 7 msgstr ""
8   -"Project-Id-Version: 1.0\n"
9   -"POT-Creation-Date: 2015-02-02 21:44-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"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
  10 +"PO-Revision-Date: 2015-02-23 11:37+0200\n"
  11 +"Last-Translator: Michal Čihař <michal@cihar.com>\n"
  12 +"Language-Team: Armenian <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"custom-forms/hy/>\n"
13 14 "Language: hy\n"
14 15 "MIME-Version: 1.0\n"
15 16 "Content-Type: text/plain; charset=UTF-8\n"
16 17 "Content-Transfer-Encoding: 8bit\n"
17   -"Plural-Forms: nplurals=2; plural=(n > 1);\n"
18   -"X-Generator: Pootle 1.1.0\n"
  18 +"Plural-Forms: nplurals=2; plural=(n != 1);\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
19 20  
20 21 #: plugins/custom_forms/lib/custom_forms_plugin/form.rb:67
21 22 msgid "Invalid string format of access."
... ... @@ -197,7 +198,7 @@ msgstr &quot;Նոր թղթապանակ&quot;
197 198 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_form.html.erb:5
198 199 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:6
199 200 msgid "Name"
200   -msgstr ""
  201 +msgstr "Անվանում"
201 202  
202 203 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:6
203 204 msgid "Value"
... ... @@ -208,6 +209,10 @@ msgstr &quot;&quot;
208 209 msgid "Add a new option"
209 210 msgstr "Մեկ ձեռնարկություն"
210 211  
  212 +#: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:29
  213 +msgid "Ok"
  214 +msgstr ""
  215 +
211 216 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_alternative.html.erb:10
212 217 #, fuzzy
213 218 msgid "Remove alternative"
... ... @@ -375,7 +380,7 @@ msgstr &quot;Թույլտվություններ&quot;
375 380  
376 381 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:10
377 382 msgid "Actions"
378   -msgstr ""
  383 +msgstr "Գործողություններ"
379 384  
380 385 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:20
381 386 #, fuzzy
... ...
plugins/custom_forms/po/pt/custom_forms.po
... ... @@ -11,18 +11,18 @@
11 11 #
12 12 msgid ""
13 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"
  14 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  15 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
  16 +"PO-Revision-Date: 2015-03-12 15:13+0200\n"
  17 +"Last-Translator: daniel <dtygel@eita.org.br>\n"
  18 +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero"
  19 +"/plugin-custom-forms/pt/>\n"
20 20 "Language: pt\n"
21 21 "MIME-Version: 1.0\n"
22 22 "Content-Type: text/plain; charset=UTF-8\n"
23 23 "Content-Transfer-Encoding: 8bit\n"
24 24 "Plural-Forms: nplurals=2; plural=n != 1;\n"
25   -"X-Generator: Weblate 2.0\n"
  25 +"X-Generator: Weblate 2.3-dev\n"
26 26  
27 27 #: plugins/custom_forms/lib/custom_forms_plugin/form.rb:67
28 28 msgid "Invalid string format of access."
... ... @@ -133,11 +133,11 @@ msgstr &quot;Gerenciar Formulários&quot;
133 133  
134 134 #: plugins/custom_forms/controllers/custom_forms_plugin_myprofile_controller.rb:26
135 135 msgid "Custom form %s was successfully created."
136   -msgstr "\"O formulário %s foi criado com sucesso.\""
  136 +msgstr "O formulário %s foi criado com sucesso."
137 137  
138 138 #: plugins/custom_forms/controllers/custom_forms_plugin_myprofile_controller.rb:46
139 139 msgid "Custom form %s was successfully updated."
140   -msgstr "O formulário personalizado %s foi atualizado com sucesso"
  140 +msgstr "O formulário personalizado %s foi atualizado com sucesso."
141 141  
142 142 #: plugins/custom_forms/controllers/custom_forms_plugin_myprofile_controller.rb:49
143 143 msgid "Form could not be updated"
... ... @@ -185,7 +185,7 @@ msgstr &quot;Novo formulário&quot;
185 185 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_form.html.erb:5
186 186 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:6
187 187 msgid "Name"
188   -msgstr ""
  188 +msgstr "Nome"
189 189  
190 190 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:6
191 191 msgid "Value"
... ... @@ -195,6 +195,10 @@ msgstr &quot;Valor&quot;
195 195 msgid "Add a new option"
196 196 msgstr "Adicionar uma nova opção"
197 197  
  198 +#: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:29
  199 +msgid "Ok"
  200 +msgstr "Ok"
  201 +
198 202 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_alternative.html.erb:10
199 203 msgid "Remove alternative"
200 204 msgstr "Remover alternativa"
... ... @@ -340,7 +344,7 @@ msgstr &quot;Submissões&quot;
340 344  
341 345 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:10
342 346 msgid "Actions"
343   -msgstr ""
  347 +msgstr "Ações"
344 348  
345 349 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:20
346 350 msgid "Pending"
... ...
plugins/custom_forms/po/ru/custom_forms.po
... ... @@ -5,19 +5,19 @@
5 5 #
6 6 msgid ""
7 7 msgstr ""
8   -"Project-Id-Version: 1.0\n"
9   -"POT-Creation-Date: 2015-02-02 21:44-0300\n"
10   -"PO-Revision-Date: 2014-12-12 14:23+0200\n"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:10-0300\n"
  10 +"PO-Revision-Date: 2015-03-09 09:51+0200\n"
11 11 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
12   -"Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/"
13   -"noosfero/ru/>\n"
  12 +"Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"custom-forms/ru/>\n"
14 14 "Language: ru\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 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"
  18 +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
  19 +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
  20 +"X-Generator: Weblate 2.3-dev\n"
21 21  
22 22 #: plugins/custom_forms/lib/custom_forms_plugin/form.rb:67
23 23 msgid "Invalid string format of access."
... ... @@ -200,7 +200,7 @@ msgstr &quot;Новая папка&quot;
200 200 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_form.html.erb:5
201 201 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:6
202 202 msgid "Name"
203   -msgstr ""
  203 +msgstr "Имя"
204 204  
205 205 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:6
206 206 msgid "Value"
... ... @@ -211,6 +211,10 @@ msgstr &quot;&quot;
211 211 msgid "Add a new option"
212 212 msgstr "Одна компания"
213 213  
  214 +#: plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb:29
  215 +msgid "Ok"
  216 +msgstr "OK"
  217 +
214 218 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_alternative.html.erb:10
215 219 #, fuzzy
216 220 msgid "Remove alternative"
... ... @@ -379,7 +383,7 @@ msgstr &quot;Разрешения&quot;
379 383  
380 384 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:10
381 385 msgid "Actions"
382   -msgstr ""
  386 +msgstr "Действия"
383 387  
384 388 #: plugins/custom_forms/views/custom_forms_plugin_myprofile/index.html.erb:20
385 389 msgid "Pending"
... ...
plugins/custom_forms/test/functional/custom_forms_plugin_profile_controller_test.rb
... ... @@ -29,6 +29,30 @@ class CustomFormsPluginProfileControllerTest &lt; ActionController::TestCase
29 29 assert_redirected_to :action => 'show'
30 30 end
31 31  
  32 + should 'save submission if fields are ok and user is not logged in' do
  33 + logout
  34 + form = CustomFormsPlugin::Form.create!(:profile => profile, :name => 'Free Software')
  35 + field = CustomFormsPlugin::TextField.create(:name => 'Name', :form => form)
  36 +
  37 + assert_difference 'CustomFormsPlugin::Submission.count', 1 do
  38 + post :show, :profile => profile.identifier, :id => form.id, :author_name => "john", :author_email => 'john@example.com', :submission => {field.id.to_s => 'Noosfero'}
  39 + end
  40 + assert_redirected_to :action => 'show'
  41 + end
  42 +
  43 + should 'display errors if user is not logged in and author_name is not uniq' do
  44 + logout
  45 + form = CustomFormsPlugin::Form.create(:profile => profile, :name => 'Free Software')
  46 + field = CustomFormsPlugin::TextField.create(:name => 'Name', :form => form)
  47 + submission = CustomFormsPlugin::Submission.create(:form => form, :author_name => "john", :author_email => 'john@example.com')
  48 +
  49 + assert_no_difference 'CustomFormsPlugin::Submission.count' do
  50 + post :show, :profile => profile.identifier, :id => form.id, :author_name => "john", :author_email => 'john@example.com', :submission => {field.id.to_s => 'Noosfero'}
  51 + end
  52 + assert_equal "Submission could not be saved", session[:notice]
  53 + assert_tag :tag => 'div', :attributes => { :class => 'errorExplanation', :id => 'errorExplanation' }
  54 + end
  55 +
32 56 should 'disable fields if form expired' do
33 57 form = CustomFormsPlugin::Form.create!(:profile => profile, :name => 'Free Software', :begining => Time.now + 1.day)
34 58 form.fields << CustomFormsPlugin::TextField.create(:name => 'Field Name', :form => form, :default_value => "First Field")
... ...
plugins/display_content/po/de/display_content.po
... ... @@ -6,18 +6,18 @@
6 6 #
7 7 msgid ""
8 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"
  9 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  10 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  11 +"PO-Revision-Date: 2015-02-23 11:37+0200\n"
12 12 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
13   -"Language-Team: German <https://hosted.weblate.org/projects/noosfero/noosfero/"
14   -"de/>\n"
  13 +"Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-"
  14 +"display-content/de/>\n"
15 15 "Language: de\n"
16 16 "MIME-Version: 1.0\n"
17 17 "Content-Type: text/plain; charset=UTF-8\n"
18 18 "Content-Transfer-Encoding: 8bit\n"
19 19 "Plural-Forms: nplurals=2; plural=n != 1;\n"
20   -"X-Generator: Weblate 2.2-dev\n"
  20 +"X-Generator: Weblate 2.3-dev\n"
21 21  
22 22 #: plugins/display_content/lib/display_content_plugin.rb:10
23 23 msgid ""
... ... @@ -49,17 +49,16 @@ msgid &quot;Abstract&quot;
49 49 msgstr "Zusammenfassung"
50 50  
51 51 #: plugins/display_content/lib/display_content_block.rb:151
52   -#, fuzzy
53 52 msgid "Read more"
54   -msgstr "Mehr zeigen"
  53 +msgstr "Mehr lesen"
55 54  
56 55 #: plugins/display_content/lib/display_content_block.rb:194
57 56 msgid "%{month}/%{day}/%{year}"
58   -msgstr ""
  57 +msgstr "%{day}.%{month}.%{year}"
59 58  
60 59 #: plugins/display_content/lib/display_content_block.rb:194
61 60 msgid "%{month}/%{day}"
62   -msgstr ""
  61 +msgstr "%{day}.%{month}."
63 62  
64 63 #: plugins/display_content/lib/display_content_block.rb:197
65 64 msgid "%{month_name} %{day}, %{year}"
... ...
plugins/display_content/po/es/display_content.po
... ... @@ -5,18 +5,18 @@
5 5 #
6 6 msgid ""
7 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"
  8 +"Project-Id-Version: 1.0-690-gcb6e853\n"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  10 +"PO-Revision-Date: 2015-03-09 09:51+0200\n"
11 11 "Last-Translator: Michal Čihař <michal@cihar.com>\n"
12   -"Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/"
13   -"noosfero/es/>\n"
  12 +"Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"display-content/es/>\n"
14 14 "Language: es\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 17 "Content-Transfer-Encoding: 8bit\n"
18 18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19   -"X-Generator: Weblate 2.0-dev\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
20 20  
21 21 #: plugins/display_content/lib/display_content_plugin.rb:10
22 22 msgid ""
... ... @@ -48,21 +48,20 @@ msgid &quot;Abstract&quot;
48 48 msgstr "Resumen"
49 49  
50 50 #: plugins/display_content/lib/display_content_block.rb:151
51   -#, fuzzy
52 51 msgid "Read more"
53   -msgstr "Ver más"
  52 +msgstr "Leer más"
54 53  
55 54 #: plugins/display_content/lib/display_content_block.rb:194
56 55 msgid "%{month}/%{day}/%{year}"
57   -msgstr ""
  56 +msgstr "%{day} de %{month} %{year}"
58 57  
59 58 #: plugins/display_content/lib/display_content_block.rb:194
60 59 msgid "%{month}/%{day}"
61   -msgstr ""
  60 +msgstr "%{day}/%{month}"
62 61  
63 62 #: plugins/display_content/lib/display_content_block.rb:197
64 63 msgid "%{month_name} %{day}, %{year}"
65   -msgstr ""
  64 +msgstr "%{day} de %{month_name} de %{year}"
66 65  
67 66 #: plugins/display_content/lib/display_content_block.rb:197
68 67 msgid "%{month_name} %{day}"
... ...
plugins/display_content/po/fr/display_content.po
... ... @@ -4,113 +4,110 @@
4 4 # , 2009.
5 5 msgid ""
6 6 msgstr ""
7   -"Project-Id-Version: 1.0\n"
  7 +"Project-Id-Version: 1.0-690-gcb6e853\n"
8 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"
  9 +"POT-Creation-Date: 2015-03-05 12:09-0300\n"
  10 +"PO-Revision-Date: 2015-03-07 02:11+0200\n"
  11 +"Last-Translator: Tuux <tuxa@galaxie.eu.org>\n"
  12 +"Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-"
  13 +"display-content/fr/>\n"
14 14 "Language: fr\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 17 "Content-Transfer-Encoding: 8bit\n"
18 18 "Plural-Forms: nplurals=2; plural=n > 1;\n"
19   -"X-Generator: Weblate 2.2-dev\n"
  19 +"X-Generator: Weblate 2.3-dev\n"
20 20  
21 21 #: plugins/display_content/lib/display_content_plugin.rb:10
22 22 msgid ""
23 23 "A plugin that adds a block where you could choose any of your content and "
24 24 "display it."
25 25 msgstr ""
  26 +"Un greffon qui permet d'ajouter une zone ou vous pourrez y afficher le "
  27 +"contenue de votre choix."
26 28  
27 29 #: plugins/display_content/lib/display_content_block.rb:34
28   -#, fuzzy
29 30 msgid "Display your contents"
30   -msgstr "Afficher un de vos contenus."
  31 +msgstr "Afficher vos contenus"
31 32  
32 33 #: plugins/display_content/lib/display_content_block.rb:38
33   -#, fuzzy
34 34 msgid ""
35 35 "This block displays articles chosen by you. You can edit the block to select "
36 36 "which of your articles is going to be displayed in the block."
37 37 msgstr ""
38   -"Ce bloc affiche un de vos articles. Vous pouvez éditer le bloc pour "
  38 +"Ce bloc affiche l'article de votre choix. Vous pouvez éditer le bloc pour "
39 39 "sélectionner lequel de vos articles va être affiche dans ce bloc."
40 40  
41 41 #: plugins/display_content/lib/display_content_block.rb:43
42   -#, fuzzy
43 42 msgid "Publish date"
44   -msgstr "Publié"
  43 +msgstr "Date de publication"
45 44  
46 45 #: plugins/display_content/lib/display_content_block.rb:45
47 46 msgid "Abstract"
48 47 msgstr "Résumé"
49 48  
50 49 #: plugins/display_content/lib/display_content_block.rb:151
51   -#, fuzzy
52 50 msgid "Read more"
53   -msgstr "plus..."
  51 +msgstr "En lire plus"
54 52  
55 53 #: plugins/display_content/lib/display_content_block.rb:194
56 54 msgid "%{month}/%{day}/%{year}"
57   -msgstr ""
  55 +msgstr "%{mois}/%{jour}/%{année}"
58 56  
59 57 #: plugins/display_content/lib/display_content_block.rb:194
60 58 msgid "%{month}/%{day}"
61   -msgstr ""
  59 +msgstr "%{mois}/%{jour}"
62 60  
63 61 #: plugins/display_content/lib/display_content_block.rb:197
64 62 msgid "%{month_name} %{day}, %{year}"
65   -msgstr ""
  63 +msgstr "%{nom_du_mois} %{jour}, %{année}"
66 64  
67 65 #: plugins/display_content/lib/display_content_block.rb:197
68 66 msgid "%{month_name} %{day}"
69   -msgstr ""
  67 +msgstr "%{nom_du_mois} %{jour}"
70 68  
71 69 #: plugins/display_content/views/box_organizer/_display_content_block.html.erb:5
72 70 msgid "Choose which attributes should be displayed and drag to reorder them:"
73 71 msgstr ""
  72 +"Choisissez quels attribues doivent êtres afficher et glisser/déposer pour "
  73 +"les réorganiser:"
74 74  
75 75 #: plugins/display_content/views/box_organizer/_display_content_block.html.erb:21
76 76 msgid "Choose which content should be displayed:"
77   -msgstr ""
  77 +msgstr "Choisissez le contenu à afficher:"
78 78  
79 79 #: plugins/display_content/views/box_organizer/_display_content_block.html.erb:23
80 80 msgid "Choose directly"
81   -msgstr ""
  81 +msgstr "Choisir directement"
82 82  
83 83 #: plugins/display_content/views/box_organizer/_display_content_block.html.erb:24
84   -#, fuzzy
85 84 msgid "Choose by Content Type"
86   -msgstr "Type de contenu"
  85 +msgstr "Choisir par type de contenu"
87 86  
88 87 #: plugins/display_content/views/box_organizer/_display_content_block.html.erb:28
89 88 msgid "Order by:"
90   -msgstr ""
  89 +msgstr "Trier par:"
91 90  
92 91 #: plugins/display_content/views/box_organizer/_display_content_block.html.erb:29
93 92 msgid "Most recent"
94   -msgstr ""
  93 +msgstr "Le plus récent"
95 94  
96 95 #: plugins/display_content/views/box_organizer/_display_content_block.html.erb:30
97 96 msgid "Most oldest"
98   -msgstr ""
  97 +msgstr "Le plus ancien"
99 98  
100 99 #: plugins/display_content/views/box_organizer/_choose_by_content_type.html.erb:1
101   -#, fuzzy
102 100 msgid "Display content types:"
103   -msgstr "Afficher un de vos contenus."
  101 +msgstr "Afficher le types de contenue:"
104 102  
105 103 #: plugins/display_content/views/box_organizer/_choose_by_content_type.html.erb:7
106   -#, fuzzy
107 104 msgid "more"
108   -msgstr "plus..."
  105 +msgstr "plus"
109 106  
110 107 #: plugins/display_content/views/box_organizer/_choose_directly.html.erb:5
111 108 msgid "Dinamically load children of selected folders"
112   -msgstr ""
  109 +msgstr "Dynamiquement charger les sous répertoires des répertoires sélectionnés"
113 110  
114 111 #: plugins/display_content/views/box_organizer/_choose_directly.html.erb:9
115 112 msgid "Limit:"
116   -msgstr ""
  113 +msgstr "Limite:"
... ...