diff --git a/assets/javascripts/controllers/assign-user.js.es6 b/assets/javascripts/controllers/assign-user.js.es6 new file mode 100644 index 0000000..7ecb1ae --- /dev/null +++ b/assets/javascripts/controllers/assign-user.js.es6 @@ -0,0 +1,20 @@ +import { default as computed } from 'ember-addons/ember-computed-decorators'; +import { ajax } from 'discourse/lib/ajax'; +import { popupAjaxError } from 'discourse/lib/ajax-error'; + +export default Ember.Controller.extend({ + + @computed("username") + disabled(username) { + return Ember.isEmpty(username); + }, + + actions: { + assign(){ + return ajax('/assign/assign',{ + type: 'PUT', + data: { username: this.get('username'), topic_id: 1 } + }).catch(popupAjaxError); + } + } +}); diff --git a/assets/javascripts/discourse/templates/modal/assign-user.hbs b/assets/javascripts/discourse/templates/modal/assign-user.hbs index 85423b0..18ad602 100644 --- a/assets/javascripts/discourse/templates/modal/assign-user.hbs +++ b/assets/javascripts/discourse/templates/modal/assign-user.hbs @@ -1,7 +1,16 @@ {{#d-modal-body title="discourse_assigns.assign_modal.title" class="assign"}} -hi there +{{i18n 'discourse_assigns.assign_modal.description'}} +{{user-selector + single=true + allowAny=false + excludeCurrentUser=false + includeMentionableGroups=false + hasGroups=false + usernames=username + placeholderKey=placeholderKey + autocomplete="off"}} {{/d-modal-body}}
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 4254cc4..16167ce 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -4,3 +4,7 @@ en: assign: title: "Assign" help: "Assign Topic to User" + assign_modal: + title: "Assign Topic" + description: "Enter the username of the person you'd like to assign this topic" + assign: "Assign" diff --git a/plugin.rb b/plugin.rb index 207534b..ae3bbbe 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,4 +1,4 @@ -# name: discourse-assigns +# name: discourse-assign # about: Assign users to topics # version: 0.1 # authors: Sam Saffron @@ -22,4 +22,36 @@ SQL belongs_to :assigned_to, class_name: 'User' belongs_to :assigned_by, class_name: 'User' end + + module ::DiscourseAssign + class Engine < ::Rails::Engine + engine_name "discourse_assign" + isolate_namespace DiscourseAssign + end + end + + class ::DiscourseAssign::AssignController < Admin::AdminController + before_filter :ensure_logged_in + + def assign + topic_id = params.require(:topic_id) + username = params.require(:username) + + assigned = AssignedUser.where(topic_id: topic_id).first_or_initialize + assigned.assigned_to_id = User.where(username_lower: username.downcase).pluck(:id).first + assigned.assigned_by_id = current_user.id + assigned.save! + + render json: {status: "ok"} + end + + DiscourseAssign::Engine.routes.draw do + put "/assign" => "assign#assign" + end + + Discourse::Application.routes.append do + mount ::DiscourseAssign::Engine, at: "/assign" + end + + end end