Change Page Themes Dynamically Using JQuery Theme Roller

by Prashant 4. July 2010 21:21

If you are using JQuery controls like date picker, accordion, progress bar, slider, tabs, dialog etc. You can set the theme of your choice or you can also allow the user to set the theme of their choice. For those folks who don’t know about the JQuery Theme Roller, then take a look at official Jquery site demonstrating the Jquery Theme Roller. The best part is when you select the theme from the theme roller control all the JQuery controls on the page will automatically inherit the color scheme of the theme.

 To incorporate Theme Roller in your page, build a simple page and link some CSS and some JavaScript

<link type="text/css" rel="stylesheet" href="http://jqueryui.com/themes/base/ui.all.css" />
<link rel="stylesheet" 
href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/base/jquery-ui.css" 
type="text/css" media="all" />
<link rel="stylesheet" href="http://static.jquery.com/ui/css/demo-docs-theme/ui.theme.css" 
type="text/css" media="all" />
<script type="text/javascript" src="http://jqueryui.com/js/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" 
type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js" 
type="text/javascript"></script>

Now under the head section we will have the JQuery Theme Roller control.

    $(document).ready(function () {
        $('#ThemeRoller').themeswitcher();
    });

Notice the ThemeRoller id of the control passed in the JQuery code to initialize the Theme Roller/Switcher. Now in the Body tag of your page set a div with id as ThemeRoller or whatever the name you want to give, but make sure you use the same name as your control id.

<script type="text/javascript"
  src="http://jqueryui.com/themeroller/themeswitchertool/">
</script>
<div id="ThemeRoller"></div>

I have set the theme roller on the body of the page and therefore all the controls on the page will automatically change the theme accordingly set by the user using the theme roller on the page. You can also set a DIV or a form on your page instead of setting it for the complete page. Set some other controls on the page like date picker, progress bar, dialog etc. Html code for the controls.

Set some other controls on the page like date picker, progress bar, dialog etc.

<p>Date: <input id="datepicker" type="text" />
</p>
    
<div id="dialog" title="Basic dialog">
    <p>
    This is a Demo Dialog box using JQuery!!<br />
    Change theme to see this Dialog in different theme.
    </p>
</div>
    <div id="progressbar" style="width:200px;">

    </div>

Placing HTML code isn’t enough. You also need to set the JQuery code in the head section of the page to get the controls working. When you set all the JQuery code for the controls you body and head section of the page looks something like this.

Body section of the page:

<body style="font-size:62.5%;">
  
<script type="text/javascript"
  src="http://jqueryui.com/themeroller/themeswitchertool/">
</script>
<div id="ThemeRoller"></div>

<p>Date: <input id="datepicker" type="text" />
</p>
    
<div id="dialog" title="Basic dialog">
    <p>
    This is a Demo Dialog box using JQuery!!<br />
    Change theme to see this Dialog in different theme.
    </p>
</div>
    <div id="progressbar" style="width:200px;">

    </div>
</body>

Head section of the page:

<head>
<title>JQuery Theme Roller</title>
<link type="text/css" rel="stylesheet" href="http://jqueryui.com/themes/base/ui.all.css" />
<link rel="stylesheet" 

href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/base/jquery-ui.css" 

type="text/css" media="all" />
<link rel="stylesheet" href="http://static.jquery.com/ui/css/demo-docs-theme/ui.theme.css" 

type="text/css" media="all" />
<script type="text/javascript" src="http://jqueryui.com/js/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" 

type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js" 

type="text/javascript"></script>


<script type="text/javascript">
//Set theme roller 
    $(document).ready(function () {
        $('#ThemeRoller').themeswitcher();
    });

//Show date time picker control
    $(function () {
        $("#datepicker").datepicker();
});

//Show Dialog
    $(function () {
        $("#dialog").dialog();
    });

//Progress Bar
    $(function () {
        $("#progressbar").progressbar({
            value: 50
        });
    });

</script>
</head>

Now try setting the theme of the page in one click using the Theme Roller. Check the live demo here

If you enjoyed this post, make sure you subscribe to my RSS feed!

Tags: ,

Jquery


Comments (12) -

Sanjay M
Sanjay M India
9/29/2010 11:56:23 PM #

thanks a ton, this was really useful!

What I'd really like to know, which I couldn't quite figure out, is how to 'save' the selected theme that gets used later again, its supposed to use some sort of cookie mechanism I think, maybe in my application this is hardcoded, will have to check.

Also, instead of using the jquery-ui hosted themes, is there any way I can get a localised version that can by which I can get it to list my own themes? It seemed to be loading the themes list from some PHP file on the server, so as of now couldn't figure out a way to modify this in any way.

Reply

Prashant
Prashant India
9/30/2010 2:57:19 AM #

Yes,  you can save but theme roller doesn't provide any way to save the selected theme in the cookie. What you can do is to download the themes http://jqueryui.com/themeroller/ and place it in your web folder or theme directory. Select the theme you want to download from the "Gallery" tab and then download from "Roll Your Own" tab. Get the collection, let the user select from the combo box on your web page, save it in a cookie or some other persistent storage.

Hope this helps!

Reply

wira
wira Indonesia
10/21/2011 3:57:34 PM #

Nice topic,.. I just use this tool into my intranet, but my question is, how to make themeroller  take the css from local server, not requesting into jquery website. I need this because not all my workstation connected into internet.

Reply

Prashant
Prashant India
10/22/2011 7:34:28 PM #

If you take a look at the head section you will see that all the js and css file reference are from the Google's CDN. What you need to do is to get the latest release of the jQuery UI from jquery.com and place these files with your intranet application or to the local server path. Now on the page where you want a Theme Roller, you need to reference the js and css files from the folder in your local server path.

Reply

Naresh
Naresh India
4/20/2012 3:37:51 AM #

I would like to place complete themeroller (Roll your own and Gallery) into my web page,  can you please help me out in doing this.

Reply

Prashant
Prashant India
4/20/2012 3:50:30 AM #

What is the problem you are facing?

Reply

Naresh
Naresh India
4/20/2012 4:10:57 AM #

i was able to place the complete themeroller into my page but unable to send the parameters, to download the desired theme.

Reply

Naresh
Naresh India
4/20/2012 10:22:00 PM #

When i select a theme from themes Gallery it is not reflecting any changes in the page.

Reply

Naresh
Naresh India
4/20/2012 4:05:16 AM #

hi Prashant,

i am able to place the complete tabs, but unable to send the parameters to what i have selected and to download my selected themes.

thanks,
Naresh


Reply

Prashant
Prashant India
4/20/2012 5:20:02 AM #

Can you be more specific. You said you were able to place the tabs, but unable to download the theme. I didn't get this point.

Reply

Naresh
Naresh India
4/20/2012 10:27:03 PM #

When i select the theme from theme Gallery, the changes are not reflecting for the controls with the themes styles.

Reply

Prashant
Prashant India
4/21/2012 2:29:41 AM #

Did you check out the demo page in the above post. The link is in the end of the post. Try the same implemented in the demo page first and then try with the theme you have downloaded.

Reply

Pingbacks and trackbacks (2)+

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


Visit blogadda.com to discover Indian blogs Computers Blogs

About Me

Name of authorPrashant Khandelwal.
Programmer and tech enthusiast. More...

Feeds Subscribe Twitter Facebook Google Plus Linked In Delicious

Badges

MVB

MVP Blog Badge.

HTML5 Powered with CSS3 / Styling, Graphics, 3D & Effects, Multimedia, Performance & Integration, Semantics, and Offline & Storage

Month List

Blog Stats

414,239 Hits

Adverts

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

Creative Commons License