Sha256: 4a2533e25f8d95ac741a6465dec1480388c8085d831210c2c571e148a103e3e8

Contents?: true

Size: 1.59 KB

Versions: 4

Compression:

Stored size: 1.59 KB

Contents

if defined? RHO_ME
	require 'rho/renderME'
else
	require 'rho/render'
end

require 'rho/rhosupport'

module Rho
  class RhoController
	
    def default_action
      return Hash['GET','show','PUT','update','POST','update',
        'DELETE','delete'][@request['request-method']] unless @request['id'].nil?
      return Hash['GET','index','POST','create'][@request['request-method']]
    end 
	
    def serve(object_mapping,req,res)
      @request, @response = req, res;
      @object_mapping = object_mapping
      @params = RhoSupport::query_params req
      send req['action'].nil? ? default_action : req['action']
    end
	
    def link_to(name,action,id=nil,confirm=nil)
      action = action.to_s
      if (action != 'delete')
        "<a href=\"#{url_for(action,id)}\">#{name}</a>"
      else
        "<a href=\"#{url_for(action,id)}\" onclick=\""+  #if (confirm('#{confirm}')) { 
        "var f = document.createElement('form'); f.style.display = 'none';" + 
          "this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;f.submit();"+
          "return false;\">#{name}</a>"
      end	
    end
	
    def url_for(action,id=nil)
      action = action.to_s
      amurl = '/'+@request['application']+'/'+@request['model'] 
      return amurl if action == 'create' or action == 'index'
      return amurl +'/'+ (id.nil? ? action.to_s : id.to_s + '/' + action.to_s)
    end
	
    def redirect(action,id=nil)
      @response['status'] = 302
      @response['headers']['Location'] = url_for(action,id)
      @response['message'] = 'Moved temporarily'
      return ''
    end
  end # RhoController
end # Rho

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rhodes-0.1.0 lib/rho/rhocontroller.rb
rhodes-0.1.1 lib/rho/rhocontroller.rb
rhodes-0.1.2 lib/rho/rhocontroller.rb
rhodes-0.1.3 lib/rho/rhocontroller.rb