h1 Posts

= form_for :posts, ~p"/posts", [method: "get", class: "hform", enforce_utf8: false], fn f ->
  .field
    = text_input f, :pq, name: :pq, value: @conn.params["pq"], class: "input hform__text", placeholder: "Search posts", autocapitalize: "none"
    = submit "Search", class: "hform__button button"

  .fieldlabel
    ' For more information, see the
    a href="/pages/search_syntax" search syntax documentation
    ' . Search results are sorted by creation date.

h2 Search Results

= cond do
  - Enum.any?(@posts) ->
    - route = fn p -> ~p"/posts?#{p}" end
    - pagination = render PhilomenaWeb.PaginationView, "_pagination.html", page: @posts, route: route, params: [pq: @conn.params["pq"]], conn: @conn

    = for {body, post} <- @posts, post.topic.hidden_from_users == false do
      div
        h3
          =<> link post.topic.forum.name, to: ~p"/forums/#{post.topic.forum}"
          | &raquo;
          =<> link post.topic.title, to: ~p"/forums/#{post.topic.forum}/topics/#{post.topic}"
          | &raquo;
          - post_link = ~p"/forums/#{post.topic.forum}/topics/#{post.topic}?#{[post_id: post.id]}" <> "#post_#{post.id}"
          = if post.topic_position == 0 do
            =<> link "Topic Opener", to: post_link
          - else
            =<> link "Post #{post.topic_position}", to: post_link
        = render PhilomenaWeb.PostView, "_post.html", body: body, post: post, conn: @conn

    .block
      .block__header.block__header--light.page__header
        .page__pagination = pagination
        .page__info
          span.block__header__title
            = render PhilomenaWeb.PaginationView, "_pagination_info.html", page: @posts, conn: @conn

  - assigns[:error] ->
    p
      ' Oops, there was an error evaluating your query:
    pre = assigns[:error]
  
  - true ->
    p
      ' No posts found!

h3 Default search
p
  ' If you do not specify a field to search over, the search engine will
  ' search for posts with a body that is similar to the query's
  em word stems
  ' . For example, posts containing the words
  code winged humanization
  ' ,
  code wings
  ' , and
  code> spread wings
  ' would all be found by a search for
  code wing
  ' , but
  code> sewing
  ' would not be.

h3 Allowed fields
table.table
  thead
    tr
      th Field Selector
      th Type
      th Description
      th Example
  tbody
    tr
      td
        code author
      td Literal
      td Matches the author of this post. Anonymous authors will never match this term.
      td
        code = link "author:Joey", to: ~p"/posts?#{[pq: "author:Joey"]}"
    tr
      td
        code body
      td Full Text
      td Matches the body of this post. This is the default field.
      td
        code = link "body:test", to: ~p"/posts?#{[pq: "body:test"]}"
    tr
      td
        code created_at
      td Date/Time Range
      td Matches the creation time of this post.
      td
        code = link "created_at:2015", to: ~p"/posts?#{[pq: "created_at:2015"]}"
    tr
      td
        code id
      td Numeric Range
      td Matches the numeric surrogate key for this post.
      td
        code = link "id:1000000", to: ~p"/posts?#{[pq: "id:1000000"]}"
    tr
      td
        code my
      td Meta
      td
        code> my:posts
        ' matches posts you have posted if you are signed in.
      td
        code = link "my:posts", to: ~p"/posts?#{[pq: "my:posts"]}"
    tr
      td
        code subject
      td Full Text
      td Matches the title of the topic.
      td
        code = link "subject:time wasting thread", to: ~p"/posts?#{[pq: "subject:time wasting thread"]}"
    tr
      td
        code topic_id
      td Literal
      td Matches the numeric surrogate key for the topic this post belongs to.
      td
        code = link "topic_id:7000", to: ~p"/posts?#{[pq: "topic_id:7000"]}"
    tr
      td
        code topic_position
      td Numeric Range
      td Matches the offset from the beginning of the topic of this post. Positions begin at 0.
      td
        code = link "topic_position:0", to: ~p"/posts?#{[pq: "topic_position:0"]}"
    tr
      td
        code updated_at
      td Date/Time Range
      td Matches the creation or last edit time of this post.
      td
        code = link "updated_at.gte:2 weeks ago", to: ~p"/posts?#{[pq: "updated_at.gte:2 weeks ago"]}"
    tr
      td
        code user_id
      td Literal
      td Matches posts with the specified user_id. Anonymous users will never match this term.
      td
        code = link "user_id:211190", to: ~p"/posts?#{[pq: "user_id:211190"]}"
    tr
      td
        code forum
      td Literal
      td Matches the short name for the forum this post belongs to.
      td
        code = link "forum:meta", to: ~p"/posts?#{[pq: "forum:meta"]}"
