From 36ef8b4db38e27f01a12378fc460e156165c923b Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Fri, 29 Dec 2017 22:51:54 -0800 Subject: [PATCH] Initial add of IQDB standalone page --- .../stylesheets/specific/iqdb_queries.scss | 13 +++++++ app/controllers/iqdb_queries_controller.rb | 39 +++++++++++++------ app/views/iqdb_queries/check.html.erb | 34 ++++++++++++++++ app/views/static/site_map.html.erb | 1 + config/routes.rb | 4 +- 5 files changed, 78 insertions(+), 13 deletions(-) create mode 100644 app/assets/stylesheets/specific/iqdb_queries.scss create mode 100644 app/views/iqdb_queries/check.html.erb diff --git a/app/assets/stylesheets/specific/iqdb_queries.scss b/app/assets/stylesheets/specific/iqdb_queries.scss new file mode 100644 index 000000000..cab8d0f3b --- /dev/null +++ b/app/assets/stylesheets/specific/iqdb_queries.scss @@ -0,0 +1,13 @@ +div#c-iqdb-queries { + div#a-check { + article.post-preview { + height: 180px; + width: 180px; + border: lightgrey solid 1px; + + img { + margin-top: 10px; + } + } + } +} diff --git a/app/controllers/iqdb_queries_controller.rb b/app/controllers/iqdb_queries_controller.rb index abd23e002..b9aae52c0 100644 --- a/app/controllers/iqdb_queries_controller.rb +++ b/app/controllers/iqdb_queries_controller.rb @@ -2,31 +2,49 @@ class IqdbQueriesController < ApplicationController respond_to :html, :json, :xml - def index - if !Danbooru.config.iqdbs_server - raise NotImplementedError.new("the IQDBs service isn't configured. Similarity searches are not available.") - end - + def show + server_check if params[:url] create_by_url + respond_with(@results) do |fmt| + fmt.html { render :layout => false, :action => "create_by_url" } + end elsif params[:post_id] create_by_post + respond_with(@results) do |fmt| + fmt.js { render :layout => false, :action => "create_by_post" } + end else render :nothing => true, :status => 422 end end + def check + server_check + if params[:url].present? + create_by_url + elsif params[:post_id].present? + create_by_post + else + @results = [] + end + respond_with(@results) + end + # Support both POST /iqdb_queries and GET /iqdb_queries. - alias_method :create, :index + alias_method :create, :show protected + def server_check + if !Danbooru.config.iqdbs_server + raise NotImplementedError.new("the IQDBs service isn't configured. Similarity searches are not available.") + end + end + def create_by_url @download = Iqdb::Download.new(params[:url]) @download.find_similar @results = @download.matches - respond_with(@results) do |fmt| - fmt.html { render :layout => false, :action => "create_by_url" } - end end def create_by_post @@ -34,8 +52,5 @@ protected @download = Iqdb::Download.new(@post.complete_preview_file_url) @download.find_similar @results = @download.matches - respond_with(@results) do |fmt| - fmt.js { render :layout => false, :action => "create_by_post" } - end end end diff --git a/app/views/iqdb_queries/check.html.erb b/app/views/iqdb_queries/check.html.erb new file mode 100644 index 000000000..891fdc4d0 --- /dev/null +++ b/app/views/iqdb_queries/check.html.erb @@ -0,0 +1,34 @@ +
+
+

IQDB Queries

+
+ <%= form_tag(check_iqdb_queries_path, :method => :get, :class => "simple_form inline-form" ) do %> +
+ <%= label_tag "url", "URL", class: "string optional" %> + <%= text_field_tag "url", params[:url] %> +
+
+ <%= label_tag "post_id", "Post ID", class: "string optional" %> + <%= text_field_tag "post_id", params[:post_id] %> +
+ <%= submit_tag "Check" %> + <% end %> +
+ <% if params[:url].present? || params[:post_id].present? %> +
+

Similar results

+ <% if @results.any? %> + <% @results.each do |match| %> + <%= PostPresenter.preview(match[:post], :tags => "status:any", :size => true, :similarity => match[:score]) %> + <% end %> + <% else %> +

No matches found

+ <% end %> +
+ <% end %> +
+
+ +<% content_for(:page_title) do %> + IQDB Queries - <%= Danbooru.config.app_name %> +<% end %> diff --git a/app/views/static/site_map.html.erb b/app/views/static/site_map.html.erb index ac86fe60c..e98bbd60b 100644 --- a/app/views/static/site_map.html.erb +++ b/app/views/static/site_map.html.erb @@ -28,6 +28,7 @@
  • <%= link_to("Keyboard Shortcuts", keyboard_shortcuts_path) %>
  • <%= link_to("Bookmarklet", bookmarklet_path) %>
  • <%= link_to("API Documentation", wiki_pages_path(:title => "help:api")) %>
  • +
  • <%= link_to("IQDB Queries", check_iqdb_queries_path) %>