thredded 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.mkdn +63 -0
- data/Procfile +1 -0
- data/README.mkdn +42 -20
- data/app/assets/images/thredded/private-messages.svg +4 -0
- data/app/assets/images/thredded/settings.svg +4 -0
- data/app/assets/javascripts/thredded.es6 +2 -10
- data/app/assets/javascripts/thredded/{currently_online.es6 → components/currently_online.es6} +0 -0
- data/app/assets/javascripts/thredded/{post_form.es6 → components/post_form.es6} +0 -0
- data/app/assets/javascripts/thredded/{time_stamps.es6 → components/time_stamps.es6} +0 -0
- data/app/assets/javascripts/thredded/{topic_form.es6 → components/topic_form.es6} +1 -1
- data/app/assets/javascripts/thredded/components/topics.es6 +37 -0
- data/app/assets/javascripts/thredded/components/user_preferences_form.es6 +45 -0
- data/app/assets/javascripts/thredded/components/users_select.es6 +56 -0
- data/app/assets/javascripts/thredded/dependencies.js +9 -0
- data/app/assets/javascripts/thredded/thredded.es6 +1 -0
- data/app/assets/stylesheets/thredded/_base.scss +3 -2
- data/app/assets/stylesheets/thredded/_thredded.scss +4 -1
- data/app/assets/stylesheets/thredded/base/_buttons.scss +2 -1
- data/app/assets/stylesheets/thredded/base/_forms.scss +23 -18
- data/app/assets/stylesheets/thredded/base/_grid.scss +1 -1
- data/app/assets/stylesheets/thredded/base/_nav.scss +21 -0
- data/app/assets/stylesheets/thredded/base/_tables.scss +5 -14
- data/app/assets/stylesheets/thredded/base/_typography.scss +9 -4
- data/app/assets/stylesheets/thredded/base/_variables.scss +28 -9
- data/app/assets/stylesheets/thredded/components/_alerts.scss +19 -0
- data/app/assets/stylesheets/thredded/components/_currently-online.scss +1 -1
- data/app/assets/stylesheets/thredded/components/_form-list.scss +2 -4
- data/app/assets/stylesheets/thredded/components/_icons.scss +3 -0
- data/app/assets/stylesheets/thredded/components/_messageboard.scss +4 -4
- data/app/assets/stylesheets/thredded/components/_pagination.scss +2 -2
- data/app/assets/stylesheets/thredded/components/_post-form.scss +3 -0
- data/app/assets/stylesheets/thredded/components/_post.scss +14 -4
- data/app/assets/stylesheets/thredded/components/_select2.scss +79 -9
- data/app/assets/stylesheets/thredded/components/_topic-header.scss +11 -1
- data/app/assets/stylesheets/thredded/components/_topics.scss +13 -11
- data/app/assets/stylesheets/thredded/layout/_main-container.scss +3 -3
- data/app/assets/stylesheets/thredded/layout/_main-navigation.scss +11 -17
- data/app/assets/stylesheets/thredded/layout/_navigation.scss +72 -0
- data/app/assets/stylesheets/thredded/layout/_search-navigation.scss +66 -0
- data/app/assets/stylesheets/thredded/layout/_user-navigation.scss +35 -61
- data/app/commands/thredded/at_notification_extractor.rb +1 -0
- data/app/commands/thredded/members_marked_notified.rb +1 -0
- data/app/commands/thredded/messageboard_destroyer.rb +7 -2
- data/app/commands/thredded/notify_mentioned_users.rb +8 -21
- data/app/commands/thredded/notify_private_topic_users.rb +3 -5
- data/app/controllers/thredded/application_controller.rb +76 -41
- data/app/controllers/thredded/autocomplete_users_controller.rb +46 -0
- data/app/controllers/thredded/messageboards_controller.rb +8 -5
- data/app/controllers/thredded/posts_controller.rb +20 -22
- data/app/controllers/thredded/preferences_controller.rb +19 -14
- data/app/controllers/thredded/private_topics_controller.rb +58 -23
- data/app/controllers/thredded/setups_controller.rb +1 -0
- data/app/controllers/thredded/theme_previews_controller.rb +24 -53
- data/app/controllers/thredded/topics_controller.rb +48 -77
- data/app/forms/thredded/private_topic_form.rb +1 -21
- data/app/forms/thredded/topic_form.rb +3 -7
- data/app/forms/thredded/user_preferences_form.rb +62 -0
- data/app/helpers/thredded/application_helper.rb +11 -12
- data/app/helpers/thredded/urls_helper.rb +103 -0
- data/app/jobs/thredded/activity_updater_job.rb +4 -3
- data/app/jobs/thredded/at_notifier_job.rb +1 -0
- data/app/jobs/thredded/notify_private_topic_users_job.rb +1 -0
- data/app/mailer_previews/thredded/base_mailer_preview.rb +101 -0
- data/app/mailer_previews/thredded/post_mailer_preview.rb +11 -0
- data/app/mailer_previews/thredded/private_post_mailer_preview.rb +11 -0
- data/app/mailer_previews/thredded/private_topic_mailer_preview.rb +15 -0
- data/app/mailers/thredded/base_mailer.rb +13 -0
- data/app/mailers/thredded/post_mailer.rb +4 -2
- data/app/mailers/thredded/private_post_mailer.rb +4 -2
- data/app/mailers/thredded/private_topic_mailer.rb +4 -2
- data/app/models/concerns/thredded/friendly_id_reserved_words_and_pagination.rb +16 -0
- data/app/models/concerns/thredded/post_common.rb +68 -63
- data/app/models/concerns/thredded/topic_common.rb +31 -8
- data/app/models/concerns/thredded/user_topic_read_state_common.rb +31 -0
- data/app/models/thredded/category.rb +1 -0
- data/app/models/thredded/messageboard.rb +24 -25
- data/app/models/thredded/messageboard_user.rb +1 -0
- data/app/models/thredded/null_preference.rb +1 -0
- data/app/models/thredded/null_user.rb +1 -6
- data/app/models/thredded/null_user_topic_read_state.rb +12 -0
- data/app/models/thredded/post.rb +6 -9
- data/app/models/thredded/post_notification.rb +1 -0
- data/app/models/thredded/private_post.rb +6 -2
- data/app/models/thredded/private_topic.rb +46 -32
- data/app/models/thredded/private_user.rb +3 -2
- data/app/models/thredded/stats.rb +1 -0
- data/app/models/thredded/topic.rb +40 -64
- data/app/models/thredded/topic_category.rb +1 -0
- data/app/models/thredded/user_detail.rb +2 -15
- data/app/models/thredded/user_extender.rb +29 -14
- data/app/models/thredded/user_messageboard_preference.rb +20 -0
- data/app/models/thredded/user_permissions/admin/if_admin_column_true.rb +1 -0
- data/app/models/thredded/user_permissions/admin/none.rb +1 -0
- data/app/models/thredded/user_permissions/message/readers_of_writeable_boards.rb +1 -0
- data/app/models/thredded/user_permissions/moderate/if_moderator_column_true.rb +1 -0
- data/app/models/thredded/user_permissions/moderate/none.rb +1 -0
- data/app/models/thredded/user_permissions/read/all.rb +1 -0
- data/app/models/thredded/user_permissions/write/all.rb +1 -0
- data/app/models/thredded/user_permissions/write/none.rb +1 -0
- data/app/models/thredded/user_preference.rb +7 -1
- data/app/models/thredded/user_private_topic_read_state.rb +12 -0
- data/app/models/thredded/user_topic_read_state.rb +12 -0
- data/app/policies/thredded/messageboard_policy.rb +27 -0
- data/app/policies/thredded/post_policy.rb +33 -0
- data/app/policies/thredded/private_post_policy.rb +29 -0
- data/app/policies/thredded/private_topic_policy.rb +23 -0
- data/app/policies/thredded/topic_policy.rb +32 -0
- data/app/view_models/thredded/base_topic_view.rb +56 -0
- data/app/view_models/thredded/post_view.rb +44 -0
- data/app/view_models/thredded/posts_page_view.rb +27 -0
- data/app/view_models/thredded/private_topic_view.rb +9 -0
- data/app/{decorators/thredded/topic_email_decorator.rb → view_models/thredded/topic_email_view.rb} +2 -1
- data/app/view_models/thredded/topic_view.rb +23 -0
- data/app/view_models/thredded/topics_page_view.rb +26 -0
- data/app/views/thredded/error_pages/forbidden.html.erb +6 -0
- data/app/views/thredded/error_pages/not_found.html.erb +6 -0
- data/app/views/thredded/messageboards/_messageboard.html.erb +13 -6
- data/app/views/thredded/messageboards/index.html.erb +2 -8
- data/app/views/thredded/messageboards/new.html.erb +8 -2
- data/app/views/thredded/post_mailer/at_notification.html.erb +3 -3
- data/app/views/thredded/post_mailer/at_notification.text.erb +1 -1
- data/app/views/thredded/posts/_content_field.html.erb +1 -1
- data/app/views/thredded/posts/_form.html.erb +5 -1
- data/app/views/thredded/posts/_post.html.erb +3 -1
- data/app/views/thredded/posts/edit.html.erb +7 -3
- data/app/views/thredded/posts_common/_form.html.erb +1 -1
- data/app/views/thredded/posts_common/_post.html.erb +14 -8
- data/app/views/thredded/preferences/_form.html.erb +37 -15
- data/app/views/thredded/preferences/_header.html.erb +1 -1
- data/app/views/thredded/preferences/edit.html.erb +4 -6
- data/app/views/thredded/private_post_mailer/at_notification.html.erb +6 -4
- data/app/views/thredded/private_posts/_form.html.erb +5 -1
- data/app/views/thredded/private_posts/_private_post.html.erb +3 -1
- data/app/views/thredded/private_topic_mailer/message_notification.html.erb +3 -7
- data/app/views/thredded/private_topic_mailer/message_notification.text.erb +1 -3
- data/app/views/thredded/private_topics/_breadcrumbs.html.erb +2 -2
- data/app/views/thredded/private_topics/_form.html.erb +15 -10
- data/app/views/thredded/private_topics/_header.html.erb +12 -0
- data/app/views/thredded/private_topics/_no_private_topics.html.erb +2 -2
- data/app/views/thredded/private_topics/_private_topic.html.erb +4 -6
- data/app/views/thredded/private_topics/edit.html.erb +32 -0
- data/app/views/thredded/private_topics/index.html.erb +5 -5
- data/app/views/thredded/private_topics/new.html.erb +1 -2
- data/app/views/thredded/private_topics/show.html.erb +12 -7
- data/app/views/thredded/search/_form.html.erb +9 -6
- data/app/views/thredded/shared/{_messageboard_topics_breadcrumbs.html.erb → _breadcrumbs.html.erb} +2 -2
- data/app/views/thredded/shared/_header.html.erb +2 -3
- data/app/views/thredded/shared/_nav.html.erb +20 -0
- data/app/views/thredded/shared/nav/_notification_preferences.html.erb +6 -0
- data/app/views/thredded/shared/nav/_private_topics.html.erb +11 -0
- data/app/views/thredded/shared/nav/_standalone.html.erb +12 -0
- data/app/views/thredded/theme_previews/_section_title.html.erb +2 -2
- data/app/views/thredded/theme_previews/show.html.erb +13 -17
- data/app/views/thredded/topics/_form.html.erb +8 -6
- data/app/views/thredded/topics/_header.html.erb +12 -0
- data/app/views/thredded/topics/_topic.html.erb +4 -8
- data/app/views/thredded/topics/_topic_form_admin_options.html.erb +1 -1
- data/app/views/thredded/topics/edit.html.erb +22 -18
- data/app/views/thredded/topics/index.html.erb +3 -3
- data/app/views/thredded/topics/new.html.erb +1 -1
- data/app/views/thredded/topics/search.html.erb +17 -5
- data/app/views/thredded/topics/show.html.erb +14 -11
- data/bin/rails +5 -0
- data/config.ru +3 -0
- data/config/i18n-tasks.yml +16 -0
- data/config/locales/en.yml +90 -0
- data/config/routes.rb +29 -15
- data/db/migrate/20160329231848_create_thredded.rb +29 -33
- data/db/seeds.rb +115 -0
- data/db/upgrade_migrations/20160410111522_upgrade_v0_2_to_v0_3.rb +59 -0
- data/heroku.gemfile +26 -0
- data/heroku.gemfile.lock +282 -0
- data/lib/generators/thredded/install/install_generator.rb +1 -0
- data/lib/generators/thredded/install/templates/initializer.rb +17 -0
- data/lib/html/pipeline/at_mention_filter.rb +2 -1
- data/lib/html/pipeline/bbcode_filter.rb +13 -4
- data/lib/tasks/thredded_tasks.rake +1 -0
- data/lib/thredded.rb +19 -17
- data/lib/thredded/at_users.rb +1 -0
- data/lib/thredded/engine.rb +14 -5
- data/lib/thredded/errors.rb +11 -11
- data/lib/thredded/main_app_route_delegator.rb +1 -0
- data/lib/thredded/search_parser.rb +2 -1
- data/lib/thredded/topics_search.rb +67 -0
- data/lib/thredded/version.rb +2 -1
- data/thredded.gemspec +12 -8
- metadata +146 -82
- data/app/assets/javascripts/thredded/users_select.es6 +0 -5
- data/app/assets/stylesheets/thredded/layout/_topic-navigation.scss +0 -53
- data/app/commands/thredded/user_reads_private_topic.rb +0 -22
- data/app/commands/thredded/user_resets_private_topic_to_unread.rb +0 -23
- data/app/decorators/thredded/base_topic_decorator.rb +0 -14
- data/app/decorators/thredded/base_user_topic_decorator.rb +0 -63
- data/app/decorators/thredded/messageboard_decorator.rb +0 -41
- data/app/decorators/thredded/post_decorator.rb +0 -40
- data/app/decorators/thredded/private_topic_decorator.rb +0 -23
- data/app/decorators/thredded/topic_decorator.rb +0 -25
- data/app/decorators/thredded/user_private_topic_decorator.rb +0 -13
- data/app/decorators/thredded/user_topic_decorator.rb +0 -37
- data/app/models/thredded/ability.rb +0 -60
- data/app/models/thredded/notification_preference.rb +0 -17
- data/app/models/thredded/null_topic.rb +0 -15
- data/app/models/thredded/null_topic_read.rb +0 -19
- data/app/models/thredded/user_topic_read.rb +0 -10
- data/app/views/thredded/shared/_notification_preferences.html.erb +0 -7
- data/app/views/thredded/shared/_top_nav.html.erb +0 -36
- data/app/views/thredded/shared/_topic_nav.html.erb +0 -22
- data/app/views/thredded/topics/_recent_topics_by_user.html.erb +0 -8
- data/app/views/thredded/topics/by_category.html.erb +0 -56
- data/app/views/thredded/topics_common/_header.html.erb +0 -6
- data/lib/thredded/messageboard_user_permissions.rb +0 -22
- data/lib/thredded/post_sql_builder.rb +0 -12
- data/lib/thredded/post_user_permissions.rb +0 -32
- data/lib/thredded/private_topic_user_permissions.rb +0 -26
- data/lib/thredded/search_sql_builder.rb +0 -21
- data/lib/thredded/seed_database.rb +0 -76
- data/lib/thredded/table_sql_builder.rb +0 -41
- data/lib/thredded/topic_sql_builder.rb +0 -11
- data/lib/thredded/topic_user_permissions.rb +0 -32
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Thredded configuration
|
2
3
|
|
3
4
|
# ==> User Configuration
|
@@ -18,6 +19,9 @@ Thredded.user_path = lambda do |user|
|
|
18
19
|
main_app.respond_to?(user_path) ? main_app.send(user_path, user) : "/users/#{user.to_param}"
|
19
20
|
end
|
20
21
|
|
22
|
+
# This method is used by Thredded controllers and views to fetch the currently signed-in user
|
23
|
+
Thredded.current_user_method = :"current_#{Thredded.user_class.name.underscore}"
|
24
|
+
|
21
25
|
# User avatar URL. rb-gravatar gem is used by default:
|
22
26
|
Thredded.avatar_url = ->(user) { Gravatar.src(user.email, 128, 'mm') }
|
23
27
|
|
@@ -49,3 +53,16 @@ Thredded.admin_column = :admin
|
|
49
53
|
# ==> View Configuration
|
50
54
|
# Set the layout for rendering the thredded views.
|
51
55
|
Thredded.layout = 'thredded/application'
|
56
|
+
|
57
|
+
# ==> Error Handling
|
58
|
+
# By default Thredded just renders a flash alert on errors such as Topic not found, or Login required.
|
59
|
+
# Below is an example of overriding the default behavior on LoginRequired:
|
60
|
+
#
|
61
|
+
# Rails.application.config.to_prepare do
|
62
|
+
# Thredded::ApplicationController.module_eval do
|
63
|
+
# rescue_from Thredded::Errors::LoginRequired do |exception|
|
64
|
+
# @message = exception.message
|
65
|
+
# render template: 'sessions/new', status: :forbidden
|
66
|
+
# end
|
67
|
+
# end
|
68
|
+
# end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'thredded/at_users'
|
2
3
|
|
3
4
|
module HTML
|
@@ -5,7 +6,7 @@ module HTML
|
|
5
6
|
class AtMentionFilter < Filter
|
6
7
|
def initialize(text, context = nil, result = nil)
|
7
8
|
super text, context, result
|
8
|
-
@text = text.to_s.
|
9
|
+
@text = text.to_s.delete("\r")
|
9
10
|
@post = context[:post]
|
10
11
|
@view_context = context[:view_context]
|
11
12
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'bbcoder'
|
2
3
|
|
3
4
|
module HTML
|
@@ -5,14 +6,22 @@ module HTML
|
|
5
6
|
class BbcodeFilter < TextFilter
|
6
7
|
def initialize(text, context = {}, result = nil)
|
7
8
|
super text, context, result
|
8
|
-
@context = context
|
9
|
-
@text = @text.gsub "\r", ''
|
10
9
|
end
|
11
10
|
|
12
11
|
def call
|
13
|
-
html = BBCoder.new(@text).to_html
|
12
|
+
html = BBCoder.new(@text).to_html
|
13
|
+
html = remove_url_link_contents(html)
|
14
|
+
html.delete('<br>')
|
14
15
|
html.rstrip!
|
15
|
-
|
16
|
+
html
|
17
|
+
end
|
18
|
+
|
19
|
+
def remove_url_link_contents(html)
|
20
|
+
doc = Nokogiri::HTML::DocumentFragment.parse(html)
|
21
|
+
doc.css('a').each do |link|
|
22
|
+
link.content = link.content.gsub(%r{https?://}, '')
|
23
|
+
end
|
24
|
+
doc.to_html
|
16
25
|
end
|
17
26
|
end
|
18
27
|
end
|
data/lib/thredded.rb
CHANGED
@@ -1,13 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Backend
|
2
|
-
require '
|
3
|
+
require 'pundit'
|
4
|
+
require 'active_record_union'
|
3
5
|
require 'db_text_search'
|
4
6
|
require 'friendly_id'
|
5
7
|
require 'html/pipeline'
|
6
8
|
require 'html/pipeline/at_mention_filter'
|
7
9
|
require 'html/pipeline/bbcode_filter'
|
10
|
+
require 'html/pipeline/vimeo/vimeo_filter'
|
11
|
+
require 'html/pipeline/youtube/youtube_filter'
|
8
12
|
require 'kaminari'
|
9
13
|
require 'rb-gravatar'
|
10
14
|
require 'active_job'
|
15
|
+
require 'inline_svg'
|
11
16
|
|
12
17
|
# Asset compilation
|
13
18
|
require 'autoprefixer-rails'
|
@@ -18,25 +23,22 @@ require 'select2-rails'
|
|
18
23
|
require 'sprockets/es6'
|
19
24
|
|
20
25
|
require 'thredded/engine'
|
21
|
-
require 'thredded/errors'
|
22
|
-
require 'thredded/messageboard_user_permissions'
|
23
|
-
require 'thredded/post_user_permissions'
|
24
|
-
require 'thredded/private_topic_user_permissions'
|
25
|
-
require 'thredded/topic_user_permissions'
|
26
|
-
require 'thredded/search_sql_builder'
|
27
|
-
require 'thredded/main_app_route_delegator'
|
28
26
|
|
29
27
|
module Thredded
|
30
|
-
mattr_accessor
|
31
|
-
:
|
28
|
+
mattr_accessor \
|
29
|
+
:active_user_threshold,
|
32
30
|
:avatar_url,
|
33
|
-
:email_incoming_host,
|
34
31
|
:email_from,
|
32
|
+
:email_incoming_host,
|
35
33
|
:email_outgoing_prefix,
|
36
34
|
:email_reply_to,
|
37
|
-
:user_path,
|
38
35
|
:layout,
|
39
|
-
:
|
36
|
+
:user_class,
|
37
|
+
:user_name_column,
|
38
|
+
:user_path
|
39
|
+
|
40
|
+
# @return [Symbol] The name of the method used by Thredded controllers and views to fetch the currently signed-in user
|
41
|
+
mattr_accessor :current_user_method
|
40
42
|
|
41
43
|
# @return [Symbol] The name of the moderator flag column on the users table for the default permissions model
|
42
44
|
mattr_accessor :moderator_column
|
@@ -44,13 +46,13 @@ module Thredded
|
|
44
46
|
# @return [Symbol] The name of the admin flag column on the users table for the default permissions model
|
45
47
|
mattr_accessor :admin_column
|
46
48
|
|
47
|
-
self.user_name_column = :name
|
48
|
-
self.avatar_url = ->(user) { Gravatar.src(user.email, 128, 'mm') }
|
49
49
|
self.active_user_threshold = 5.minutes
|
50
|
-
self.
|
50
|
+
self.admin_column = :admin
|
51
|
+
self.avatar_url = ->(user) { Gravatar.src(user.email, 128, 'mm') }
|
51
52
|
self.email_reply_to = -> postable { "#{postable.hash_id}@#{Thredded.email_incoming_host}" }
|
53
|
+
self.layout = 'thredded/application'
|
52
54
|
self.moderator_column = :admin
|
53
|
-
self.
|
55
|
+
self.user_name_column = :name
|
54
56
|
|
55
57
|
# @return [Class<Thredded::UserExtender>] the user class from the host application.
|
56
58
|
def self.user_class
|
data/lib/thredded/at_users.rb
CHANGED
data/lib/thredded/engine.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_dependency 'thredded/main_app_route_delegator'
|
1
3
|
module Thredded
|
2
4
|
class Engine < ::Rails::Engine
|
3
5
|
isolate_namespace Thredded
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
config.autoload_paths << File.expand_path('../../../app/jobs', __FILE__)
|
7
|
+
%w(app/view_models app/forms app/commands app/jobs lib).each do |path|
|
8
|
+
config.autoload_paths << File.expand_path("../../#{path}", File.dirname(__FILE__))
|
9
|
+
end
|
9
10
|
|
10
11
|
config.generators do |g|
|
11
12
|
g.test_framework :rspec, fixture: true
|
@@ -28,8 +29,16 @@ module Thredded
|
|
28
29
|
Thredded::Engine.config.assets.precompile += %w(
|
29
30
|
thredded.js
|
30
31
|
thredded.css
|
31
|
-
thredded
|
32
|
+
thredded/*.svg
|
32
33
|
)
|
33
34
|
end
|
35
|
+
|
36
|
+
initializer 'thredded.setup_bbcoder' do
|
37
|
+
BBCoder.configure do
|
38
|
+
tag :img, match: %r{^https?://.*(png|bmp|jpe?g|gif)$}, singular: false do
|
39
|
+
%(<img src="#{singular? ? meta : content}" />)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
34
43
|
end
|
35
44
|
end
|
data/lib/thredded/errors.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Thredded
|
2
3
|
class Error < StandardError
|
3
4
|
end
|
@@ -5,7 +6,13 @@ module Thredded
|
|
5
6
|
module Errors
|
6
7
|
class DatabaseEmpty < Thredded::Error
|
7
8
|
def message
|
8
|
-
'Seed the database with "rake
|
9
|
+
'Seed the database with "rake db:seed".'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class LoginRequired < Thredded::Error
|
14
|
+
def message
|
15
|
+
I18n.t('thredded.errors.login_required')
|
9
16
|
end
|
10
17
|
end
|
11
18
|
|
@@ -17,7 +24,7 @@ module Thredded
|
|
17
24
|
|
18
25
|
class PrivateTopicNotFound < Thredded::Error
|
19
26
|
def message
|
20
|
-
'
|
27
|
+
I18n.t('thredded.errors.private_topic_not_found')
|
21
28
|
end
|
22
29
|
end
|
23
30
|
|
@@ -51,16 +58,9 @@ module Thredded
|
|
51
58
|
end
|
52
59
|
end
|
53
60
|
|
54
|
-
class PrivateTopicCreateDenied <
|
55
|
-
end
|
56
|
-
|
57
|
-
class EmptySearchResults < Thredded::Error
|
58
|
-
def initialize(query)
|
59
|
-
@query = query
|
60
|
-
end
|
61
|
-
|
61
|
+
class PrivateTopicCreateDenied < Thredded::Error
|
62
62
|
def message
|
63
|
-
|
63
|
+
I18n.t('thredded.errors.private_topic_create_denied')
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Thredded
|
2
3
|
class SearchParser
|
3
4
|
def initialize(query)
|
@@ -21,7 +22,7 @@ module Thredded
|
|
21
22
|
|
22
23
|
if keyword_scan.present?
|
23
24
|
keyword_scan.each do |term|
|
24
|
-
keyword_term = term.
|
25
|
+
keyword_term = term.delete(' ').split(':')
|
25
26
|
|
26
27
|
if found_terms_hash[keyword].nil?
|
27
28
|
found_terms_hash[keyword] = []
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_dependency 'thredded/search_parser'
|
3
|
+
module Thredded
|
4
|
+
class TopicsSearch
|
5
|
+
def initialize(query, scope)
|
6
|
+
@terms = SearchParser.new(query).parse
|
7
|
+
@scope = scope
|
8
|
+
|
9
|
+
@search_categories = @search_users = @search_text = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [ActiveRecord::Relation<Thredded::Topic>]
|
13
|
+
def search
|
14
|
+
if categories.present?
|
15
|
+
@scope = @scope.joins(:topic_categories).merge(TopicCategory.where(category_id: categories))
|
16
|
+
end
|
17
|
+
if text.present? || users.present?
|
18
|
+
[search_topics, search_posts].compact.reduce(:union)
|
19
|
+
else
|
20
|
+
@scope
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
|
26
|
+
def search_topics
|
27
|
+
scope = @scope
|
28
|
+
scope = @scope.where(user_id: users) if users.present?
|
29
|
+
scope = DbTextSearch::FullText.new(scope, :title).search(text) if text.present?
|
30
|
+
scope
|
31
|
+
end
|
32
|
+
|
33
|
+
def search_posts
|
34
|
+
posts_scope = Thredded::Post
|
35
|
+
posts_scope = posts_scope.where(user_id: users) if users.present?
|
36
|
+
posts_scope = DbTextSearch::FullText.new(posts_scope, :content).search(text) if text.present?
|
37
|
+
@scope.joins(:posts).merge(posts_scope)
|
38
|
+
end
|
39
|
+
|
40
|
+
def categories
|
41
|
+
@search_categories ||=
|
42
|
+
if @terms['in'].present?
|
43
|
+
DbTextSearch::CaseInsensitive
|
44
|
+
.new(Category, :name)
|
45
|
+
.in(@terms['in']).pluck(:id)
|
46
|
+
else
|
47
|
+
[]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def users
|
52
|
+
@search_users ||=
|
53
|
+
if @terms['by']
|
54
|
+
DbTextSearch::CaseInsensitive
|
55
|
+
.new(Thredded.user_class, Thredded.user_name_column)
|
56
|
+
.in(@terms['by']).pluck(:id)
|
57
|
+
else
|
58
|
+
[]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [Array<String>]
|
63
|
+
def text
|
64
|
+
@terms['text']
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/thredded/version.rb
CHANGED
data/thredded.gemspec
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
2
3
|
|
3
4
|
require 'thredded/version'
|
@@ -18,15 +19,19 @@ Gem::Specification.new do |s|
|
|
18
19
|
|
19
20
|
# backend
|
20
21
|
s.add_dependency 'bbcoder', '~> 1.0'
|
21
|
-
s.add_dependency '
|
22
|
-
s.add_dependency '
|
22
|
+
s.add_dependency 'pundit', '>= 1.1.0'
|
23
|
+
s.add_dependency 'active_record_union', '>= 1.1.1'
|
24
|
+
s.add_dependency 'db_text_search', '~> 0.2.0'
|
23
25
|
s.add_dependency 'friendly_id'
|
24
26
|
s.add_dependency 'html-pipeline'
|
27
|
+
s.add_dependency 'html-pipeline-vimeo'
|
28
|
+
s.add_dependency 'html-pipeline-youtube'
|
25
29
|
s.add_dependency 'htmlentities'
|
26
30
|
s.add_dependency 'kaminari'
|
27
31
|
s.add_dependency 'nokogiri'
|
28
|
-
s.add_dependency 'rails', '>= 4.
|
32
|
+
s.add_dependency 'rails', '>= 4.2.0'
|
29
33
|
s.add_dependency 'rb-gravatar'
|
34
|
+
s.add_dependency 'inline_svg'
|
30
35
|
|
31
36
|
# html-pipeline dependencies, see https://github.com/jch/html-pipeline#dependencies
|
32
37
|
s.add_dependency 'gemoji'
|
@@ -45,22 +50,21 @@ Gem::Specification.new do |s|
|
|
45
50
|
|
46
51
|
# test dependencies
|
47
52
|
s.add_development_dependency 'capybara', '~> 2.4'
|
48
|
-
s.add_development_dependency 'chronic'
|
49
53
|
s.add_development_dependency 'database_cleaner'
|
50
54
|
s.add_development_dependency 'factory_girl_rails'
|
51
|
-
s.add_development_dependency 'faker'
|
55
|
+
s.add_development_dependency 'faker', '>= 1.6.2'
|
52
56
|
s.add_development_dependency 'launchy'
|
53
57
|
s.add_development_dependency 'rspec-rails'
|
54
|
-
s.add_development_dependency 'rubocop', '0.
|
55
|
-
s.add_development_dependency 'shoulda-matchers', '~> 2.7'
|
58
|
+
s.add_development_dependency 'rubocop', '~> 0.39'
|
56
59
|
s.add_development_dependency 'test-unit'
|
57
|
-
s.add_development_dependency 'timecop'
|
58
60
|
|
59
61
|
# dummy app dependencies
|
60
62
|
s.add_development_dependency 'mysql2'
|
61
63
|
s.add_development_dependency 'pg'
|
62
64
|
s.add_development_dependency 'sqlite3'
|
63
65
|
s.add_development_dependency 'puma'
|
66
|
+
s.add_development_dependency 'rails_email_preview', '>= 1.0.3'
|
67
|
+
s.add_development_dependency 'i18n-tasks'
|
64
68
|
|
65
69
|
# dummy app frontend
|
66
70
|
s.add_development_dependency 'jquery-turbolinks'
|
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.3.0
|
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-04-
|
12
|
+
date: 2016-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bbcoder
|
@@ -26,33 +26,47 @@ dependencies:
|
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '1.0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: pundit
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 1.1.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 1.1.0
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: active_record_union
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.1.1
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.1.1
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: db_text_search
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
45
59
|
requirements:
|
46
60
|
- - "~>"
|
47
61
|
- !ruby/object:Gem::Version
|
48
|
-
version: 0.
|
62
|
+
version: 0.2.0
|
49
63
|
type: :runtime
|
50
64
|
prerelease: false
|
51
65
|
version_requirements: !ruby/object:Gem::Requirement
|
52
66
|
requirements:
|
53
67
|
- - "~>"
|
54
68
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.
|
69
|
+
version: 0.2.0
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: friendly_id
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,6 +95,34 @@ dependencies:
|
|
81
95
|
- - ">="
|
82
96
|
- !ruby/object:Gem::Version
|
83
97
|
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: html-pipeline-vimeo
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: html-pipeline-youtube
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
84
126
|
- !ruby/object:Gem::Dependency
|
85
127
|
name: htmlentities
|
86
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,14 +171,14 @@ dependencies:
|
|
129
171
|
requirements:
|
130
172
|
- - ">="
|
131
173
|
- !ruby/object:Gem::Version
|
132
|
-
version: 4.
|
174
|
+
version: 4.2.0
|
133
175
|
type: :runtime
|
134
176
|
prerelease: false
|
135
177
|
version_requirements: !ruby/object:Gem::Requirement
|
136
178
|
requirements:
|
137
179
|
- - ">="
|
138
180
|
- !ruby/object:Gem::Version
|
139
|
-
version: 4.
|
181
|
+
version: 4.2.0
|
140
182
|
- !ruby/object:Gem::Dependency
|
141
183
|
name: rb-gravatar
|
142
184
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,6 +193,20 @@ dependencies:
|
|
151
193
|
- - ">="
|
152
194
|
- !ruby/object:Gem::Version
|
153
195
|
version: '0'
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: inline_svg
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - ">="
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
type: :runtime
|
204
|
+
prerelease: false
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - ">="
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '0'
|
154
210
|
- !ruby/object:Gem::Dependency
|
155
211
|
name: gemoji
|
156
212
|
requirement: !ruby/object:Gem::Requirement
|
@@ -319,20 +375,6 @@ dependencies:
|
|
319
375
|
- - "~>"
|
320
376
|
- !ruby/object:Gem::Version
|
321
377
|
version: '2.4'
|
322
|
-
- !ruby/object:Gem::Dependency
|
323
|
-
name: chronic
|
324
|
-
requirement: !ruby/object:Gem::Requirement
|
325
|
-
requirements:
|
326
|
-
- - ">="
|
327
|
-
- !ruby/object:Gem::Version
|
328
|
-
version: '0'
|
329
|
-
type: :development
|
330
|
-
prerelease: false
|
331
|
-
version_requirements: !ruby/object:Gem::Requirement
|
332
|
-
requirements:
|
333
|
-
- - ">="
|
334
|
-
- !ruby/object:Gem::Version
|
335
|
-
version: '0'
|
336
378
|
- !ruby/object:Gem::Dependency
|
337
379
|
name: database_cleaner
|
338
380
|
requirement: !ruby/object:Gem::Requirement
|
@@ -367,14 +409,14 @@ dependencies:
|
|
367
409
|
requirements:
|
368
410
|
- - ">="
|
369
411
|
- !ruby/object:Gem::Version
|
370
|
-
version:
|
412
|
+
version: 1.6.2
|
371
413
|
type: :development
|
372
414
|
prerelease: false
|
373
415
|
version_requirements: !ruby/object:Gem::Requirement
|
374
416
|
requirements:
|
375
417
|
- - ">="
|
376
418
|
- !ruby/object:Gem::Version
|
377
|
-
version:
|
419
|
+
version: 1.6.2
|
378
420
|
- !ruby/object:Gem::Dependency
|
379
421
|
name: launchy
|
380
422
|
requirement: !ruby/object:Gem::Requirement
|
@@ -407,32 +449,32 @@ dependencies:
|
|
407
449
|
name: rubocop
|
408
450
|
requirement: !ruby/object:Gem::Requirement
|
409
451
|
requirements:
|
410
|
-
- -
|
452
|
+
- - "~>"
|
411
453
|
- !ruby/object:Gem::Version
|
412
|
-
version: 0.
|
454
|
+
version: '0.39'
|
413
455
|
type: :development
|
414
456
|
prerelease: false
|
415
457
|
version_requirements: !ruby/object:Gem::Requirement
|
416
458
|
requirements:
|
417
|
-
- -
|
459
|
+
- - "~>"
|
418
460
|
- !ruby/object:Gem::Version
|
419
|
-
version: 0.
|
461
|
+
version: '0.39'
|
420
462
|
- !ruby/object:Gem::Dependency
|
421
|
-
name:
|
463
|
+
name: test-unit
|
422
464
|
requirement: !ruby/object:Gem::Requirement
|
423
465
|
requirements:
|
424
|
-
- - "
|
466
|
+
- - ">="
|
425
467
|
- !ruby/object:Gem::Version
|
426
|
-
version: '
|
468
|
+
version: '0'
|
427
469
|
type: :development
|
428
470
|
prerelease: false
|
429
471
|
version_requirements: !ruby/object:Gem::Requirement
|
430
472
|
requirements:
|
431
|
-
- - "
|
473
|
+
- - ">="
|
432
474
|
- !ruby/object:Gem::Version
|
433
|
-
version: '
|
475
|
+
version: '0'
|
434
476
|
- !ruby/object:Gem::Dependency
|
435
|
-
name:
|
477
|
+
name: mysql2
|
436
478
|
requirement: !ruby/object:Gem::Requirement
|
437
479
|
requirements:
|
438
480
|
- - ">="
|
@@ -446,7 +488,7 @@ dependencies:
|
|
446
488
|
- !ruby/object:Gem::Version
|
447
489
|
version: '0'
|
448
490
|
- !ruby/object:Gem::Dependency
|
449
|
-
name:
|
491
|
+
name: pg
|
450
492
|
requirement: !ruby/object:Gem::Requirement
|
451
493
|
requirements:
|
452
494
|
- - ">="
|
@@ -460,7 +502,7 @@ dependencies:
|
|
460
502
|
- !ruby/object:Gem::Version
|
461
503
|
version: '0'
|
462
504
|
- !ruby/object:Gem::Dependency
|
463
|
-
name:
|
505
|
+
name: sqlite3
|
464
506
|
requirement: !ruby/object:Gem::Requirement
|
465
507
|
requirements:
|
466
508
|
- - ">="
|
@@ -474,7 +516,7 @@ dependencies:
|
|
474
516
|
- !ruby/object:Gem::Version
|
475
517
|
version: '0'
|
476
518
|
- !ruby/object:Gem::Dependency
|
477
|
-
name:
|
519
|
+
name: puma
|
478
520
|
requirement: !ruby/object:Gem::Requirement
|
479
521
|
requirements:
|
480
522
|
- - ">="
|
@@ -488,21 +530,21 @@ dependencies:
|
|
488
530
|
- !ruby/object:Gem::Version
|
489
531
|
version: '0'
|
490
532
|
- !ruby/object:Gem::Dependency
|
491
|
-
name:
|
533
|
+
name: rails_email_preview
|
492
534
|
requirement: !ruby/object:Gem::Requirement
|
493
535
|
requirements:
|
494
536
|
- - ">="
|
495
537
|
- !ruby/object:Gem::Version
|
496
|
-
version:
|
538
|
+
version: 1.0.3
|
497
539
|
type: :development
|
498
540
|
prerelease: false
|
499
541
|
version_requirements: !ruby/object:Gem::Requirement
|
500
542
|
requirements:
|
501
543
|
- - ">="
|
502
544
|
- !ruby/object:Gem::Version
|
503
|
-
version:
|
545
|
+
version: 1.0.3
|
504
546
|
- !ruby/object:Gem::Dependency
|
505
|
-
name:
|
547
|
+
name: i18n-tasks
|
506
548
|
requirement: !ruby/object:Gem::Requirement
|
507
549
|
requirements:
|
508
550
|
- - ">="
|
@@ -553,14 +595,21 @@ extra_rdoc_files: []
|
|
553
595
|
files:
|
554
596
|
- CHANGELOG.mkdn
|
555
597
|
- MIT-LICENSE
|
598
|
+
- Procfile
|
556
599
|
- README.mkdn
|
557
600
|
- app/assets/images/thredded/breadcrumb-chevron.svg
|
601
|
+
- app/assets/images/thredded/private-messages.svg
|
602
|
+
- app/assets/images/thredded/settings.svg
|
558
603
|
- app/assets/javascripts/thredded.es6
|
559
|
-
- app/assets/javascripts/thredded/currently_online.es6
|
560
|
-
- app/assets/javascripts/thredded/post_form.es6
|
561
|
-
- app/assets/javascripts/thredded/time_stamps.es6
|
562
|
-
- app/assets/javascripts/thredded/topic_form.es6
|
563
|
-
- app/assets/javascripts/thredded/
|
604
|
+
- app/assets/javascripts/thredded/components/currently_online.es6
|
605
|
+
- app/assets/javascripts/thredded/components/post_form.es6
|
606
|
+
- app/assets/javascripts/thredded/components/time_stamps.es6
|
607
|
+
- app/assets/javascripts/thredded/components/topic_form.es6
|
608
|
+
- app/assets/javascripts/thredded/components/topics.es6
|
609
|
+
- app/assets/javascripts/thredded/components/user_preferences_form.es6
|
610
|
+
- app/assets/javascripts/thredded/components/users_select.es6
|
611
|
+
- app/assets/javascripts/thredded/dependencies.js
|
612
|
+
- app/assets/javascripts/thredded/thredded.es6
|
564
613
|
- app/assets/stylesheets/thredded.scss
|
565
614
|
- app/assets/stylesheets/thredded/_base.scss
|
566
615
|
- app/assets/stylesheets/thredded/_dependencies.scss
|
@@ -570,14 +619,17 @@ files:
|
|
570
619
|
- app/assets/stylesheets/thredded/base/_forms.scss
|
571
620
|
- app/assets/stylesheets/thredded/base/_grid.scss
|
572
621
|
- app/assets/stylesheets/thredded/base/_lists.scss
|
622
|
+
- app/assets/stylesheets/thredded/base/_nav.scss
|
573
623
|
- app/assets/stylesheets/thredded/base/_tables.scss
|
574
624
|
- app/assets/stylesheets/thredded/base/_typography.scss
|
575
625
|
- app/assets/stylesheets/thredded/base/_variables.scss
|
626
|
+
- app/assets/stylesheets/thredded/components/_alerts.scss
|
576
627
|
- app/assets/stylesheets/thredded/components/_base.scss
|
577
628
|
- app/assets/stylesheets/thredded/components/_currently-online.scss
|
578
629
|
- app/assets/stylesheets/thredded/components/_empty.scss
|
579
630
|
- app/assets/stylesheets/thredded/components/_flash-message.scss
|
580
631
|
- app/assets/stylesheets/thredded/components/_form-list.scss
|
632
|
+
- app/assets/stylesheets/thredded/components/_icons.scss
|
581
633
|
- app/assets/stylesheets/thredded/components/_main-section.scss
|
582
634
|
- app/assets/stylesheets/thredded/components/_messageboard.scss
|
583
635
|
- app/assets/stylesheets/thredded/components/_pagination.scss
|
@@ -590,7 +642,8 @@ files:
|
|
590
642
|
- app/assets/stylesheets/thredded/components/_topics.scss
|
591
643
|
- app/assets/stylesheets/thredded/layout/_main-container.scss
|
592
644
|
- app/assets/stylesheets/thredded/layout/_main-navigation.scss
|
593
|
-
- app/assets/stylesheets/thredded/layout/
|
645
|
+
- app/assets/stylesheets/thredded/layout/_navigation.scss
|
646
|
+
- app/assets/stylesheets/thredded/layout/_search-navigation.scss
|
594
647
|
- app/assets/stylesheets/thredded/layout/_user-navigation.scss
|
595
648
|
- app/assets/stylesheets/thredded/utilities/_is-compact.scss
|
596
649
|
- app/assets/stylesheets/thredded/utilities/_is-expanded.scss
|
@@ -599,9 +652,8 @@ files:
|
|
599
652
|
- app/commands/thredded/messageboard_destroyer.rb
|
600
653
|
- app/commands/thredded/notify_mentioned_users.rb
|
601
654
|
- app/commands/thredded/notify_private_topic_users.rb
|
602
|
-
- app/commands/thredded/user_reads_private_topic.rb
|
603
|
-
- app/commands/thredded/user_resets_private_topic_to_unread.rb
|
604
655
|
- app/controllers/thredded/application_controller.rb
|
656
|
+
- app/controllers/thredded/autocomplete_users_controller.rb
|
605
657
|
- app/controllers/thredded/messageboards_controller.rb
|
606
658
|
- app/controllers/thredded/posts_controller.rb
|
607
659
|
- app/controllers/thredded/preferences_controller.rb
|
@@ -609,36 +661,32 @@ files:
|
|
609
661
|
- app/controllers/thredded/setups_controller.rb
|
610
662
|
- app/controllers/thredded/theme_previews_controller.rb
|
611
663
|
- app/controllers/thredded/topics_controller.rb
|
612
|
-
- app/decorators/thredded/base_topic_decorator.rb
|
613
|
-
- app/decorators/thredded/base_user_topic_decorator.rb
|
614
|
-
- app/decorators/thredded/messageboard_decorator.rb
|
615
|
-
- app/decorators/thredded/post_decorator.rb
|
616
|
-
- app/decorators/thredded/private_topic_decorator.rb
|
617
|
-
- app/decorators/thredded/topic_decorator.rb
|
618
|
-
- app/decorators/thredded/topic_email_decorator.rb
|
619
|
-
- app/decorators/thredded/user_private_topic_decorator.rb
|
620
|
-
- app/decorators/thredded/user_topic_decorator.rb
|
621
664
|
- app/forms/thredded/private_topic_form.rb
|
622
665
|
- app/forms/thredded/topic_form.rb
|
666
|
+
- app/forms/thredded/user_preferences_form.rb
|
623
667
|
- app/helpers/thredded/application_helper.rb
|
668
|
+
- app/helpers/thredded/urls_helper.rb
|
624
669
|
- app/jobs/thredded/activity_updater_job.rb
|
625
670
|
- app/jobs/thredded/at_notifier_job.rb
|
626
671
|
- app/jobs/thredded/notify_private_topic_users_job.rb
|
672
|
+
- app/mailer_previews/thredded/base_mailer_preview.rb
|
673
|
+
- app/mailer_previews/thredded/post_mailer_preview.rb
|
674
|
+
- app/mailer_previews/thredded/private_post_mailer_preview.rb
|
675
|
+
- app/mailer_previews/thredded/private_topic_mailer_preview.rb
|
627
676
|
- app/mailers/thredded/base_mailer.rb
|
628
677
|
- app/mailers/thredded/post_mailer.rb
|
629
678
|
- app/mailers/thredded/private_post_mailer.rb
|
630
679
|
- app/mailers/thredded/private_topic_mailer.rb
|
680
|
+
- app/models/concerns/thredded/friendly_id_reserved_words_and_pagination.rb
|
631
681
|
- app/models/concerns/thredded/post_common.rb
|
632
682
|
- app/models/concerns/thredded/topic_common.rb
|
633
|
-
- app/models/thredded/
|
683
|
+
- app/models/concerns/thredded/user_topic_read_state_common.rb
|
634
684
|
- app/models/thredded/category.rb
|
635
685
|
- app/models/thredded/messageboard.rb
|
636
686
|
- app/models/thredded/messageboard_user.rb
|
637
|
-
- app/models/thredded/notification_preference.rb
|
638
687
|
- app/models/thredded/null_preference.rb
|
639
|
-
- app/models/thredded/null_topic.rb
|
640
|
-
- app/models/thredded/null_topic_read.rb
|
641
688
|
- app/models/thredded/null_user.rb
|
689
|
+
- app/models/thredded/null_user_topic_read_state.rb
|
642
690
|
- app/models/thredded/post.rb
|
643
691
|
- app/models/thredded/post_notification.rb
|
644
692
|
- app/models/thredded/private_post.rb
|
@@ -649,6 +697,7 @@ files:
|
|
649
697
|
- app/models/thredded/topic_category.rb
|
650
698
|
- app/models/thredded/user_detail.rb
|
651
699
|
- app/models/thredded/user_extender.rb
|
700
|
+
- app/models/thredded/user_messageboard_preference.rb
|
652
701
|
- app/models/thredded/user_permissions/admin/if_admin_column_true.rb
|
653
702
|
- app/models/thredded/user_permissions/admin/none.rb
|
654
703
|
- app/models/thredded/user_permissions/message/readers_of_writeable_boards.rb
|
@@ -658,9 +707,24 @@ files:
|
|
658
707
|
- app/models/thredded/user_permissions/write/all.rb
|
659
708
|
- app/models/thredded/user_permissions/write/none.rb
|
660
709
|
- app/models/thredded/user_preference.rb
|
661
|
-
- app/models/thredded/
|
710
|
+
- app/models/thredded/user_private_topic_read_state.rb
|
711
|
+
- app/models/thredded/user_topic_read_state.rb
|
712
|
+
- app/policies/thredded/messageboard_policy.rb
|
713
|
+
- app/policies/thredded/post_policy.rb
|
714
|
+
- app/policies/thredded/private_post_policy.rb
|
715
|
+
- app/policies/thredded/private_topic_policy.rb
|
716
|
+
- app/policies/thredded/topic_policy.rb
|
717
|
+
- app/view_models/thredded/base_topic_view.rb
|
718
|
+
- app/view_models/thredded/post_view.rb
|
719
|
+
- app/view_models/thredded/posts_page_view.rb
|
720
|
+
- app/view_models/thredded/private_topic_view.rb
|
721
|
+
- app/view_models/thredded/topic_email_view.rb
|
722
|
+
- app/view_models/thredded/topic_view.rb
|
723
|
+
- app/view_models/thredded/topics_page_view.rb
|
662
724
|
- app/views/layouts/thredded/application.html.erb
|
663
725
|
- app/views/thredded/categories/_category.html.erb
|
726
|
+
- app/views/thredded/error_pages/forbidden.html.erb
|
727
|
+
- app/views/thredded/error_pages/not_found.html.erb
|
664
728
|
- app/views/thredded/kaminari/_first_page.html.erb
|
665
729
|
- app/views/thredded/kaminari/_gap.html.erb
|
666
730
|
- app/views/thredded/kaminari/_last_page.html.erb
|
@@ -690,38 +754,47 @@ files:
|
|
690
754
|
- app/views/thredded/private_topic_mailer/message_notification.text.erb
|
691
755
|
- app/views/thredded/private_topics/_breadcrumbs.html.erb
|
692
756
|
- app/views/thredded/private_topics/_form.html.erb
|
757
|
+
- app/views/thredded/private_topics/_header.html.erb
|
693
758
|
- app/views/thredded/private_topics/_no_private_topics.html.erb
|
694
759
|
- app/views/thredded/private_topics/_private_topic.html.erb
|
760
|
+
- app/views/thredded/private_topics/edit.html.erb
|
695
761
|
- app/views/thredded/private_topics/index.html.erb
|
696
762
|
- app/views/thredded/private_topics/new.html.erb
|
697
763
|
- app/views/thredded/private_topics/show.html.erb
|
698
764
|
- app/views/thredded/search/_form.html.erb
|
765
|
+
- app/views/thredded/shared/_breadcrumbs.html.erb
|
699
766
|
- app/views/thredded/shared/_currently_online.html.erb
|
700
767
|
- app/views/thredded/shared/_flash_messages.html.erb
|
701
768
|
- app/views/thredded/shared/_header.html.erb
|
702
|
-
- app/views/thredded/shared/
|
703
|
-
- app/views/thredded/shared/_notification_preferences.html.erb
|
769
|
+
- app/views/thredded/shared/_nav.html.erb
|
704
770
|
- app/views/thredded/shared/_page.html.erb
|
705
771
|
- app/views/thredded/shared/_time_ago.html.erb
|
706
|
-
- app/views/thredded/shared/
|
707
|
-
- app/views/thredded/shared/
|
772
|
+
- app/views/thredded/shared/nav/_notification_preferences.html.erb
|
773
|
+
- app/views/thredded/shared/nav/_private_topics.html.erb
|
774
|
+
- app/views/thredded/shared/nav/_standalone.html.erb
|
708
775
|
- app/views/thredded/theme_previews/_section_title.html.erb
|
709
776
|
- app/views/thredded/theme_previews/show.html.erb
|
710
777
|
- app/views/thredded/topics/_form.html.erb
|
711
|
-
- app/views/thredded/topics/
|
778
|
+
- app/views/thredded/topics/_header.html.erb
|
712
779
|
- app/views/thredded/topics/_topic.html.erb
|
713
780
|
- app/views/thredded/topics/_topic_form_admin_options.html.erb
|
714
|
-
- app/views/thredded/topics/by_category.html.erb
|
715
781
|
- app/views/thredded/topics/edit.html.erb
|
716
782
|
- app/views/thredded/topics/index.html.erb
|
717
783
|
- app/views/thredded/topics/menu/_new_topic.html.erb
|
718
784
|
- app/views/thredded/topics/new.html.erb
|
719
785
|
- app/views/thredded/topics/search.html.erb
|
720
786
|
- app/views/thredded/topics/show.html.erb
|
721
|
-
- app/views/thredded/topics_common/_header.html.erb
|
722
787
|
- app/views/thredded/users/_link.html.erb
|
788
|
+
- bin/rails
|
789
|
+
- config.ru
|
790
|
+
- config/i18n-tasks.yml
|
791
|
+
- config/locales/en.yml
|
723
792
|
- config/routes.rb
|
724
793
|
- db/migrate/20160329231848_create_thredded.rb
|
794
|
+
- db/seeds.rb
|
795
|
+
- db/upgrade_migrations/20160410111522_upgrade_v0_2_to_v0_3.rb
|
796
|
+
- heroku.gemfile
|
797
|
+
- heroku.gemfile.lock
|
725
798
|
- lib/generators/thredded/install/USAGE
|
726
799
|
- lib/generators/thredded/install/install_generator.rb
|
727
800
|
- lib/generators/thredded/install/templates/initializer.rb
|
@@ -733,16 +806,8 @@ files:
|
|
733
806
|
- lib/thredded/engine.rb
|
734
807
|
- lib/thredded/errors.rb
|
735
808
|
- lib/thredded/main_app_route_delegator.rb
|
736
|
-
- lib/thredded/messageboard_user_permissions.rb
|
737
|
-
- lib/thredded/post_sql_builder.rb
|
738
|
-
- lib/thredded/post_user_permissions.rb
|
739
|
-
- lib/thredded/private_topic_user_permissions.rb
|
740
809
|
- lib/thredded/search_parser.rb
|
741
|
-
- lib/thredded/
|
742
|
-
- lib/thredded/seed_database.rb
|
743
|
-
- lib/thredded/table_sql_builder.rb
|
744
|
-
- lib/thredded/topic_sql_builder.rb
|
745
|
-
- lib/thredded/topic_user_permissions.rb
|
810
|
+
- lib/thredded/topics_search.rb
|
746
811
|
- lib/thredded/version.rb
|
747
812
|
- thredded.gemspec
|
748
813
|
homepage: https://www.thredded.com
|
@@ -765,9 +830,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
765
830
|
version: '0'
|
766
831
|
requirements: []
|
767
832
|
rubyforge_project:
|
768
|
-
rubygems_version: 2.
|
833
|
+
rubygems_version: 2.5.1
|
769
834
|
signing_key:
|
770
835
|
specification_version: 4
|
771
836
|
summary: A messageboard engine
|
772
837
|
test_files: []
|
773
|
-
has_rdoc:
|