Artist urls can be prepended with a '-' to mark is inactive (#3388)
This commit is contained in:
@@ -142,7 +142,11 @@
|
|||||||
tags.push(["BANNED_ARTIST", "banned"]);
|
tags.push(["BANNED_ARTIST", "banned"]);
|
||||||
}
|
}
|
||||||
$.each(Danbooru.RelatedTag.recent_artists[0].sorted_urls, function(i, url) {
|
$.each(Danbooru.RelatedTag.recent_artists[0].sorted_urls, function(i, url) {
|
||||||
tags.push([" " + url.url, 0]);
|
var x = url.url;
|
||||||
|
if (!url.is_active) {
|
||||||
|
x = "-" + x;
|
||||||
|
}
|
||||||
|
tags.push([" " + x, 0]);
|
||||||
});
|
});
|
||||||
} else if (Danbooru.RelatedTag.recent_artists.length >= 10) {
|
} else if (Danbooru.RelatedTag.recent_artists.length >= 10) {
|
||||||
tags.push([" none", 0]);
|
tags.push([" none", 0]);
|
||||||
@@ -226,7 +230,15 @@
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
var text = tag[0];
|
var text = tag[0];
|
||||||
if (text.match(/^ http/)) {
|
if (text.match(/^ -http/)) {
|
||||||
|
text = text.substring(1, 1000);
|
||||||
|
var desc = text.replace(/^-https?:\/\//, "");
|
||||||
|
if (desc.length > 30) {
|
||||||
|
desc = desc.substring(0, 30) + "...";
|
||||||
|
}
|
||||||
|
var $del = $("<del/>").html(desc);
|
||||||
|
$ul.append($("<li/>").html($del));
|
||||||
|
} else if (text.match(/^ http/)) {
|
||||||
text = text.substring(1, 1000);
|
text = text.substring(1, 1000);
|
||||||
var $url = $("<a/>");
|
var $url = $("<a/>");
|
||||||
var desc = text.replace(/^https?:\/\//, "");
|
var desc = text.replace(/^https?:\/\//, "");
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
class ArtistUrl < ApplicationRecord
|
class ArtistUrl < ApplicationRecord
|
||||||
|
before_validation :parse_prefix
|
||||||
before_save :initialize_normalized_url, on: [ :create ]
|
before_save :initialize_normalized_url, on: [ :create ]
|
||||||
before_save :normalize
|
before_save :normalize
|
||||||
validates_presence_of :url
|
validates_presence_of :url
|
||||||
@@ -58,6 +59,13 @@ class ArtistUrl < ApplicationRecord
|
|||||||
url = url.gsub(/^http:\/\/i\d+\.pixiv\.net\/img\d+/, "http://*.pixiv.net/img*")
|
url = url.gsub(/^http:\/\/i\d+\.pixiv\.net\/img\d+/, "http://*.pixiv.net/img*")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def parse_prefix
|
||||||
|
if url && url[0] == "-"
|
||||||
|
self.url = url[1..-1]
|
||||||
|
self.is_active = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def priority
|
def priority
|
||||||
if normalized_url =~ /pixiv\.net\/member\.php/
|
if normalized_url =~ /pixiv\.net\/member\.php/
|
||||||
10
|
10
|
||||||
@@ -89,7 +97,11 @@ class ArtistUrl < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
url
|
if is_active?
|
||||||
|
url
|
||||||
|
else
|
||||||
|
"-#{url}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_url_format
|
def validate_url_format
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<% artist.urls.each do |url| %>
|
<% artist.urls.each do |url| %>
|
||||||
<li>
|
<li>
|
||||||
<%= link_to h(url.to_s), h(url.to_s) %>
|
<%= link_to h(url.to_s), h(url) %>
|
||||||
<% if CurrentUser.user.is_moderator? %>
|
<% if CurrentUser.user.is_moderator? %>
|
||||||
[<%= link_to("mass edit", edit_moderator_tag_path(:antecedent => "-#{artist.name} source:#{ArtistUrl.normalize_for_search(url.to_s)}", :consequent => artist.name)) %>]
|
[<%= link_to("mass edit", edit_moderator_tag_path(:antecedent => "-#{artist.name} source:#{ArtistUrl.normalize_for_search(url.to_s)}", :consequent => artist.name)) %>]
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddIsActiveToArtistUrls < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
ApplicationRecord.without_timeout do
|
||||||
|
add_column :artist_urls, :is_active, :boolean, null: false, default: true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -683,7 +683,8 @@ CREATE TABLE public.artist_urls (
|
|||||||
url text NOT NULL,
|
url text NOT NULL,
|
||||||
normalized_url text NOT NULL,
|
normalized_url text NOT NULL,
|
||||||
created_at timestamp without time zone,
|
created_at timestamp without time zone,
|
||||||
updated_at timestamp without time zone
|
updated_at timestamp without time zone,
|
||||||
|
is_active boolean DEFAULT true NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -7494,6 +7495,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
|||||||
('20180116001101'),
|
('20180116001101'),
|
||||||
('20180403231351'),
|
('20180403231351'),
|
||||||
('20180413224239'),
|
('20180413224239'),
|
||||||
('20180425194016');
|
('20180425194016'),
|
||||||
|
('20180516222413');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,12 @@ class ArtistTest < ActiveSupport::TestCase
|
|||||||
CurrentUser.ip_addr = nil
|
CurrentUser.ip_addr = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "parse inactive urls" do
|
||||||
|
@artist = Artist.create(name: "blah", url_string: "-http://monet.com")
|
||||||
|
assert_equal(["-http://monet.com"], @artist.urls.map(&:to_s))
|
||||||
|
refute(@artist.urls[0].is_active?)
|
||||||
|
end
|
||||||
|
|
||||||
should "should have a valid name" do
|
should "should have a valid name" do
|
||||||
@artist = Artist.new(:name => "-blah")
|
@artist = Artist.new(:name => "-blah")
|
||||||
@artist.save
|
@artist.save
|
||||||
|
|||||||
@@ -12,6 +12,13 @@ class ArtistUrlTest < ActiveSupport::TestCase
|
|||||||
CurrentUser.ip_addr = nil
|
CurrentUser.ip_addr = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "allow urls to be marked as inactive" do
|
||||||
|
url = FactoryBot.create(:artist_url, :url => "-http://monet.com")
|
||||||
|
assert_equal("http://monet.com", url.url)
|
||||||
|
assert_equal("http://monet.com/", url.normalized_url)
|
||||||
|
refute(url.is_active?)
|
||||||
|
end
|
||||||
|
|
||||||
should "always add a trailing slash when normalized" do
|
should "always add a trailing slash when normalized" do
|
||||||
url = FactoryBot.create(:artist_url, :url => "http://monet.com")
|
url = FactoryBot.create(:artist_url, :url => "http://monet.com")
|
||||||
assert_equal("http://monet.com", url.url)
|
assert_equal("http://monet.com", url.url)
|
||||||
|
|||||||
Reference in New Issue
Block a user