From 64230737da60d1a0cc6e557508aab4fec56303fd Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Tue, 11 Jun 2013 22:39:43 +0200 Subject: [PATCH] QA for browser check. --- .../_application_controller.js.coffee | 14 +++++ .../controllers/browsercheck_widget.js.coffee | 28 --------- .../app/lib/app_post/browser.coffee | 60 +++++++++++++------ .../lib/app_post/interface_handle.js.coffee | 13 ++-- 4 files changed, 65 insertions(+), 50 deletions(-) delete mode 100644 app/assets/javascripts/app/controllers/browsercheck_widget.js.coffee diff --git a/app/assets/javascripts/app/controllers/_application_controller.js.coffee b/app/assets/javascripts/app/controllers/_application_controller.js.coffee index 0c23d9902..6b99177e1 100644 --- a/app/assets/javascripts/app/controllers/_application_controller.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller.js.coffee @@ -400,6 +400,20 @@ class App.ControllerModal extends App.Controller # @callback.error = options.error super(options) + if options.show + @render() + + render: -> + @html App.view('modal')( + title: @title, + message: @message + detail: @detail + close: @close + ) + @modalShow( + backdrop: @backdrop, + keyboard: @keyboard, + ) modalShow: (params) -> defaults = { diff --git a/app/assets/javascripts/app/controllers/browsercheck_widget.js.coffee b/app/assets/javascripts/app/controllers/browsercheck_widget.js.coffee deleted file mode 100644 index 80eb0b057..000000000 --- a/app/assets/javascripts/app/controllers/browsercheck_widget.js.coffee +++ /dev/null @@ -1,28 +0,0 @@ -class App.BrowsercheckWidget extends App.Controller - constructor: -> - super - - # bind on event to show message - App.Event.bind 'session:browscheckfailed', (data) => - console.log('hannes was here') - new Message(data) - - -class Message extends App.ControllerModal - constructor: -> - super - @render() - - render: -> - @html App.view('modal')( - title: @title, - message: @message - detail: @detail - close: @close - ) - @modalShow( - backdrop: false, - keyboard: false, - ) - -App.Config.set( 'browscheckfailed', App.BrowsercheckWidget, 'Widgets' ) diff --git a/app/assets/javascripts/app/lib/app_post/browser.coffee b/app/assets/javascripts/app/lib/app_post/browser.coffee index 8edebe37e..178f8853e 100644 --- a/app/assets/javascripts/app/lib/app_post/browser.coffee +++ b/app/assets/javascripts/app/lib/app_post/browser.coffee @@ -1,13 +1,48 @@ -class App.Browser extends App.Controller - constructor: -> - super +class App.Browser + @detection: -> + data = + browser: @searchString(@dataBrowser) or "An unknown browser" + version: @searchVersion(navigator.userAgent) or @searchVersion(navigator.appVersion) or "an unknown version" + OS: @searchString(@dataOS) or "an unknown OS" - @init: -> - @browser = @searchString(@dataBrowser) or "An unknown browser" - @version = @searchVersion(navigator.userAgent) or @searchVersion(navigator.appVersion) or "an unknown version" - @OS = @searchString(@dataOS) or "an unknown OS" - return @check() + @check: -> + data = @detection() + # disable Crome 13 and older + if data.browser == 'Chrome' && data.version <= 13 + @message(data) + return false + + # disable Firefox 6 and older + else if data.browser == 'Firefox' && data.version <= 6 + @message(data) + return false + + # disable IE 8 and older + else if data.browser == 'Explorer' && data.version <= 8 + @message(data) + return false + + # disable Safari 3 and older + else if data.browser == 'Firefox' && data.version <= 3 + @message(data) + return false + + # disable Opera 10 and older + else if data.browser == 'Firefox' && data.version <= 10 + @message(data) + return false + + return true + + @message: (data) -> + new App.ControllerModal( + title: 'Browser too old!' + message: "Your Browser is not supported. Please use a newer one (#{data.browser} #{data.version} #{data.OS})" + show: true + backdrop: false + keyboard: false + ) @searchString: (data) -> i = 0 @@ -100,13 +135,4 @@ class App.Browser extends App.Controller identity: "Linux" ] - @check: -> - if @browser == 'Chrome' && @version <= 27 - App.Event.trigger('session:browscheckfailed', {title: 'Error', message: 'Your Browser is not supported!'}) - return false - else - return true - - - diff --git a/app/assets/javascripts/app/lib/app_post/interface_handle.js.coffee b/app/assets/javascripts/app/lib/app_post/interface_handle.js.coffee index 82d704fd8..c776a04f7 100644 --- a/app/assets/javascripts/app/lib/app_post/interface_handle.js.coffee +++ b/app/assets/javascripts/app/lib/app_post/interface_handle.js.coffee @@ -6,7 +6,8 @@ class App.Run extends App.Controller App.Event.trigger('app:init') # browser check - # App.Browser.check() + if !App.Browser.check() + return # init collections App.Collection.init() @@ -21,9 +22,13 @@ class App.Run extends App.Controller App.Event.trigger('widget:init') widgets = App.Config.get( 'Widgets' ) if widgets - for key, widget of widgets + sortedKeys = [] + for key, value of widgets + sortedKeys.push key + sortedKeys = sortedKeys.sort() + for key in sortedKeys @el.append('
') - new widget( el: @el.find("##{key}") ) + new widgets[key]( el: @el.find("##{key}") ) App.Event.trigger('widget:ready') # bind to fill selected text into @@ -44,8 +49,6 @@ class App.Content extends App.Controller @log 'Content', 'notice', 'execute page controller', route, params - if !App.Browser.init() - return # remove observers for page App.Collection.observeUnbindLevel('page')