Fetch source data: list Danbooru artist tag; elim duplicated code.

* In the `Fetch source data` box, list the Danbooru artist tag(s) that
  were found beside the artist name.

* Unify `Fetch source data` code that was duplicated between the
  uploads page and the post show page.
This commit is contained in:
evazion
2017-11-14 23:07:01 -06:00
parent cbd68ac91b
commit 487fe9fb5d
6 changed files with 60 additions and 82 deletions

View File

@@ -59,56 +59,65 @@
}
Danbooru.Upload.initialize_info_bookmarklet = function() {
$("#source-info ul").hide();
$("#fetch-data-bookmarklet").click(function(e) {
var xhr = $.get(e.target.href);
xhr.success(Danbooru.Upload.fill_source_info);
xhr.fail(function(data) {
$("#source-info span#loading-data").html("Error: " + data.responseJSON["message"])
});
e.preventDefault();
});
$("#fetch-data-bookmarklet").trigger("click");
$("#fetch-data-manual").click();
}
Danbooru.Upload.initialize_info_manual = function() {
$("#source-info ul").hide();
$("#fetch-data-manual").click(function(e) {
var source = $("#upload_source,#post_source").val();
var referer = $("#upload_referer_url").val();
if (!/\S/.test(source)) {
Danbooru.error("Error: You must enter a URL into the source field to get its data");
} else if (!/^https?:\/\//.test(source)) {
Danbooru.error("Error: Source is not a URL");
} else {
$("#source-info span#loading-data").show();
var xhr = $.get("/source.json?url=" + encodeURIComponent(source));
xhr.success(Danbooru.Upload.fill_source_info);
xhr.fail(function(data) {
$("#source-info span#loading-data").html("Error: " + data.responseJSON["message"])
});
Danbooru.Upload.fetch_source_data(source, referer);
}
e.preventDefault();
});
}
Danbooru.Upload.fetch_source_data = function(url, referer_url) {
var xhr = $.getJSON("/source.json", { url: url, ref: referer_url });
xhr.success(Danbooru.Upload.fill_source_info);
xhr.fail(function(data) {
$("#source-info span#loading-data").html("Error: " + data.responseJSON["message"])
});
return xhr;
}
Danbooru.Upload.fill_source_info = function(data) {
$("#source-tags").empty();
$.each(data.tags, function(i, v) {
$("<a>").attr("href", v[1]).text(v[0]).appendTo("#source-tags");
});
$("#source-artist").html($("<a>").attr("href", data.profile_url).text(data.artist_name));
$("#source-artist-profile").attr("href", data.profile_url).text(data.artist_name);
Danbooru.RelatedTag.translated_tags = data.translated_tags;
Danbooru.RelatedTag.build_all();
var new_artist_href = "/artists/new?other_names="
+ encodeURIComponent(data.artist_name)
+ "&urls="
+ encodeURIComponent($.unique([data.profile_url, data.normalized_for_artist_finder_url]).join("\n"));
if (data.artists.length === 0) {
var new_artist_params = $.param({
name: data.unique_id,
other_names: data.artist_name,
urls: $.unique([data.profile_url, data.normalized_for_artist_finder_url]).join("\n")
});
$("#source-record").html($("<a>").attr("href", new_artist_href).text("Create New"));
var link = $("<a>").attr("href", "/artists/new?" + new_artist_params).text("Create new artist");
$("#source-danbooru-artists").html(link);
} else {
var artistLinks = data.artists.map(function (artist) {
return $('<a class="tag-type-1">').attr("href", "/artists/" + artist.id).text(artist.name);
});
$("#source-danbooru-artists").html(artistLinks)
}
if (data.image_urls.length > 1) {
$("#gallery-warning").show();

View File

@@ -494,22 +494,6 @@ div#c-posts {
color: gray;
}
}
div#source-info {
margin: 1em 0;
padding: 1em;
border: 1px solid gray;
p {
margin: 0;
}
ul {
a {
margin-right: 1em;
}
}
}
}
div#quick-edit-div {
@@ -529,6 +513,29 @@ div#c-post-versions, div#c-artist-versions {
}
}
div#c-posts, div#c-uploads {
/* Fetch source data box */
div#source-info {
margin: 1em 0;
padding: 1em;
border: 1px solid gray;
p {
margin: 0;
}
> ul {
display: none;
.source-tags {
a {
margin-right: 1em;
}
}
}
}
}
div#c-explore-posts {
a.desc {
font-weight: bold;

View File

@@ -26,23 +26,6 @@ div#c-uploads {
display: block;
}
div#source-info {
margin: 1em 0;
padding: 1em;
border: 1px solid gray;
min-height: 5em;
p {
margin: 0;
}
ul {
a {
margin-right: 1em;
}
}
}
div.field_with_errors {
display: inline;
}

View File

@@ -4,7 +4,7 @@
</div>
<% end %>
<%= render "sources/info_for_post" %>
<%= render "sources/info" %>
<%= form_for(post, :html => {:class => "simple_form", :id => "form"}) do |f| %>
<%= hidden_field_tag :tags_query, params[:tags] %>

View File

@@ -3,19 +3,13 @@
-->
<div id="source-info">
<% if source.try(:available?) %>
<p><%= link_to "Fetch source data", source_path(:format => "json", :url => source.referer_url), :id => "fetch-data-bookmarklet", :style => "display: none;" %></p>
<p><%= content_tag "span", "Loading #{source.site_name} data...", :id => "loading-data" %></p>
<% else %>
<p><%= link_to "Fetch source data", source_path(:format => "json"), :id => "fetch-data-manual" %></p>
<p><%= content_tag "span", "Loading source data...", :id => "loading-data", :style => "display: none;" %></p>
<% end %>
<p><%= link_to "Fetch source data", source_path(:format => "json"), :id => "fetch-data-manual" %></p>
<p><%= content_tag "span", "Loading source data...", :id => "loading-data", :style => "display: none;" %></p>
<p id="remote-size" style="display: none;"></p>
<p id="gallery-warning" style="display: none;"><%= content_tag "span", "Gallery. Tags may not apply to all images." %></p>
<ul>
<li><strong>Artist</strong>: <span id="source-artist"></span></li>
<li><strong>Tags</strong>: <span id="source-tags"></span></li>
<li><strong>Record</strong>: <span id="source-record"></span></li>
<li><strong>Artist</strong>: <a id="source-artist-profile"></a> (<span id="source-danbooru-artists"></span>)</li>
<li class="source-tags"><strong>Tags</strong>: <span id="source-tags"></span></li>
</ul>
</div>

View File

@@ -1,15 +0,0 @@
<!--
- source
-->
<div id="source-info">
<p><%= link_to "Fetch source data", source_path(:format => "json"), :id => "fetch-data-manual" %></p>
<p><%= content_tag "span", "Loading source data...", :id => "loading-data", :style => "display: none;" %></p>
<p><%= content_tag "span", "Gallery. Tags may not apply to all images.", :id => "gallery-warning", :style => "display: none;" %></p>
<ul>
<li><strong>Artist</strong>: <span id="source-artist"></span></li>
<li><strong>Tags</strong>: <span id="source-tags"></span></li>
<li><strong>Record</strong>: <span id="source-record"></span></li>
</ul>
</div>