Only show the icon when they have notes

This commit is contained in:
Robin Ward 2016-03-11 13:32:42 -05:00
parent 71d0b4c784
commit bc9057073b
3 changed files with 26 additions and 16 deletions

View File

@ -8,4 +8,3 @@ export default RestAdapter.extend({
return ajax(`${path}?user_id=${userId}`, { method: 'DELETE' });
}
});

View File

@ -8,7 +8,12 @@ export default {
if (!siteSettings.staff_notes_enabled) { return; }
withPluginApi('0.2', api => {
api.decorateWidget('poster-name:after', dec => dec.attach('staff-notes-icon'));
api.decorateWidget('poster-name:after', dec => {
const cfs = dec.attrs.userCustomFields || {};
if (cfs.has_staff_notes) {
return dec.attach('staff-notes-icon');
}
});
api.createWidget('staff-notes-icon', {
tagName: 'span.staff-notes-icon',

View File

@ -7,6 +7,8 @@ enabled_site_setting :staff_notes_enabled
register_asset 'stylesheets/staff_notes.scss'
STAFF_NOTES_FIELD = "has_staff_notes"
after_initialize do
require_dependency 'user'
@ -25,25 +27,29 @@ after_initialize do
PluginStore.get('staff_notes', key_for(user_id)) || []
end
def self.add_note(user_id, raw, created_by)
notes = notes_for(user_id)
record = { id: SecureRandom.hex(16), user_id: user_id, raw: raw, created_by: created_by, created_at: Time.now }
def self.add_note(user, raw, created_by)
notes = notes_for(user.id)
record = { id: SecureRandom.hex(16), user_id: user.id, raw: raw, created_by: created_by, created_at: Time.now }
notes << record
::PluginStore.set("staff_notes", key_for(user_id), notes)
::PluginStore.set("staff_notes", key_for(user.id), notes)
user.custom_fields[STAFF_NOTES_FIELD] = true
user.save_custom_fields
record
end
def self.remove_note(user_id, note_id)
notes = notes_for(user_id)
def self.remove_note(user, note_id)
notes = notes_for(user.id)
notes.reject! {|n| n[:id] == note_id}
if notes.size > 0
::PluginStore.set("staff_notes", key_for(user_id), notes)
::PluginStore.set("staff_notes", key_for(user.id), notes)
else
::PluginStore.remove("staff_notes", key_for(user_id))
::PluginStore.remove("staff_notes", key_for(user.id))
user.custom_fields.delete(STAFF_NOTES_FIELD)
user.save_custom_fields
end
end
end
@ -93,11 +99,9 @@ after_initialize do
end
def create
user_id = params[:staff_note][:user_id]
user = User.where(id: user_id).first
user = User.where(id: params[:staff_note][:user_id]).first
raise Discourse::NotFound if user.blank?
staff_note = ::DiscourseStaffNotes.add_note(user.id, params[:staff_note][:raw], current_user.id)
staff_note = ::DiscourseStaffNotes.add_note(user, params[:staff_note][:raw], current_user.id)
render json: serialize_data(staff_note, ::StaffNoteSerializer)
end
@ -106,12 +110,14 @@ after_initialize do
user = User.where(id: params[:user_id]).first
raise Discourse::NotFound if user.blank?
::DiscourseStaffNotes.remove_note(user.id, params[:id])
::DiscourseStaffNotes.remove_note(user, params[:id])
render json: success_json
end
end
whitelist_staff_user_custom_field(STAFF_NOTES_FIELD)
DiscourseStaffNotes::Engine.routes.draw do
get '/' => 'staff_notes#index'
post '/' => 'staff_notes#create'