require 'redcarpet/render_strip' class BlogsController < ApplicationController def summary @blogs = Blog.where(published: true).order(published_at: :desc).paginate(page: params[:page], per_page: 10) if not params[:page] @main_page = true end end def index @blogs = Blog.where(published: true).order(published_at: :desc) respond_to do |format| format.html format.atom end end def show @blog = Blog.find_by_slug(params[:slug]) raise ActiveRecord::RecordNotFound unless @blog raise ActiveRecord::RecordNotFound unless @blog.published @prev = @blog.prev @next = @blog.next body = Redcarpet::Markdown.new(Redcarpet::Render::StripDown).render(@blog.body) set_meta_tags(og: { title: @blog.title, type: "article", description: (body.length <= 300 ? body : body[0..299]), url: blog_url(@blog, host: "www.fourisland.com"), article: { published_time: @blog.published_at.iso8601, modified_time: @blog.updated_at.iso8601 } }) end def upvote @blog = Blog.find_by_slug(params[:slug]) raise ActiveRecord::RecordNotFound unless @blog raise ActiveRecord::RecordNotFound unless @blog.published respond_to do |format| if @blog.upvote! request.remote_ip format.html do flash[:notice] = "You have upvoted the blog post \"#{@blog.title}\"." redirect_to @blog end format.js { render "voted" } format.xml { head :ok } else format.html do flash[:notice] = "You have already voted on the blog post \"#{@blog.title}\"." redirect_to @blog end format.xml { render :xml => { :error => "Someone from your IP address has already voted on this blog post."} } end end end def downvote @blog = Blog.find_by_slug(params[:slug]) raise ActiveRecord::RecordNotFound unless @blog raise ActiveRecord::RecordNotFound unless @blog.published respond_to do |format| if @blog.downvote! request.remote_ip format.html do flash[:notice] = "You have downvoted the blog post \"#{@blog.title}\"." redirect_to @blog end format.js { render "voted" } format.xml { head :ok } else format.html do flash[:notice] = "You have already voted on the blog post \"#{@blog.title}\"." redirect_to @blog end format.xml { render :xml => { :error => "Someone from your IP address has already voted on this blog post."} } end end end end