diff --git a/app/assets/javascripts/post_mode_menu.js b/app/assets/javascripts/post_mode_menu.js
index eef6b3b92..02c87ef4d 100644
--- a/app/assets/javascripts/post_mode_menu.js
+++ b/app/assets/javascripts/post_mode_menu.js
@@ -109,6 +109,8 @@
Danbooru.Post.update(post_id, {"post[is_rating_locked]": "1"});
} else if (s === 'lock-note') {
Danbooru.Post.update(post_id, {"post[is_note_locked]": "1"});
+ } else if (s === 'approve') {
+ Danbooru.Post.approve(post_id);
} else if (s === "apply-tag-script") {
var tag_script = Danbooru.Cookie.get("tag-script");
Danbooru.TagScript.run(post_id, tag_script);
diff --git a/app/assets/javascripts/posts.js b/app/assets/javascripts/posts.js
index bb81a72bb..ec0d11d97 100644
--- a/app/assets/javascripts/posts.js
+++ b/app/assets/javascripts/posts.js
@@ -308,16 +308,33 @@
complete: function() {
Danbooru.Post.notice_update("dec");
},
- success: function(data, status, xhr) {
+ success: function(data) {
Danbooru.Post.update_data(data);
-
},
- error: function(data, status, xhr) {
+ error: function(data) {
Danbooru.notice("Error: " + data.reason);
$("#post_" + data.id).effect("shake", {"distance": 20}, "fast");
}
});
}
+
+ Danbooru.Post.approve = function(post_id) {
+ $.ajax({
+ type: "POST",
+ url: "/moderator/post/approval.json",
+ data: {"post_id": post_id},
+ dataType: "json",
+ success: function(data) {
+ if (!data.success) {
+ Danbooru.error("Error: " + data.reason);
+ } else {
+ var $post = $("#post_" + post_id);
+ $post.data("flags", $post.data("flags").replace(/pending/, ""));
+ $post.removeClass("post-status-pending");
+ }
+ }
+ });
+ }
Danbooru.Post.place_jlist_ads = function() {
var jlist = $("#jlist-rss-ads-for-show");
diff --git a/app/views/moderator/post/approvals/create.json.erb b/app/views/moderator/post/approvals/create.json.erb
new file mode 100644
index 000000000..8de51cd29
--- /dev/null
+++ b/app/views/moderator/post/approvals/create.json.erb
@@ -0,0 +1 @@
+{"success": <%= @post.errors.empty? %>, "reason": <%= raw @post.errors.full_messages.join("; ").to_json %>}
\ No newline at end of file
diff --git a/app/views/posts/partials/index/_mode_menu.html.erb b/app/views/posts/partials/index/_mode_menu.html.erb
index ce2bfb157..4576b4771 100644
--- a/app/views/posts/partials/index/_mode_menu.html.erb
+++ b/app/views/posts/partials/index/_mode_menu.html.erb
@@ -14,6 +14,9 @@
+ <% if CurrentUser.is_janitor? %>
+
+ <% end %>