#------------------------------------------------------------------------ # (The MIT License) # # Copyright (c) 2008-2011 Rhomobile, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # http://rhomobile.com #------------------------------------------------------------------------ module Rho class RhoController def truncate(text,length) if text omission = '...' l = length - omission.length (text.length > length ? text[0...l] + omission : text).to_s end end def click_to_call(phone,description=nil) description = phone if description.nil? return "" if phone.nil? or phone.length == 0 "#{description}" end def mailto(address,description=nil) description = address if description.nil? return "" if address.nil? or address.length == 0 "#{description}" end # Examples of how to use link_to method: # # link_to "Visit Other Site", "http://www.rhomobile.com/" # ==> Visit Other Site # # link_to "Help", { :action => "help" } # ==> Help # # link_to "Delete", { :action => "delete", :id => '{12}' } # ==> Delete # # link_to "Show", { :action => "show", :id => '{12}'},"style=\"height:4px;width:7px;border-width:0px;\"" # ==> Show # # link_to "Delete", { :action => "delete", :id => '{12}' }, "class=\"delete_link\"" # ==> Delete" # # link_to "Invate",:action => :invite, :query => {:name => 'John Smith', 'address' => "http://john.smith.com"} # ==> Invate # def link_to(name,url_params = {},html_options = "",confirm = nil) url = url_for(url_params) if (url_params.is_a?(String) || url_params[:action].to_s != 'delete') "#{name || url}" else "#{name || url}" end end # Examples of how to use url_for method: # # url_for '/some_url' # ==> /some_url # # When generating a new URL, missing values may be filled in from the current request's parameters. # For example, if application name or model are not specifyed in the call parameters, they would be filled from the request. # # url_for :action => :index # ==> /application/model # # url_for :action => :create # ==> /application/model # # url_for :action => :new # ==> /application/model/new # # url_for :action => :show, :id => '{12}' # ==> /application/model/{12}/show # # url_for :model => :another_model, :action => :show, :id => '{12}' # ==> /application/another_model/{12}/show # # url_for :controller => :another_controller, :action => :show, :id => '{12}' # ==> /application/another_controller/{12}/show # # url_for :application => :another_app, :model => :another_model, :action => :show, :id => '{12}' # ==> /another_app/another_model/{12}/show # # url_for :action => :create, :query => {:name => 'John Smith', 'address' => "http://john.smith.com"} # ==> /application/model?name=John%20Smith&address=http%3A%2F%2Fjohn.smith.com # # url_for :action => :show, :id => '{12}', :fragment => "an-anchor" # ==> /application/model/{12}/show#an-anchor # def url_for(params = {}) return params.to_s if params.is_a?( String ) or params.is_a?( Symbol ) return '/' if not params.is_a?( Hash ) or params.nil? params = params.symbolize_keys if params.is_a? Hash application = params[:application] || @request['application'] model = params[:controller] || params[:model] || @request['model'] action = params[:action].nil? ? nil : params[:action].to_s id = params[:id].nil? ? nil : params[:id].to_s id = "{#{id}}" if id and not( id =~ /^{/ and id =~ /}$/ ) if params[:query_s] query = params[:query_s] else query = query_to_s(params[:query]) end fragment = params[:fragment].nil? ? '' : '#' + params[:fragment] amurl = '' amurl << '/' << application.to_s << '/' if application amurl << model.to_s is_bb6 = System::get_property('platform') == 'Blackberry' && (System::get_property('os_version').split('.')[0].to_i >= 6) if action.nil? or ( !is_bb6 && action == 'create' ) or action == 'index' amurl << query << fragment else amurl << '/' << (id.nil? ? action : id + '/' + action) << query << fragment end amurl #amurl = '/' + application.to_s + '/' + model.to_s #return amurl + query + fragment if action.nil? or action == 'create' or action == 'index' #return amurl +'/'+ (id.nil? ? action : id + '/' + action) + query + fragment end def url_for_nativeview(params = {}) return params.to_s if params.is_a?( String ) or params.is_a?( Symbol ) return '/' if not params.is_a?( Hash ) or params.nil? params = params.symbolize_keys if params.is_a? Hash name = params[:name] param = params[:param] amurl = '' amurl << name << ':' << param amurl end private def query_to_s(query) return '' if query.nil? qstring = '?' query.each do |key,value| qstring += '&' if qstring.length > 1 qstring += Rho::RhoSupport.url_encode(key.to_s) + '=' + Rho::RhoSupport.url_encode(value.to_s) end qstring end # def url_encode(s) # s.to_s.dup.force_encoding("ASCII-8BIT").gsub(/[^a-zA-Z0-9_\-.]/n) { # sprintf("%%%02X", $&.unpack("C")[0]) # } # end end # RhoController end # Rho