dtext: don't link non-artist tags to artist entries.

* Don't link non-artist tags to artist pages, even when the tag has an
  artist entry. These artist entries are usually old deleted entries
  that happen to have the same name as a gentag, or leftover entries
  that need to be deleted.

* URL escape the artist name in /artists/show_or_new?name={name}
This commit is contained in:
evazion
2020-01-08 12:33:55 -06:00
parent 0c92a5af4d
commit e72c10bc23
2 changed files with 19 additions and 2 deletions

View File

@@ -37,8 +37,8 @@ class DText
tag = tags.find { |tag| tag.name == name }
artist = artists.find { |artist| artist.name == name }
if (tag.present? && tag.category == Tag.categories.artist) || artist.present?
node["href"] = "/artists/show_or_new?name=#{name}"
if tag.present? && tag.category == Tag.categories.artist
node["href"] = "/artists/show_or_new?name=#{CGI.escape(name)}"
if artist.blank?
node["class"] += " dtext-artist-does-not-exist"

View File

@@ -80,6 +80,23 @@ class DTextTest < ActiveSupport::TestCase
assert_match(/implication ##{@ti.id}/, DText.format_text("[ti:#{@ti.id}]"))
assert_match(/alias ##{@ta.id}/, DText.format_text("[ta:#{@ta.id}]"))
end
should "link artist tags to the artist page instead of the wiki page" do
tag = create(:tag, name: "m&m", category: Tag.categories.artist)
artist = create(:artist, name: "m&m")
assert_equal(
'<p><a class="dtext-link dtext-wiki-link tag-type-1" href="/artists/show_or_new?name=m%26m">m&amp;m</a></p>',
DText.format_text("[[m&m]]")
)
end
should "not link general tags to artist pages" do
tag = create(:tag, name: "cat")
artist = create(:artist, name: "cat", is_active: false)
assert_match(%r!/wiki_pages/cat!, DText.format_text("[[cat]]"))
end
end
context "#parse_wiki_titles" do