Class: DcBlogRenderer

Inherits:
DcRenderer
  • Object
show all
Includes:
CmsCommonHelper, DcApplicationHelper
Defined in:
app/renderers/dc_blog_renderer.rb

Instance Method Summary collapse

Instance Method Details

#defaultObject

Default method will dispatch to proper method.



99
100
101
102
103
104
105
106
107
108
# File 'app/renderers/dc_blog_renderer.rb', line 99

def default
  document_link = @opts[:path].last
  if @opts[:path].size == 1 or document_link == 'bloggers'
    list_bloggers
  elsif @opts[:path].size == 2 
    list(@opts[:path])
  else
    show(document_link)
  end
end

#last_blogsObject

List last blogs on home page. But no more than 3 entries and not older than 2 months.



80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'app/renderers/dc_blog_renderer.rb', line 80

def last_blogs
  limit = @opts[:limit] || 3
  entries = DcBlog.only(:created_by_name, :link, :subject, :created_at).where(active: true)
  entries = entries.and(created_by_name: @opts[:blogger]) if @opts[:blogger]
  entries = entries.order_by(created_at: -1).limit(limit).to_a
  entries.inject('') do |result, document|
    result << @parent.link_to("/blog/#{document.created_by_name}/#{document.link}") do 
      %Q[<div>
    <span class="date">#{@parent.dc_pretty_date(document.created_at)} : </span>
    <span class="title">#{document.subject}</span><br>
      </div>].html_safe
    end
  end
end

#list(path) ⇒ Object

List all blogs from single blogger



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/renderers/dc_blog_renderer.rb', line 51

def list(path)
  # get blogger id from document path
  blogger_id = path.last.split('-').last
  documents  = if BSON::ObjectId.legal?(blogger_id)
    DcBlog.only(:created_by, :link, :subject, :created_at)
          .where(created_by: blogger_id, active: true).order_by(created_at: -1)
          .page(@parent.params[:page]).per(10)
  else
    blogger_name = path.last
    DcBlog.only(:created_by, :link, :subject, :created_at)
          .where(created_by_name: blogger_name, active: true).order_by(created_at: -1)
          .page(@parent.params[:page]).per(10)
  end
  
  @parent.render partial: 'dc_blog/list', formats: [:html], locals: { documents: documents } 
end

#list_bloggersObject

List all bloggers



71
72
73
74
75
# File 'app/renderers/dc_blog_renderer.rb', line 71

def list_bloggers
  bloggers = DcBlog.distinct(:created_by)
  bloggers = DcUser.only(:id, :name).where(:_id.in => bloggers).to_a
  @parent.render partial: 'dc_blog/bloggers', formats: [:html], locals: { bloggers: bloggers } 
end

#show(link) ⇒ Object

Show one blog entry



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/renderers/dc_blog_renderer.rb', line 34

def show(link)
  entry = DcBlog.find_by(link: link)
  return t('dc_blog.entry_not_found') if entry.nil?
# SEO
  @parent.page_title = entry.title.blank? ? entry.subject : entry.title
  @parent.page.canonical_link = nil
  @parent.dc_add_meta_tag(:name, 'description', entry.meta_description) unless entry.meta_description.blank?
  @parent.dc_add_json_ld(entry.get_json_ld)
  
  replies = DcReply.where(doc_id: entry.id, active: true).order(created_at: 1)
  @parent.render partial: 'dc_blog/show', formats: [:html], 
                 locals: { document: entry, replies: replies, opts: @opts }
end