thredded 0.6.3 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +12 -12
- data/app/assets/images/thredded/follow.svg +1 -0
- data/app/assets/images/thredded/unfollow.svg +1 -0
- data/app/assets/stylesheets/thredded/_thredded.scss +27 -28
- data/app/assets/stylesheets/thredded/components/_alerts.scss +5 -5
- data/app/assets/stylesheets/thredded/components/_base.scss +5 -5
- data/app/assets/stylesheets/thredded/components/_currently-online.scss +1 -1
- data/app/assets/stylesheets/thredded/components/_empty.scss +2 -2
- data/app/assets/stylesheets/thredded/components/_flash-message.scss +5 -5
- data/app/assets/stylesheets/thredded/components/_following.scss +17 -0
- data/app/assets/stylesheets/thredded/components/_form-list.scss +3 -3
- data/app/assets/stylesheets/thredded/components/_icons.scss +1 -1
- data/app/assets/stylesheets/thredded/components/_main-section.scss +1 -1
- data/app/assets/stylesheets/thredded/components/_messageboard.scss +6 -6
- data/app/assets/stylesheets/thredded/components/_pagination.scss +1 -1
- data/app/assets/stylesheets/thredded/components/_post-form.scss +1 -1
- data/app/assets/stylesheets/thredded/components/_post.scss +12 -11
- data/app/assets/stylesheets/thredded/components/_preferences.scss +1 -1
- data/app/assets/stylesheets/thredded/components/_select2.scss +4 -4
- data/app/assets/stylesheets/thredded/components/_topic-delete.scss +4 -8
- data/app/assets/stylesheets/thredded/components/_topic-header.scss +25 -11
- data/app/assets/stylesheets/thredded/components/_topics.scss +37 -15
- data/app/assets/stylesheets/thredded/layout/_main-container.scss +1 -1
- data/app/assets/stylesheets/thredded/layout/_main-navigation.scss +2 -2
- data/app/assets/stylesheets/thredded/layout/_moderation.scss +16 -15
- data/app/assets/stylesheets/thredded/layout/_navigation.scss +6 -6
- data/app/assets/stylesheets/thredded/layout/_search-navigation.scss +1 -1
- data/app/assets/stylesheets/thredded/layout/_user-navigation.scss +13 -13
- data/app/assets/stylesheets/thredded/layout/_user.scss +1 -1
- data/app/assets/stylesheets/thredded/utilities/_is-compact.scss +1 -1
- data/app/assets/stylesheets/thredded/utilities/_is-expanded.scss +1 -1
- data/app/commands/thredded/notify_following_users.rb +1 -1
- data/app/controllers/thredded/messageboard_groups_controller.rb +3 -1
- data/app/controllers/thredded/messageboards_controller.rb +1 -3
- data/app/controllers/thredded/private_topics_controller.rb +1 -1
- data/app/controllers/thredded/topics_controller.rb +16 -9
- data/app/helpers/thredded/application_helper.rb +36 -0
- data/app/models/concerns/thredded/topic_common.rb +2 -2
- data/app/models/concerns/thredded/user_topic_read_state_common.rb +1 -1
- data/app/models/thredded/messageboard.rb +34 -7
- data/app/models/thredded/messageboard_group.rb +8 -1
- data/app/models/thredded/null_user.rb +4 -0
- data/app/models/thredded/post_moderation_record.rb +1 -1
- data/app/models/thredded/private_post.rb +5 -1
- data/app/models/thredded/stats.rb +1 -1
- data/app/models/thredded/topic.rb +5 -3
- data/app/models/thredded/user_detail.rb +2 -0
- data/app/models/thredded/user_extender.rb +4 -2
- data/app/models/thredded/user_topic_follow.rb +12 -1
- data/app/view_models/thredded/base_topic_view.rb +1 -1
- data/app/view_models/thredded/messageboard_group_view.rb +11 -0
- data/app/view_models/thredded/topic_view.rb +15 -2
- data/app/views/thredded/messageboards/_messageboard.html.erb +2 -2
- data/app/views/thredded/moderation/_post.html.erb +1 -1
- data/app/views/thredded/moderation/_post_moderation_record.html.erb +1 -1
- data/app/views/thredded/moderation/user.html.erb +1 -1
- data/app/views/thredded/moderation/users.html.erb +1 -1
- data/app/views/thredded/private_topic_mailer/message_notification.html.erb +1 -1
- data/app/views/thredded/private_topic_mailer/message_notification.text.erb +1 -1
- data/app/views/thredded/private_topics/_private_topic.html.erb +1 -1
- data/app/views/thredded/shared/_currently_online.html.erb +1 -1
- data/app/views/thredded/shared/_nav.html.erb +1 -1
- data/app/views/thredded/shared/_page.html.erb +2 -2
- data/app/views/thredded/topics/_followers.html.erb +12 -0
- data/app/views/thredded/topics/_header.html.erb +10 -9
- data/app/views/thredded/topics/_topic.html.erb +13 -2
- data/app/views/thredded/topics/index.html.erb +5 -0
- data/app/views/thredded/users/_link.html.erb +2 -2
- data/config/locales/en.yml +20 -18
- data/config/locales/pt-BR.yml +14 -9
- data/db/migrate/20160329231848_create_thredded.rb +4 -0
- data/db/upgrade_migrations/20160611094616_upgrade_v0_5_to_v0_6.rb +1 -1
- data/db/upgrade_migrations/20160723012349_upgrade_v0_6_to_v0_7.rb +43 -0
- data/lib/generators/thredded/install/templates/initializer.rb +15 -0
- data/lib/html/pipeline/at_mention_filter.rb +1 -1
- data/lib/thredded.rb +24 -0
- data/lib/thredded/database_seeder.rb +15 -5
- data/lib/thredded/version.rb +1 -1
- metadata +8 -9
- data/CHANGELOG.md +0 -399
- data/Procfile +0 -1
- data/config.ru +0 -3
- data/heroku.gemfile +0 -28
- data/heroku.gemfile.lock +0 -268
- data/thredded.gemspec +0 -78
@@ -3,6 +3,19 @@ module Thredded
|
|
3
3
|
module ApplicationHelper
|
4
4
|
include ::Thredded::UrlsHelper
|
5
5
|
|
6
|
+
def thredded_container_data
|
7
|
+
{
|
8
|
+
'thredded-page-id' => content_for(:thredded_page_id),
|
9
|
+
'thredded-root-url' => thredded.root_path
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def thredded_container_classes
|
14
|
+
['thredded--main-container', content_for(:thredded_page_id)].tap do |classes|
|
15
|
+
classes << 'thredded--is-moderator' if moderatable_messageboards_ids
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
6
19
|
# Render the page container with the supplied block as content.
|
7
20
|
def thredded_page(&block)
|
8
21
|
# enable the host app to easily check whether a thredded view is being rendered:
|
@@ -17,6 +30,17 @@ module Thredded
|
|
17
30
|
render partial: 'thredded/users/link', locals: { user: user }
|
18
31
|
end
|
19
32
|
|
33
|
+
# @param user [Thredded.user_class]
|
34
|
+
# @return [String] wrapped @mention string
|
35
|
+
def user_mention(user)
|
36
|
+
username = user.send(Thredded.user_name_column)
|
37
|
+
if username.include?(' ')
|
38
|
+
%(@"#{username}")
|
39
|
+
else
|
40
|
+
"@#{username}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
20
44
|
# @param datetime [DateTime]
|
21
45
|
# @param default [String] a string to return if time is nil.
|
22
46
|
# @return [String] html_safe datetime presentation
|
@@ -42,6 +66,18 @@ module Thredded
|
|
42
66
|
]
|
43
67
|
end
|
44
68
|
|
69
|
+
# @param follow_reason ['manual', 'posted', 'mentioned', nil]
|
70
|
+
def topic_follow_reason_text(follow_reason)
|
71
|
+
if follow_reason
|
72
|
+
# rubocop:disable Metrics/LineLength
|
73
|
+
# i18n-tasks-use t('thredded.topics.following.manual') t('thredded.topics.following.posted') t('thredded.topics.following.mentioned')
|
74
|
+
# rubocop:enable Metrics/LineLength
|
75
|
+
t("thredded.topics.following.#{follow_reason}")
|
76
|
+
else
|
77
|
+
t('thredded.topics.not_following')
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
45
81
|
def unread_private_topics_count
|
46
82
|
@unread_private_topics_count ||=
|
47
83
|
if signed_in?
|
@@ -9,7 +9,7 @@ module Thredded
|
|
9
9
|
class_name: Thredded.user_class,
|
10
10
|
foreign_key: 'last_user_id'
|
11
11
|
|
12
|
-
scope :
|
12
|
+
scope :order_recently_posted_first, -> { order(last_post_at: :desc, id: :desc) }
|
13
13
|
scope :on_page, -> (page_num) { page(page_num) }
|
14
14
|
|
15
15
|
validates :hash_id, presence: true, uniqueness: true
|
@@ -51,7 +51,7 @@ module Thredded
|
|
51
51
|
reads = reads_class.arel_table
|
52
52
|
joins(topics.join(reads, Arel::Nodes::OuterJoin)
|
53
53
|
.on(topics[:id].eq(reads[:postable_id]).and(reads[:user_id].eq(user.id))).join_sources)
|
54
|
-
.merge(reads_class.where(reads[:id].eq(nil).or(reads[:read_at].lt(topics[:
|
54
|
+
.merge(reads_class.where(reads[:id].eq(nil).or(reads[:read_at].lt(topics[:last_post_at]))))
|
55
55
|
end
|
56
56
|
|
57
57
|
private
|
@@ -20,6 +20,12 @@ module Thredded
|
|
20
20
|
|
21
21
|
validates :name, uniqueness: true, length: { maximum: 60 }, presence: true
|
22
22
|
validates :topics_count, numericality: true
|
23
|
+
validates :position, presence: true, on: :update
|
24
|
+
before_save :ensure_position, on: :create
|
25
|
+
|
26
|
+
def ensure_position
|
27
|
+
self.position ||= (created_at || Time.zone.now).to_i
|
28
|
+
end
|
23
29
|
|
24
30
|
has_many :categories, dependent: :destroy
|
25
31
|
has_many :user_messageboard_preferences, dependent: :destroy
|
@@ -31,7 +37,8 @@ module Thredded
|
|
31
37
|
has_many :user_details, through: :posts
|
32
38
|
has_many :messageboard_users,
|
33
39
|
inverse_of: :messageboard,
|
34
|
-
foreign_key: :thredded_messageboard_id
|
40
|
+
foreign_key: :thredded_messageboard_id,
|
41
|
+
dependent: :destroy
|
35
42
|
has_many :recently_active_user_details,
|
36
43
|
-> { merge(Thredded::MessageboardUser.recently_active) },
|
37
44
|
class_name: 'Thredded::UserDetail',
|
@@ -49,11 +56,32 @@ module Thredded
|
|
49
56
|
|
50
57
|
has_many :post_moderation_records, inverse_of: :messageboard, dependent: :delete_all
|
51
58
|
|
52
|
-
default_scope { where(closed: false)
|
53
|
-
|
59
|
+
default_scope { where(closed: false) }
|
60
|
+
# rubocop:disable Style/Lambda
|
54
61
|
scope :top_level_messageboards, -> { where(group: nil) }
|
55
62
|
scope :by_messageboard_group, ->(group) { where(group: group.id) }
|
56
|
-
|
63
|
+
scope :ordered, ->(order = Thredded.messageboards_order) {
|
64
|
+
case order
|
65
|
+
when :position
|
66
|
+
self
|
67
|
+
when :created_at_asc
|
68
|
+
ordered_by_created_at_asc
|
69
|
+
when :last_post_at_desc
|
70
|
+
ordered_by_last_post_at_desc
|
71
|
+
when :topics_count_desc
|
72
|
+
ordered_by_topics_count_desc
|
73
|
+
end.ordered_by_position.order(id: :asc)
|
74
|
+
}
|
75
|
+
scope :ordered_by_position, ->() { order(position: :asc) }
|
76
|
+
scope :ordered_by_created_at_asc, ->() { order(created_at: :asc) }
|
77
|
+
scope :ordered_by_last_post_at_desc, ->() {
|
78
|
+
joins('LEFT JOIN thredded_topics AS last_topics ON thredded_messageboards.last_topic_id = last_topics.id')
|
79
|
+
.order('COALESCE(last_topics.last_post_at, thredded_messageboards.created_at) DESC')
|
80
|
+
}
|
81
|
+
scope :ordered_by_topics_count_desc, ->() {
|
82
|
+
order(topics_count: :desc)
|
83
|
+
}
|
84
|
+
# rubocop:enable Style/Lambda
|
57
85
|
def last_user
|
58
86
|
last_topic.try(:last_user)
|
59
87
|
end
|
@@ -67,9 +95,8 @@ module Thredded
|
|
67
95
|
|
68
96
|
def update_last_topic!
|
69
97
|
return if destroyed?
|
70
|
-
|
71
|
-
|
72
|
-
)
|
98
|
+
self.last_topic = topics.order_recently_posted_first.moderation_state_visible_to_all.first
|
99
|
+
save! if last_topic_id_changed?
|
73
100
|
end
|
74
101
|
end
|
75
102
|
end
|
@@ -6,6 +6,13 @@ module Thredded
|
|
6
6
|
foreign_key: :messageboard_group_id,
|
7
7
|
dependent: :nullify
|
8
8
|
|
9
|
-
|
9
|
+
scope :ordered, -> { order(position: :asc, id: :asc) }
|
10
|
+
validates :name, presence: true, uniqueness: true
|
11
|
+
validates :position, presence: true, on: :update
|
12
|
+
before_save :ensure_position, on: :create
|
13
|
+
|
14
|
+
def ensure_position
|
15
|
+
self.position ||= Time.zone.now.to_i
|
16
|
+
end
|
10
17
|
end
|
11
18
|
end
|
@@ -39,7 +39,7 @@ module Thredded
|
|
39
39
|
post: post,
|
40
40
|
post_content: post.content,
|
41
41
|
post_user: post.user,
|
42
|
-
post_user_name: post.user.try(:
|
42
|
+
post_user_name: post.user.try(:thredded_display_name),
|
43
43
|
messageboard_id: post.messageboard_id,
|
44
44
|
)
|
45
45
|
end
|
@@ -47,7 +47,11 @@ module Thredded
|
|
47
47
|
else
|
48
48
|
self
|
49
49
|
end
|
50
|
-
postable.update_columns(
|
50
|
+
postable.update_columns(
|
51
|
+
last_user_id: last_post.user_id,
|
52
|
+
last_post_at: last_post.updated_at,
|
53
|
+
updated_at: Time.zone.now
|
54
|
+
)
|
51
55
|
end
|
52
56
|
end
|
53
57
|
end
|
@@ -67,11 +67,13 @@ module Thredded
|
|
67
67
|
class_name: 'Thredded::UserTopicFollow',
|
68
68
|
inverse_of: :topic,
|
69
69
|
dependent: :destroy
|
70
|
-
has_many :
|
70
|
+
has_many :followers,
|
71
71
|
class_name: Thredded.user_class,
|
72
72
|
source: :user,
|
73
73
|
through: :user_follows
|
74
74
|
|
75
|
+
delegate :name, to: :messageboard, prefix: true
|
76
|
+
|
75
77
|
after_commit :update_messageboard_last_topic, on: :update, if: -> { previous_changes.include?('moderation_state') }
|
76
78
|
after_update :update_last_user_and_time_from_last_post!, if: -> { previous_changes.include?('moderation_state') }
|
77
79
|
|
@@ -126,11 +128,11 @@ module Thredded
|
|
126
128
|
scope = scope.moderation_state_visible_to_all if moderation_state_visible_to_all?
|
127
129
|
last_post = scope.select(:user_id, :created_at).first
|
128
130
|
if last_post
|
129
|
-
update_columns(last_user_id: last_post.user_id,
|
131
|
+
update_columns(last_user_id: last_post.user_id, last_post_at: last_post.created_at, updated_at: Time.zone.now)
|
130
132
|
else
|
131
133
|
# Either a visible topic is left with no visible posts, or an invisible topic is left with no posts at all.
|
132
134
|
# This shouldn't happen in stock Thredded.
|
133
|
-
update_columns(last_user_id: nil, updated_at:
|
135
|
+
update_columns(last_user_id: nil, last_post_at: created_at, updated_at: Time.zone.now)
|
134
136
|
end
|
135
137
|
end
|
136
138
|
|
@@ -10,6 +10,8 @@ module Thredded
|
|
10
10
|
has_many :private_topics, class_name: 'Thredded::PrivateTopic', foreign_key: :user_id, primary_key: :user_id
|
11
11
|
has_many :posts, class_name: 'Thredded::Post', foreign_key: :user_id, primary_key: :user_id
|
12
12
|
has_many :private_posts, class_name: 'Thredded::PrivatePost', foreign_key: :user_id, primary_key: :user_id
|
13
|
+
has_many :messageboard_users, class_name: 'Thredded::MessageboardUser', foreign_key: :thredded_user_detail_id,
|
14
|
+
inverse_of: :user_detail, dependent: :destroy
|
13
15
|
|
14
16
|
scope :recently_active, -> { where(arel_table[:last_seen_at].gt(Thredded.active_user_threshold.ago)) }
|
15
17
|
|
@@ -62,8 +62,10 @@ module Thredded
|
|
62
62
|
false
|
63
63
|
end
|
64
64
|
|
65
|
-
def
|
66
|
-
|
65
|
+
def thredded_display_name
|
66
|
+
send(Thredded.user_display_name_method).presence || fail(<<-ERROR)
|
67
|
+
User.#{Thredded.user_display_name_method} must not be empty: please set make sure non nil or configure Thredded.user_display_name_method")
|
68
|
+
ERROR
|
67
69
|
end
|
68
70
|
end
|
69
71
|
end
|
@@ -13,8 +13,19 @@ module Thredded
|
|
13
13
|
alias_attribute :postable_id, :topic_id
|
14
14
|
alias_attribute :postable, :topic
|
15
15
|
|
16
|
+
# Creates a follow or finds the existing one.
|
17
|
+
#
|
18
|
+
# This method is safe to call concurrently from different processes. Lookup and creation happen in a transaction.
|
19
|
+
# If an ActiveRecord::RecordNotUnique error is raised, the find is retried.
|
20
|
+
#
|
21
|
+
# @return [Thredded::UserTopicFollow]
|
16
22
|
def self.create_unless_exists(user_id, topic_id, reason = :manual)
|
17
|
-
|
23
|
+
transaction(requires_new: true) do
|
24
|
+
create_with(reason: reason).find_or_create_by(user_id: user_id, topic_id: topic_id)
|
25
|
+
end
|
26
|
+
rescue ActiveRecord::RecordNotUnique
|
27
|
+
# The record has been created from another connection, retry to find it.
|
28
|
+
retry
|
18
29
|
end
|
19
30
|
end
|
20
31
|
end
|
@@ -4,6 +4,17 @@ module Thredded
|
|
4
4
|
class MessageboardGroupView
|
5
5
|
delegate :name, to: :@group, allow_nil: true
|
6
6
|
attr_reader :group, :messageboards
|
7
|
+
|
8
|
+
# @param messageboard_scope [ActiveRecord::Relation]
|
9
|
+
# @return [Array<MessageboardGroupView>]
|
10
|
+
def self.grouped(messageboard_scope)
|
11
|
+
messageboard_scope.preload(last_topic: [:last_user])
|
12
|
+
.eager_load(:group)
|
13
|
+
.order('coalesce(thredded_messageboard_groups.position, 0) asc, thredded_messageboard_groups.id asc').ordered
|
14
|
+
.group_by(&:group)
|
15
|
+
.map { |(group, messageboards)| MessageboardGroupView.new(group, messageboards) }
|
16
|
+
end
|
17
|
+
|
7
18
|
# @param group Thredded::MessageboardGroup
|
8
19
|
# @param messageboards [Thredded::TopicCommon]
|
9
20
|
def initialize(group, messageboards)
|
@@ -2,8 +2,8 @@
|
|
2
2
|
module Thredded
|
3
3
|
# A view model for Topic.
|
4
4
|
class TopicView < BaseTopicView
|
5
|
-
delegate :categories, :id, :blocked?, :last_moderation_record,
|
6
|
-
:last_post,
|
5
|
+
delegate :categories, :id, :blocked?, :last_moderation_record, :followers,
|
6
|
+
:last_post, :messageboard_id, :messageboard_name,
|
7
7
|
to: :@topic
|
8
8
|
|
9
9
|
# @param topic [TopicCommon]
|
@@ -31,6 +31,15 @@ module Thredded
|
|
31
31
|
].compact
|
32
32
|
end
|
33
33
|
|
34
|
+
# @return [Boolean] whether the topic is followed by the current user.
|
35
|
+
def followed?
|
36
|
+
@follow
|
37
|
+
end
|
38
|
+
|
39
|
+
def follow_reason
|
40
|
+
@follow.try(:reason)
|
41
|
+
end
|
42
|
+
|
34
43
|
def can_moderate?
|
35
44
|
@policy.moderate?
|
36
45
|
end
|
@@ -50,5 +59,9 @@ module Thredded
|
|
50
59
|
def unfollow_path
|
51
60
|
Thredded::UrlsHelper.unfollow_messageboard_topic_path(@topic.messageboard, @topic)
|
52
61
|
end
|
62
|
+
|
63
|
+
def messageboard_path
|
64
|
+
Thredded::UrlsHelper.messageboard_topics_path(@topic.messageboard)
|
65
|
+
end
|
53
66
|
end
|
54
67
|
end
|
@@ -14,8 +14,8 @@
|
|
14
14
|
<% if messageboard.last_topic %>
|
15
15
|
<p class="thredded--messageboard--byline">
|
16
16
|
<%= t 'thredded.messageboard.last_updated_by_html',
|
17
|
-
time_ago: time_ago(messageboard.last_topic.
|
18
|
-
user: messageboard.last_user %>
|
17
|
+
time_ago: time_ago(messageboard.last_topic.last_post_at),
|
18
|
+
user: messageboard.last_user.thredded_display_name %>
|
19
19
|
</p>
|
20
20
|
<% end %>
|
21
21
|
<% end %>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<%= render 'thredded/posts_common/header_with_user_and_topic',
|
4
4
|
post: post,
|
5
5
|
post_user_link: if post.user
|
6
|
-
link_to(post.user, user_moderation_path(post.user.id))
|
6
|
+
link_to(post.user.thredded_display_name, user_moderation_path(post.user.id))
|
7
7
|
else
|
8
8
|
content_tag :em, t('thredded.null_user_name')
|
9
9
|
end
|
@@ -28,7 +28,7 @@
|
|
28
28
|
<article class="thredded--post">
|
29
29
|
<% post_user_link = capture do %>
|
30
30
|
<% if record.post_user %>
|
31
|
-
<%= link_to record.post_user, user_moderation_path(record.post_user.id) %>
|
31
|
+
<%= link_to record.post_user.thredded_display_name, user_moderation_path(record.post_user.id) %>
|
32
32
|
<% else %>
|
33
33
|
<%= safe_join [record.post_user_name, content_tag(:em, t('thredded.null_user_name'))].compact, ', ' %>
|
34
34
|
<% end %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
<%= render 'nav' %>
|
8
8
|
<%= thredded_page do %>
|
9
9
|
<h1 class="thredded--moderation--user--title">
|
10
|
-
<%= image_tag Thredded.avatar_url.call(user), class: 'thredded--user--avatar' %><%= user %>
|
10
|
+
<%= image_tag Thredded.avatar_url.call(user), class: 'thredded--user--avatar' %><%= user.thredded_display_name %>
|
11
11
|
</h1>
|
12
12
|
<ul class="thredded--moderation--user--info">
|
13
13
|
<li><%= t 'thredded.users.user_since_html', time_ago: time_ago(user.created_at) %></li>
|
@@ -20,7 +20,7 @@
|
|
20
20
|
<% @users.each do |user| %>
|
21
21
|
<tr>
|
22
22
|
<td>
|
23
|
-
<%= link_to user, user_moderation_path(user.id), class: 'thredded--link' %>
|
23
|
+
<%= link_to user.thredded_display_name, user_moderation_path(user.id), class: 'thredded--link' %>
|
24
24
|
</td>
|
25
25
|
<td>
|
26
26
|
<%= render 'user_moderation_state', user: user %>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<hr />
|
4
4
|
|
5
5
|
<p>
|
6
|
-
This email was sent to you because <%= @topic.user %> included you in a
|
6
|
+
This email was sent to you because <%= @topic.user.thredded_display_name %> included you in a
|
7
7
|
private topic, "<%= link_to @topic.title, @topic %>".
|
8
8
|
<%= link_to 'Go here', @topic %> to view the conversation.
|
9
9
|
</p>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<% # as this is only sent on first post, doesn't need to define order %>
|
3
3
|
---
|
4
4
|
|
5
|
-
This email was sent to you because <%= @topic.user %>
|
5
|
+
This email was sent to you because <%= @topic.user.thredded_display_name %>
|
6
6
|
included you in the private topic "<%= @topic.title %>".
|
7
7
|
Go here to view the conversation:
|
8
8
|
<%= url_for @topic %>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<ul class="thredded--user-navigation<%= ' thredded--user-navigation-standalone' if Thredded.standalone_layout? %>">
|
3
3
|
<% if signed_in? && Thredded.standalone_layout? %>
|
4
4
|
<li class="thredded--user-navigation--profile thredded--user-navigation--item">
|
5
|
-
<%= link_to thredded_current_user, user_path(thredded_current_user) %>
|
5
|
+
<%= link_to thredded_current_user.thredded_display_name, user_path(thredded_current_user) %>
|
6
6
|
</li>
|
7
7
|
<% end %>
|
8
8
|
|