diff --git a/app/assets/stylesheets/specific/bulk_update_requests.scss b/app/assets/stylesheets/specific/bulk_update_requests.scss
new file mode 100644
index 000000000..000c41227
--- /dev/null
+++ b/app/assets/stylesheets/specific/bulk_update_requests.scss
@@ -0,0 +1,9 @@
+#c-burs {
+ s.approved {
+ color: green;
+ }
+
+ s.failed {
+ color: red;
+ }
+}
\ No newline at end of file
diff --git a/app/helpers/bulk_update_requests_helper.rb b/app/helpers/bulk_update_requests_helper.rb
index e03750b78..f55b5358d 100644
--- a/app/helpers/bulk_update_requests_helper.rb
+++ b/app/helpers/bulk_update_requests_helper.rb
@@ -1,33 +1,86 @@
module BulkUpdateRequestsHelper
+ def approved?(command, antecedent, consequent)
+ return false unless CurrentUser.is_moderator?
+
+ case command
+ when :create_alias
+ TagAlias.where(antecedent_name: antecedent, consequent_name: consequent, status: %w(active processing queued)).exists?
+
+ when :create_implication
+ TagImplication.where(antecedent_name: antecedent, consequent_name: consequent, status: %w(active processing queued)).exists?
+
+ when :remove_alias
+ TagAlias.where(antecedent_name: antecedent, consequent_name: consequent, status: "deleted").exists?
+
+ when :remove_implication
+ TagImplication.where(antecedent_name: antecedent, consequent_name: consequent, status: "deleted").exists?
+
+ when :mass_update
+ !Post.raw_tag_match(antecedent).exists?
+
+ else
+ false
+ end
+ end
+
+ def failed?(command, antecedent, consequent)
+ return false unless CurrentUser.is_moderator?
+
+ case command
+ when :create_alias
+ TagAlias.where(antecedent_name: antecedent, consequent_name: consequent).where("status like ?", "error: %").exists?
+
+ when :create_implication
+ TagImplication.where(antecedent_name: antecedent, consequent_name: consequent).where("status like ?", "error: %").exists?
+
+ else
+ false
+ end
+ end
+
def script_with_line_breaks(script)
escaped_script = AliasAndImplicationImporter.tokenize(script).map do |cmd, arg1, arg2|
+ case cmd
+ when :create_alias, :create_implication, :remove_alias, :remove_implication, :mass_update
+ if approved?(cmd, arg1, arg2)
+ btag = ''
+ etag = ''
+ elsif failed?(cmd, arg1, arg2)
+ btag = ''
+ etag = ""
+ else
+ btag = nil
+ etag = nil
+ end
+ end
+
case cmd
when :create_alias
arg1_count = Tag.find_by_name(arg1).try(:post_count).to_i
arg2_count = Tag.find_by_name(arg2).try(:post_count).to_i
- "create alias " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})"
+ "#{btag}create alias " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})#{etag}"
when :create_implication
arg1_count = Tag.find_by_name(arg1).try(:post_count).to_i
arg2_count = Tag.find_by_name(arg2).try(:post_count).to_i
- "create implication " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})"
+ "#{btag}create implication " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})#{etag}"
when :remove_alias
arg1_count = Tag.find_by_name(arg1).try(:post_count).to_i
arg2_count = Tag.find_by_name(arg2).try(:post_count).to_i
- "remove alias " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})"
+ "#{btag}remove alias " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})#{etag}"
when :remove_implication
arg1_count = Tag.find_by_name(arg1).try(:post_count).to_i
arg2_count = Tag.find_by_name(arg2).try(:post_count).to_i
- "remove implication " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})"
+ "#{btag}remove implication " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})#{etag}"
when :mass_update
- "mass update " + link_to(arg1, posts_path(:tags => arg1)) + " -> " + link_to(arg2, posts_path(:tags => arg2))
+ "#{btag}mass update " + link_to(arg1, posts_path(:tags => arg1)) + " -> " + link_to(arg2, posts_path(:tags => arg2)) + "#{etag}"
end
end.join("\n")
diff --git a/app/views/bulk_update_requests/index.html.erb b/app/views/bulk_update_requests/index.html.erb
index 209f4ab24..24dbc08e8 100644
--- a/app/views/bulk_update_requests/index.html.erb
+++ b/app/views/bulk_update_requests/index.html.erb
@@ -1,5 +1,5 @@
-