diff --git a/README.rdoc b/README.rdoc index 76b9f5f..4ff8583 100644 --- a/README.rdoc +++ b/README.rdoc @@ -1,7 +1,8 @@ = Mobylette -This project rocks and uses MIT-LICENSE. +Not ready... +Mobile mime-type handling, based on the mobile-fu plugin, and these articles: http://stackoverflow.com/questions/5126085/ruby-on-rails-mobile-application http://www.arctickiwi.com/blog/mobile-enable-your-ruby-on-rails-site-for-small-screens diff --git a/lib/mobylette.rb b/lib/mobylette.rb index ae0a3f4..4d30e36 100644 --- a/lib/mobylette.rb +++ b/lib/mobylette.rb @@ -1,2 +1,8 @@ module Mobylette + module Controllers + autoload "RespondToMobileRequests", "mobylette/controllers/respond_to_mobile_requests" + autoload "Helpers" , "mobylette/controllers/helpers" + end + + require 'mobylette/railtie' end diff --git a/lib/mobylette/controllers/helpers.rb b/lib/mobylette/controllers/helpers.rb index e69de29..f32f51d 100644 --- a/lib/mobylette/controllers/helpers.rb +++ b/lib/mobylette/controllers/helpers.rb @@ -0,0 +1,37 @@ +module Mobylette + module Controllers + module Helpers + extend ActiveSupport::Concern + module InstanceMethods + + def mobylette_stylesheet_link_tag(*sources) + if is_mobile_request? + stylesheet_link_tag(*sulfix_mobile_assets(*sources, :css)) + else + stylesheet_link_tag(*sources) + end + end + + def mobylette_javascript_include_tag(*sources) + if is_mobile_request? + javascript_include_tag(*sulfix_mobile_assets(*sources, :js)) + else + javascript_include_tag(*sources) + end + end + + private + + def sulfix_mobile_assets(*sources, extension) + sources.each_index do |index| + source = sources[index] + source_mobile = source.split(/.#{extension.to_s}$/) + sources[index] = "#{source[0]}_mobile" + sources[index] += ".#{extension.to_s}" if source =~ /\.css$/ + end + return *sources + end + end + end + end +end diff --git a/lib/mobylette/controllers/respond_to_mobile_requests.rb b/lib/mobylette/controllers/respond_to_mobile_requests.rb index 01042ff..e967b7a 100644 --- a/lib/mobylette/controllers/respond_to_mobile_requests.rb +++ b/lib/mobylette/controllers/respond_to_mobile_requests.rb @@ -22,7 +22,7 @@ module RespondToMobileRequestsMethods 'audiovox|motorola|samsung|telit|upg1|windows ce|ucweb|astel|plucker|' + 'x320|x240|j2me|sgh|portable|sprint|docomo|kddi|softbank|android|mmp|' + 'pdxgw|netfront|xiino|vodafone|portalmmm|sagem|mot-|sie-|ipod|up\\.b|' + - 'webos|amoi|novarra|cdm|alcatel|pocket|ipad|iphone|mobileexplorer|' + + 'webos|amoi|novarra|cdm|alcatel|pocket|ipad|iphone|mobileexplorer|' + 'mobile' end @@ -39,7 +39,7 @@ def handle_mobile end def is_mobile_request? - request.user_agent.to_s.downcase =~ Regexp.new(self.class.MOBILE_USER_AGENTS) + request.user_agent.to_s.downcase =~ /#{self.class.MOBILE_USER_AGENTS}/ end end diff --git a/lib/mobylette/railtie.rb b/lib/mobylette/railtie.rb new file mode 100644 index 0000000..1fa4d93 --- /dev/null +++ b/lib/mobylette/railtie.rb @@ -0,0 +1,10 @@ +module Mobylette + class Railtie < ::Rails::Railtie + initializer :mobylette do + ActiveSupport.on_load(:action_controller) do + ::ActionController::Base.send(:include, Mobylette::Controllers::RespondToMobileRequests) + ::ActionController::Base.helper Mobylette::Controllers::Helpers + end + end + end +end