Noosfero/noosfero

View on GitHub
app/helpers/forum_helper.rb

Summary

Maintainability
A
1 hr
Test Coverage
module ForumHelper
  include ActionView::Helpers::DateHelper

  def cms_label_for_new_children
    _("New discussion topic")
  end

  def cms_label_for_edit
    _("Configure forum")
  end

  def list_forum_posts(articles)
    pagination = pagination_links(articles,
                                  param_name: "npage")
    content = [content_tag("tr",
                           content_tag("th", _("Discussion topic")) +
                           content_tag("th", _("Posts")) +
                           content_tag("th", _("Last post")))]
    artic_len = articles.length
    articles.each_with_index { |art, i|
      css_add = ["position-" + (i + 1).to_s()]
      position = (i % 2 == 0) ? "odd-post" : "even-post"
      css_add << "first" if i == 0
      css_add << "last"  if i == (artic_len - 1)
      css_add << "private" if art.access.eql? Entitlement::Levels.levels[:self]
      css_add << position
      content << content_tag("tr",
                             content_tag("td", topic_title(art), class: "forum-post-title") +
                             content_tag("td", link_to(art.comments.count, art.url.merge(anchor: "comments_list")), class: "forum-post-answers") +
                             content_tag("td", last_topic_update(art).html_safe, class: "forum-post-last-answer"),
                             class: "forum-post " + css_add.join(" "),
                             id: "post-#{art.id}")
    }
    content_tag("table", safe_join(content, "")) + (pagination || "").html_safe
  end

  def topic_title(article)
    topic_link = link_to(article.title, article.url)
    if article.access == Entitlement::Levels.levels[:self]
      content_tag(:span, "", class: "ui-icon ui-icon-locked", title: ("This is a private content")) +
        topic_link
    else
      topic_link
    end
  end

  def last_topic_update(article)
    info = article.info_from_last_update
    if info[:author_url]
      (time_ago_in_words(info[:date]) + " " + _("by") + " " + link_to(info[:author_name], info[:author_url])).html_safe
    else
      time_ago_in_words(info[:date]) + " " + _("by") + " " + info[:author_name]
    end
  end
end