From 1fce794b99889ce8f81da51a1d9747e1479d7d96 Mon Sep 17 00:00:00 2001 From: evazion Date: Sat, 15 Sep 2018 11:40:27 -0500 Subject: [PATCH] artist urls: add /artist_urls index page. --- app/controllers/artist_urls_controller.rb | 12 +++++- app/models/artist_url.rb | 18 +++++++++ app/views/artist_urls/index.html.erb | 44 +++++++++++++++++++++ app/views/artists/_secondary_links.html.erb | 1 + config/routes.rb | 2 +- 5 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 app/views/artist_urls/index.html.erb diff --git a/app/controllers/artist_urls_controller.rb b/app/controllers/artist_urls_controller.rb index 1c75ece3b..cd3c97e54 100644 --- a/app/controllers/artist_urls_controller.rb +++ b/app/controllers/artist_urls_controller.rb @@ -1,6 +1,14 @@ class ArtistUrlsController < ApplicationController - respond_to :json - before_action :member_only + respond_to :json, :xml, :html + before_action :member_only, except: [:index] + + def index + @artist_urls = ArtistUrl.includes(:artist).search(search_params).paginate(params[:page], :limit => params[:limit], :search_count => params[:search]) + respond_with(@artist_urls) do |format| + format.json { render json: @artist_urls.to_json(include: "artist",) } + format.xml { render xml: @artist_urls.to_xml(include: "artist", root: "artist-urls") } + end + end def update @artist_url = ArtistUrl.find(params[:id]) diff --git a/app/models/artist_url.rb b/app/models/artist_url.rb index 8612ed3fb..68625c9dc 100644 --- a/app/models/artist_url.rb +++ b/app/models/artist_url.rb @@ -45,6 +45,24 @@ class ArtistUrl < ApplicationRecord end end + def self.search(params = {}) + q = super + + q = q.attribute_matches(:artist_id, params[:artist_id]) + q = q.attribute_matches(:is_active, params[:is_active]) + + case params[:order] + when /\A(id|artist_id|url|normalized_url|is_active|created_at|updated_at)(?:_(asc|desc))?\z/i + dir = $2 || :desc + q = q.order($1 => dir).order(id: :desc) + else + q = q.apply_default_order(params) + end + + q + end + + def parse_prefix case url when /^-/ diff --git a/app/views/artist_urls/index.html.erb b/app/views/artist_urls/index.html.erb new file mode 100644 index 000000000..fd4d498e7 --- /dev/null +++ b/app/views/artist_urls/index.html.erb @@ -0,0 +1,44 @@ +
+
+ <%= simple_form_for(:search, url: artist_urls_path, method: :get, defaults: { required: false }, html: { class: "inline-form" }) do |f| %> + <%= f.input :is_active, label: "Active?", collection: [["Yes", true], ["No", false]], include_blank: true, selected: params[:search][:is_active] %> + <%= f.input :order, collection: [["ID", "id"], ["Created", "created_at"], ["Updated", "updated_at"]], selected: params[:search][:order] %> + <%= f.submit "Search" %> + <% end %> + + + + + + + + + + + + + + + <% @artist_urls.each do |artist_url| %> + + <%= tag.td artist_url.id %> + <%= tag.td link_to(artist_url.artist.name, artist_url.artist) %> + <%= tag.td external_link_to(artist_url.url.to_s) %> + <%= tag.td external_link_to(artist_url.normalized_url) %> + <%= tag.td artist_url.is_active.to_s %> + <%= tag.td artist_url.created_at %> + <%= tag.td artist_url.updated_at %> + + <% end %> + +
IDArtist NameURLNormalized URLActive?CreatedUpdated
+ + <%= numbered_paginator(@artist_urls) %> +
+
+ +<%= render "artists/secondary_links" %> + +<% content_for(:page_title) do %> + Artist URLs - <%= Danbooru.config.app_name %> +<% end %> diff --git a/app/views/artists/_secondary_links.html.erb b/app/views/artists/_secondary_links.html.erb index a814d6d02..1d68cdcec 100644 --- a/app/views/artists/_secondary_links.html.erb +++ b/app/views/artists/_secondary_links.html.erb @@ -5,6 +5,7 @@ <%= subnav_link_to "Banned", banned_artists_path %> <%= subnav_link_to "New", new_artist_path %> <%= subnav_link_to "Recent changes", artist_versions_path %> + <%= subnav_link_to "URLs", artist_urls_path %> <% if @artist && !@artist.new_record? %>
  • |
  • <%= subnav_link_to "Posts (#{Post.fast_count(@artist.name)})", posts_path(:tags => @artist.name) %> diff --git a/config/routes.rb b/config/routes.rb index d4a354b7a..a56ed5057 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -81,7 +81,7 @@ Rails.application.routes.draw do get :banned end end - resources :artist_urls, only: [:update] + resources :artist_urls, only: [:index, :update] resources :artist_versions, :only => [:index] do collection do get :search