Class: DcBlogRenderer
- Inherits:
-
DcRenderer
- Object
- DcRenderer
- DcBlogRenderer
- Includes:
- CmsCommonHelper, DcApplicationHelper
- Defined in:
- app/renderers/dc_blog_renderer.rb
Instance Method Summary collapse
-
#default ⇒ Object
Default method will dispatch to proper method.
-
#last_blogs ⇒ Object
List last blogs on home page.
-
#list(path) ⇒ Object
List all blogs from single blogger.
-
#list_bloggers ⇒ Object
List all bloggers.
-
#show(link) ⇒ Object
Show one blog entry.
Instance Method Details
#default ⇒ Object
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_blogs ⇒ Object
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_bloggers ⇒ Object
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.(:name, 'description', entry.) unless entry..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 |