Add enable_mobile_theme site setting. Uncheck it to disable the mobile theme.

This commit is contained in:
Neil Lalonde 2013-09-17 11:25:22 -04:00
parent 2baf5fda8e
commit 0fafe124db
6 changed files with 74 additions and 29 deletions

View file

@ -32,6 +32,10 @@ Discourse.HeaderController = Discourse.Controller.extend({
return Discourse.Mobile.mobileView;
}.property(),
showMobileToggle: function() {
return Discourse.SiteSettings.enable_mobile_theme;
}.property(),
toggleMobileView: function() {
Discourse.Mobile.toggleMobileView();
}

View file

@ -123,6 +123,7 @@
{{#titledLinkTo "list.latest" titleKey="filters.latest.help"}}{{i18n filters.latest.title}}{{/titledLinkTo}}
</li>
<li>{{faqLink}}</li>
{{#if showMobileToggle}}
<li>
<a href="#" {{action toggleMobileView}}>
{{#if mobileView}}
@ -132,6 +133,7 @@
{{/if}}
</a>
</li>
{{/if}}
</ul>
{{#if categories}}

View file

@ -109,6 +109,7 @@ module ApplicationHelper
end
def mobile_view?
return false unless SiteSetting.enable_mobile_theme
if session[:mobile_view]
session[:mobile_view] == '1'
else

View file

@ -261,6 +261,8 @@ class SiteSetting < ActiveRecord::Base
setting(:sequential_replies_threshold, 2)
client_setting(:enable_mobile_theme, true)
def self.generate_api_key!
self.api_key = SecureRandom.hex(32)
end

View file

@ -696,6 +696,8 @@ en:
sequential_replies_threshold: "The amount of posts a user has to make in a row in a topic before being notified"
enable_mobile_theme: "Mobile devices use a mobile-friendly theme, with the ability to switch to the full site. Disable this if you want to use a custom stylesheet that is fully responsive."
notification_types:
mentioned: "%{display_username} mentioned you in %{link}"
liked: "%{display_username} liked your post in %{link}"

View file

@ -3,6 +3,11 @@ require 'spec_helper'
describe ApplicationHelper do
describe 'mobile_view?' do
context "enable_mobile_theme is true" do
before do
SiteSetting.stubs(:enable_mobile_theme).returns(true)
end
it "is true if mobile_view is '1' in the session" do
session[:mobile_view] = '1'
helper.mobile_view?.should be_true
@ -36,5 +41,34 @@ describe ApplicationHelper do
end
end
context "enable_mobile_theme is false" do
before do
SiteSetting.stubs(:enable_mobile_theme).returns(false)
end
it "is false if mobile_view is '1' in the session" do
session[:mobile_view] = '1'
helper.mobile_view?.should be_false
end
it "is false if mobile_view is '0' in the session" do
session[:mobile_view] = '0'
helper.mobile_view?.should be_false
end
context "mobile_view is not set" do
it "is false if user agent is not mobile" do
controller.request.stubs(:user_agent).returns('Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36')
helper.mobile_view?.should be_false
end
it "is false for iPhone" do
controller.request.stubs(:user_agent).returns('Mozilla/5.0 (iPhone; U; ru; CPU iPhone OS 4_2_1 like Mac OS X; ru) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5')
helper.mobile_view?.should be_false
end
end
end
end
end