bcms_mobile 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Copyright.txt +23 -0
- data/GPL.txt +674 -0
- data/Gemfile +19 -0
- data/LICENSE.txt +165 -0
- data/README.markdown +107 -0
- data/app/views/bcms_mobile/_mobile_toggle.html.erb +31 -0
- data/app/views/layouts/_page_toolbar.html.erb +121 -0
- data/db/migrate/20100117144039_browsercms315.rb +94 -0
- data/lib/bcms_mobile.rb +3 -0
- data/lib/bcms_mobile/engine.rb +68 -0
- data/lib/bcms_mobile/mobile_aware.rb +69 -0
- data/lib/bcms_mobile/routes.rb +7 -0
- data/lib/bcms_mobile/version.rb +3 -0
- data/lib/generators/bcms_mobile/install/USAGE +10 -0
- data/lib/generators/bcms_mobile/install/install_generator.rb +12 -0
- metadata +88 -0
data/lib/bcms_mobile.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'browsercms'
|
2
|
+
require 'mobylette'
|
3
|
+
require 'bcms_mobile/mobile_aware'
|
4
|
+
|
5
|
+
module BcmsMobile
|
6
|
+
class Engine < Rails::Engine
|
7
|
+
include Cms::Module
|
8
|
+
config.to_prepare do
|
9
|
+
|
10
|
+
ApplicationHelper.class_eval do
|
11
|
+
include BcmsMobile::MobileHelpers
|
12
|
+
end
|
13
|
+
|
14
|
+
Cms::ContentController.class_eval do
|
15
|
+
include BcmsMobile::MobileAware
|
16
|
+
|
17
|
+
#before_filter :print_request_info
|
18
|
+
before_filter :configure_cache_directory
|
19
|
+
|
20
|
+
def print_request_info
|
21
|
+
w "*" * 20
|
22
|
+
w "User Agent: #{request.user_agent}"
|
23
|
+
m = "Mobile Request?: "
|
24
|
+
if respond_as_mobile?
|
25
|
+
m += "Yes"
|
26
|
+
else
|
27
|
+
m += "No"
|
28
|
+
end
|
29
|
+
w m
|
30
|
+
end
|
31
|
+
|
32
|
+
def configure_cache_directory
|
33
|
+
if respond_as_mobile?
|
34
|
+
self.class.page_cache_directory = mobile_cache_directory
|
35
|
+
else
|
36
|
+
self.class.page_cache_directory = cms_cache_directory
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Because of caching, CMS pages should only return mobile content on a separate subdomain.
|
41
|
+
# or if a CMS editor wants to see the mobile version of the page.
|
42
|
+
def respond_as_mobile?
|
43
|
+
w "Checking the subdomain for #{request.domain} is #{request.subdomain}"
|
44
|
+
if params[:template] =='mobile'
|
45
|
+
session[:mobile_mode] = true
|
46
|
+
elsif params[:template] =='full'
|
47
|
+
session[:mobile_mode] = false
|
48
|
+
end
|
49
|
+
|
50
|
+
request.subdomain == "m" || (session[:mobile_mode] == true && current_user.able_to?(:edit_content))
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
# Overrides core behavior to swap layouts based on whether this is a mobile request or not.
|
55
|
+
def render_page
|
56
|
+
@_page_route.execute(self) if @_page_route
|
57
|
+
prepare_connectables_for_render
|
58
|
+
template = determine_page_template
|
59
|
+
render :layout => template, :action => 'show'
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module BcmsMobile
|
2
|
+
|
3
|
+
module MobileHelpers
|
4
|
+
|
5
|
+
def full_site_url
|
6
|
+
url_for(:host=>SITE_DOMAIN, :prefer_full_site=>true)
|
7
|
+
end
|
8
|
+
|
9
|
+
def mobile_site_url
|
10
|
+
url_for(:host=>SITE_DOMAIN, :prefer_mobile_site=>true)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
module MobileAware
|
17
|
+
|
18
|
+
def w(m)
|
19
|
+
logger.warn m
|
20
|
+
end
|
21
|
+
|
22
|
+
def banner(m)
|
23
|
+
w "*" * 20
|
24
|
+
w m
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns the directory where BrowserCMS should write out it's Page cache files for the mobile version of the site.
|
28
|
+
# (Optionally) It can be configured in environment files via:
|
29
|
+
# config.bcms_mobile_cache_directory = File.join(Rails.root, 'some', 'mobile_dir')
|
30
|
+
def mobile_cache_directory
|
31
|
+
configured_dir = Rails.application.config.bcms_mobile_cache_directory
|
32
|
+
configured_dir ? configured_dir : default_mobile_cache_directory
|
33
|
+
end
|
34
|
+
|
35
|
+
# Returns the directory where BrowserCMS should write out it's Page cache files for the full version of the site.
|
36
|
+
# This should be exactly the same as where a typical CMS project stores it's files.
|
37
|
+
# (Optionally) It can be configured in environment files via:
|
38
|
+
# config.browsercms_cache_directory = File.join(Rails.root, 'some', 'dir')
|
39
|
+
def cms_cache_directory
|
40
|
+
configured_dir = Rails.application.config.browsercms_cache_directory
|
41
|
+
configured_dir ? configured_dir : default_browsercms_cache_directory
|
42
|
+
end
|
43
|
+
|
44
|
+
# Looks for a mobile template if the request is mobile, falling back to the html template if it can't be found.
|
45
|
+
def determine_page_template
|
46
|
+
layout = @page.layout
|
47
|
+
layout_name = @page.template_file_name
|
48
|
+
|
49
|
+
if respond_as_mobile?
|
50
|
+
w "Does html layout exist?:#{template_exists?(layout_name, "layouts/templates")}"
|
51
|
+
mobile_exists = template_exists?(layout_name, "layouts/mobile")
|
52
|
+
w "Does mobile layout exist?:#{mobile_exists}"
|
53
|
+
layout = "mobile/#{layout_name}" if mobile_exists
|
54
|
+
end
|
55
|
+
w "layout = #{layout}"
|
56
|
+
layout
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
def default_browsercms_cache_directory
|
61
|
+
File.join(Rails.root, 'public', 'cache')
|
62
|
+
end
|
63
|
+
|
64
|
+
def default_mobile_cache_directory
|
65
|
+
File.join(Rails.root, 'public', 'mobile_cache')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'cms/module_installation'
|
2
|
+
|
3
|
+
class BcmsMobile::InstallGenerator < Cms::ModuleInstallation
|
4
|
+
add_migrations_directory_to_source_root __FILE__
|
5
|
+
|
6
|
+
# Add migrations to be copied, by uncommenting the following file and editing as needed.
|
7
|
+
# copy_migration_file 'DATESTAMP_create_name_of_content_block.rb'
|
8
|
+
|
9
|
+
def make_mobile_templates_directory
|
10
|
+
empty_directory 'app/views/layouts/mobile'
|
11
|
+
end
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bcms_mobile
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- BrowserMedia
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-02-09 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: mobylette
|
16
|
+
requirement: &70342244972020 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.6.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70342244972020
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: browsercms
|
27
|
+
requirement: &70342244966100 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.3.3
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70342244966100
|
36
|
+
description:
|
37
|
+
email: github@browsermedia.com
|
38
|
+
executables: []
|
39
|
+
extensions: []
|
40
|
+
extra_rdoc_files:
|
41
|
+
- README.markdown
|
42
|
+
files:
|
43
|
+
- app/views/bcms_mobile/_mobile_toggle.html.erb
|
44
|
+
- app/views/layouts/_page_toolbar.html.erb
|
45
|
+
- db/migrate/20100117144039_browsercms315.rb
|
46
|
+
- lib/bcms_mobile/engine.rb
|
47
|
+
- lib/bcms_mobile/mobile_aware.rb
|
48
|
+
- lib/bcms_mobile/routes.rb
|
49
|
+
- lib/bcms_mobile/version.rb
|
50
|
+
- lib/bcms_mobile.rb
|
51
|
+
- lib/generators/bcms_mobile/install/install_generator.rb
|
52
|
+
- lib/generators/bcms_mobile/install/USAGE
|
53
|
+
- LICENSE.txt
|
54
|
+
- GPL.txt
|
55
|
+
- Gemfile
|
56
|
+
- Copyright.txt
|
57
|
+
- README.markdown
|
58
|
+
homepage: http://www.github.com/browsermedia/bcms_mobile
|
59
|
+
licenses: []
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
segments:
|
71
|
+
- 0
|
72
|
+
hash: 1881617308010632469
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
hash: 1881617308010632469
|
82
|
+
requirements: []
|
83
|
+
rubyforge_project: bcms_mobile
|
84
|
+
rubygems_version: 1.8.15
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: A Bcms Mobile Module for BrowserCMS
|
88
|
+
test_files: []
|