Sha256: fe5ecd48c695b1189a5505a13f5caa3e13d3887727f20caa741e63990a5aa344

Contents?: true

Size: 1.91 KB

Versions: 4

Compression:

Stored size: 1.91 KB

Contents

# * George Moschovitis  <gm@navel.gr>
# (c) 2004-2005 Navel, all rights reserved.
# $Id$

require 'nitro/controller'
require 'nitro/builders/rss'
require 'nitro/ui/pager'

require 'lib/blog/model'
require 'lib/blog/template'

# The controller of the Blog part.

class BlogController < N::Controller
	include BlogTemplate
	
	before_filter :get_errors
	# after_filter :cache
	
	scaffold BlogEntry, :name => 'entry', :index => true
	scaffold Comment

	def list_entry
		@pager = UI::Pager.new('entries', request, 3)
		@entries = BlogEntry.all("ORDER BY oid DESC #{@pager.sql_limit}")
		@pager.set(BlogEntry.count)
	end
	
	def new_entry
		entry = request.fill(BlogEntry.new)
		entry.author = session[:username]

		unless entry.valid?
			session[:errors] = entry.errors
			redirect_referer '#new_entry'
		end

		entry.save!
	end	

	# example of generated view

	def list_entry__xml
		@out.build_rss(@entries, :description => 'Blog entries', :link => context.host_url)
	end
	
	def new_comment
		comment = request.fill(Comment.new)

		unless comment.valid?
			session[:errors] = comment.errors
			redirect_referer '#new_comment'
		end
		
		comment.save!
	end

	# example of generated view

	def list_comment__xml
		@out.build_rss(@comments, :description => 'Blog comments', :link => context.host_url)
	end
	
	def login
		if password = request['password']
			if password == Blog.password
				session[:owner] = true
				session[:username] = Blog.username
				redirect '/'
			else
				@error = 'Invalid password'
			end
		end
	end
	
	def logout
		session.delete(:owner)
		session.delete(:username)
	end	
	
private

	# A helper prefilter, autocleans session errors.
	# Used as an example.

	def get_errors 
		# gmosx: should better implement top-level filters!
		if errors = session.delete(:errors)
			@errors = errors
		end
	end

	# Just an example.

	def cache
		# Call the automatically configured logger.

		Logger.info "cache (after filter example)"
	end
	
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nitro-0.11.0 examples/no_xsl_blog/lib/blog/controller.rb
nitro-0.12.0 examples/no_xsl_blog/lib/blog/controller.rb
nitro-0.13.0 examples/no_xsl_blog/lib/blog/controller.rb
nitro-0.14.0 examples/no_xsl_blog/lib/blog/controller.rb