diff --git a/app/controllers/related_tags_controller.rb b/app/controllers/related_tags_controller.rb index bf820b55e..438c4f455 100644 --- a/app/controllers/related_tags_controller.rb +++ b/app/controllers/related_tags_controller.rb @@ -3,7 +3,7 @@ class RelatedTagsController < ApplicationController before_action :require_reportbooru_key, only: [:update] def show - @query = RelatedTagQuery.new(params[:query], category: params[:category], translated_tags: params[:translated_tags], artists: params[:artists], user: CurrentUser.user) + @query = RelatedTagQuery.new(query: params[:query], category: params[:category], user: CurrentUser.user) respond_with(@query) do |format| format.json do render :json => @query.to_json diff --git a/app/javascript/src/javascripts/related_tag.js.erb b/app/javascript/src/javascripts/related_tag.js.erb index 85b749722..d52ae428f 100644 --- a/app/javascript/src/javascripts/related_tag.js.erb +++ b/app/javascript/src/javascripts/related_tag.js.erb @@ -3,8 +3,6 @@ import Utility from './utility'; let RelatedTag = {}; RelatedTag.initialize_all = function() { - RelatedTag.artists = []; - RelatedTag.translated_tags = []; $(document).on("click.danbooru", ".related-tags-button", RelatedTag.on_click_related_tags_button); $(document).on("click.danbooru", ".related-tags a.search-tag", RelatedTag.toggle_tag); $(document).on("click.danbooru", "#show-related-tags-link, #hide-related-tags-link", RelatedTag.toggle); @@ -20,15 +18,6 @@ RelatedTag.tags_include = function(name) { return $.inArray(name.toLowerCase(), current) > -1; } -RelatedTag.update_related_tags = function (category = "") { - $.get("/related_tag.js", { - "query": RelatedTag.current_tag(), - "category": category, - "translated_tags": RelatedTag.translated_tags.join(" "), - "artists": RelatedTag.artists.join(" "), - }); -} - RelatedTag.on_open_post_edit_dialog = function(event) { $("#related-tags-container").removeClass("visible").addClass("hidden"); } @@ -38,20 +27,18 @@ RelatedTag.on_close_post_edit_dialog = function(event) { } RelatedTag.on_show_post_edit_form = function(event) { - RelatedTag.update_related_tags(); + $.get("/related_tag.js", { user_tags: true }); $("#fetch-data-manual").click(); } RelatedTag.on_click_related_tags_button = function (event) { - const category = $(event.target).data("category"); - RelatedTag.update_related_tags(category); - $("#related-tags-container").removeClass("hidden").addClass("visible"); + $.get("/related_tag.js", { query: RelatedTag.current_tag(), category: $(event.target).data("category") }); + RelatedTag.show(); } -RelatedTag.on_update_source_data = function (event, source) { - Danbooru.RelatedTag.artists = source.artists.map(artist => artist.name); - Danbooru.RelatedTag.translated_tags = source.translated_tags.map(tag => tag[0]); - RelatedTag.update_related_tags(); +RelatedTag.on_update_source_data = function (event, { source, related_tags_html }) { + $(".source-related-tags-columns").replaceWith(related_tags_html); + RelatedTag.update_selected(); } RelatedTag.current_tag = function() { diff --git a/app/logical/related_tag_query.rb b/app/logical/related_tag_query.rb index 57f3f0717..81f58f87c 100644 --- a/app/logical/related_tag_query.rb +++ b/app/logical/related_tag_query.rb @@ -1,13 +1,10 @@ class RelatedTagQuery - attr_reader :query, :category, :translated_tags, :artists, :user + attr_reader :query, :category, :user - def initialize(query, category: nil, translated_tags: nil, artists: nil, user: nil) + def initialize(query: nil, category: nil, user: nil) @user = user @query = TagAlias.to_aliased(query.to_s.downcase.strip).join(" ") @category = category - @translated_tags = translated_tags.to_s.split - @artists = Artist.where(name: artists.to_s.split) - @artists = [Artist.find_by(name: "banned_artist")] + @artists if @artists.any?(&:is_banned?) end def pretty_name @@ -31,7 +28,7 @@ class RelatedTagQuery return [] unless user.present? && PostArchive.enabled? versions = PostArchive.where(updater_id: user.id).where("updated_at > ?", since).order(id: :desc).limit(max_edits) - tags = versions.flat_map { |v| v.diff[:added_tags] } + tags = versions.flat_map(&:added_tags) tags = tags.reject { |tag| Tag.is_metatag?(tag) } tags = tags.group_by(&:itself).transform_values(&:size).sort_by { |tag, count| [-count, tag] }.map(&:first) tags.take(max_tags) diff --git a/app/views/posts/partials/show/_edit.html.erb b/app/views/posts/partials/show/_edit.html.erb index c2123c752..ab4fef581 100644 --- a/app/views/posts/partials/show/_edit.html.erb +++ b/app/views/posts/partials/show/_edit.html.erb @@ -89,5 +89,5 @@ <%= submit_tag "Submit", :class => "ui-button ui-widget ui-corner-all" %> - <%= render "related_tags/container" %> + <%= render "related_tags/container", related_tags: nil %> <% end %> diff --git a/app/views/related_tags/_container.html.erb b/app/views/related_tags/_container.html.erb index 085843ce0..61c2cc80c 100644 --- a/app/views/related_tags/_container.html.erb +++ b/app/views/related_tags/_container.html.erb @@ -5,5 +5,9 @@ « - <%= render "related_tags/related_tags" %> + diff --git a/app/views/related_tags/_current_tags.html.erb b/app/views/related_tags/_current_tags.html.erb new file mode 100644 index 000000000..b11d7e655 --- /dev/null +++ b/app/views/related_tags/_current_tags.html.erb @@ -0,0 +1,10 @@ + diff --git a/app/views/related_tags/_related_tags.html.erb b/app/views/related_tags/_related_tags.html.erb deleted file mode 100644 index d04fca311..000000000 --- a/app/views/related_tags/_related_tags.html.erb +++ /dev/null @@ -1,40 +0,0 @@ -<%# related_tags %> - - diff --git a/app/views/related_tags/_source_tags.html.erb b/app/views/related_tags/_source_tags.html.erb new file mode 100644 index 000000000..a49308932 --- /dev/null +++ b/app/views/related_tags/_source_tags.html.erb @@ -0,0 +1,34 @@ + diff --git a/app/views/related_tags/_tag_column.html.erb b/app/views/related_tags/_tag_column.html.erb index fc8735177..168781db4 100644 --- a/app/views/related_tags/_tag_column.html.erb +++ b/app/views/related_tags/_tag_column.html.erb @@ -1,8 +1,8 @@ <%# tags, title, class (optional) %> -<% if tags.present? %> -
"> +
"> + <% if tags.present? %>
<%= title %>
<%= TagSetPresenter.new(tags).tag_list_html(name_only: true) %> -
-<% end %> + <% end %> +
diff --git a/app/views/related_tags/_user_tags.html.erb b/app/views/related_tags/_user_tags.html.erb new file mode 100644 index 000000000..3963ea41e --- /dev/null +++ b/app/views/related_tags/_user_tags.html.erb @@ -0,0 +1,6 @@ + diff --git a/app/views/related_tags/show.js.erb b/app/views/related_tags/show.js.erb index 16b576469..1f75c76d9 100644 --- a/app/views/related_tags/show.js.erb +++ b/app/views/related_tags/show.js.erb @@ -1,2 +1,7 @@ -$("div#related-tags").replaceWith("<%= j render "related_tags", related_tags: @query %>"); +<% if params[:user_tags] %> + $(".user-related-tags-columns").replaceWith("<%= j render "user_tags", related_tags: @query %>"); +<% else %> + $(".current-related-tags-columns").replaceWith("<%= j render "current_tags", related_tags: @query %>"); +<% end %> + Danbooru.RelatedTag.update_selected(); diff --git a/app/views/sources/show.js.erb b/app/views/sources/show.js.erb index e28aec967..d421516c9 100644 --- a/app/views/sources/show.js.erb +++ b/app/views/sources/show.js.erb @@ -1,6 +1,9 @@ $("#source-info").replaceWith("<%= j render "info", source: @source %>"); -$(document).trigger("danbooru:update-source-data", <%= raw @source.to_json %>); +$(document).trigger("danbooru:update-source-data", { + source: <%= raw @source.to_json %>, + related_tags_html: "<%= j render "related_tags/source_tags", source: @source %>", +}); if ($("#c-uploads #a-new").length) { $("#upload_artist_commentary_title").val(<%= raw @source.dtext_artist_commentary_title.to_json %>); diff --git a/app/views/uploads/new.html.erb b/app/views/uploads/new.html.erb index 09e3d52e2..8af463050 100644 --- a/app/views/uploads/new.html.erb +++ b/app/views/uploads/new.html.erb @@ -104,7 +104,7 @@ <%= submit_tag "Submit", :id => "submit-button", :class => "large ui-button ui-widget ui-corner-all gradient", data: {disable_with: false} %> - <%= render "related_tags/container" %> + <%= render "related_tags/container", related_tags: nil %> <% end %> <% else %>

You <%= CurrentUser.user.upload_limited_reason %>