diff --git a/app/assets/stylesheets/mobile.css.scss b/app/assets/stylesheets/mobile.css.scss new file mode 100644 index 000000000..be24c506b --- /dev/null +++ b/app/assets/stylesheets/mobile.css.scss @@ -0,0 +1,7 @@ +/* + *= require_self + *= require "./common/010_reset" + *= require "./common/020_base" + *= require "./common/030_links" + *= require_tree "./mobile" +*/ diff --git a/app/assets/stylesheets/mobile/paginator.css.scss b/app/assets/stylesheets/mobile/paginator.css.scss new file mode 100644 index 000000000..75f62d1d2 --- /dev/null +++ b/app/assets/stylesheets/mobile/paginator.css.scss @@ -0,0 +1,38 @@ +div.paginator { + display: block; + padding: 2em 0 1em 0; + font-size: 2em; + text-align: center; + font-weight: bold; + clear: both; + + a { + margin: 0 0.25em; + padding: 0 0.5em; + font-weight: bold; + border: 1px solid #EAEAEA; + } + + a.arrow { + border: none; + } + + a.arrow:hover { + background: white; + color: #9093FF; + } + + a.current { + border: 1px solid #AAA; + } + + a:hover { + background: rgb(60, 60, 220); + color: white; + } + + span { + margin: 0 3px; + padding: 2px 6px; + } +} diff --git a/app/assets/stylesheets/mobile/posts.css.scss b/app/assets/stylesheets/mobile/posts.css.scss new file mode 100644 index 000000000..541cbb4a0 --- /dev/null +++ b/app/assets/stylesheets/mobile/posts.css.scss @@ -0,0 +1,138 @@ +@import "../common/000_vars.css.scss"; + +header { + margin: 0 0 10px 0; + padding: 0 10px; + + input { + font-size: 1.5em; + } + + menu { + margin: 0; + padding: 0; + + li { + margin: 0; + padding: 0; + width: 33%; + display: inline-block; + vertical-align: middle; + } + + li#search-item { + input { + font-size: 1.5em; + } + } + + li#site-item { + color: $link_color; + font-size: 1.5em; + text-align: center; + } + + li#sign-in-item { + text-align: right; + + a { + font-weight: bold; + } + } + } +} + +footer { + div.paginator { + overflow: visible; + + li { + a { + border: none; + } + } + + li:first-child { + float: left; + } + + li:last-child { + float: right; + } + } +} + +div.post-previews { + overflow: visible; +} + +article.post-preview { + height: 188px; + width: 188px; + display: inline-block; + float: left; + text-align: center; + vertical-align: middle; +} + +article.post-preview.blacklisted-active { + display: none; +} + +article.post-preview img { + border: 3px solid transparent; +} + +article.post-preview.post-status-has-parent img { + border: 3px solid #CC0; +} + +article.post-preview.post-status-has-children img { + border: 3px solid #0F0; +} + +article.post-preview.post-status-pending img { + border: 3px solid #00F; +} + +article.post-preview.post-status-flagged img { + border: 3px solid #F00; +} + +img#image { + margin: 10px; +} + +div#tag-list { + padding: 10px; + + li { + display: inline-block; + + a { + background: #eee; + font-size: 1.5em; + font-weight: bold; + margin: 0 0.5em; + padding: 0.2em 0.5em; + border: 1px solid #666; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + } + } +} + +div#c-posts { + li.category-1 a { + color: #A00; + } + + li.category-3 a { + color: #A0A; + } + + li.category-4 a { + color: #0A0; + } +} diff --git a/app/assets/stylesheets/specific/posts.css.scss b/app/assets/stylesheets/specific/posts.css.scss index af471c568..2eb85daa6 100644 --- a/app/assets/stylesheets/specific/posts.css.scss +++ b/app/assets/stylesheets/specific/posts.css.scss @@ -13,25 +13,6 @@ article.post-preview { float: left; text-align: center; vertical-align: middle; - - div.text-post-preview { - font-size: $h2_size; - font-weight: bold; - height: 150px; - width: 150px; - display: block; - text-align: center; - line-height: 150px; - border: 1px solid #CCC; - } -} - -div.text-post-medium { - height: 150px; - width: 480px; - text-align: center; - line-height: 480px; - border: 1px solid #CCC; } article.post-preview.blacklisted-active { diff --git a/app/controllers/m/posts_controller.rb b/app/controllers/m/posts_controller.rb new file mode 100644 index 000000000..81a266d0a --- /dev/null +++ b/app/controllers/m/posts_controller.rb @@ -0,0 +1,14 @@ +module M + class PostsController < ApplicationController + layout "mobile" + + def index + @post_set = PostSets::Post.new(params[:tags], params[:page]) + @posts = @post_set.posts + end + + def show + @post = Post.find(params[:id]) + end + end +end diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index 994d18a40..399ccfcba 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -1,5 +1,5 @@ class PostPresenter < Presenter - def self.preview(post) + def self.preview(post, options = {}) if post.is_deleted? && !CurrentUser.is_privileged? return "" end @@ -9,8 +9,10 @@ class PostPresenter < Presenter flags << "flagged" if post.is_flagged? flags << "deleted" if post.is_deleted? + path = options[:path_prefix] || "/posts" + html = %{
} - html << %{} + html << %{} if post.is_image? html << %{} @@ -51,8 +53,8 @@ class PostPresenter < Presenter end end - def tag_list_html(template) + def tag_list_html(template, options = {}) @tag_set_presenter ||= TagSetPresenter.new(@post.tag_array) - @tag_set_presenter.tag_list_html(template, :show_extra_links => CurrentUser.user.is_privileged?) + @tag_set_presenter.tag_list_html(template, options.merge(:show_extra_links => CurrentUser.user.is_privileged?)) end end diff --git a/app/presenters/tag_set_presenter.rb b/app/presenters/tag_set_presenter.rb index 8862d9ee7..cad95173e 100644 --- a/app/presenters/tag_set_presenter.rb +++ b/app/presenters/tag_set_presenter.rb @@ -36,20 +36,26 @@ private html << %{
  • } current_query = template.params[:tags] || "" - if categories[tag] == 1 - html << %{? } - else - html << %{? } - end + unless options[:name_only] + if categories[tag] == 1 + html << %{? } + else + html << %{? } + end - if CurrentUser.user.is_privileged? - html << %{+ } - html << %{ } + if CurrentUser.user.is_privileged? + html << %{+ } + html << %{ } + end end humanized_tag = tag.tr("_", " ") - html << %{#{h(humanized_tag)} } - html << %{} + counts[tag].to_s + %{} + path = options[:path_prefix] || "/posts" + html << %{#{h(humanized_tag)} } + + unless options[:name_only] + html << %{} + counts[tag].to_s + %{} + end html << "
  • " html diff --git a/app/views/layouts/mobile.html.erb b/app/views/layouts/mobile.html.erb new file mode 100644 index 000000000..ad3faf34f --- /dev/null +++ b/app/views/layouts/mobile.html.erb @@ -0,0 +1,12 @@ + + + + <%= yield :page_title %> + <%= csrf_meta_tag %> + <%= stylesheet_link_tag "mobile", :media => "screen" %> + <%= javascript_include_tag "mobile" %> + + +<%= yield :layout %> + + diff --git a/app/views/m/posts/_header.html.erb b/app/views/m/posts/_header.html.erb new file mode 100644 index 000000000..2caed2d40 --- /dev/null +++ b/app/views/m/posts/_header.html.erb @@ -0,0 +1,19 @@ +
    + +
  • + <%= form_tag(m_posts_path, :method => :get) do %> + <%= search_field_tag :tags, params[:tags] %> + <% end %> +
  • +
  • +

    + <%= Danbooru.config.app_name %> +

    +
  • +
  • + <% if true || CurrentUser.is_anonymous? %> + <%= link_to "Sign in", new_m_session_path %> + <% end %> +
  • +
    +
    diff --git a/app/views/m/posts/_tags.html.erb b/app/views/m/posts/_tags.html.erb new file mode 100644 index 000000000..fb6a8f7bf --- /dev/null +++ b/app/views/m/posts/_tags.html.erb @@ -0,0 +1,3 @@ +
    + <%= post.presenter.tag_list_html(self, :name_only => true, :path_prefix => "/m/posts") %> +
    diff --git a/app/views/m/posts/index.html.erb b/app/views/m/posts/index.html.erb new file mode 100644 index 000000000..fb3f20d7a --- /dev/null +++ b/app/views/m/posts/index.html.erb @@ -0,0 +1,19 @@ +
    + <%= render "header" %> + + <% @post_set.posts.each do |post| %> + <%= PostPresenter.preview(post, :path_prefix => "/m/posts") %> + <% end %> + +
    + <%= sequential_paginator(@post_set.posts) %> +
    +
    + +<% content_for(:page_title) do %> + <% if params[:tags].present? %> + <%= params[:tags] %> - <%= Danbooru.config.app_name %> + <% else %> + <%= Danbooru.config.app_name %> + <% end %> +<% end %> diff --git a/app/views/m/posts/show.html.erb b/app/views/m/posts/show.html.erb new file mode 100644 index 000000000..94caf5df4 --- /dev/null +++ b/app/views/m/posts/show.html.erb @@ -0,0 +1,11 @@ +
    + <%= render "header" %> + + <%= image_tag(@post.large_file_url, :width => @post.large_image_width, :height => @post.large_image_height, :id => "image") %> + + <%= render "tags", :post => @post %> +
    + +<% content_for(:page_title) do %> + <%= @post.tag_string %> - <%= Danbooru.config.app_name %> +<% end %> diff --git a/config/routes.rb b/config/routes.rb index f0209c0b6..6c3170856 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -163,6 +163,11 @@ Danbooru::Application.routes.draw do end resources :wiki_page_versions, :only => [:index, :show] + namespace :m do + resources :posts + resource :session + end + # aliases resources :wpages, :controller => "wiki_pages" resources :ftopics, :controller => "forum_topics"