From 76e3b44cf55da3f268328764f4cdaf6a5337a951 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 15 Jun 2015 14:24:49 +1000 Subject: [PATCH] FEATURE: add notification when an answer is accepted Cleanup terminology (use solved vs accepted-answer) Cleanup styling, get rid of green box --- README.md | 3 ++ .../solved-settings.hbs | 2 +- .../extend-for-solved-button.js.es6 | 2 +- assets/stylesheets/solutions.scss | 19 +++++++++---- config/locales/client.en.yml | 3 +- config/locales/client.zh_CN.yml | 2 +- plugin.rb | 28 ++++++++++++++----- 7 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..6fe154c --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +## Discourse Solved + +Provides a solved button on designated categories diff --git a/assets/javascripts/discourse/connectors/category-custom-settings/solved-settings.hbs b/assets/javascripts/discourse/connectors/category-custom-settings/solved-settings.hbs index 65513ca..b1ec846 100644 --- a/assets/javascripts/discourse/connectors/category-custom-settings/solved-settings.hbs +++ b/assets/javascripts/discourse/connectors/category-custom-settings/solved-settings.hbs @@ -2,7 +2,7 @@
diff --git a/assets/javascripts/discourse/initializers/extend-for-solved-button.js.es6 b/assets/javascripts/discourse/initializers/extend-for-solved-button.js.es6 index 01e7a81..da80c10 100644 --- a/assets/javascripts/discourse/initializers/extend-for-solved-button.js.es6 +++ b/assets/javascripts/discourse/initializers/extend-for-solved-button.js.es6 @@ -29,7 +29,7 @@ export default { return ""; } - return I18n.t("accepted_answer.accepted_html", { + return I18n.t("solved.accepted_html", { username_lower: username.toLowerCase(), username: username, post_path: this.get('url') + "/" + postNumber, diff --git a/assets/stylesheets/solutions.scss b/assets/stylesheets/solutions.scss index 469246a..f916aee 100644 --- a/assets/stylesheets/solutions.scss +++ b/assets/stylesheets/solutions.scss @@ -7,10 +7,17 @@ // background-color: #E9FFE0; } -.cooked .solved { - margin-top: 20px; - margin-bottom: 0px; - padding: 4px 10px; - border: 1px solid #ddd; - background-color: #E9FFE0; +.mobile-view .cooked .solved { + position: static; +} + +.cooked .solved { + position: absolute; + bottom: -10px; + z-index: 1000; + // margin-top: 20px; + // margin-bottom: 0px; + // padding: 4px 0px; + //border-top: 1px solid #ddd; + //background-color: #E9FFE0; } diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 98f6094..d8afdaf 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1,8 +1,9 @@ en: js: - accepted_answer: + solved: allow_accepted_answers: "Allow users to accept answers" accept_answer: "Accept answer" unaccept_answer: "Unaccept answer" accepted_answer: "Accepted answer" accepted_html: " Solved by {{username}} in post #{{post_number}}" + accepted_notification: "

{{username}} {{description}}

" diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml index 3e8310a..d3c69ff 100644 --- a/config/locales/client.zh_CN.yml +++ b/config/locales/client.zh_CN.yml @@ -1,6 +1,6 @@ zh_CN: js: - accepted_answer: + solved: allow_accepted_answers: "允许用户认可答案" accept_answer: "认可答案" unaccept_answer: "取消认可答案" diff --git a/plugin.rb b/plugin.rb index cd57169..6a8adf2 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,23 +1,23 @@ -# name: discourse-solved-button +# name: discourse-solved # about: Add a solved button to answers on Discourse # version: 0.1 # authors: Sam Saffron -PLUGIN_NAME = "discourse_solved_button".freeze +PLUGIN_NAME = "discourse_solved".freeze register_asset 'stylesheets/solutions.scss' after_initialize do - module ::DiscourseSolvedButton + module ::DiscourseSolved class Engine < ::Rails::Engine engine_name PLUGIN_NAME - isolate_namespace DiscourseSolvedButton + isolate_namespace DiscourseSolved end end require_dependency "application_controller" - class DiscourseSolvedButton::AnswerController < ::ApplicationController + class DiscourseSolved::AnswerController < ::ApplicationController def accept post = Post.find(params[:id].to_i) @@ -36,6 +36,20 @@ after_initialize do post.topic.save! post.save! + unless current_user.id == post.user_id + + Notification.create!(notification_type: Notification.types[:custom], + user_id: post.user_id, + topic_id: post.topic_id, + post_number: post.post_number, + data: { + message: 'solved.accepted_notification', + display_username: current_user.username, + topic_title: post.topic.title + }.to_json + ) + end + render json: success_json end @@ -53,13 +67,13 @@ after_initialize do end end - DiscourseSolvedButton::Engine.routes.draw do + DiscourseSolved::Engine.routes.draw do post "/accept" => "answer#accept" post "/unaccept" => "answer#unaccept" end Discourse::Application.routes.append do - mount ::DiscourseSolvedButton::Engine, at: "solution" + mount ::DiscourseSolved::Engine, at: "solution" end TopicView.add_post_custom_fields_whitelister do |user|