thredded 0.8.4 → 0.9.1
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 +4 -4
- data/README.md +48 -9
- data/app/assets/images/thredded/breadcrumb-chevron.svg +1 -1
- data/app/assets/images/thredded/follow.svg +1 -1
- data/app/assets/images/thredded/moderation.svg +1 -4
- data/app/assets/images/thredded/private-messages.svg +1 -4
- data/app/assets/images/thredded/settings.svg +1 -4
- data/app/assets/images/thredded/unfollow.svg +1 -1
- data/app/assets/javascripts/thredded/components/time_stamps.es6 +1 -1
- data/app/assets/javascripts/thredded/components/user_preferences_form.es6 +26 -49
- data/app/assets/javascripts/thredded/dependencies.js +2 -1
- data/app/assets/stylesheets/thredded/base/_grid.scss +4 -4
- data/app/assets/stylesheets/thredded/base/_typography.scss +18 -0
- data/app/assets/stylesheets/thredded/components/_base.scss +4 -0
- data/app/assets/stylesheets/thredded/components/_currently-online.scss +4 -0
- data/app/assets/stylesheets/thredded/components/_form-list.scss +5 -0
- data/app/assets/stylesheets/thredded/components/_messageboard.scss +3 -0
- data/app/assets/stylesheets/thredded/components/_post-form.scss +7 -4
- data/app/assets/stylesheets/thredded/components/_post.scss +3 -0
- data/app/assets/stylesheets/thredded/components/_topic-delete.scss +3 -0
- data/app/assets/stylesheets/thredded/components/_topic-header.scss +20 -0
- data/app/assets/stylesheets/thredded/components/_topics.scss +13 -1
- data/app/assets/stylesheets/thredded/layout/_main-navigation.scss +1 -1
- data/app/assets/stylesheets/thredded/layout/_navigation.scss +3 -1
- data/app/assets/stylesheets/thredded/layout/_search-navigation.scss +4 -0
- data/app/assets/stylesheets/thredded/layout/_user-navigation.scss +3 -0
- data/app/commands/thredded/at_notification_extractor.rb +1 -2
- data/app/commands/thredded/autofollow_mentioned_users.rb +0 -1
- data/app/commands/thredded/notify_following_users.rb +20 -11
- data/app/commands/thredded/notify_private_topic_users.rb +12 -28
- data/app/controllers/thredded/application_controller.rb +8 -4
- data/app/controllers/thredded/messageboards_controller.rb +2 -2
- data/app/controllers/thredded/moderation_controller.rb +12 -13
- data/app/controllers/thredded/posts_controller.rb +1 -1
- data/app/controllers/thredded/preferences_controller.rb +11 -7
- data/app/controllers/thredded/private_topics_controller.rb +13 -9
- data/app/controllers/thredded/topics_controller.rb +20 -12
- data/app/forms/thredded/user_preferences_form.rb +23 -4
- data/app/helpers/thredded/application_helper.rb +11 -1
- data/app/mailers/thredded/post_mailer.rb +2 -3
- data/app/mailers/thredded/private_topic_mailer.rb +2 -3
- data/app/models/concerns/thredded/content_moderation_state.rb +1 -1
- data/app/models/concerns/thredded/notifier_preference.rb +18 -0
- data/app/models/concerns/thredded/post_common.rb +5 -1
- data/{lib → app/models/concerns}/thredded/search_parser.rb +0 -0
- data/app/models/concerns/thredded/topic_common.rb +3 -3
- data/{lib → app/models/concerns}/thredded/topics_search.rb +2 -3
- data/app/models/thredded/messageboard.rb +11 -0
- data/app/models/thredded/messageboard_notifications_for_followed_topics.rb +29 -0
- data/app/models/thredded/notifications_for_followed_topics.rb +22 -0
- data/app/models/thredded/notifications_for_private_topics.rb +21 -0
- data/app/models/thredded/post.rb +5 -3
- data/app/models/thredded/post_moderation_record.rb +1 -1
- data/app/models/thredded/private_post.rb +1 -1
- data/app/models/thredded/private_topic.rb +8 -4
- data/app/models/thredded/stats.rb +1 -1
- data/app/models/thredded/topic.rb +10 -7
- data/app/models/thredded/user_detail.rb +1 -1
- data/app/models/thredded/user_extender.rb +3 -1
- data/app/models/thredded/user_preference.rb +16 -5
- data/app/models/thredded/user_private_topic_read_state.rb +1 -1
- data/app/models/thredded/user_topic_read_state.rb +1 -1
- data/app/notifiers/thredded/base_notifier.rb +28 -0
- data/app/notifiers/thredded/email_notifier.rb +34 -0
- data/app/policies/thredded/post_policy.rb +3 -4
- data/app/policies/thredded/private_post_policy.rb +2 -3
- data/app/policies/thredded/topic_policy.rb +1 -2
- data/app/view_hooks/thredded/all_view_hooks.rb +0 -3
- data/app/view_models/thredded/base_topic_view.rb +0 -1
- data/app/view_models/thredded/post_view.rb +0 -1
- data/app/view_models/thredded/posts_page_view.rb +1 -4
- data/app/view_models/thredded/private_topic_view.rb +3 -1
- data/app/view_models/thredded/private_topics_page_view.rb +8 -3
- data/app/view_models/thredded/topic_posts_page_view.rb +1 -2
- data/app/view_models/thredded/topic_view.rb +3 -3
- data/app/view_models/thredded/topics_page_view.rb +0 -1
- data/app/views/thredded/messageboard_groups/new.html.erb +5 -1
- data/app/views/thredded/messageboards/_form.html.erb +7 -2
- data/app/views/thredded/posts/_form.html.erb +2 -1
- data/app/views/thredded/posts/edit.html.erb +3 -2
- data/app/views/thredded/posts_common/_form.html.erb +6 -2
- data/app/views/thredded/preferences/_form.html.erb +41 -29
- data/app/views/thredded/private_posts/_form.html.erb +1 -0
- data/app/views/thredded/private_topics/_form.html.erb +3 -2
- data/app/views/thredded/private_topics/_header.html.erb +4 -0
- data/app/views/thredded/private_topics/_no_private_topics.html.erb +1 -1
- data/app/views/thredded/private_topics/_private_topic.html.erb +5 -2
- data/app/views/thredded/private_topics/edit.html.erb +2 -1
- data/app/views/thredded/private_topics/header/_participant.html.erb +1 -0
- data/app/views/thredded/private_topics/index.html.erb +6 -5
- data/app/views/thredded/private_topics/new.html.erb +0 -1
- data/app/views/thredded/private_topics/private_topic/_participant.html.erb +1 -0
- data/app/views/thredded/private_topics/show.html.erb +1 -3
- data/app/views/thredded/topics/_form.html.erb +1 -1
- data/app/views/thredded/topics/show.html.erb +4 -5
- data/config/locales/en.yml +22 -9
- data/config/locales/pt-BR.yml +22 -10
- data/config/routes.rb +1 -1
- data/db/migrate/20160329231848_create_thredded.rb +23 -3
- data/db/upgrade_migrations/20160410111522_upgrade_v0_2_to_v0_3.rb +1 -1
- data/db/upgrade_migrations/20161113161801_upgrade_v0_8_to_v0_9.rb +56 -0
- data/lib/generators/thredded/install/templates/initializer.rb +28 -0
- data/lib/thredded.rb +32 -8
- data/lib/thredded/content_formatter.rb +3 -2
- data/lib/thredded/database_seeder.rb +11 -8
- data/lib/thredded/db_tools.rb +82 -0
- data/lib/thredded/html_pipeline/wrap_iframes_filter.rb +12 -0
- data/lib/thredded/version.rb +1 -1
- metadata +18 -8
- data/app/models/thredded/null_preference.rb +0 -16
|
@@ -108,3 +108,31 @@ Thredded.layout = 'thredded/application'
|
|
|
108
108
|
# 'hi'
|
|
109
109
|
# end
|
|
110
110
|
# end
|
|
111
|
+
|
|
112
|
+
# ==> Topic following
|
|
113
|
+
#
|
|
114
|
+
# By default, a user will be subscribed to a topic they've created. Uncomment this to not subscribe them:
|
|
115
|
+
#
|
|
116
|
+
# Thredded.auto_follow_when_creating_topic = false
|
|
117
|
+
#
|
|
118
|
+
# By default, a user will be subscribed to (follow) a topic they post in. Uncomment this to not subscribe them:
|
|
119
|
+
#
|
|
120
|
+
# Thredded.auto_follow_when_posting_in_topic = false
|
|
121
|
+
#
|
|
122
|
+
# By default, a user will be subscribed to the topic they get @-mentioned in.
|
|
123
|
+
# Individual users can disable this in the Notification Settings.
|
|
124
|
+
# To change the default for all users, simply change the default value of the `follow_topics_on_mention` column
|
|
125
|
+
# of the `thredded_user_preferences` and `thredded_user_messageboard_preferences` tables.
|
|
126
|
+
|
|
127
|
+
# ==> Notifiers
|
|
128
|
+
#
|
|
129
|
+
# Change how users can choose to be notified, by adding notifiers here, or removing the initializer altogether
|
|
130
|
+
#
|
|
131
|
+
# default:
|
|
132
|
+
# Thredded.notifiers = [Thredded::EmailNotifier.new]
|
|
133
|
+
#
|
|
134
|
+
# none:
|
|
135
|
+
# Thredded.notifiers = []
|
|
136
|
+
#
|
|
137
|
+
# add in (must install separate gem (under development) as well):
|
|
138
|
+
# Thredded.notifiers = [Thredded::EmailNotifier.new, Thredded::PushoverNotifier.new(ENV['PUSHOVER_APP_ID'])]
|
data/lib/thredded.rb
CHANGED
|
@@ -19,6 +19,7 @@ require 'inline_svg'
|
|
|
19
19
|
require 'thredded/html_pipeline/at_mention_filter'
|
|
20
20
|
require 'thredded/html_pipeline/autolink_filter'
|
|
21
21
|
require 'thredded/html_pipeline/kramdown_filter'
|
|
22
|
+
require 'thredded/html_pipeline/wrap_iframes_filter'
|
|
22
23
|
|
|
23
24
|
# Asset compilation
|
|
24
25
|
require 'autoprefixer-rails'
|
|
@@ -32,6 +33,9 @@ require 'thredded/version'
|
|
|
32
33
|
require 'thredded/engine'
|
|
33
34
|
require 'thredded/errors'
|
|
34
35
|
|
|
36
|
+
require 'thredded/view_hooks/config'
|
|
37
|
+
require 'thredded/view_hooks/renderer'
|
|
38
|
+
|
|
35
39
|
# Require Thredded::ContentFormatter explicitly so that it doesn't need to be required if used in the initializer.
|
|
36
40
|
require 'thredded/content_formatter'
|
|
37
41
|
|
|
@@ -61,12 +65,23 @@ module Thredded
|
|
|
61
65
|
# @return [Boolean] Whether posts that are pending moderation are visible to regular users.
|
|
62
66
|
mattr_accessor :content_visible_while_pending_moderation
|
|
63
67
|
|
|
68
|
+
# @return [Array] The notifiers, by default just the EmailNotifier
|
|
69
|
+
mattr_accessor :notifiers
|
|
70
|
+
|
|
64
71
|
# @return [Boolean] Whether users that are following a topic are listed on topic page.
|
|
65
72
|
mattr_accessor :show_topic_followers
|
|
66
73
|
|
|
67
74
|
# @return [Symbol] The name of the method used by Thredded to display users
|
|
68
75
|
mattr_accessor :user_display_name_method
|
|
69
76
|
|
|
77
|
+
# @return [Boolean] Whether the user should get subscribed to a new topic they've created.
|
|
78
|
+
mattr_accessor :auto_follow_when_creating_topic
|
|
79
|
+
self.auto_follow_when_creating_topic = true
|
|
80
|
+
|
|
81
|
+
# @return [Boolean] Whether the user should get subscribed to a topic after posting in it.
|
|
82
|
+
mattr_accessor :auto_follow_when_posting_in_topic
|
|
83
|
+
self.auto_follow_when_posting_in_topic = true
|
|
84
|
+
|
|
70
85
|
self.active_user_threshold = 5.minutes
|
|
71
86
|
self.admin_column = :admin
|
|
72
87
|
self.avatar_url = ->(user) { Gravatar.src(user.email, 128, 'mm') }
|
|
@@ -87,6 +102,15 @@ module Thredded
|
|
|
87
102
|
instance
|
|
88
103
|
end
|
|
89
104
|
|
|
105
|
+
def self.notifiers
|
|
106
|
+
@@notifiers ||= [Thredded::EmailNotifier.new] # rubocop:disable Style/ClassVars
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def self.notifiers=(notifiers)
|
|
110
|
+
notifiers.each { |notifier| BaseNotifier.validate_notifier(notifier) }
|
|
111
|
+
@@notifiers = notifiers # rubocop:disable Style/ClassVars
|
|
112
|
+
end
|
|
113
|
+
|
|
90
114
|
def self.user_display_name_method
|
|
91
115
|
@@user_display_name_method || user_name_column
|
|
92
116
|
end
|
|
@@ -103,14 +127,14 @@ module Thredded
|
|
|
103
127
|
|
|
104
128
|
# @return [Class<Thredded::UserExtender>] the user class from the host application.
|
|
105
129
|
def self.user_class
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if @@user_class.is_a?(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
130
|
+
# This is nil before the initializer is installed.
|
|
131
|
+
return nil if @@user_class.nil?
|
|
132
|
+
fail 'Please use a String instead of a Class' if @@user_class.is_a?(Class)
|
|
133
|
+
fail "user_class must be a String, got #{@@user_class.inspect}" unless @@user_class.is_a?(String)
|
|
134
|
+
begin
|
|
135
|
+
Object.const_get(@@user_class)
|
|
136
|
+
rescue NameError
|
|
137
|
+
@@user_class.constantize
|
|
114
138
|
end
|
|
115
139
|
end
|
|
116
140
|
|
|
@@ -25,11 +25,12 @@ module Thredded
|
|
|
25
25
|
'a' => %w(href rel),
|
|
26
26
|
'iframe' => %w(src width height frameborder allowfullscreen sandbox seamless),
|
|
27
27
|
'span' => %w(class),
|
|
28
|
+
'div' => %w(class)
|
|
28
29
|
},
|
|
29
30
|
add_attributes: {
|
|
30
31
|
'iframe' => {
|
|
31
32
|
'seamless' => 'seamless',
|
|
32
|
-
'sandbox' => 'allow-same-origin allow-scripts allow-forms',
|
|
33
|
+
'sandbox' => 'allow-same-origin allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox',
|
|
33
34
|
}
|
|
34
35
|
},
|
|
35
36
|
protocols: {
|
|
@@ -63,7 +64,7 @@ module Thredded
|
|
|
63
64
|
Thredded::HtmlPipeline::AutolinkFilter,
|
|
64
65
|
HTML::Pipeline::EmojiFilter,
|
|
65
66
|
Thredded::HtmlPipeline::AtMentionFilter,
|
|
66
|
-
|
|
67
|
+
Thredded::HtmlPipeline::WrapIframesFilter,
|
|
67
68
|
]
|
|
68
69
|
|
|
69
70
|
# Filters that sanitize the resulting HTML.
|
|
@@ -231,12 +231,14 @@ module Thredded
|
|
|
231
231
|
MODEL_CLASS = PrivateTopic
|
|
232
232
|
|
|
233
233
|
def create(count: 1)
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
234
|
+
Array.new(count) do
|
|
235
|
+
FactoryGirl.create(
|
|
236
|
+
:private_topic,
|
|
237
|
+
user: seeder.users[1..-1].sample,
|
|
238
|
+
last_user: seeder.users.sample,
|
|
239
|
+
users: [seeder.first_user, *seeder.users.sample(1 + rand(3))]
|
|
240
|
+
)
|
|
241
|
+
end
|
|
240
242
|
end
|
|
241
243
|
end
|
|
242
244
|
|
|
@@ -274,8 +276,9 @@ module Thredded
|
|
|
274
276
|
def create(count: (1..1))
|
|
275
277
|
log "Creating #{count} additional posts in each private topic..."
|
|
276
278
|
seeder.private_topics.flat_map do |topic|
|
|
277
|
-
(count.min + rand(count.max + 1)).times do
|
|
278
|
-
|
|
279
|
+
(count.min + rand(count.max + 1)).times do |i|
|
|
280
|
+
author = i.zero? ? topic.user : topic.users.sample
|
|
281
|
+
FactoryGirl.create(:private_post, postable: topic, user: author)
|
|
279
282
|
end
|
|
280
283
|
end
|
|
281
284
|
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Thredded
|
|
3
|
+
module DbTools
|
|
4
|
+
class << self
|
|
5
|
+
MIGRATION_SPEC_SOURCE_VERSION = 'v0.8'
|
|
6
|
+
|
|
7
|
+
def dump_file
|
|
8
|
+
File.expand_path("../../../spec/migration/#{MIGRATION_SPEC_SOURCE_VERSION}.#{adapter}.dump", __FILE__)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def dump(to = dump_file)
|
|
12
|
+
case adapter
|
|
13
|
+
when /sqlite/i
|
|
14
|
+
system "sqlite3 #{Rails.root.join(database)} .dump > #{to}"
|
|
15
|
+
when /postgres/i
|
|
16
|
+
cmd = "pg_dump --host #{host} --username #{username} --verbose --clean --no-owner --no-acl --format=c " \
|
|
17
|
+
"#{database} > #{to}"
|
|
18
|
+
system cmd
|
|
19
|
+
when /mysql/i
|
|
20
|
+
system("mysqldump --user #{username} -p#{password} #{database} > #{to}")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def restore(from = dump_file)
|
|
25
|
+
case adapter
|
|
26
|
+
when /postgres/i
|
|
27
|
+
cmd = [
|
|
28
|
+
"pg_restore --verbose --host #{host}",
|
|
29
|
+
"--username #{username}",
|
|
30
|
+
' --clean --no-owner --no-acl ',
|
|
31
|
+
" --dbname #{database} #{from}",
|
|
32
|
+
" > #{Rails.root.join('log/restore.log')}"
|
|
33
|
+
].join(' ')
|
|
34
|
+
system cmd
|
|
35
|
+
when /mysql/i, /sqlite/i
|
|
36
|
+
connection = ActiveRecord::Base.connection
|
|
37
|
+
statements = File.read(from).split(/;$/)
|
|
38
|
+
statements.pop
|
|
39
|
+
silence_active_record do
|
|
40
|
+
ActiveRecord::Base.transaction do
|
|
41
|
+
statements.each do |statement|
|
|
42
|
+
connection.execute(statement) unless statement =~ /(BEGIN TRANSACTION|COMMIT)/
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def silence_active_record
|
|
50
|
+
was = ActiveRecord::Base.logger.level
|
|
51
|
+
ActiveRecord::Base.logger.level = Logger::WARN
|
|
52
|
+
yield
|
|
53
|
+
ensure
|
|
54
|
+
ActiveRecord::Base.logger.level = was
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def config
|
|
58
|
+
@config ||= Rails.configuration.database_configuration[Rails.env]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def adapter
|
|
62
|
+
config['adapter']
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def database
|
|
66
|
+
config['database']
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def username
|
|
70
|
+
config['username']
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def password
|
|
74
|
+
config['password']
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def host
|
|
78
|
+
config['host']
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Thredded
|
|
3
|
+
module HtmlPipeline
|
|
4
|
+
# Wraps iframes with a <div class="thredded--embed-16-by-9"/>
|
|
5
|
+
class WrapIframesFilter < ::HTML::Pipeline::Filter
|
|
6
|
+
def call
|
|
7
|
+
doc.css('iframe').wrap('<div class="thredded--embed-16-by-9"/>')
|
|
8
|
+
doc
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
data/lib/thredded/version.rb
CHANGED
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.
|
|
4
|
+
version: 0.9.1
|
|
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: 2016-11-
|
|
12
|
+
date: 2016-11-24 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: pundit
|
|
@@ -451,14 +451,14 @@ dependencies:
|
|
|
451
451
|
requirements:
|
|
452
452
|
- - '='
|
|
453
453
|
- !ruby/object:Gem::Version
|
|
454
|
-
version: 0.
|
|
454
|
+
version: 0.45.0
|
|
455
455
|
type: :development
|
|
456
456
|
prerelease: false
|
|
457
457
|
version_requirements: !ruby/object:Gem::Requirement
|
|
458
458
|
requirements:
|
|
459
459
|
- - '='
|
|
460
460
|
- !ruby/object:Gem::Version
|
|
461
|
-
version: 0.
|
|
461
|
+
version: 0.45.0
|
|
462
462
|
- !ruby/object:Gem::Dependency
|
|
463
463
|
name: rails-i18n
|
|
464
464
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -713,14 +713,19 @@ files:
|
|
|
713
713
|
- app/models/concerns/thredded/content_moderation_state.rb
|
|
714
714
|
- app/models/concerns/thredded/friendly_id_reserved_words_and_pagination.rb
|
|
715
715
|
- app/models/concerns/thredded/moderation_state.rb
|
|
716
|
+
- app/models/concerns/thredded/notifier_preference.rb
|
|
716
717
|
- app/models/concerns/thredded/post_common.rb
|
|
718
|
+
- app/models/concerns/thredded/search_parser.rb
|
|
717
719
|
- app/models/concerns/thredded/topic_common.rb
|
|
720
|
+
- app/models/concerns/thredded/topics_search.rb
|
|
718
721
|
- app/models/concerns/thredded/user_topic_read_state_common.rb
|
|
719
722
|
- app/models/thredded/category.rb
|
|
720
723
|
- app/models/thredded/messageboard.rb
|
|
721
724
|
- app/models/thredded/messageboard_group.rb
|
|
725
|
+
- app/models/thredded/messageboard_notifications_for_followed_topics.rb
|
|
722
726
|
- app/models/thredded/messageboard_user.rb
|
|
723
|
-
- app/models/thredded/
|
|
727
|
+
- app/models/thredded/notifications_for_followed_topics.rb
|
|
728
|
+
- app/models/thredded/notifications_for_private_topics.rb
|
|
724
729
|
- app/models/thredded/null_user.rb
|
|
725
730
|
- app/models/thredded/null_user_topic_read_state.rb
|
|
726
731
|
- app/models/thredded/post.rb
|
|
@@ -747,6 +752,8 @@ files:
|
|
|
747
752
|
- app/models/thredded/user_private_topic_read_state.rb
|
|
748
753
|
- app/models/thredded/user_topic_follow.rb
|
|
749
754
|
- app/models/thredded/user_topic_read_state.rb
|
|
755
|
+
- app/notifiers/thredded/base_notifier.rb
|
|
756
|
+
- app/notifiers/thredded/email_notifier.rb
|
|
750
757
|
- app/policies/thredded/messageboard_group_policy.rb
|
|
751
758
|
- app/policies/thredded/messageboard_policy.rb
|
|
752
759
|
- app/policies/thredded/post_policy.rb
|
|
@@ -821,8 +828,10 @@ files:
|
|
|
821
828
|
- app/views/thredded/private_topics/_no_private_topics.html.erb
|
|
822
829
|
- app/views/thredded/private_topics/_private_topic.html.erb
|
|
823
830
|
- app/views/thredded/private_topics/edit.html.erb
|
|
831
|
+
- app/views/thredded/private_topics/header/_participant.html.erb
|
|
824
832
|
- app/views/thredded/private_topics/index.html.erb
|
|
825
833
|
- app/views/thredded/private_topics/new.html.erb
|
|
834
|
+
- app/views/thredded/private_topics/private_topic/_participant.html.erb
|
|
826
835
|
- app/views/thredded/private_topics/show.html.erb
|
|
827
836
|
- app/views/thredded/search/_form.html.erb
|
|
828
837
|
- app/views/thredded/shared/_breadcrumbs.html.erb
|
|
@@ -865,6 +874,7 @@ files:
|
|
|
865
874
|
- db/upgrade_migrations/20160611094616_upgrade_v0_5_to_v0_6.rb
|
|
866
875
|
- db/upgrade_migrations/20160723012349_upgrade_v0_6_to_v0_7.rb
|
|
867
876
|
- db/upgrade_migrations/20161019150201_upgrade_v0_7_to_v0_8.rb
|
|
877
|
+
- db/upgrade_migrations/20161113161801_upgrade_v0_8_to_v0_9.rb
|
|
868
878
|
- lib/generators/thredded/install/USAGE
|
|
869
879
|
- lib/generators/thredded/install/install_generator.rb
|
|
870
880
|
- lib/generators/thredded/install/templates/initializer.rb
|
|
@@ -872,13 +882,13 @@ files:
|
|
|
872
882
|
- lib/thredded.rb
|
|
873
883
|
- lib/thredded/content_formatter.rb
|
|
874
884
|
- lib/thredded/database_seeder.rb
|
|
885
|
+
- lib/thredded/db_tools.rb
|
|
875
886
|
- lib/thredded/engine.rb
|
|
876
887
|
- lib/thredded/errors.rb
|
|
877
888
|
- lib/thredded/html_pipeline/at_mention_filter.rb
|
|
878
889
|
- lib/thredded/html_pipeline/autolink_filter.rb
|
|
879
890
|
- lib/thredded/html_pipeline/kramdown_filter.rb
|
|
880
|
-
- lib/thredded/
|
|
881
|
-
- lib/thredded/topics_search.rb
|
|
891
|
+
- lib/thredded/html_pipeline/wrap_iframes_filter.rb
|
|
882
892
|
- lib/thredded/version.rb
|
|
883
893
|
- lib/thredded/view_hooks/config.rb
|
|
884
894
|
- lib/thredded/view_hooks/renderer.rb
|
|
@@ -903,7 +913,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
903
913
|
version: '0'
|
|
904
914
|
requirements: []
|
|
905
915
|
rubyforge_project:
|
|
906
|
-
rubygems_version: 2.
|
|
916
|
+
rubygems_version: 2.5.2
|
|
907
917
|
signing_key:
|
|
908
918
|
specification_version: 4
|
|
909
919
|
summary: The best Rails forums engine ever.
|