From: <jon...@us...> - 2014-10-16 16:05:37
|
Revision: 52907 http://sourceforge.net/p/tikiwiki/code/52907 Author: jonnybradley Date: 2014-10-16 16:05:30 +0000 (Thu, 16 Oct 2014) Log Message: ----------- [FIX] Fix home page pref perspective switch to mobile when arriving on a site for the first time with a mobile device, and make sure the correct mobile home page gets displayed every time (hopefully) Not a backport from 13.x as the existing jquery.mobile feature doesn't get on well with bootstrap so needs to be testing in 12.x first Modified Paths: -------------- branches/12.x/lib/setup/mobile.php Modified: branches/12.x/lib/setup/mobile.php =================================================================== --- branches/12.x/lib/setup/mobile.php 2014-10-16 08:12:47 UTC (rev 52906) +++ branches/12.x/lib/setup/mobile.php 2014-10-16 16:05:30 UTC (rev 52907) @@ -76,17 +76,24 @@ global $perspectivelib, $base_url; require_once 'lib/perspectivelib.php'; if (!in_array($perspectivelib->get_current_perspective($prefs), $prefs['mobile_perspectives'])) { // change perspective - $hp = $prefs['wikiHomePage']; // get default non mobile homepage + $wikiHomePage = $prefs['wikiHomePage']; // get default non mobile homepage + $tikiIndex = $prefs['tikiIndex']; $_SESSION['current_perspective'] = $persp; - if ($prefs['tikiIndex'] === 'tiki-index.php' && isset($_REQUEST['page'])) { + $isWikiPage = $tikiIndex === 'tiki-index.php' && strpos($_SERVER['PHP_SELF'], 'tiki-index.php') !== false; + $wantsHomePage = empty($_REQUEST['page']) || + ($_REQUEST['page'] === $wikiHomePage && strpos($_SERVER['HTTP_REFERER'], $base_url) === false); + + if ($isWikiPage && $wantsHomePage) { + $pprefs = $perspectivelib->get_preferences($_SESSION['current_perspective']); + if (in_array('wikiHomePage', array_keys($pprefs))) { // mobile persp has home page set (often the case) - if ($hp == $_REQUEST['page']) { - header('Location: ' . $base_url); // so redirect to site root and try again - } + header('Location: ' . $base_url); // so redirect to site root and try again + } else { + $prefs = array_merge($prefs, $pprefs); } } } @@ -104,4 +111,6 @@ $prefs['mobile_mode'] = 'n'; } -setCookieSection('mobile_mode', $prefs['mobile_mode']); +if ($prefs['mobile_mode'] === 'y') { + setCookieSection('mobile_mode', $prefs['mobile_mode']); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |