thredded 0.7.0 → 0.8.2
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 +119 -17
- data/app/assets/javascripts/thredded/components/currently_online.es6 +3 -3
- data/app/assets/javascripts/thredded/components/flash_messages.es6 +11 -0
- data/app/assets/javascripts/thredded/components/post_form.es6 +21 -4
- data/app/assets/javascripts/thredded/components/time_stamps.es6 +8 -6
- data/app/assets/javascripts/thredded/components/topic_form.es6 +14 -3
- data/app/assets/javascripts/thredded/components/topics.es6 +3 -3
- data/app/assets/javascripts/thredded/components/turboforms.es6 +15 -0
- data/app/assets/javascripts/thredded/components/user_preferences_form.es6 +47 -20
- data/app/assets/javascripts/thredded/components/users_select.es6 +25 -9
- data/app/assets/javascripts/thredded/core/hide_soft_keyboard.es6 +6 -0
- data/app/assets/javascripts/thredded/core/mention_autocompletion.es6 +54 -0
- data/app/assets/javascripts/thredded/core/on_page_load.es6 +46 -0
- data/app/assets/javascripts/thredded/dependencies.js +2 -1
- data/app/assets/javascripts/thredded/dependencies/jquery.js +1 -0
- data/app/assets/javascripts/thredded/thredded.es6 +1 -0
- data/app/assets/stylesheets/thredded/_thredded.scss +1 -0
- data/app/assets/stylesheets/thredded/base/_alerts.scss +5 -1
- data/app/assets/stylesheets/thredded/base/_grid.scss +8 -0
- data/app/assets/stylesheets/thredded/base/_nav.scss +0 -5
- data/app/assets/stylesheets/thredded/components/_following.scss +0 -3
- data/app/assets/stylesheets/thredded/components/_mention-autocomplete.scss +35 -0
- data/app/assets/stylesheets/thredded/components/_topic-header.scss +37 -17
- data/app/assets/stylesheets/thredded/components/_topics.scss +13 -0
- data/app/assets/stylesheets/thredded/layout/_main-navigation.scss +57 -14
- data/app/assets/stylesheets/thredded/layout/_moderation.scss +5 -0
- data/app/assets/stylesheets/thredded/layout/_navigation.scss +14 -17
- data/app/assets/stylesheets/thredded/layout/_search-navigation.scss +15 -3
- data/app/assets/stylesheets/thredded/layout/_user-navigation.scss +3 -11
- data/app/commands/thredded/at_notification_extractor.rb +2 -2
- data/app/commands/thredded/autofollow_mentioned_users.rb +2 -2
- data/app/commands/thredded/create_messageboard.rb +45 -0
- data/app/commands/thredded/notify_following_users.rb +10 -0
- data/app/controllers/thredded/autocomplete_users_controller.rb +2 -3
- data/app/controllers/thredded/messageboards_controller.rb +1 -24
- data/app/controllers/thredded/moderation_controller.rb +1 -1
- data/app/controllers/thredded/post_permalinks_controller.rb +1 -1
- data/app/controllers/thredded/preferences_controller.rb +4 -2
- data/app/controllers/thredded/private_post_permalinks_controller.rb +1 -1
- data/app/controllers/thredded/theme_previews_controller.rb +1 -1
- data/app/controllers/thredded/topics_controller.rb +0 -1
- data/app/forms/thredded/user_preferences_form.rb +4 -2
- data/app/helpers/thredded/application_helper.rb +5 -0
- data/app/helpers/thredded/nav_helper.rb +41 -0
- data/app/mailer_previews/thredded/base_mailer_preview.rb +0 -1
- data/app/mailers/thredded/post_mailer.rb +0 -1
- data/app/mailers/thredded/private_topic_mailer.rb +0 -1
- data/app/models/concerns/thredded/user_topic_read_state_common.rb +2 -2
- data/app/models/thredded/messageboard.rb +0 -1
- data/app/models/thredded/null_preference.rb +5 -1
- data/app/models/thredded/private_post.rb +2 -2
- data/app/policies/thredded/messageboard_group_policy.rb +1 -1
- data/app/view_hooks/thredded/all_view_hooks.rb +68 -0
- data/app/view_models/thredded/post_view.rb +3 -3
- data/app/view_models/thredded/topic_email_view.rb +0 -4
- data/app/view_models/thredded/topics_page_view.rb +12 -1
- data/app/views/layouts/thredded/application.html.erb +5 -2
- data/app/views/thredded/messageboard_groups/new.html.erb +3 -1
- data/app/views/thredded/messageboards/edit.html.erb +3 -1
- data/app/views/thredded/messageboards/new.html.erb +3 -1
- data/app/views/thredded/moderation/_users_search_form.html.erb +4 -1
- data/app/views/thredded/moderation/user.html.erb +34 -28
- data/app/views/thredded/posts_common/_form.html.erb +6 -1
- data/app/views/thredded/posts_common/form/_content_field.html.erb +5 -3
- data/app/views/thredded/preferences/_form.html.erb +30 -12
- data/app/views/thredded/private_topics/_form.html.erb +4 -3
- data/app/views/thredded/private_topics/index.html.erb +5 -5
- data/app/views/thredded/search/_form.html.erb +2 -1
- data/app/views/thredded/shared/_flash_messages.html.erb +1 -1
- data/app/views/thredded/shared/_page.html.erb +10 -1
- data/app/views/thredded/shared/nav/_moderation.html.erb +3 -2
- data/app/views/thredded/shared/nav/_notification_preferences.html.erb +5 -3
- data/app/views/thredded/shared/nav/_private_topics.html.erb +3 -2
- data/app/views/thredded/topics/_form.html.erb +6 -1
- data/app/views/thredded/topics/_header.html.erb +8 -5
- data/config/locales/en.yml +15 -7
- data/config/locales/pt-BR.yml +21 -13
- data/config/routes.rb +4 -2
- data/db/migrate/20160329231848_create_thredded.rb +5 -5
- data/db/upgrade_migrations/20161019150201_upgrade_v0_7_to_v0_8.rb +31 -0
- data/lib/generators/thredded/install/templates/initializer.rb +20 -8
- data/lib/tasks/thredded_tasks.rake +0 -7
- data/lib/thredded.rb +19 -5
- data/lib/thredded/content_formatter.rb +43 -8
- data/lib/thredded/database_seeder.rb +7 -1
- data/lib/thredded/engine.rb +2 -21
- data/lib/{html/pipeline → thredded/html_pipeline}/at_mention_filter.rb +4 -4
- data/lib/thredded/html_pipeline/autolink_filter.rb +14 -0
- data/lib/thredded/html_pipeline/kramdown_filter.rb +34 -0
- data/lib/thredded/version.rb +1 -1
- data/lib/thredded/view_hooks/config.rb +36 -0
- data/lib/thredded/view_hooks/renderer.rb +29 -0
- data/vendor/assets/javascripts/jquery.textcomplete.js +1488 -0
- metadata +65 -52
- data/app/commands/thredded/messageboard_destroyer.rb +0 -65
- data/lib/html/pipeline/bbcode_filter.rb +0 -33
- data/lib/thredded/main_app_route_delegator.rb +0 -25
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
.thredded--moderation-navigation {
|
|
2
2
|
position: relative;
|
|
3
|
+
@include thredded-media-desktop-and-up {
|
|
4
|
+
margin-bottom: $thredded-base-spacing;
|
|
5
|
+
}
|
|
6
|
+
|
|
3
7
|
&--items {
|
|
4
8
|
@extend %thredded--nav-tabs;
|
|
9
|
+
margin-bottom: $thredded-small-spacing;
|
|
5
10
|
}
|
|
6
11
|
&--item {
|
|
7
12
|
@extend %thredded--nav-tabs--item;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
.thredded--navigation {
|
|
2
|
-
margin-bottom: $thredded-small-spacing;
|
|
3
2
|
position: relative;
|
|
4
3
|
.thredded--icon {
|
|
5
4
|
display: none;
|
|
@@ -9,7 +8,6 @@
|
|
|
9
8
|
@include thredded-media-tablet-and-down {
|
|
10
9
|
$icon-nav-item-width: 2.625rem;
|
|
11
10
|
.thredded--navigation {
|
|
12
|
-
display: table;
|
|
13
11
|
position: relative;
|
|
14
12
|
width: 100%;
|
|
15
13
|
}
|
|
@@ -33,20 +31,25 @@
|
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
33
|
.thredded--user-navigation {
|
|
36
|
-
|
|
34
|
+
border-bottom: none;
|
|
35
|
+
position: absolute;
|
|
36
|
+
top: 0;
|
|
37
|
+
right: 0;
|
|
38
|
+
z-index: 2;
|
|
37
39
|
&-standalone {
|
|
38
40
|
display: block;
|
|
39
41
|
margin-bottom: 0;
|
|
40
42
|
}
|
|
41
43
|
%icon-nav-item {
|
|
42
|
-
|
|
44
|
+
box-sizing: border-box;
|
|
45
|
+
display: inline-block;
|
|
46
|
+
margin: 0 0 0 ($thredded-small-spacing/2);
|
|
43
47
|
padding: 0;
|
|
44
|
-
|
|
45
|
-
top: (0.8rem - $thredded-small-spacing);
|
|
46
|
-
z-index: 2;
|
|
48
|
+
vertical-align: top;
|
|
47
49
|
a {
|
|
50
|
+
position: relative;
|
|
48
51
|
display: block;
|
|
49
|
-
padding:
|
|
52
|
+
padding: 0.4375rem 0 0.375rem 0;
|
|
50
53
|
}
|
|
51
54
|
.thredded--icon {
|
|
52
55
|
display: block;
|
|
@@ -55,31 +58,25 @@
|
|
|
55
58
|
}
|
|
56
59
|
}
|
|
57
60
|
%icon-counter {
|
|
58
|
-
bottom: 0.
|
|
61
|
+
bottom: 0.3125rem;
|
|
59
62
|
position: absolute;
|
|
60
|
-
right: -0.
|
|
63
|
+
right: -0.1875rem;
|
|
61
64
|
}
|
|
62
65
|
.thredded--nav-text {
|
|
63
66
|
display: none;
|
|
64
67
|
}
|
|
65
68
|
&--settings {
|
|
66
69
|
@extend %icon-nav-item;
|
|
67
|
-
right: $icon-nav-item-width;
|
|
68
70
|
}
|
|
69
71
|
&--private-topics {
|
|
70
72
|
@extend %icon-nav-item;
|
|
71
|
-
|
|
72
|
-
top: 1px;
|
|
73
|
-
a {
|
|
74
|
-
position: relative;
|
|
75
|
-
}
|
|
73
|
+
margin-top: 1px;
|
|
76
74
|
&--unread {
|
|
77
75
|
@extend %icon-counter;
|
|
78
76
|
}
|
|
79
77
|
}
|
|
80
78
|
&--moderation {
|
|
81
79
|
@extend %icon-nav-item;
|
|
82
|
-
right: $icon-nav-item-width * 2;
|
|
83
80
|
&--pending-count {
|
|
84
81
|
@extend %icon-counter
|
|
85
82
|
}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
@include thredded-media-tablet-and-down {
|
|
9
9
|
position: initial;
|
|
10
|
+
margin-bottom: $thredded-small-spacing;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
label {
|
|
@@ -18,16 +19,17 @@
|
|
|
18
19
|
width: 100%;
|
|
19
20
|
|
|
20
21
|
@include thredded-media-desktop-and-up {
|
|
22
|
+
$line-height: 1rem;
|
|
21
23
|
$padding-x: 0.75rem;
|
|
22
24
|
background: transparent;
|
|
23
25
|
border-color: transparent;
|
|
24
26
|
font-size: $thredded-font-size-small;
|
|
25
|
-
line-height:
|
|
27
|
+
line-height: $line-height;
|
|
26
28
|
min-width: 13rem;
|
|
27
29
|
text-align: right;
|
|
28
30
|
width: auto;
|
|
29
|
-
padding: 0.
|
|
30
|
-
margin
|
|
31
|
+
padding: 0.9375rem 0.75rem 0.875rem 0.75rem;
|
|
32
|
+
margin: -1px (-$padding-x) 0 0;
|
|
31
33
|
// Webkit adds an extra padding that we need to remove.
|
|
32
34
|
-webkit-margin-end: -($padding-x + 0.75rem);
|
|
33
35
|
|
|
@@ -49,9 +51,19 @@
|
|
|
49
51
|
box-shadow: none;
|
|
50
52
|
}
|
|
51
53
|
|
|
54
|
+
&::-webkit-search-decoration,
|
|
55
|
+
&::-webkit-search-cancel-button,
|
|
56
|
+
&::-webkit-search-results-button,
|
|
57
|
+
&::-webkit-search-results-decoration {
|
|
58
|
+
// Remove excessive padding on Safari.
|
|
59
|
+
max-height: $line-height;
|
|
60
|
+
}
|
|
61
|
+
|
|
52
62
|
&::placeholder {
|
|
53
63
|
color: $thredded-secondary-nav-color;
|
|
54
64
|
transition: $thredded-action-transition;
|
|
65
|
+
height: inherit;
|
|
66
|
+
line-height: inherit;
|
|
55
67
|
// Firefox applies default opacity of 0.54, while all the other browsers use 1.
|
|
56
68
|
// See https://bugzilla.mozilla.org/show_bug.cgi?id=556145
|
|
57
69
|
opacity: 1;
|
|
@@ -4,18 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
.thredded--user-navigation--item {
|
|
6
6
|
@extend %thredded--nav-tabs--item;
|
|
7
|
-
}
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
.thredded--private-topic-show .thredded--user-navigation--private-topics,
|
|
13
|
-
.thredded--pending-moderation .thredded--user-navigation--moderation,
|
|
14
|
-
.thredded--moderation-history .thredded--user-navigation--moderation,
|
|
15
|
-
.thredded--moderation-users .thredded--user-navigation--moderation,
|
|
16
|
-
.thredded--moderation-user .thredded--user-navigation--moderation,
|
|
17
|
-
.thredded--moderation-activity .thredded--user-navigation--moderation {
|
|
18
|
-
@extend %thredded--nav-tabs--item-current;
|
|
8
|
+
&.thredded--is-current {
|
|
9
|
+
@extend %thredded--nav-tabs--item-current;
|
|
10
|
+
}
|
|
19
11
|
}
|
|
20
12
|
|
|
21
13
|
.thredded--user-navigation--private-topics--unread,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
2
|
+
require 'thredded/html_pipeline/at_mention_filter'
|
|
3
3
|
module Thredded
|
|
4
4
|
class AtNotificationExtractor
|
|
5
5
|
def initialize(post)
|
|
@@ -13,7 +13,7 @@ module Thredded
|
|
|
13
13
|
# * When parsing, @-mentions within <a> tags will not be considered.
|
|
14
14
|
# * We can't always generate the user URL here because request.host is not available.
|
|
15
15
|
html = @post.filtered_content(view_context, users_provider: nil)
|
|
16
|
-
|
|
16
|
+
Thredded::HtmlPipeline::AtMentionFilter.new(
|
|
17
17
|
html,
|
|
18
18
|
view_context: view_context,
|
|
19
19
|
users_provider: -> (user_names) { @post.readers_from_user_names(user_names).to_a }
|
|
@@ -24,8 +24,8 @@ module Thredded
|
|
|
24
24
|
|
|
25
25
|
def exclude_those_opting_out_of_at_notifications(members)
|
|
26
26
|
members.select do |member|
|
|
27
|
-
member.thredded_user_preference.
|
|
28
|
-
member.thredded_user_messageboard_preferences.in(post.messageboard).
|
|
27
|
+
member.thredded_user_preference.follow_topics_on_mention? &&
|
|
28
|
+
member.thredded_user_messageboard_preferences.in(post.messageboard).follow_topics_on_mention?
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Thredded
|
|
3
|
+
# Creates a new messageboard and seeds it with a topic.
|
|
4
|
+
class CreateMessageboard
|
|
5
|
+
# @param messageboard [Thredded::Messageboard]
|
|
6
|
+
# @param user [Thredded.user_class]
|
|
7
|
+
def initialize(messageboard, user)
|
|
8
|
+
@messageboard = messageboard
|
|
9
|
+
@user = user
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# @return [boolean] true if the messageboard was created and seeded with a topic successfully.
|
|
13
|
+
def run
|
|
14
|
+
Messageboard.transaction do
|
|
15
|
+
fail ActiveRecord::Rollback unless @messageboard.save
|
|
16
|
+
topic = Topic.create!(
|
|
17
|
+
messageboard: @messageboard,
|
|
18
|
+
user: @user,
|
|
19
|
+
title: first_topic_title
|
|
20
|
+
)
|
|
21
|
+
Post.create!(
|
|
22
|
+
messageboard: @messageboard,
|
|
23
|
+
user: @user,
|
|
24
|
+
postable: topic,
|
|
25
|
+
content: first_post_content
|
|
26
|
+
)
|
|
27
|
+
true
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def first_topic_title
|
|
32
|
+
"Welcome to your messageboard's very first thread"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def first_post_content
|
|
36
|
+
<<-MARKDOWN
|
|
37
|
+
There's not a whole lot here for now.
|
|
38
|
+
|
|
39
|
+
These forums are powered by [Thredded](https://github.com/thredded/thredded) v#{Thredded::VERSION}.
|
|
40
|
+
You can contact the Thredded team via the [Thredded chat room](https://gitter.im/thredded/thredded).
|
|
41
|
+
Please let us know that you are using Thredded by tweeting [@thredded](https://twitter.com/thredded)!
|
|
42
|
+
MARKDOWN
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -13,6 +13,16 @@ module Thredded
|
|
|
13
13
|
|
|
14
14
|
def targeted_users
|
|
15
15
|
@targeted_users ||= @post.postable.followers.reject { |u| u == @post.user }
|
|
16
|
+
exclude_those_opting_out_of_followed_activity_notifications @targeted_users
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def exclude_those_opting_out_of_followed_activity_notifications(members)
|
|
22
|
+
members.select do |member|
|
|
23
|
+
member.thredded_user_preference.followed_topic_emails &&
|
|
24
|
+
member.thredded_user_messageboard_preferences.in(@post.messageboard).followed_topic_emails
|
|
25
|
+
end
|
|
16
26
|
end
|
|
17
27
|
end
|
|
18
28
|
end
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Thredded
|
|
3
3
|
class AutocompleteUsersController < Thredded::ApplicationController
|
|
4
|
-
|
|
5
|
-
MAX_RESULTS = 20
|
|
4
|
+
MAX_RESULTS = 20
|
|
6
5
|
|
|
7
6
|
def index
|
|
8
7
|
authorize_creating PrivateTopicForm.new(user: thredded_current_user).private_topic
|
|
@@ -20,7 +19,7 @@ module Thredded
|
|
|
20
19
|
|
|
21
20
|
def users_by_prefix
|
|
22
21
|
query = params[:q].to_s.strip
|
|
23
|
-
if query.length >=
|
|
22
|
+
if query.length >= Thredded.autocomplete_min_length
|
|
24
23
|
DbTextSearch::CaseInsensitive.new(users_scope, Thredded.user_name_column).prefix(query)
|
|
25
24
|
.where.not(id: thredded_current_user.id)
|
|
26
25
|
.limit(MAX_RESULTS)
|
|
@@ -19,11 +19,7 @@ module Thredded
|
|
|
19
19
|
def create
|
|
20
20
|
@messageboard = Messageboard.new(messageboard_params)
|
|
21
21
|
authorize_creating @messageboard
|
|
22
|
-
if @messageboard.
|
|
23
|
-
Topic.transaction do
|
|
24
|
-
@topic = Topic.create!(topic_params)
|
|
25
|
-
@post = Post.create!(post_params)
|
|
26
|
-
end
|
|
22
|
+
if Thredded::CreateMessageboard.new(@messageboard, thredded_current_user).run
|
|
27
23
|
redirect_to root_path
|
|
28
24
|
else
|
|
29
25
|
render :new
|
|
@@ -52,24 +48,5 @@ module Thredded
|
|
|
52
48
|
.require(:messageboard)
|
|
53
49
|
.permit(:name, :description, :messageboard_group_id)
|
|
54
50
|
end
|
|
55
|
-
|
|
56
|
-
def topic_params
|
|
57
|
-
{
|
|
58
|
-
messageboard: @messageboard,
|
|
59
|
-
user: thredded_current_user,
|
|
60
|
-
last_user: thredded_current_user,
|
|
61
|
-
title: "Welcome to your messageboard's very first thread",
|
|
62
|
-
}
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def post_params
|
|
66
|
-
{
|
|
67
|
-
messageboard: @messageboard,
|
|
68
|
-
postable: @topic,
|
|
69
|
-
content: "There's not a whole lot here for now.",
|
|
70
|
-
ip: request.ip,
|
|
71
|
-
user: thredded_current_user,
|
|
72
|
-
}
|
|
73
|
-
end
|
|
74
51
|
end
|
|
75
52
|
end
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
require_dependency 'thredded/moderate_post'
|
|
3
3
|
require_dependency 'thredded/posts_page_view'
|
|
4
4
|
module Thredded
|
|
5
|
-
class ModerationController < ApplicationController
|
|
5
|
+
class ModerationController < Thredded::ApplicationController
|
|
6
6
|
before_action :thredded_require_login!
|
|
7
7
|
before_action :load_moderatable_messageboards
|
|
8
8
|
|
|
@@ -23,9 +23,11 @@ module Thredded
|
|
|
23
23
|
user: thredded_current_user,
|
|
24
24
|
messageboard: messageboard_or_nil,
|
|
25
25
|
params: params.fetch(:user_preferences_form, {}).permit(
|
|
26
|
-
:
|
|
26
|
+
:followed_topic_emails,
|
|
27
|
+
:follow_topics_on_mention,
|
|
27
28
|
:notify_on_message,
|
|
28
|
-
:
|
|
29
|
+
:messageboard_followed_topic_emails,
|
|
30
|
+
:messageboard_follow_topics_on_mention
|
|
29
31
|
)
|
|
30
32
|
)
|
|
31
33
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Thredded
|
|
3
|
-
class PrivatePostPermalinksController < ApplicationController
|
|
3
|
+
class PrivatePostPermalinksController < Thredded::ApplicationController
|
|
4
4
|
before_action :thredded_require_login!
|
|
5
5
|
def show
|
|
6
6
|
private_post = PrivatePost.find(params[:id])
|
|
@@ -9,7 +9,7 @@ module Thredded
|
|
|
9
9
|
else
|
|
10
10
|
thredded_current_user
|
|
11
11
|
end
|
|
12
|
-
@messageboards = Messageboard.
|
|
12
|
+
@messageboards = Messageboard.all
|
|
13
13
|
@topics = TopicsPageView.new(@user, @messageboard.topics.page(1).limit(3))
|
|
14
14
|
@private_topics = PrivateTopicsPageView.new(@user, @user.thredded_private_topics.page(1).limit(3))
|
|
15
15
|
topic = Topic.new(messageboard: @messageboard, title: 'Hello', slug: 'hello', user: @user)
|
|
@@ -18,7 +18,6 @@ module Thredded
|
|
|
18
18
|
thredded_current_user,
|
|
19
19
|
policy_scope(messageboard.topics)
|
|
20
20
|
.order_sticky_first.order_recently_posted_first
|
|
21
|
-
.includes(:categories, :last_user, :user)
|
|
22
21
|
.page(current_page)
|
|
23
22
|
)
|
|
24
23
|
TopicForm.new(messageboard: messageboard, user: thredded_current_user).tap do |form|
|
|
@@ -8,11 +8,13 @@ module Thredded
|
|
|
8
8
|
|
|
9
9
|
validate :validate_children
|
|
10
10
|
|
|
11
|
-
delegate :
|
|
11
|
+
delegate :follow_topics_on_mention, :follow_topics_on_mention=,
|
|
12
12
|
:notify_on_message, :notify_on_message=,
|
|
13
|
+
:followed_topic_emails, :followed_topic_emails=,
|
|
13
14
|
to: :user_preference
|
|
14
15
|
|
|
15
|
-
delegate :
|
|
16
|
+
delegate :follow_topics_on_mention, :follow_topics_on_mention=,
|
|
17
|
+
:followed_topic_emails, :followed_topic_emails=,
|
|
16
18
|
to: :user_messageboard_preference,
|
|
17
19
|
prefix: :messageboard
|
|
18
20
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'set'
|
|
3
|
+
module Thredded
|
|
4
|
+
module NavHelper
|
|
5
|
+
USER_NAV_MODERATION_PAGES = Set.new(
|
|
6
|
+
%w(
|
|
7
|
+
thredded--pending-moderation
|
|
8
|
+
thredded--moderation-activity
|
|
9
|
+
thredded--moderation-history
|
|
10
|
+
thredded--moderation-users
|
|
11
|
+
thredded--moderation-user
|
|
12
|
+
)
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
USER_NAV_PREFERENCES_PAGES = Set.new(
|
|
16
|
+
%w(
|
|
17
|
+
thredded--preferences
|
|
18
|
+
)
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
USER_NAV_PRIVATE_TOPICS_PAGES = Set.new(
|
|
22
|
+
%w(
|
|
23
|
+
thredded--new-private-topic
|
|
24
|
+
thredded--private-topics-index
|
|
25
|
+
thredded--private-topic-show
|
|
26
|
+
)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def current_page_preferences?
|
|
30
|
+
USER_NAV_PREFERENCES_PAGES.include?(content_for(:thredded_page_id))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def current_page_moderation?
|
|
34
|
+
USER_NAV_MODERATION_PAGES.include?(content_for(:thredded_page_id))
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def current_page_private_topics?
|
|
38
|
+
USER_NAV_PRIVATE_TOPICS_PAGES.include?(content_for(:thredded_page_id))
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|