Change Master and Theme for Mobile depending on outcome of l

Posted by Community Admin on 04-Aug-2018 00:43

Change Master and Theme for Mobile depending on outcome of logic

All Replies

Posted by Community Admin on 19-Jan-2012 00:00

Hi,

I am developing a project which includes my first venture in to Mobile web development.  I am trying to change the Master page (template) and theme depending on the outcome of the boolean I have.  I have trawled for answers but it seems that nothing really makes sense as its either too old to not relevant.  Your help would be appreciated.  We will be using Sitefinity 4.4.

Also... is there plans to make this kind of development a part of sitefinity in future versions?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Cms;
 
public partial class App_Master_wms_main : System.Web.UI.MasterPage
    protected void Page_Load(object sender, EventArgs e)
    
        if (isMobileBrowser() == true)
        
                 
 
    
 
    public static bool isMobileBrowser()
    
        //GETS THE CURRENT USER CONTEXT
        HttpContext context = HttpContext.Current;
 
        //FIRST TRY BUILT IN ASP.NT CHECK
        if (context.Request.Browser.IsMobileDevice)
        
            return true;
        
        //THEN TRY CHECKING FOR THE HTTP_X_WAP_PROFILE HEADER
        if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null)
        
            return true;
        
        //THEN TRY CHECKING THAT HTTP_ACCEPT EXISTS AND CONTAINS WAP
        if (context.Request.ServerVariables["HTTP_ACCEPT"] != null &&
            context.Request.ServerVariables["HTTP_ACCEPT"].ToLower().Contains("wap"))
        
            return true;
        
        //AND FINALLY CHECK THE HTTP_USER_AGENT
        //HEADER VARIABLE FOR ANY ONE OF THE FOLLOWING
        if (context.Request.ServerVariables["HTTP_USER_AGENT"] != null)
        
            //Create a list of all mobile types
            string[] mobiles =
                new string[]
                
                    "midp", "j2me", "avant", "docomo",
                    "novarra", "palmos", "palmsource",
                    "240x320", "opwv", "chtml",
                    "pda", "windows ce", "mmp/",
                    "blackberry", "mib/", "symbian",
                    "wireless", "nokia", "hand", "mobi",
                    "phone", "cdm", "up.b", "audio",
                    "SIE-", "SEC-", "samsung", "HTC",
                    "mot-", "mitsu", "sagem", "sony"
                    , "alcatel", "lg", "eric", "vx",
                    "NEC", "philips", "mmm", "xx",
                    "panasonic", "sharp", "wap", "sch",
                    "rover", "pocket", "benq", "java",
                    "pt", "pg", "vox", "amoi",
                    "bird", "compal", "kg", "voda",
                    "sany", "kdd", "dbt", "sendo",
                    "sgh", "gradi", "jb", "dddi",
                    "moto", "iphone"
                ;
 
            //Loop through each item in the list created above
            //and check if the header contains that text
            foreach (string s in mobiles)
            
                if (context.Request.ServerVariables["HTTP_USER_AGENT"].
                                                    ToLower().Contains(s.ToLower()))
                
                    return true;
                
            
        
 
        return false;
    

Cheers
Jason

Posted by Community Admin on 21-Jan-2012 00:00

Hi Jason,

That's a tough one, unfortunately there is no straightforward way to change dynamically the template of a Sitefinity page. However, I believe you might achieve similar results using CSS 3 media queries, for example you might want to check this blog post out.
Another option, if you still prefer to keep the mobile version separated from the desktop browsers one, you can create different pages and use a simple user control on a page to detect whether the browser is mobile or not, and redirect to the desired version.

"Also... is there plans to make this kind of development a part of sitefinity in future versions?" - yes, we are currently working on extending the default functionality with mobile support, and the feature should be available in an upcoming release.

Please do not hesitate to get back to us if you need some additional information, or have some other questions.

All the best,
Boyan Barnev
the Telerik team

Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

This thread is closed