discourse/app/assets/javascripts/admin/models/flagged_post.js
Sam 5280b3a01b more group progress, UI getting there, controller mostly done
changed it so notify moderators goes to the moderators group
allow admins to grant self moderation and revoke self moderation
2013-05-09 17:37:34 +10:00

84 lines
1.9 KiB
JavaScript

/**
Our data model for interacting with flagged posts.
@class FlaggedPost
@extends Discourse.Post
@namespace Discourse
@module Discourse
**/
Discourse.FlaggedPost = Discourse.Post.extend({
flaggers: (function() {
var r,
_this = this;
r = [];
this.post_actions.each(function(a) {
return r.push(_this.userLookup[a.user_id]);
});
return r;
}).property(),
messages: (function() {
var r,
_this = this;
r = [];
this.post_actions.each(function(a) {
if (a.message) {
return r.push({
user: _this.userLookup[a.user_id],
message: a.message,
permalink: a.permalink
});
}
});
return r;
}).property(),
lastFlagged: function() {
return this.post_actions[0].created_at;
}.property(),
user: function() {
return this.userLookup[this.user_id];
}.property(),
topicHidden: function() {
return this.get('topic_visible') === 'f';
}.property('topic_hidden'),
deletePost: function() {
if (this.get('post_number') === "1") {
return Discourse.ajax("/t/" + this.topic_id, { type: 'DELETE', cache: false });
} else {
return Discourse.ajax("/posts/" + this.id, { type: 'DELETE', cache: false });
}
},
clearFlags: function() {
return Discourse.ajax("/admin/flags/clear/" + this.id, { type: 'POST', cache: false });
},
hiddenClass: function() {
if (this.get('hidden') === "t") return "hidden-post";
}.property()
});
Discourse.FlaggedPost.reopenClass({
findAll: function(filter) {
var result = Em.A();
Discourse.ajax("/admin/flags/" + filter + ".json").then(function(data) {
var userLookup = {};
data.users.each(function(u) {
userLookup[u.id] = Discourse.User.create(u);
});
data.posts.each(function(p) {
var f = Discourse.FlaggedPost.create(p);
f.userLookup = userLookup;
result.pushObject(f);
});
});
return result;
}
});