Sha256: abd557f0ddf85881ecb059746996226b071d8e56763515ba939592a3db4298d7

Contents?: true

Size: 1.79 KB

Versions: 6

Compression:

Stored size: 1.79 KB

Contents

module Noodall
  class NodesController < ApplicationController
    rescue_from MongoMapper::DocumentNotFound, ActionView::MissingTemplate, :with => :render_404

    def show
      if flash.any? or published_states_changed_since_global_update? or stale?(:last_modified => GlobalUpdateTime::Stamp.read, :public => true)
        permalink = params[:permalink].is_a?(String) ? params[:permalink] : params[:permalink].join('/')

        @node = Node.find_by_permalink(permalink)
        @page_title = @node.title
        @page_description = @node.description
        @page_keywords = @node.keywords

        respond_to do |format|
          format.json { render :json => @node }
          format.any { render "nodes/#{@node.class.name.underscore}" }
        end
      end

    end

    def sitemap
      if stale?(:last_modified => GlobalUpdateTime::Stamp.read, :public => true)
        @page_title = 'Sitemap'
      end

      @nodes = Node.all
    end

    def search
      @nodes = Node.search(params[:q], :per_page => 10, :page => params[:page], :published_at => { :$lte => Time.zone.now }, :published_to => { :$gte => Time.zone.now })
      @page_title = 'Searching: '+ params[:q]
    end

  protected

    def published_states_changed_since_global_update?
      if Node.count(:published_at => { :$gte => GlobalUpdateTime::Stamp.read, :$lte => Time.zone.now }).zero? and Node.count(:published_to => { :$gte => GlobalUpdateTime::Stamp.read, :$lte => Time.zone.now }).zero?
        false
      else
        GlobalUpdateTime::Stamp.update!
        true
      end
    end

    def render_404(exception = nil)
      if exception
          logger.info "Rendering 404: #{exception.message}"
      end

      render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false, :content_type => "text/html"
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
noodall-ui-0.0.22 app/controllers/noodall/nodes_controller.rb
noodall-ui-0.0.21 app/controllers/noodall/nodes_controller.rb
noodall-ui-0.0.20 app/controllers/noodall/nodes_controller.rb
noodall-ui-0.0.19 app/controllers/noodall/nodes_controller.rb
noodall-ui-0.0.18 app/controllers/noodall/nodes_controller.rb
noodall-ui-0.0.17 app/controllers/noodall/nodes_controller.rb