From f9db4249a3a7b73f6c712cfa32b029e6d09595f5 Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Fri, 6 Jan 2012 17:21:24 +0100 Subject: [PATCH] add a formfactor session variable which is autodetected but can also manually overwritten via a get variable. currently we have: * default -> the normal desktop browser interface * mobile -> interface for smartphones * tablet -> interface for tablets * standalone -> the default interface but without header, footer and sidebar. just the application. useful to use just a specific app on the desktop in a standalone window. In the future we should adapt the userinterface to the specific formfactor. --- lib/base.php | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/lib/base.php b/lib/base.php index 700236c96c..0954e3615b 100644 --- a/lib/base.php +++ b/lib/base.php @@ -70,6 +70,31 @@ class OC{ } } + /** + * autodetects the formfactor of the used device + * default -> the normal desktop browser interface + * mobile -> interface for smartphones + * tablet -> interface for tablets + * standalone -> the default interface but without header, footer and sidebar. just the application. useful to ue just a specific app on the desktop in a standalone window. + */ + public static function detectFormfactor(){ + // please add more useragent strings for other devices + if(isset($_SERVER['HTTP_USER_AGENT'])){ + if(stripos($_SERVER['HTTP_USER_AGENT'],'ipad')>0) { + $mode='tablet'; + }elseif(stripos($_SERVER['HTTP_USER_AGENT'],'iphone')>0){ + $mode='mobile'; + }elseif((stripos($_SERVER['HTTP_USER_AGENT'],'N9')>0) and (stripos($_SERVER['HTTP_USER_AGENT'],'nokia')>0)){ + $mode='mobile'; + }else{ + $mode='default'; + } + }else{ + $mode='default'; + } + return($mode); + } + public static function init(){ // register autoloader spl_autoload_register(array('OC','autoload')); @@ -130,6 +155,16 @@ class OC{ ini_set('session.cookie_httponly','1;'); session_start(); + // if the formfactor is not yet autodetected do the autodetection now. For possible forfactors check the detectFormfactor documentation + if(!isset($_SESSION['formfactor'])){ + $_SESSION['formfactor']=OC::detectFormfactor(); + } + // allow manual override via GET parameter + if(isset($_GET['formfactor'])){ + $_SESSION['formfactor']=$_GET['formfactor']; + } + + // Add the stuff we need always OC_Util::addScript( "jquery-1.6.4.min" ); OC_Util::addScript( "jquery-ui-1.8.14.custom.min" ); @@ -214,5 +249,7 @@ if(!function_exists('get_temp_dir')) { require_once('fakedirstream.php'); + + // FROM search.php new OC_Search_Provider_File();