help_center 0.0.4 → 0.0.5
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/.github/FUNDING.yml +12 -12
- data/.gitignore +10 -10
- data/CHANGELOG.md +1 -1
- data/CODE_OF_CONDUCT.md +74 -74
- data/Gemfile +6 -6
- data/LICENSE.txt +21 -21
- data/README.md +164 -155
- data/Rakefile +10 -10
- data/app/assets/stylesheets/help_center.scss +139 -119
- data/app/controllers/help_center/application_controller.rb +37 -37
- data/app/controllers/help_center/notifications_controller.rb +19 -19
- data/app/controllers/help_center/support_categories_controller.rb +58 -17
- data/app/controllers/help_center/support_posts_controller.rb +72 -72
- data/app/controllers/help_center/support_threads_controller.rb +16 -6
- data/app/helpers/help_center/support_posts_helper.rb +29 -29
- data/app/helpers/help_center/support_threads_helper.rb +28 -28
- data/app/jobs/help_center/support_post_notification_job.rb +42 -42
- data/app/jobs/help_center/support_thread_notification_job.rb +40 -40
- data/app/mailers/help_center/user_mailer.rb +28 -28
- data/app/models/support_category.rb +13 -13
- data/app/models/support_post.rb +15 -15
- data/app/models/support_subscription.rb +19 -19
- data/app/models/support_thread.rb +85 -85
- data/app/views/help_center/support_categories/_form.html.erb +35 -0
- data/app/views/help_center/support_categories/_support_thread.html.erb +25 -0
- data/app/views/help_center/support_categories/edit.html.erb +7 -0
- data/app/views/help_center/support_categories/index.html.erb +19 -0
- data/app/views/help_center/support_categories/new.html.erb +5 -0
- data/app/views/help_center/support_categories/show.html.erb +20 -0
- data/app/views/help_center/support_threads/_form.html.erb +6 -4
- data/app/views/help_center/support_threads/edit.html.erb +7 -7
- data/app/views/help_center/support_threads/index.html.erb +1 -1
- data/app/views/help_center/support_threads/new.html.erb +5 -5
- data/app/views/help_center/support_threads/show.html.erb +42 -1
- data/app/views/layouts/help_center.html.erb +37 -13
- data/app/views/shared/_spacer.html.erb +1 -1
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/config/locales/en.yml +55 -52
- data/config/routes.rb +24 -24
- data/db/migrate/20170417012930_create_support_categories.rb +19 -19
- data/db/migrate/20170417012931_create_support_threads.rb +18 -18
- data/db/migrate/20170417012932_create_support_posts.rb +12 -12
- data/db/migrate/20170417012933_create_support_subscriptions.rb +11 -11
- data/help_center.gemspec +29 -29
- data/lib/generators/help_center/controllers_generator.rb +13 -13
- data/lib/generators/help_center/helpers_generator.rb +13 -13
- data/lib/generators/help_center/views_generator.rb +13 -13
- data/lib/help_center.rb +23 -24
- data/lib/help_center/engine.rb +10 -10
- data/lib/help_center/slack.rb +22 -22
- data/lib/help_center/support_user.rb +10 -10
- data/lib/help_center/version.rb +3 -3
- metadata +11 -8
- data/.travis.yml +0 -5
- data/app/views/help_center/support_threads/_article.html.erb +0 -32
- data/lib/help_center/will_paginate.rb +0 -53
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
class HelpCenter::SupportPostsController < HelpCenter::ApplicationController
|
|
2
|
-
before_action :authenticate_user!
|
|
3
|
-
before_action :set_support_thread
|
|
4
|
-
before_action :set_support_post, only: [:edit, :update, :destroy]
|
|
5
|
-
before_action :require_mod_or_author_for_post!, only: [:edit, :update, :destroy]
|
|
6
|
-
before_action :require_mod_or_author_for_thread!, only: [:solved, :unsolved]
|
|
7
|
-
|
|
8
|
-
def create
|
|
9
|
-
@support_post = @support_thread.support_posts.new(support_post_params)
|
|
10
|
-
@support_post.user_id = current_user.id
|
|
11
|
-
|
|
12
|
-
if @support_post.save
|
|
13
|
-
HelpCenter::SupportPostNotificationJob.perform_later(@support_post)
|
|
14
|
-
redirect_to help_center.support_thread_path(@support_thread, anchor: "support_post_#{@support_post.id}")
|
|
15
|
-
else
|
|
16
|
-
render template: "help_center/support_threads/show"
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def edit
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def update
|
|
24
|
-
if @support_post.update(support_post_params)
|
|
25
|
-
redirect_to help_center.support_thread_path(@support_thread)
|
|
26
|
-
else
|
|
27
|
-
render action: :edit
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def destroy
|
|
32
|
-
@support_post.destroy!
|
|
33
|
-
redirect_to help_center.support_thread_path(@support_thread)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def solved
|
|
37
|
-
@support_post = @support_thread.support_posts.find(params[:id])
|
|
38
|
-
|
|
39
|
-
@support_thread.support_posts.update_all(solved: false)
|
|
40
|
-
@support_post.update_column(:solved, true)
|
|
41
|
-
@support_thread.update_column(:solved, true)
|
|
42
|
-
|
|
43
|
-
redirect_to help_center.support_thread_path(@support_thread, anchor: ActionView::RecordIdentifier.dom_id(@support_post))
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def unsolved
|
|
47
|
-
@support_post = @support_thread.support_posts.find(params[:id])
|
|
48
|
-
|
|
49
|
-
@support_thread.support_posts.update_all(solved: false)
|
|
50
|
-
@support_thread.update_column(:solved, false)
|
|
51
|
-
|
|
52
|
-
redirect_to help_center.support_thread_path(@support_thread, anchor: ActionView::RecordIdentifier.dom_id(@support_post))
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
private
|
|
56
|
-
|
|
57
|
-
def set_support_thread
|
|
58
|
-
@support_thread = SupportThread.friendly.find(params[:support_thread_id])
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def set_support_post
|
|
62
|
-
if is_moderator?
|
|
63
|
-
@support_post = @support_thread.support_posts.find(params[:id])
|
|
64
|
-
else
|
|
65
|
-
@support_post = current_user.support_posts.find(params[:id])
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def support_post_params
|
|
70
|
-
params.require(:support_post).permit(:body)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
1
|
+
class HelpCenter::SupportPostsController < HelpCenter::ApplicationController
|
|
2
|
+
before_action :authenticate_user!
|
|
3
|
+
before_action :set_support_thread
|
|
4
|
+
before_action :set_support_post, only: [:edit, :update, :destroy]
|
|
5
|
+
before_action :require_mod_or_author_for_post!, only: [:edit, :update, :destroy]
|
|
6
|
+
before_action :require_mod_or_author_for_thread!, only: [:solved, :unsolved]
|
|
7
|
+
|
|
8
|
+
def create
|
|
9
|
+
@support_post = @support_thread.support_posts.new(support_post_params)
|
|
10
|
+
@support_post.user_id = current_user.id
|
|
11
|
+
|
|
12
|
+
if @support_post.save
|
|
13
|
+
HelpCenter::SupportPostNotificationJob.perform_later(@support_post)
|
|
14
|
+
redirect_to help_center.support_thread_path(@support_thread, anchor: "support_post_#{@support_post.id}")
|
|
15
|
+
else
|
|
16
|
+
render template: "help_center/support_threads/show"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def edit
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def update
|
|
24
|
+
if @support_post.update(support_post_params)
|
|
25
|
+
redirect_to help_center.support_thread_path(@support_thread)
|
|
26
|
+
else
|
|
27
|
+
render action: :edit
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def destroy
|
|
32
|
+
@support_post.destroy!
|
|
33
|
+
redirect_to help_center.support_thread_path(@support_thread)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def solved
|
|
37
|
+
@support_post = @support_thread.support_posts.find(params[:id])
|
|
38
|
+
|
|
39
|
+
@support_thread.support_posts.update_all(solved: false)
|
|
40
|
+
@support_post.update_column(:solved, true)
|
|
41
|
+
@support_thread.update_column(:solved, true)
|
|
42
|
+
|
|
43
|
+
redirect_to help_center.support_thread_path(@support_thread, anchor: ActionView::RecordIdentifier.dom_id(@support_post))
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def unsolved
|
|
47
|
+
@support_post = @support_thread.support_posts.find(params[:id])
|
|
48
|
+
|
|
49
|
+
@support_thread.support_posts.update_all(solved: false)
|
|
50
|
+
@support_thread.update_column(:solved, false)
|
|
51
|
+
|
|
52
|
+
redirect_to help_center.support_thread_path(@support_thread, anchor: ActionView::RecordIdentifier.dom_id(@support_post))
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
def set_support_thread
|
|
58
|
+
@support_thread = SupportThread.friendly.find(params[:support_thread_id])
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def set_support_post
|
|
62
|
+
if is_moderator?
|
|
63
|
+
@support_post = @support_thread.support_posts.find(params[:id])
|
|
64
|
+
else
|
|
65
|
+
@support_post = current_user.support_posts.find(params[:id])
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def support_post_params
|
|
70
|
+
params.require(:support_post).permit(:body)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -1,29 +1,34 @@
|
|
|
1
1
|
class HelpCenter::SupportThreadsController < HelpCenter::ApplicationController
|
|
2
2
|
before_action :authenticate_user!, only: [:mine, :participating, :new, :create]
|
|
3
|
-
before_action :set_support_thread, only: [:show, :edit, :update]
|
|
3
|
+
before_action :set_support_thread, only: [:show, :edit, :update, :destroy]
|
|
4
4
|
before_action :require_mod_or_author_for_thread!, only: [:edit, :update]
|
|
5
5
|
|
|
6
6
|
def index
|
|
7
|
-
@support_threads = SupportThread.pinned_first.sorted.includes(:user, :support_category)
|
|
7
|
+
@support_threads = SupportThread.pinned_first.sorted.includes(:user, :support_category)
|
|
8
|
+
@pagy, @records = pagy(@support_threads)
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def answered
|
|
11
|
-
@support_threads = SupportThread.solved.sorted.includes(:user, :support_category)
|
|
12
|
+
@support_threads = SupportThread.solved.sorted.includes(:user, :support_category)
|
|
13
|
+
@pagy, @records = pagy(@support_threads)
|
|
12
14
|
render action: :index
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
def unanswered
|
|
16
|
-
@support_threads = SupportThread.unsolved.sorted.includes(:user, :support_category)
|
|
18
|
+
@support_threads = SupportThread.unsolved.sorted.includes(:user, :support_category)
|
|
19
|
+
@pagy, @records = pagy(@support_threads)
|
|
17
20
|
render action: :index
|
|
18
21
|
end
|
|
19
22
|
|
|
20
23
|
def mine
|
|
21
|
-
@support_threads = SupportThread.where(user: current_user).sorted.includes(:user, :support_category)
|
|
24
|
+
@support_threads = SupportThread.where(user: current_user).sorted.includes(:user, :support_category)
|
|
25
|
+
@pagy, @records = pagy(@support_threads)
|
|
22
26
|
render action: :index
|
|
23
27
|
end
|
|
24
28
|
|
|
25
29
|
def participating
|
|
26
|
-
@support_threads = SupportThread.includes(:user, :support_category).joins(:support_posts).where(support_posts: { user_id: current_user.id }).distinct(support_posts: :id).sorted
|
|
30
|
+
@support_threads = SupportThread.includes(:user, :support_category).joins(:support_posts).where(support_posts: { user_id: current_user.id }).distinct(support_posts: :id).sorted
|
|
31
|
+
@pagy, @records = pagy(@support_threads)
|
|
27
32
|
render action: :index
|
|
28
33
|
end
|
|
29
34
|
|
|
@@ -60,6 +65,11 @@ class HelpCenter::SupportThreadsController < HelpCenter::ApplicationController
|
|
|
60
65
|
end
|
|
61
66
|
end
|
|
62
67
|
|
|
68
|
+
def destroy
|
|
69
|
+
@support_thread.destroy
|
|
70
|
+
redirect_to help_center.support_category_path(@support_thread.support_category), notice: I18n.t('successfully_deleted')
|
|
71
|
+
end
|
|
72
|
+
|
|
63
73
|
private
|
|
64
74
|
|
|
65
75
|
def set_support_thread
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
module HelpCenter::SupportPostsHelper
|
|
2
|
-
# Override this to use avatars from other places than Gravatar
|
|
3
|
-
def avatar_tag(email)
|
|
4
|
-
gravatar_image_tag(email, gravatar: { size: 40 }, class: "rounded avatar")
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
def support_category_link(category)
|
|
8
|
-
link_to category.name, help_center.
|
|
9
|
-
style: "color: #{category.color}"
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
# Override this method to provide your own content formatting like Markdown
|
|
13
|
-
def formatted_content(text)
|
|
14
|
-
simple_format(text)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def support_post_classes(support_post)
|
|
18
|
-
klasses = ["support-post", "card", "mb-3"]
|
|
19
|
-
klasses << "solved" if support_post.solved?
|
|
20
|
-
klasses << "original-poster" if support_post.user == @support_thread.user
|
|
21
|
-
klasses
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def support_user_badge(user)
|
|
25
|
-
if user.respond_to?(:moderator) && user.moderator?
|
|
26
|
-
content_tag :span, "Mod", class: "badge badge-default"
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
1
|
+
module HelpCenter::SupportPostsHelper
|
|
2
|
+
# Override this to use avatars from other places than Gravatar
|
|
3
|
+
def avatar_tag(email)
|
|
4
|
+
gravatar_image_tag(email, gravatar: { size: 40 }, class: "rounded avatar")
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def support_category_link(category)
|
|
8
|
+
link_to category.name, help_center.support_category_path(category),
|
|
9
|
+
style: "color: #{category.color}"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Override this method to provide your own content formatting like Markdown
|
|
13
|
+
def formatted_content(text)
|
|
14
|
+
simple_format(text)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def support_post_classes(support_post)
|
|
18
|
+
klasses = ["support-post", "card", "mb-3"]
|
|
19
|
+
klasses << "solved" if support_post.solved?
|
|
20
|
+
klasses << "original-poster" if support_post.user == @support_thread.user
|
|
21
|
+
klasses
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def support_user_badge(user)
|
|
25
|
+
if user.respond_to?(:moderator) && user.moderator?
|
|
26
|
+
content_tag :span, "Mod", class: "badge badge-default"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
module HelpCenter::SupportThreadsHelper
|
|
2
|
-
# Used for flagging links in the navbar as active
|
|
3
|
-
def support_link_to(path, opts={}, &block)
|
|
4
|
-
link_to path, class: support_link_class(path, opts), &block
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
def support_link_class(matches, opts={})
|
|
8
|
-
case matches
|
|
9
|
-
when Array
|
|
10
|
-
"active" if matches.any?{ |m| request.path.starts_with?(m) }
|
|
11
|
-
when String
|
|
12
|
-
"active" if opts.fetch(:exact, false) ? request.path == matches : request.path.starts_with?(matches)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# A nice hack to manipulate the layout so we can have sub-layouts
|
|
17
|
-
# without any changes in the user's application.
|
|
18
|
-
#
|
|
19
|
-
# We use this for rendering the sidebar layout for all the support pages
|
|
20
|
-
#
|
|
21
|
-
# https://mattbrictson.com/easier-nested-layouts-in-rails
|
|
22
|
-
#
|
|
23
|
-
def parent_layout(layout)
|
|
24
|
-
@view_flow.set(:layout, output_buffer)
|
|
25
|
-
output = render(file: "layouts/#{layout}")
|
|
26
|
-
self.output_buffer = ActionView::OutputBuffer.new(output)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
1
|
+
module HelpCenter::SupportThreadsHelper
|
|
2
|
+
# Used for flagging links in the navbar as active
|
|
3
|
+
def support_link_to(path, opts={}, &block)
|
|
4
|
+
link_to path, class: support_link_class(path, opts), &block
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def support_link_class(matches, opts={})
|
|
8
|
+
case matches
|
|
9
|
+
when Array
|
|
10
|
+
"active" if matches.any?{ |m| request.path.starts_with?(m) }
|
|
11
|
+
when String
|
|
12
|
+
"active" if opts.fetch(:exact, false) ? request.path == matches : request.path.starts_with?(matches)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# A nice hack to manipulate the layout so we can have sub-layouts
|
|
17
|
+
# without any changes in the user's application.
|
|
18
|
+
#
|
|
19
|
+
# We use this for rendering the sidebar layout for all the support pages
|
|
20
|
+
#
|
|
21
|
+
# https://mattbrictson.com/easier-nested-layouts-in-rails
|
|
22
|
+
#
|
|
23
|
+
def parent_layout(layout)
|
|
24
|
+
@view_flow.set(:layout, output_buffer)
|
|
25
|
+
output = render(file: "layouts/#{layout}")
|
|
26
|
+
self.output_buffer = ActionView::OutputBuffer.new(output)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
class HelpCenter::SupportPostNotificationJob < ApplicationJob
|
|
2
|
-
include HelpCenter::Engine.routes.url_helpers
|
|
3
|
-
|
|
4
|
-
def perform(support_post)
|
|
5
|
-
send_emails(support_post) if HelpCenter.send_email_notifications
|
|
6
|
-
send_webhook(support_post) if HelpCenter.send_slack_notifications
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def send_emails(support_post)
|
|
10
|
-
support_thread = support_post.support_thread
|
|
11
|
-
users = support_thread.subscribed_users - [support_post.user]
|
|
12
|
-
users.each do |user|
|
|
13
|
-
HelpCenter::UserMailer.new_post(support_post, user).deliver_later
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def send_webhook(support_post)
|
|
18
|
-
slack_webhook_url = Rails.application.secrets.help_center_slack_url
|
|
19
|
-
return if slack_webhook_url.blank?
|
|
20
|
-
|
|
21
|
-
support_thread = support_post.support_thread
|
|
22
|
-
payload = {
|
|
23
|
-
fallback: "#{support_post.user.name} replied to <#{support_thread_url(support_thread, anchor: ActionView::RecordIdentifier.dom_id(support_post))}|#{support_thread.title}>",
|
|
24
|
-
pretext: "#{support_post.user.name} replied to <#{support_thread_url(support_thread, anchor: ActionView::RecordIdentifier.dom_id(support_post))}|#{support_thread.title}>",
|
|
25
|
-
fields: [
|
|
26
|
-
{
|
|
27
|
-
title: "Thread",
|
|
28
|
-
value: support_thread.title,
|
|
29
|
-
short: true
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
title: "Posted By",
|
|
33
|
-
value: support_post.user.name,
|
|
34
|
-
short: true,
|
|
35
|
-
},
|
|
36
|
-
],
|
|
37
|
-
ts: support_post.created_at.to_i
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
HelpCenter::Slack.new(slack_webhook_url).post(payload)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
1
|
+
class HelpCenter::SupportPostNotificationJob < ApplicationJob
|
|
2
|
+
include HelpCenter::Engine.routes.url_helpers
|
|
3
|
+
|
|
4
|
+
def perform(support_post)
|
|
5
|
+
send_emails(support_post) if HelpCenter.send_email_notifications
|
|
6
|
+
send_webhook(support_post) if HelpCenter.send_slack_notifications
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def send_emails(support_post)
|
|
10
|
+
support_thread = support_post.support_thread
|
|
11
|
+
users = support_thread.subscribed_users - [support_post.user]
|
|
12
|
+
users.each do |user|
|
|
13
|
+
HelpCenter::UserMailer.new_post(support_post, user).deliver_later
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def send_webhook(support_post)
|
|
18
|
+
slack_webhook_url = Rails.application.secrets.help_center_slack_url
|
|
19
|
+
return if slack_webhook_url.blank?
|
|
20
|
+
|
|
21
|
+
support_thread = support_post.support_thread
|
|
22
|
+
payload = {
|
|
23
|
+
fallback: "#{support_post.user.name} replied to <#{support_thread_url(support_thread, anchor: ActionView::RecordIdentifier.dom_id(support_post))}|#{support_thread.title}>",
|
|
24
|
+
pretext: "#{support_post.user.name} replied to <#{support_thread_url(support_thread, anchor: ActionView::RecordIdentifier.dom_id(support_post))}|#{support_thread.title}>",
|
|
25
|
+
fields: [
|
|
26
|
+
{
|
|
27
|
+
title: "Thread",
|
|
28
|
+
value: support_thread.title,
|
|
29
|
+
short: true
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
title: "Posted By",
|
|
33
|
+
value: support_post.user.name,
|
|
34
|
+
short: true,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
ts: support_post.created_at.to_i
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
HelpCenter::Slack.new(slack_webhook_url).post(payload)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
class HelpCenter::SupportThreadNotificationJob < ApplicationJob
|
|
2
|
-
include HelpCenter::Engine.routes.url_helpers
|
|
3
|
-
|
|
4
|
-
def perform(support_thread)
|
|
5
|
-
send_emails(support_thread) if HelpCenter.send_email_notifications
|
|
6
|
-
send_webhook(support_thread) if HelpCenter.send_slack_notifications
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def send_emails(support_thread)
|
|
10
|
-
support_thread.notify_users.each do |user|
|
|
11
|
-
HelpCenter::UserMailer.new_thread(support_thread, user).deliver_later
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def send_webhook(support_thread)
|
|
16
|
-
slack_webhook_url = Rails.application.secrets.simple_discussion_slack_url
|
|
17
|
-
return if slack_webhook_url.blank?
|
|
18
|
-
|
|
19
|
-
support_post = support_thread.support_posts.first
|
|
20
|
-
payload = {
|
|
21
|
-
fallback: "A new discussion was started: <#{support_thread_url(support_thread, anchor: ActionView::RecordIdentifier.dom_id(support_posts))}|#{support_thread.title}>",
|
|
22
|
-
pretext: "A new discussion was started: <#{support_thread_url(support_thread, anchor: ActionView::RecordIdentifier.dom_id(support_posts))}|#{support_thread.title}>",
|
|
23
|
-
fields: [
|
|
24
|
-
{
|
|
25
|
-
title: "Thread",
|
|
26
|
-
value: support_thread.title,
|
|
27
|
-
short: true
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
title: "Posted By",
|
|
31
|
-
value: support_post.user.name,
|
|
32
|
-
short: true,
|
|
33
|
-
},
|
|
34
|
-
],
|
|
35
|
-
ts: support_post.created_at.to_i
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
HelpCenter::Slack.new(slack_webhook_url).post(payload)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
1
|
+
class HelpCenter::SupportThreadNotificationJob < ApplicationJob
|
|
2
|
+
include HelpCenter::Engine.routes.url_helpers
|
|
3
|
+
|
|
4
|
+
def perform(support_thread)
|
|
5
|
+
send_emails(support_thread) if HelpCenter.send_email_notifications
|
|
6
|
+
send_webhook(support_thread) if HelpCenter.send_slack_notifications
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def send_emails(support_thread)
|
|
10
|
+
support_thread.notify_users.each do |user|
|
|
11
|
+
HelpCenter::UserMailer.new_thread(support_thread, user).deliver_later
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def send_webhook(support_thread)
|
|
16
|
+
slack_webhook_url = Rails.application.secrets.simple_discussion_slack_url
|
|
17
|
+
return if slack_webhook_url.blank?
|
|
18
|
+
|
|
19
|
+
support_post = support_thread.support_posts.first
|
|
20
|
+
payload = {
|
|
21
|
+
fallback: "A new discussion was started: <#{support_thread_url(support_thread, anchor: ActionView::RecordIdentifier.dom_id(support_posts))}|#{support_thread.title}>",
|
|
22
|
+
pretext: "A new discussion was started: <#{support_thread_url(support_thread, anchor: ActionView::RecordIdentifier.dom_id(support_posts))}|#{support_thread.title}>",
|
|
23
|
+
fields: [
|
|
24
|
+
{
|
|
25
|
+
title: "Thread",
|
|
26
|
+
value: support_thread.title,
|
|
27
|
+
short: true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: "Posted By",
|
|
31
|
+
value: support_post.user.name,
|
|
32
|
+
short: true,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
ts: support_post.created_at.to_i
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
HelpCenter::Slack.new(slack_webhook_url).post(payload)
|
|
39
|
+
end
|
|
40
|
+
end
|