burs/index: format update scripts as dtext, same as forum.
Format scripts on the BUR index page as dtext, the same way they're formatted in forum posts. This means that tags have colors and underlines, but they don't have post counts. Gathering post counts was too slow.
This commit is contained in:
@@ -11,99 +11,4 @@ module BulkUpdateRequestsHelper
|
||||
category touhou -> copyright
|
||||
EOS
|
||||
end
|
||||
|
||||
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? || !TagAlias.where(antecedent_name: antecedent, consequent_name: consequent).exists?
|
||||
|
||||
when :remove_implication
|
||||
TagImplication.where(antecedent_name: antecedent, consequent_name: consequent, status: "deleted").exists? || !TagImplication.where(antecedent_name: antecedent, consequent_name: consequent).exists?
|
||||
|
||||
when :change_category
|
||||
tag, category = antecedent, consequent
|
||||
Tag.where(name: tag, category: Tag.categories.value_for(category)).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, :change_category
|
||||
if approved?(cmd, arg1, arg2)
|
||||
btag = '<s class="approved">'
|
||||
etag = '</s>'
|
||||
elsif failed?(cmd, arg1, arg2)
|
||||
btag = '<s class="failed">'
|
||||
etag = "</s>"
|
||||
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
|
||||
|
||||
"#{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
|
||||
|
||||
"#{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
|
||||
|
||||
"#{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
|
||||
|
||||
"#{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
|
||||
"#{btag}mass update " + link_to(arg1, posts_path(:tags => arg1)) + " -> " + link_to(arg2, posts_path(:tags => arg2)) + etag.to_s
|
||||
|
||||
when :change_category
|
||||
arg1_count = Tag.find_by_name(arg1).try(:post_count).to_i
|
||||
|
||||
"#{btag}category " + link_to(arg1, posts_path(:tags => arg1)) + " (#{arg1_count}) -> (#{arg2})#{etag}"
|
||||
|
||||
end
|
||||
end.join("\n")
|
||||
|
||||
escaped_script.gsub(/\n/m, "<br>").html_safe
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<% dtext_data = DText.preprocess(bulk_update_requests.map(&:script_with_links)) %>
|
||||
|
||||
<%= table_for bulk_update_requests, width: "100%" do |t| %>
|
||||
<% t.column "Request" do |request| %>
|
||||
<% if request.forum_post.present? %>
|
||||
@@ -6,7 +8,9 @@
|
||||
<p><%= link_to "Topic ##{request.forum_topic_id}: #{request.forum_topic.title}", request.forum_topic %></p>
|
||||
<% end %>
|
||||
|
||||
<%= script_with_line_breaks(request.script) %>
|
||||
<div class="prose">
|
||||
<%= format_text(request.script_with_links, data: dtext_data) %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% t.column "Votes" do |request| %>
|
||||
<% if request.forum_post.present? %>
|
||||
|
||||
Reference in New Issue
Block a user