help_center 0.0.5 → 0.0.6
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/CHANGELOG.md +30 -0
- data/LICENSE.txt +21 -21
- data/README.md +168 -164
- data/Rakefile +10 -10
- data/app/assets/stylesheets/help_center.scss +140 -139
- 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 -58
- data/app/controllers/help_center/support_posts_controller.rb +72 -72
- data/app/controllers/help_center/support_threads_controller.rb +82 -82
- 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 +16 -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 +39 -35
- data/app/views/help_center/support_categories/_support_thread.html.erb +25 -25
- data/app/views/help_center/support_categories/edit.html.erb +7 -7
- data/app/views/help_center/support_categories/index.html.erb +19 -19
- data/app/views/help_center/support_categories/new.html.erb +5 -5
- data/app/views/help_center/support_categories/show.html.erb +19 -20
- data/app/views/help_center/support_posts/_form.html.erb +47 -47
- data/app/views/help_center/support_posts/_support_post.html.erb +57 -57
- data/app/views/help_center/support_posts/edit.html.erb +23 -23
- data/app/views/help_center/support_threads/_form.html.erb +49 -49
- data/app/views/help_center/support_threads/_support_thread.html.erb +25 -25
- data/app/views/help_center/support_threads/edit.html.erb +7 -7
- data/app/views/help_center/support_threads/index.html.erb +19 -19
- data/app/views/help_center/support_threads/new.html.erb +5 -5
- data/app/views/help_center/support_threads/show.html.erb +29 -42
- data/app/views/help_center/user_mailer/new_post.html.erb +9 -9
- data/app/views/help_center/user_mailer/new_thread.html.erb +9 -9
- data/app/views/layouts/help_center.html.erb +130 -128
- data/app/views/shared/_category_actions.html.erb +16 -0
- data/app/views/shared/_spacer.html.erb +1 -1
- data/app/views/shared/_thread_actions.html.erb +16 -0
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/config/locales/en.yml +56 -55
- 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/20170417012933_create_support_subscriptions.rb +11 -11
- data/help_center.gemspec +27 -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 -23
- 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 +7 -19
- data/help_center-0.0.1.gem +0 -0
@@ -1,37 +1,37 @@
|
|
1
|
-
class HelpCenter::ApplicationController < ::ApplicationController
|
2
|
-
layout "help_center"
|
3
|
-
|
4
|
-
def page_number
|
5
|
-
page = params.fetch(:page, '').gsub(/[^0-9]/, '').to_i
|
6
|
-
page = "1" if page.zero?
|
7
|
-
page
|
8
|
-
end
|
9
|
-
|
10
|
-
def is_moderator_or_owner?(object)
|
11
|
-
is_moderator?
|
12
|
-
end
|
13
|
-
helper_method :is_moderator_or_owner?
|
14
|
-
|
15
|
-
def is_moderator?
|
16
|
-
current_user.respond_to?(:moderator) && current_user.moderator? || current_user.respond_to?(:admin) && current_user.admin?
|
17
|
-
end
|
18
|
-
helper_method :is_moderator?
|
19
|
-
|
20
|
-
def require_mod_or_author_for_post!
|
21
|
-
unless is_moderator_or_owner?(@support_post)
|
22
|
-
redirect_to_root
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def require_mod_or_author_for_thread!
|
27
|
-
unless is_moderator_or_owner?(@support_thread)
|
28
|
-
redirect_to_root
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def redirect_to_root
|
35
|
-
redirect_to help_center.root_path
|
36
|
-
end
|
37
|
-
end
|
1
|
+
class HelpCenter::ApplicationController < ::ApplicationController
|
2
|
+
layout "help_center"
|
3
|
+
|
4
|
+
def page_number
|
5
|
+
page = params.fetch(:page, '').gsub(/[^0-9]/, '').to_i
|
6
|
+
page = "1" if page.zero?
|
7
|
+
page
|
8
|
+
end
|
9
|
+
|
10
|
+
def is_moderator_or_owner?(object)
|
11
|
+
is_moderator?
|
12
|
+
end
|
13
|
+
helper_method :is_moderator_or_owner?
|
14
|
+
|
15
|
+
def is_moderator?
|
16
|
+
current_user.respond_to?(:moderator) && current_user.moderator? || current_user.respond_to?(:admin) && current_user.admin?
|
17
|
+
end
|
18
|
+
helper_method :is_moderator?
|
19
|
+
|
20
|
+
def require_mod_or_author_for_post!
|
21
|
+
unless is_moderator_or_owner?(@support_post)
|
22
|
+
redirect_to_root
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def require_mod_or_author_for_thread!
|
27
|
+
unless is_moderator_or_owner?(@support_thread)
|
28
|
+
redirect_to_root
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def redirect_to_root
|
35
|
+
redirect_to help_center.root_path
|
36
|
+
end
|
37
|
+
end
|
@@ -1,19 +1,19 @@
|
|
1
|
-
class HelpCenter::NotificationsController < HelpCenter::ApplicationController
|
2
|
-
before_action :authenticate_user!
|
3
|
-
before_action :set_support_thread
|
4
|
-
|
5
|
-
def create
|
6
|
-
@support_thread.toggle_subscription(current_user)
|
7
|
-
redirect_to help_center.support_thread_path(@support_thread)
|
8
|
-
end
|
9
|
-
|
10
|
-
def show
|
11
|
-
redirect_to help_center.support_thread_path(@support_thread)
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def set_support_thread
|
17
|
-
@support_thread = SupportThread.friendly.find(params[:support_thread_id])
|
18
|
-
end
|
19
|
-
end
|
1
|
+
class HelpCenter::NotificationsController < HelpCenter::ApplicationController
|
2
|
+
before_action :authenticate_user!
|
3
|
+
before_action :set_support_thread
|
4
|
+
|
5
|
+
def create
|
6
|
+
@support_thread.toggle_subscription(current_user)
|
7
|
+
redirect_to help_center.support_thread_path(@support_thread)
|
8
|
+
end
|
9
|
+
|
10
|
+
def show
|
11
|
+
redirect_to help_center.support_thread_path(@support_thread)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def set_support_thread
|
17
|
+
@support_thread = SupportThread.friendly.find(params[:support_thread_id])
|
18
|
+
end
|
19
|
+
end
|
@@ -1,58 +1,58 @@
|
|
1
|
-
class HelpCenter::SupportCategoriesController < HelpCenter::ApplicationController
|
2
|
-
before_action :authenticate_user!, only: [:edit, :update, :destroy]
|
3
|
-
before_action :set_category, only: [:index, :show, :edit, :update, :destroy]
|
4
|
-
before_action :require_mod_or_author_for_thread!, only: [:edit, :update, :destroy]
|
5
|
-
|
6
|
-
|
7
|
-
def index
|
8
|
-
@support_threads = SupportThread.where(support_category: @category) if @category.present?
|
9
|
-
@support_threads = @support_threads.pinned_first.sorted.includes(:user, :support_category)
|
10
|
-
@pagy, @records = pagy(@support_threads)
|
11
|
-
render "help_center/support_threads/index"
|
12
|
-
end
|
13
|
-
|
14
|
-
def new
|
15
|
-
@category = SupportCategory.new
|
16
|
-
end
|
17
|
-
|
18
|
-
def show
|
19
|
-
end
|
20
|
-
|
21
|
-
def create
|
22
|
-
@category = SupportCategory.new(support_category_params)
|
23
|
-
|
24
|
-
if @category.save
|
25
|
-
redirect_to help_center.support_threads_path
|
26
|
-
else
|
27
|
-
render action: :new
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def edit
|
32
|
-
end
|
33
|
-
|
34
|
-
def update
|
35
|
-
if @category.update(support_category_params)
|
36
|
-
redirect_to help_center.support_category_path(@category), notice: I18n.t('your_changes_were_saved')
|
37
|
-
else
|
38
|
-
render action: :edit
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def destroy
|
43
|
-
@category.destroy
|
44
|
-
redirect_to help_center.support_threads_path, notice: I18n.t('successfully_deleted')
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def set_category
|
50
|
-
@category = SupportCategory.friendly.find(params[:id])
|
51
|
-
rescue ActiveRecord::RecordNotFound
|
52
|
-
redirect_to help_center.support_threads_path
|
53
|
-
end
|
54
|
-
|
55
|
-
def support_category_params
|
56
|
-
params.require(:support_category).permit(:name, :color, :position)
|
57
|
-
end
|
58
|
-
end
|
1
|
+
class HelpCenter::SupportCategoriesController < HelpCenter::ApplicationController
|
2
|
+
before_action :authenticate_user!, only: [:edit, :update, :destroy]
|
3
|
+
before_action :set_category, only: [:index, :show, :edit, :update, :destroy]
|
4
|
+
before_action :require_mod_or_author_for_thread!, only: [:edit, :update, :destroy]
|
5
|
+
|
6
|
+
|
7
|
+
def index
|
8
|
+
@support_threads = SupportThread.where(support_category: @category) if @category.present?
|
9
|
+
@support_threads = @support_threads.pinned_first.sorted.includes(:user, :support_category)
|
10
|
+
@pagy, @records = pagy(@support_threads)
|
11
|
+
render "help_center/support_threads/index"
|
12
|
+
end
|
13
|
+
|
14
|
+
def new
|
15
|
+
@category = SupportCategory.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def show
|
19
|
+
end
|
20
|
+
|
21
|
+
def create
|
22
|
+
@category = SupportCategory.new(support_category_params)
|
23
|
+
|
24
|
+
if @category.save
|
25
|
+
redirect_to help_center.support_threads_path
|
26
|
+
else
|
27
|
+
render action: :new
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def edit
|
32
|
+
end
|
33
|
+
|
34
|
+
def update
|
35
|
+
if @category.update(support_category_params)
|
36
|
+
redirect_to help_center.support_category_path(@category), notice: I18n.t('your_changes_were_saved')
|
37
|
+
else
|
38
|
+
render action: :edit
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def destroy
|
43
|
+
@category.destroy
|
44
|
+
redirect_to help_center.support_threads_path, notice: I18n.t('successfully_deleted')
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def set_category
|
50
|
+
@category = SupportCategory.friendly.find(params[:id])
|
51
|
+
rescue ActiveRecord::RecordNotFound
|
52
|
+
redirect_to help_center.support_threads_path
|
53
|
+
end
|
54
|
+
|
55
|
+
def support_category_params
|
56
|
+
params.require(:support_category).permit(:name, :color, :position)
|
57
|
+
end
|
58
|
+
end
|
@@ -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,82 +1,82 @@
|
|
1
|
-
class HelpCenter::SupportThreadsController < HelpCenter::ApplicationController
|
2
|
-
before_action :authenticate_user!, only: [:mine, :participating, :new, :create]
|
3
|
-
before_action :set_support_thread, only: [:show, :edit, :update, :destroy]
|
4
|
-
before_action :require_mod_or_author_for_thread!, only: [:edit, :update]
|
5
|
-
|
6
|
-
def index
|
7
|
-
@support_threads = SupportThread.pinned_first.sorted.includes(:user, :support_category)
|
8
|
-
@pagy, @records = pagy(@support_threads)
|
9
|
-
end
|
10
|
-
|
11
|
-
def answered
|
12
|
-
@support_threads = SupportThread.solved.sorted.includes(:user, :support_category)
|
13
|
-
@pagy, @records = pagy(@support_threads)
|
14
|
-
render action: :index
|
15
|
-
end
|
16
|
-
|
17
|
-
def unanswered
|
18
|
-
@support_threads = SupportThread.unsolved.sorted.includes(:user, :support_category)
|
19
|
-
@pagy, @records = pagy(@support_threads)
|
20
|
-
render action: :index
|
21
|
-
end
|
22
|
-
|
23
|
-
def mine
|
24
|
-
@support_threads = SupportThread.where(user: current_user).sorted.includes(:user, :support_category)
|
25
|
-
@pagy, @records = pagy(@support_threads)
|
26
|
-
render action: :index
|
27
|
-
end
|
28
|
-
|
29
|
-
def participating
|
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)
|
32
|
-
render action: :index
|
33
|
-
end
|
34
|
-
|
35
|
-
def show
|
36
|
-
@support_post = SupportPost.new
|
37
|
-
@support_post.user = current_user
|
38
|
-
end
|
39
|
-
|
40
|
-
def new
|
41
|
-
@support_thread = SupportThread.new
|
42
|
-
@support_thread.support_posts.new
|
43
|
-
end
|
44
|
-
|
45
|
-
def create
|
46
|
-
@support_thread = current_user.support_threads.new(support_thread_params)
|
47
|
-
@support_thread.support_posts.each{ |post| post.user_id = current_user.id }
|
48
|
-
|
49
|
-
if @support_thread.save
|
50
|
-
HelpCenter::SupportThreadNotificationJob.perform_later(@support_thread)
|
51
|
-
redirect_to help_center.support_thread_path(@support_thread)
|
52
|
-
else
|
53
|
-
render action: :new
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def edit
|
58
|
-
end
|
59
|
-
|
60
|
-
def update
|
61
|
-
if @support_thread.update(support_thread_params)
|
62
|
-
redirect_to help_center.support_thread_path(@support_thread), notice: I18n.t('your_changes_were_saved')
|
63
|
-
else
|
64
|
-
render action: :edit
|
65
|
-
end
|
66
|
-
end
|
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
|
-
|
73
|
-
private
|
74
|
-
|
75
|
-
def set_support_thread
|
76
|
-
@support_thread = SupportThread.friendly.find(params[:id])
|
77
|
-
end
|
78
|
-
|
79
|
-
def support_thread_params
|
80
|
-
params.require(:support_thread).permit(:title, :content, :position, :support_category_id, support_posts_attributes: [:body])
|
81
|
-
end
|
82
|
-
end
|
1
|
+
class HelpCenter::SupportThreadsController < HelpCenter::ApplicationController
|
2
|
+
before_action :authenticate_user!, only: [:mine, :participating, :new, :create]
|
3
|
+
before_action :set_support_thread, only: [:show, :edit, :update, :destroy]
|
4
|
+
before_action :require_mod_or_author_for_thread!, only: [:edit, :update]
|
5
|
+
|
6
|
+
def index
|
7
|
+
@support_threads = SupportThread.pinned_first.sorted.includes(:user, :support_category)
|
8
|
+
@pagy, @records = pagy(@support_threads)
|
9
|
+
end
|
10
|
+
|
11
|
+
def answered
|
12
|
+
@support_threads = SupportThread.solved.sorted.includes(:user, :support_category)
|
13
|
+
@pagy, @records = pagy(@support_threads)
|
14
|
+
render action: :index
|
15
|
+
end
|
16
|
+
|
17
|
+
def unanswered
|
18
|
+
@support_threads = SupportThread.unsolved.sorted.includes(:user, :support_category)
|
19
|
+
@pagy, @records = pagy(@support_threads)
|
20
|
+
render action: :index
|
21
|
+
end
|
22
|
+
|
23
|
+
def mine
|
24
|
+
@support_threads = SupportThread.where(user: current_user).sorted.includes(:user, :support_category)
|
25
|
+
@pagy, @records = pagy(@support_threads)
|
26
|
+
render action: :index
|
27
|
+
end
|
28
|
+
|
29
|
+
def participating
|
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)
|
32
|
+
render action: :index
|
33
|
+
end
|
34
|
+
|
35
|
+
def show
|
36
|
+
@support_post = SupportPost.new
|
37
|
+
@support_post.user = current_user
|
38
|
+
end
|
39
|
+
|
40
|
+
def new
|
41
|
+
@support_thread = SupportThread.new
|
42
|
+
@support_thread.support_posts.new
|
43
|
+
end
|
44
|
+
|
45
|
+
def create
|
46
|
+
@support_thread = current_user.support_threads.new(support_thread_params)
|
47
|
+
@support_thread.support_posts.each{ |post| post.user_id = current_user.id }
|
48
|
+
|
49
|
+
if @support_thread.save
|
50
|
+
HelpCenter::SupportThreadNotificationJob.perform_later(@support_thread)
|
51
|
+
redirect_to help_center.support_thread_path(@support_thread)
|
52
|
+
else
|
53
|
+
render action: :new
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def edit
|
58
|
+
end
|
59
|
+
|
60
|
+
def update
|
61
|
+
if @support_thread.update(support_thread_params)
|
62
|
+
redirect_to help_center.support_thread_path(@support_thread), notice: I18n.t('your_changes_were_saved')
|
63
|
+
else
|
64
|
+
render action: :edit
|
65
|
+
end
|
66
|
+
end
|
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
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
def set_support_thread
|
76
|
+
@support_thread = SupportThread.friendly.find(params[:id])
|
77
|
+
end
|
78
|
+
|
79
|
+
def support_thread_params
|
80
|
+
params.require(:support_thread).permit(:title, :content, :position, :support_category_id, support_posts_attributes: [:body])
|
81
|
+
end
|
82
|
+
end
|