From 542641e3e21dab2cec3a93f8b46e95f7921aea67 Mon Sep 17 00:00:00 2001 From: Albert Yi Date: Thu, 1 Nov 2018 17:20:03 -0700 Subject: [PATCH] refactor pool nav html --- app/helpers/posts_helper.rb | 11 ++ app/javascript/src/styles/specific/posts.scss | 2 +- app/models/pool.rb | 40 ++++-- app/presenters/post_presenter.rb | 116 ------------------ app/views/layouts/default.html.erb | 7 +- .../posts/partials/show/_embedded.html.erb | 17 +++ .../posts/partials/show/_nav_links.html.erb | 2 +- .../posts/partials/show/_pool_list.html.erb | 7 ++ .../partials/show/_pool_list_item.html.erb | 33 +++++ app/views/posts/partials/show/_pools.html.erb | 3 - app/views/posts/show.html.erb | 2 +- 11 files changed, 107 insertions(+), 133 deletions(-) create mode 100644 app/views/posts/partials/show/_embedded.html.erb create mode 100644 app/views/posts/partials/show/_pool_list.html.erb create mode 100644 app/views/posts/partials/show/_pool_list_item.html.erb delete mode 100644 app/views/posts/partials/show/_pools.html.erb diff --git a/app/helpers/posts_helper.rb b/app/helpers/posts_helper.rb index cbe2f994f..681c466ce 100644 --- a/app/helpers/posts_helper.rb +++ b/app/helpers/posts_helper.rb @@ -136,6 +136,17 @@ module PostsHelper html.html_safe end + def pool_link(pool) + render("posts/partials/show/pool_link", post: @post, pool: pool) + end + + def is_pool_selected?(pool) + return false if params.has_key?(:q) + return false if params.has_key?(:favgroup_id) + return false if !params.has_key?(:pool_id) + return params[:pool_id].to_i == pool.id + end + private def nav_params_for(page) diff --git a/app/javascript/src/styles/specific/posts.scss b/app/javascript/src/styles/specific/posts.scss index 7139362c2..91103f0ad 100644 --- a/app/javascript/src/styles/specific/posts.scss +++ b/app/javascript/src/styles/specific/posts.scss @@ -310,7 +310,7 @@ div#c-posts { } div#a-show { - .active { + .active, .pool-selected-true { font-weight: bold; } diff --git a/app/models/pool.rb b/app/models/pool.rb index 19b64248b..ef5ed89c6 100644 --- a/app/models/pool.rb +++ b/app/models/pool.rb @@ -39,6 +39,12 @@ class Pool < ApplicationRecord order(Arel.sql("(case pools.category when 'series' then 0 else 1 end), pools.name")) end + def selected_first(current_pool_id) + return where("true") if current_pool_id.blank? + current_pool_id = current_pool_id.to_i + reorder(Arel.sql("(case pools.id when #{current_pool_id} then 0 else 1 end), pools.name")) + end + def name_matches(name) name = normalize_name_for_search(name) name = "*#{name}*" unless name =~ /\*/ @@ -280,6 +286,14 @@ class Pool < ApplicationRecord save if will_save_change_to_post_ids? end + def first_post?(post_id) + page_number(post_id) == 1 + end + + def first_post_id + post_id_array[0] + end + def post_id_array @post_id_array ||= post_ids.scan(/\d+/).map(&:to_i) end @@ -301,20 +315,26 @@ class Pool < ApplicationRecord self end - def neighbors(post) - @neighbor_posts ||= begin - post_ids =~ /\A#{post.id} (\d+)|(\d+) #{post.id} (\d+)|(\d+) #{post.id}\Z/ + def neighbors(post, relation) + post_ids =~ /\A#{post.id} (\d+)|(\d+) #{post.id} (\d+)|(\d+) #{post.id}\Z/ - if $2 && $3 - OpenStruct.new(:previous => $2.to_i, :next => $3.to_i) - elsif $1 - OpenStruct.new(:next => $1.to_i) - elsif $4 - OpenStruct.new(:previous => $4.to_i) + if $2 && $3 + if relation == :previous + return $2.to_i else - OpenStruct.new + return $3.to_i + end + elsif $1 + if relation == :next + return $1.to_i + end + elsif $4 + if relation == :previous + return $4.to_i end end + + return nil end def cover_post_id diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index 9f76f3433..13bd09de4 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -155,33 +155,6 @@ class PostPresenter < Presenter "#{humanized_essential_tag_string} - #{@post.md5}.#{@post.file_ext}" end - def safe_mode_message(template) - html = ["This image is unavailable on safe mode (#{Danbooru.config.app_name}). Go to "] - html << template.link_to("Danbooru", "https://danbooru.donmai.us") # XXX don't hardcode. - html << " or disable safe mode to view (" - html << template.link_to("learn more", template.wiki_pages_path(title: "help:user_settings")) - html << ")." - html.join.html_safe - end - - def image_html(template) - return template.content_tag("p", "The artist requested removal of this image") if @post.banblocked? - return template.content_tag("p", template.link_to("You need a gold account to see this image.", template.new_user_upgrade_path)) if @post.levelblocked? - return template.content_tag("p", safe_mode_message(template)) if @post.safeblocked? - - if @post.is_flash? - template.render("posts/partials/show/flash", :post => @post) - elsif @post.is_video? - template.render("posts/partials/show/video", :post => @post) - elsif @post.is_ugoira? - template.render("posts/partials/show/ugoira", :post => @post) - elsif !@post.is_image? - template.render("posts/partials/show/download", :post => @post) - elsif @post.is_image? - template.render("posts/partials/show/image", :post => @post) - end - end - def has_nav_links?(template) has_sequential_navigation?(template.params) || @post.pools.undeleted.any? || @post.favorite_groups(active_id=template.params[:favgroup_id]).any? end @@ -191,93 +164,4 @@ class PostPresenter < Presenter return false if params[:pool_id].present? || params[:favgroup_id].present? return CurrentUser.user.enable_sequential_post_navigation end - - def post_footer_for_pool_html(template) - if template.params[:pool_id] - pool = Pool.where(:id => template.params[:pool_id]).first - return if pool.nil? - return if pool.neighbors(@post).next.nil? - template.link_to("Next in #{pool.pretty_name}", template.post_path(pool.neighbors(@post).next)) - else - nil - end - end - - def pool_html(template) - html = ["" - html.join("\n").html_safe - end - - def pool_link_html(template, pool, options = {}) - pool_html = [%{" - pool_html - end end diff --git a/app/views/layouts/default.html.erb b/app/views/layouts/default.html.erb index cf0a0a0fa..81022bfa8 100644 --- a/app/views/layouts/default.html.erb +++ b/app/views/layouts/default.html.erb @@ -70,7 +70,12 @@ "url" : "<%= root_url %>" } - + <% if request.domain =~ /donmai\.us/ %> + + + <% else %> + + <% end %>