Sha256: 6e4bca075e5c39ce636b2d11accfb8b0501d6d042b221e48d0b5a72124276989
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
# Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the Ruby license. module Ramaze # provides an call/answer mechanism, this is useful for example in a # login-system. # # It is basically good to redirect temporarly somewhere else without # forgetting where you come from and offering a nice way to get back # to the last urls. # # Example: # # class AuthController < Controller # helper :stack # # def login pass # if pass == 'password' # session[:logged_in] = true # answer if inside_stack? # redirect '/' # else # "failed" # end # end # # def logged_in? # !!session[:logged_in] # end # end # # class ImportantController < Controller # helper :stack # # def secret_information # call :login unless logged_in? # "Agent X is assinged to fight the RubyNinjas" # end # end module StackHelper private # redirect to another location and pushing the current location # on the session[:STACK] def call this (session[:STACK] ||= []) << request.fullpath redirect(R(this)) end # return to the last location on session[:STACK] def answer redirect R(session[:STACK].pop) if inside_stack? end # check if the stack has something inside. def inside_stack? session[:STACK] and session[:STACK].any? end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ramaze-0.0.9 | lib/ramaze/helper/stack.rb |
ramaze-0.1.0 | lib/ramaze/helper/stack.rb |
ramaze-0.1.1 | lib/ramaze/helper/stack.rb |