thredded 0.16.9 → 0.16.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6b7ad12ea287ef3ace9212dffab574e960a41da130062cf74bc1a476a0987f56
4
- data.tar.gz: bafa7540a4a298026def2a48b5cbd4dddc26830b60eb516357f55ff1adc86d5f
3
+ metadata.gz: 78b0d8ea36cff88b87fc05f44d4419af0872e6f2c6747fc316df5b010d1affd3
4
+ data.tar.gz: 5f82a2fdc6c287cd85cb3dd3a5ef12631e5227dfbef4ab2d68c7495c990bf523
5
5
  SHA512:
6
- metadata.gz: 8702e8deeb2916ed4df9dac747513a98a90e4b842841caed2c5394348b0daa18db1dbbc87cd6a137866a7496204d41bdc7761b0d110c83cae88c5cfa1a02cbee
7
- data.tar.gz: 371c8dc989fe40b6dea0aed48243137e1b4757cd496ef5f0a78a7b452f74c143561b5fd226578834d921119873feb0eab0904c07db15e15a14d2851b7d20b120
6
+ metadata.gz: ec6c4e0b3ec14274519dcff925d6f10c3de0721de4dd074fd44ba193e682e178d1fabe3253e026bdc6cbdf53d13933675f39dbe61e308a8edb5af540930ade5c
7
+ data.tar.gz: befd728ca48d0a7c9313850fd1297f1afe9a1f52e73b960ad1b35b044484f131f0c2d9e7713cbc62dc453b45ba4888ec6a19872424071ddc67f83be03715fa83
data/README.md CHANGED
@@ -95,7 +95,7 @@ Then, see the rest of this Readme for more information about using and customizi
95
95
  Add the gem to your Gemfile:
96
96
 
97
97
  ```ruby
98
- gem 'thredded', '~> 0.16.9'
98
+ gem 'thredded', '~> 0.16.10'
99
99
  ```
100
100
 
101
101
  Add the Thredded [initializer] to your parent app by running the install generator.
@@ -23,7 +23,7 @@ module Thredded
23
23
  result = all
24
24
  ActiveRecord::Associations::Preloader.new.preload(
25
25
  result.map(&:postable), :first_post,
26
- Thredded::Post.where(<<~SQL.delete("\n"))
26
+ unscoped.where(<<~SQL.delete("\n"))
27
27
  #{posts_table_name}.created_at = (
28
28
  SELECT MAX(p2.created_at) from #{posts_table_name} p2 WHERE p2.postable_id = #{posts_table_name}.postable_id)
29
29
  SQL
@@ -24,7 +24,7 @@ module Thredded
24
24
  validates :name, uniqueness: true, length: { within: Thredded.messageboard_name_length_range }, presence: true
25
25
  validates :topics_count, numericality: true
26
26
  validates :position, presence: true, on: :update
27
- before_save :ensure_position, on: :create
27
+ before_save :ensure_position
28
28
 
29
29
  def ensure_position
30
30
  self.position ||= (created_at || Time.zone.now).to_i
@@ -10,7 +10,7 @@ module Thredded
10
10
  scope :ordered, -> { order(position: :asc, id: :asc) }
11
11
  validates :name, presence: true, uniqueness: true
12
12
  validates :position, presence: true, on: :update
13
- before_save :ensure_position, on: :create
13
+ before_save :ensure_position
14
14
 
15
15
  def ensure_position
16
16
  self.position ||= Time.zone.now.to_i
@@ -5,10 +5,11 @@
5
5
  <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
6
6
  <%= stylesheet_link_tag 'thredded', 'data-turbolinks-track': 'reload' %>
7
7
  <%= csrf_meta_tag %>
8
+ <%= csp_meta_tag if Thredded.rails_supports_csp_nonce? %>
8
9
  <%= javascript_include_tag 'thredded',
9
10
  async: !Rails.application.config.assets.debug,
10
11
  defer: true,
11
- 'data-turbolinks-track': 'reload'%>
12
+ 'data-turbolinks-track': 'reload' %>
12
13
  <%== Gravatar.prefetch_dns %>
13
14
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
14
15
  </head>
@@ -8,8 +8,8 @@
8
8
  <%# If thredded JS is loaded via an [async] script, the JS may
9
9
  run before or after DOMContentLoaded. Expose a flag to Thredded
10
10
  so it can initialize correctly. %>
11
- <script data-turbolinks-eval="false">
11
+ <%= javascript_tag 'data-turbolinks-eval': 'false', **(Thredded.rails_supports_csp_nonce? ? {nonce: true} : {}) do %>
12
12
  document.addEventListener('DOMContentLoaded', function() {
13
13
  (window.Thredded = window.Thredded || {}).DOMContentLoadedFired = true;
14
14
  });
15
- </script>
15
+ <% end %>
@@ -259,13 +259,13 @@ de:
259
259
  last_active_html: Zuletzt aktiv %{time_ago}
260
260
  posted_in_topic_html: Hochgeladen in %{topic_link}
261
261
  posts_count:
262
- one: Einmalig hochgeladen
263
- other: "%{count} -mal hochgeladen"
262
+ one: "%{count}-mal hochgeladen"
263
+ other: "%{count}-mal hochgeladen"
264
264
  recent_activity: :thredded.recent_activity
265
265
  send_private_message: Private Nachricht senden
266
266
  started_topic_html: "%{topic_link} gestartet"
267
267
  started_topics_count:
268
- one: Eine Diskussion gestartet
268
+ one: "%{count} Diskussion gestartet"
269
269
  other: "%{count} Diskussionen gestartet"
270
270
  user_posted_in_topic_html: "%{user_link} hochgeladen in %{topic_link}"
271
271
  user_since_html: Nutzer seit %{time_ago}
@@ -255,13 +255,13 @@ en:
255
255
  last_active_html: Last active %{time_ago}
256
256
  posted_in_topic_html: Posted in %{topic_link}
257
257
  posts_count:
258
- one: Posted once
258
+ one: Posted %{count} time
259
259
  other: Posted %{count} times
260
260
  recent_activity: :thredded.recent_activity
261
261
  send_private_message: Send private message
262
262
  started_topic_html: Started %{topic_link}
263
263
  started_topics_count:
264
- one: Started one topic
264
+ one: Started %{count} topic
265
265
  other: Started %{count} topics
266
266
  user_posted_in_topic_html: "%{user_link} posted in %{topic_link}"
267
267
  user_since_html: User since %{time_ago}
@@ -259,13 +259,13 @@ es:
259
259
  last_active_html: Última vez activo hace %{time_ago}
260
260
  posted_in_topic_html: Escribió en %{topic_link}
261
261
  posts_count:
262
- one: Ha escrito una vez
262
+ one: Ha escrito %{count} vez
263
263
  other: Ha escrito %{count} veces
264
264
  recent_activity: :thredded.recent_activity
265
265
  send_private_message: Enviar mensaje privado
266
266
  started_topic_html: Empezó %{topic_link}
267
267
  started_topics_count:
268
- one: Ha empezado un tema
268
+ one: Ha empezado %{count} tema
269
269
  other: Ha empezado %{count} temas
270
270
  user_posted_in_topic_html: "%{user_link} escribió en %{topic_link}"
271
271
  user_since_html: Usuario desde %{time_ago}
@@ -257,13 +257,13 @@ fr:
257
257
  last_active_html: 'Actif pour la dernière fois : %{time_ago}'
258
258
  posted_in_topic_html: Commenté dans %{topic_link}
259
259
  posts_count:
260
- one: Commenté une seule fois
260
+ one: Commenté %{count} fois
261
261
  other: Commenté %{count} fois
262
262
  recent_activity: :thredded.recent_activity
263
263
  send_private_message: Envoyer un message privé
264
264
  started_topic_html: Démarré %{topic_link}
265
265
  started_topics_count:
266
- one: Démarré un sujet
266
+ one: Démarré %{count} sujet
267
267
  other: Démarré %{count} sujets
268
268
  user_posted_in_topic_html: "%{user_link} a commenté dans %{topic_link}"
269
269
  user_since_html: Utilisateur depuis %{time_ago}
@@ -259,13 +259,13 @@ it:
259
259
  last_active_html: Ultima attività %{time_ago}
260
260
  posted_in_topic_html: Ha scritto in %{topic_link}
261
261
  posts_count:
262
- one: Ha commentato una volta
262
+ one: Ha commentato %{count} volta
263
263
  other: Ha commentato %{count} volte
264
264
  recent_activity: :thredded.recent_activity
265
265
  send_private_message: Invia un messaggio privato
266
266
  started_topic_html: Ha iniziato %{topic_link}
267
267
  started_topics_count:
268
- one: Ha iniziato una discussione
268
+ one: Ha iniziato %{count} discussione
269
269
  other: Ha iniziato %{count} discussioni
270
270
  user_posted_in_topic_html: "%{user_link} ha commentato in %{topic_link}"
271
271
  user_since_html: Utente da %{time_ago}
@@ -257,7 +257,7 @@ pl:
257
257
  posts_count:
258
258
  few: Napisał %{count} postów
259
259
  many: Napisał %{count} postów
260
- one: Napisał 1 post
260
+ one: Napisał %{count} post
261
261
  other: Napisał %{count} postów
262
262
  recent_activity: :thredded.recent_activity
263
263
  send_private_message: Wyślij Wiadomość Prywatną
@@ -265,7 +265,7 @@ pl:
265
265
  started_topics_count:
266
266
  few: Rozpoczął %{count} tematy
267
267
  many: Rozpoczął %{count} tematów
268
- one: Rozpoczął 1 temat
268
+ one: Rozpoczął %{count} temat
269
269
  other: Rozpoczął %{count} tematów
270
270
  user_posted_in_topic_html: "%{user_link} napisał w %{topic_link}"
271
271
  user_since_html: Zarejestrowany od %{time_ago}
@@ -260,14 +260,14 @@ pt-BR:
260
260
  last_active_html: Última atividade %{time_ago}
261
261
  posted_in_topic_html: Postou em %{topic_link}
262
262
  posts_count:
263
- one: Postado uma vez
263
+ one: Postado %{count} vez
264
264
  other: Postado %{count} vezes
265
265
  recent_activity: :thredded.recent_activity
266
266
  send_private_message: Enviar mensagem privada
267
267
  started_topic_html: Começou %{topic_link}
268
268
  started_topics_count:
269
- one: Começou um tópico
270
- other: tópicos iniciados %{count}
269
+ one: Começou %{count} tópico
270
+ other: Começou %{count} tópicos
271
271
  user_posted_in_topic_html: "%{user_link} postou em %{topic_link}"
272
272
  user_since_html: Usuário desde %{time_ago}
273
273
  user_started_topic_html: "%{user_link} começou %{topic_link}"
@@ -248,13 +248,13 @@ zh-CN:
248
248
  last_active_html: 最后活跃%{time_ago}
249
249
  posted_in_topic_html: 在%{topic_link}中回复到:
250
250
  posts_count:
251
- one: 一个回复
251
+ one: "%{count} 个回复"
252
252
  other: "%{count} 个回复"
253
253
  recent_activity: :thredded.recent_activity
254
254
  send_private_message: 发送私人讯息
255
255
  started_topic_html: 发布帖子 %{topic_link}
256
256
  started_topics_count:
257
- one: 发布一个帖子
257
+ one: 发布 %{count} 个帖子
258
258
  other: 发布 %{count} 个帖子
259
259
  user_posted_in_topic_html: "%{user_link} 回复在 %{topic_link}"
260
260
  user_since_html: 用户自%{time_ago}
@@ -4,10 +4,10 @@ require 'thredded/base_migration'
4
4
 
5
5
  class UpgradeV09ToV010 < Thredded::BaseMigration
6
6
  def up
7
- remove_foreign_key :thredded_messageboard_users, :thredded_messageboards
7
+ remove_foreign_key_if_present :thredded_messageboard_users, :thredded_messageboards
8
8
  add_foreign_key :thredded_messageboard_users, :thredded_messageboards,
9
9
  column: :thredded_messageboard_id, on_delete: :cascade
10
- remove_foreign_key :thredded_messageboard_users, :thredded_user_details
10
+ remove_foreign_key_if_present :thredded_messageboard_users, :thredded_user_details
11
11
  add_foreign_key :thredded_messageboard_users, :thredded_user_details,
12
12
  column: :thredded_user_detail_id, on_delete: :cascade
13
13
 
@@ -33,4 +33,24 @@ class UpgradeV09ToV010 < Thredded::BaseMigration
33
33
  remove_foreign_key :thredded_messageboard_users, :thredded_messageboards
34
34
  add_foreign_key :thredded_messageboard_users, :thredded_messageboards
35
35
  end
36
+
37
+ private
38
+
39
+ def remove_foreign_key_if_present(table, column)
40
+ # We had an inconsistency between v0.9 initial and upgrade migrations, as only one of them added these foreign keys.
41
+ # Here we remove the foreign keys before adding new ones.
42
+ if respond_to?(:foreign_key_exists?)
43
+ if foreign_key_exists?(table, column)
44
+ remove_foreign_key table, column
45
+ else
46
+ say "Not removing foreign key for (#{table}, #{column}) because there isn't one"
47
+ end
48
+ else
49
+ begin
50
+ remove_foreign_key table, column
51
+ rescue StandardError
52
+ say "Not removing foreign key for (#{table}, #{column}) because there isn't one"
53
+ end
54
+ end
55
+ end
36
56
  end
@@ -250,6 +250,12 @@ module Thredded # rubocop:disable Metrics/ModuleLength
250
250
  @rails_gte_51 = (Rails.gem_version >= Gem::Version.new('5.1.0')) if @rails_gte_51.nil?
251
251
  @rails_gte_51
252
252
  end
253
+
254
+ # @api private
255
+ def rails_supports_csp_nonce?
256
+ @rails_supports_csp_nonce = (Rails.gem_version >= Gem::Version.new('5.2.0')) if @rails_supports_csp_nonce.nil?
257
+ @rails_supports_csp_nonce
258
+ end
253
259
  end
254
260
 
255
261
  self.user_name_column = :name
@@ -83,7 +83,17 @@ module Thredded
83
83
  # @return [Array<String>]
84
84
  def render_partials_serial(view_context, collection, opts)
85
85
  partial_renderer = ActionView::PartialRenderer.new(@lookup_context)
86
- collection.map { |object| partial_renderer.render(view_context, opts.merge(object: object), nil) }
86
+ collection.map { |object| render_partial(partial_renderer, view_context, opts.merge(object: object)) }
87
+ end
88
+
89
+ if Rails::VERSION::MAJOR >= 6
90
+ def render_partial(partial_renderer, view_context, opts)
91
+ partial_renderer.render(view_context, opts, nil).body
92
+ end
93
+ else
94
+ def render_partial(partial_renderer, view_context, opts)
95
+ partial_renderer.render(view_context, opts, nil)
96
+ end
87
97
  end
88
98
  end
89
99
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'factory_bot_rails'
3
+ require 'factory_bot'
4
4
  require_relative '../../spec/support/features/fake_content'
5
5
 
6
6
  # rubocop:disable HandleExceptions
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Thredded
4
- VERSION = '0.16.9'
4
+ VERSION = '0.16.10'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thredded
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.9
4
+ version: 0.16.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Oliveira
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-03-02 00:00:00.000000000 Z
12
+ date: 2019-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: active_record_union
@@ -340,19 +340,19 @@ dependencies:
340
340
  - !ruby/object:Gem::Version
341
341
  version: '0'
342
342
  - !ruby/object:Gem::Dependency
343
- name: factory_bot_rails
343
+ name: factory_bot
344
344
  requirement: !ruby/object:Gem::Requirement
345
345
  requirements:
346
346
  - - ">="
347
347
  - !ruby/object:Gem::Version
348
- version: 5.0.1
348
+ version: 5.0.2
349
349
  type: :development
350
350
  prerelease: false
351
351
  version_requirements: !ruby/object:Gem::Requirement
352
352
  requirements:
353
353
  - - ">="
354
354
  - !ruby/object:Gem::Version
355
- version: 5.0.1
355
+ version: 5.0.2
356
356
  - !ruby/object:Gem::Dependency
357
357
  name: faker
358
358
  requirement: !ruby/object:Gem::Requirement
@@ -395,34 +395,6 @@ dependencies:
395
395
  - - ">="
396
396
  - !ruby/object:Gem::Version
397
397
  version: 3.5.0
398
- - !ruby/object:Gem::Dependency
399
- name: rubocop
400
- requirement: !ruby/object:Gem::Requirement
401
- requirements:
402
- - - '='
403
- - !ruby/object:Gem::Version
404
- version: 0.58.2
405
- type: :development
406
- prerelease: false
407
- version_requirements: !ruby/object:Gem::Requirement
408
- requirements:
409
- - - '='
410
- - !ruby/object:Gem::Version
411
- version: 0.58.2
412
- - !ruby/object:Gem::Dependency
413
- name: rubocop-rspec
414
- requirement: !ruby/object:Gem::Requirement
415
- requirements:
416
- - - '='
417
- - !ruby/object:Gem::Version
418
- version: 1.28.0
419
- type: :development
420
- prerelease: false
421
- version_requirements: !ruby/object:Gem::Requirement
422
- requirements:
423
- - - '='
424
- - !ruby/object:Gem::Version
425
- version: 1.28.0
426
398
  - !ruby/object:Gem::Dependency
427
399
  name: simplecov
428
400
  requirement: !ruby/object:Gem::Requirement
@@ -465,20 +437,6 @@ dependencies:
465
437
  - - ">="
466
438
  - !ruby/object:Gem::Version
467
439
  version: '0'
468
- - !ruby/object:Gem::Dependency
469
- name: i18n-tasks
470
- requirement: !ruby/object:Gem::Requirement
471
- requirements:
472
- - - ">="
473
- - !ruby/object:Gem::Version
474
- version: 0.9.18
475
- type: :development
476
- prerelease: false
477
- version_requirements: !ruby/object:Gem::Requirement
478
- requirements:
479
- - - ">="
480
- - !ruby/object:Gem::Version
481
- version: 0.9.18
482
440
  - !ruby/object:Gem::Dependency
483
441
  name: kaminari-i18n
484
442
  requirement: !ruby/object:Gem::Requirement
@@ -555,28 +513,14 @@ dependencies:
555
513
  requirements:
556
514
  - - ">="
557
515
  - !ruby/object:Gem::Version
558
- version: 2.1.0
516
+ version: 2.2.1
559
517
  type: :development
560
518
  prerelease: false
561
519
  version_requirements: !ruby/object:Gem::Requirement
562
520
  requirements:
563
521
  - - ">="
564
522
  - !ruby/object:Gem::Version
565
- version: 2.1.0
566
- - !ruby/object:Gem::Dependency
567
- name: roadie-rails
568
- requirement: !ruby/object:Gem::Requirement
569
- requirements:
570
- - - ">="
571
- - !ruby/object:Gem::Version
572
- version: '0'
573
- type: :development
574
- prerelease: false
575
- version_requirements: !ruby/object:Gem::Requirement
576
- requirements:
577
- - - ">="
578
- - !ruby/object:Gem::Version
579
- version: '0'
523
+ version: 2.2.1
580
524
  - !ruby/object:Gem::Dependency
581
525
  name: sqlite3
582
526
  requirement: !ruby/object:Gem::Requirement