diff --git a/.gitignore b/.gitignore index 20c73819c..51e59b310 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,9 @@ .bundle config/database.yml config/danbooru_local_config.rb -lib/danbooru_image_resizer/*.so -lib/danbooru_image_resizer/*.o -lib/danbooru_image_resizer/*.bundle -lib/danbooru_image_resizer/*.log db/*.sqlite3 log/*.log -tmp/**/* -tmp/upload_* +tmp/* public/data vendor/cache/*.gem .sass-cache @@ -16,3 +11,5 @@ vendor/cache/*.gem coverage *~ *.swp +tmp/*.jpg +tmp/*.png diff --git a/app/assets/javascripts/common.js b/app/assets/javascripts/common.js index 4ed12d1e3..841046273 100644 --- a/app/assets/javascripts/common.js +++ b/app/assets/javascripts/common.js @@ -8,17 +8,20 @@ $(document).ready(function() { $("table.striped tbody tr:even").addClass("even"); $("table.striped tbody tr:odd").addClass("odd"); - // More link - $("#site-map-link").click(function(e) { - $("#more-links").toggle(); - e.preventDefault(); - e.stopPropagation(); - }); - $("#more-links").hide().offset({top: $("#site-map-link").offset().top + $("#site-map-link").height() + 10, left: $("#site-map-link").offset().left}); - - $(document).click(function(e) { - $("#more-links").hide(); - }); + if ($("#site-map-link").length > 0) { + // More link + $("#site-map-link").click(function(e) { + $("#more-links").toggle(); + e.preventDefault(); + e.stopPropagation(); + }); + + $("#more-links").hide().offset({top: $("#site-map-link").offset().top + $("#site-map-link").height() + 10, left: $("#site-map-link").offset().left}); + + $(document).click(function(e) { + $("#more-links").hide(); + }); + } // Ajax links $("a[data-remote=true]").click(function(e) { diff --git a/app/assets/javascripts/landings.js b/app/assets/javascripts/landings.js new file mode 100644 index 000000000..5b65fcf0f --- /dev/null +++ b/app/assets/javascripts/landings.js @@ -0,0 +1,8 @@ +$(function() { + $("#c-landings div.data").each(function(i, div) { + var $div = $(div); + var $image = $div.prev(); + + $div.width($image.width() - 10).height($image.height() - 10).offset({top: $image.position().top, left: $image.position().left}); + }); +}); diff --git a/app/assets/stylesheets/common/030_links.css.scss b/app/assets/stylesheets/common/030_links.css.scss index ec1322e72..536b1b62a 100644 --- a/app/assets/stylesheets/common/030_links.css.scss +++ b/app/assets/stylesheets/common/030_links.css.scss @@ -31,4 +31,8 @@ a.login { a.forum-updated { font-style: italic; +} + +a.wiki-link { + margin-right: 0.3em; } \ No newline at end of file diff --git a/app/assets/stylesheets/specific/landing.css.scss b/app/assets/stylesheets/specific/landing.css.scss new file mode 100644 index 000000000..11496c929 --- /dev/null +++ b/app/assets/stylesheets/specific/landing.css.scss @@ -0,0 +1,44 @@ +div#c-landings { + div#a-show { + padding-top: 4em; + width: 960px; + margin: auto; + + h1 { + text-align: center; + font-size: 4em; + } + + p.slogan { + text-align: center; + font-size: 1.5em; + font-weight: bold; + } + + div.column { + width: 480px; + vertical-align: top; + float: left; + background-color: #000; + } + + div.landing-post { + overflow: hidden; + } + + div.landing-post:hover img { + opacity: 0.25; + } + + div.landing-post:hover div.data { + opacity: 1.0; + } + + div.landing-post div.data { + position: absolute; + color: white; + padding: 5px; + cursor: pointer; + } + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/specific/posts.css.scss b/app/assets/stylesheets/specific/posts.css.scss index 0bff800a5..5b8aa2777 100644 --- a/app/assets/stylesheets/specific/posts.css.scss +++ b/app/assets/stylesheets/specific/posts.css.scss @@ -26,6 +26,14 @@ article.post-preview { } } +div.text-post-medium { + height: 150px; + width: 480px; + text-align: center; + line-height: 480px; + border: 1px solid #CCC; +} + article.post-preview.blacklisted-active { display: none; } diff --git a/app/controllers/landings_controller.rb b/app/controllers/landings_controller.rb new file mode 100644 index 000000000..b5cee9f90 --- /dev/null +++ b/app/controllers/landings_controller.rb @@ -0,0 +1,6 @@ +class LandingsController < ApplicationController + def show + @explorer = PopularPostExplorer.new + render :layout => "blank" + end +end diff --git a/app/helpers/landings_helper.rb b/app/helpers/landings_helper.rb new file mode 100644 index 000000000..121afc025 --- /dev/null +++ b/app/helpers/landings_helper.rb @@ -0,0 +1,2 @@ +module LandingsHelper +end diff --git a/app/logical/popular_post_explorer.rb b/app/logical/popular_post_explorer.rb new file mode 100644 index 000000000..44bdf54fd --- /dev/null +++ b/app/logical/popular_post_explorer.rb @@ -0,0 +1,30 @@ +class PopularPostExplorer + attr_reader :col1, :col2, :posts + + def initialize + load_posts + sort_posts + end + +private + + def load_posts + # Post.tag_match("order:rank").where("image_width >= ?", Danbooru.config.medium_image_width).limit(5).offset(offset) + @posts = Post.where("image_width >= ?", Danbooru.config.medium_image_width).limit(50) + end + + def sort_posts + height1, height2 = 0, 0 + @col1, @col2 = [], [] + + posts.each do |post| + if height1 > height2 + @col2 << post + height2 += post.medium_image_height + else + @col1 << post + height1 += post.medium_image_height + end + end + end +end diff --git a/app/models/post.rb b/app/models/post.rb index d170d2391..c20116d2a 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -473,6 +473,29 @@ class Post < ActiveRecord::Base def has_tag?(tag) tag_string =~ /(?:^| )#{tag}(?:$| )/ end + + def essential_tag_string + tag_categories = Tag.categories_for(tag_array) + tag_array.each do |tag| + if tag_categories[tag] == Danbooru.config.tag_category_mapping["copyright"] + return "copyright: " + tag + end + end + + tag_array.each do |tag| + if tag_categories[tag] == Danbooru.config.tag_category_mapping["character"] + return "character: " + tag + end + end + + tag_array.each do |tag| + if tag_categories[tag] == Danbooru.config.tag_category_mapping["artist"] + return "artist: " + tag + end + end + + return tag_array.first + end end module FavoriteMethods diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index 623cc4d2b..994d18a40 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -32,6 +32,13 @@ class PostPresenter < Presenter def preview_html PostPresenter.preview(@post) end + + def medium_image_html(template, options = {}) + return "" if @post.is_deleted? && !CurrentUser.user.is_janitor? + return "" if !Danbooru.config.can_user_see_post?(CurrentUser.user, @post) + + template.render("posts/partials/show/medium_image", :post => @post) + end def image_html(template) return template.content_tag("p", "This image was deleted.") if @post.is_deleted? && !CurrentUser.user.is_janitor? diff --git a/app/presenters/tag_set_presenter.rb b/app/presenters/tag_set_presenter.rb index 7d524c59a..8862d9ee7 100644 --- a/app/presenters/tag_set_presenter.rb +++ b/app/presenters/tag_set_presenter.rb @@ -36,12 +36,13 @@ private html << %{
Find good art fast
+ +