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:
evazion
2020-02-16 19:08:27 -06:00
parent ef3188a7fe
commit c4521acb54
2 changed files with 5 additions and 96 deletions

View File

@@ -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}) -&gt; " + 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}) -&gt; " + 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}) -&gt; " + 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}) -&gt; " + link_to(arg2, posts_path(:tags => arg2)) + " (#{arg2_count})#{etag}"
when :mass_update
"#{btag}mass update " + link_to(arg1, posts_path(:tags => arg1)) + " -&gt; " + 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}) -&gt; (#{arg2})#{etag}"
end
end.join("\n")
escaped_script.gsub(/\n/m, "<br>").html_safe
end
end

View File

@@ -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? %>