Notifications 4 Messages 16
Welcome Shana-chan
Avatar
  • My Profile
  • My Invoices
  • Logout
  • General
    • Dashboard
    • Calendar
    • Icons
    • Grids
    • Typography
  • Table
    • Static Tables
    • Responsive Tables
    • Data Tables
    • Detail View Table
  • Statistic
    • Statistical Elements
    • Charts Gallery
  • Form
    • Form Layouts
    • Form Elements
    • Form Wizard
    • Form Validation
    • WYSIWYG
  • Elements
    • Bootstrap Elements
    • Other Elements
    • Alerts and Notifications
    • Widget Boxes
    • Buttons
    • File Uploader
    • File Manager
  • Extra
    • Profile Page
    • Mail Page
    • Custom Widgets
    • Image Gallery
    • Contact List
    • Error Page (404)
  • Docs
  • MoonCake »
  • Documentation

Documentation This template documentation file. Not included in the demo version.

  • Introduction
  • Full Feature Overview
  • File and Folder Structure
  • Base HTML Structure
  • Widgets
  • Forms
  • Statistics
  • Icons
  • jQuery-UI
  • JavaScript and Plugins
  • Third Party Plugins
  • FAQ
  • Road Map
  • Changelog
  • Credits

MoonCake Responsive Admin Template

Version: 1.0 - October 01, 2012

Hi there, thank you very much for purchasing this theme.
If you have any questions or issues that are beyond the scope of this documentation, please feel free to contact me via the comment section or mail me at maimairel@yahoo.com

Bug reports and suggestions are welcome too!

Introduction

MoonCake is a responsive, full featured admin template build exclusively for sale at ThemeForest.

This template is build on the Bootstrap framework using HTML5 and CSS3. Its main focus is simpilicty while providing the most commonly used elements and widgets on web apps accross devices and browsers.

Support Request

Browser Suppport is targetted at IE8+, Mozilla FireFox, Google Chrome, Apple Safari, Opera and all Android and iOS mobile browsers, for browsers other than this, support is not available.

Support requests can usually be requested via the comments section at ThemeForest, or you can directly mail me at maimairel@yahoo.com

Documentation Scope

Features, files and directory structure, basic usage and explanation of each important elements in this template with an exception of all third-party libraries and Bootstrap. These have their own thorough documentation available on their corresponding home pages. Links to those sites will be provided in this documentation.

This documentation is also written in a style that assumes you already know the basics of CSS, JavaScript and HTML, so only the usage and concept of this template's elements that's going to be covered here.

Core Library Versions

Library Version Home Page
Bootstrap 2.1.1 http://twitter.github.com/bootstrap
jQuery 1.8.2 http://www.jquery.com
jQuery-UI 1.8.24 http://www.jqueryui.com
Note

If you want to to get a deeper understanding of how this template plugins and element works, it's recommended to view and understand the JavaScript files inside /assets/js/demo.

Feature Highlights

  • Responsive Layout

  • Two Layout Modes

    Boxed Layout (Default)
    Full Layout
  • Animated Login Page

  • Hide able sidebar

  • Advanced Analytics Widgets

  • Custom Statistical Elements

  • Custom Responsive Wizard

  • Free CodeCanyon MsgBox Plugin

  • Lots of Custom Widgets

  • Beautiful Mail Page

  • Animated Error Page

Full Feature Overview

  • Powered by Bootstrap Framework
  • Responsive Layout
  • Two Layout Modes: Boxed and Full
  • 55 Background Patterns Included
  • 1000+ Font and Sprite Icons
  • Advanced CSS3 Animated Login Page
  • CSS3 Animated Error Page
  • Many Custom Elements
  • Custom Plugins, with full data-api support
    • Circular Stat Plugin
    • Wizard Plugin
    • Contact List plugin
    • FileInput styling plugin
    • PickList plugin
  • Advanced Analytics Widgets which exhausts jQuery Flot plugin like never seen before
  • FREE CodeCanyon MsgBox Plugin
  • jQuery-UI Integration without conflicts with Bootstrap
  • Extended jQuery-UI Slider, Progressbar and Autocomplete
  • Very Flexible and Customizable Widget Boxes
  • Focus mainly on performance and readability when writing code
  • Closure Compiler compressed scripts
  • All Images compressed using PunyPNG (required images are only 18,917 bytes)
  • Five Kinds of statistical elements
    • Summary
    • Summary Circled
    • Summary Boxed
    • Circular Stat
    • Sparkline
  • Advanced Examples of jQuery Flot
    • Live Charts that can be switched off
    • Line Charts with range selection
    • Filled line charts with date range selection
    • Line and bar charts that can be shown/hidden
  • Code View with Google Prettify
  • Static tables
  • Checkable Tables
  • Three kinds of responsive tables
  • DataTables with plugin examples
  • Detail View Tables
  • Charts Gallery
  • Form Layouts
    • Simple Form
    • Horizontal Form
    • Vertical Form
    • Fieldset
    • Grid Form
  • Form Elements
    • Default input fields
    • Appended and prepended form inputs
    • Select2 select inputs
    • Styled checkbox and radio buttons
    • Star rating
    • iOS Style checkbox and radio switches
    • Spinner
    • Typeahead
    • Autocomplete
    • Number only input fields
    • Picklist
    • Input mask
  • Responsive Form Wizard
  • Form Validation Examples
  • CLEditor as WYSIWYG editor
  • Default Bootstrap Elements
    • Progressbar
    • Custom progressbar sizes (mini, small, large)
    • Modals
    • Tabs and Pills
    • Tab Widgets
    • Collapse
    • Popover
    • Tooltip
    • Pagination and Pager
  • Other Elements
    • jQuery-UI Datepicker Examples
    • jQuery-UI Timepicker addon
    • jQuery-UI Dialog
    • Extended jQuery-UI Sliders (tooltip and ticks support)
    • jQuery-UI Powered progressbar (styled with Bootstrap)
    • MiniColors colorpicker
    • Farbtastic colorpicker
  • Alerts and Notifications
    • CodeCanyon MsgBox Plugin
    • Pines Notify
    • Default Bootstrap Alerts
  • Widget Boxes Customization Examples
  • Button Examples
  • File Uploader (Bootstrap integrated version of PLupload)
  • File Manager (elFinder 2.0)
  • Responsive Profile Page
  • Responsive Mail Page
  • Many Custom Widgets
    • Shopping Cart Widget
    • News Widget
    • Task List Widget
    • Summary List Widget
    • Goal Widget
    • User Widget
    • Sortable List Widget
    • Tweets Widget
    • ChatBox Widget
    • Google Maps Widget
  • Responsive Image Gallery with Masonry Layout
  • Contact List

File and Folder Structure

Before going into details, lets look at how this template's files and folders are structured.

Folder Name What it Contains
assets Most of the main CSS, JavaScript and images
assets/css Main CSS stylesheets
assets/css/fonts All @font-face stylesheets, for now it's just the Icon font stylesheet
assets/css/plugins Stylesheets that overrides external plugin stylesheets
assets/images Main images and icons
assets/js Main JavaScript files
assets/js/demo JavaScript demo files
assets/js/libs JavaScript library files
assets/jui jQuery-UI JavaScript, CSS, and image files
bootstrap Bootstrap's CSS and JavaScript files
custom-plugins Custom build plugin JavaScript and CSS files
custom-plugins/contactlist Contact List JavaScript and CSS files
custom-plugins/picklist Pick List JavaScript and CSS files
custom-plugins/wizard Form Wizard JavaScript and CSS files
documentation This documentation page with it's assets
php The needed PHP files, for now it's only the PLUpload connector
plugins Twenty external plugin JavaScript and CSS files
sample Demo images

Main CSS Stylesheets

Most of this template elements are styled by the CSS files located in assets/css/, there are in total 25 files in this folder, each having different style definitions for each element.

These CSS files are included indirectly by default on every main page by including assets/css/main-style.css.

Below is the content of assets/css/main-style.css, their file names are self explanatory of what they are used for.

/* Core Stylesheets
================================================== */
@import url("layout.css");
@import url("widget.css");
@import url("form.css");
@import url("table.css");
@import url("button.css");
@import url("misc.css");
@import url("utils.css");

/* Elements Stylesheets
================================================== */
@import url("ui.css");
@import url("icons.css");
@import url("statistic.css");
@import url("wizard.css");

/* Extra Stylesheets
================================================== */
@import url("mail.css");
@import url("profile.css");
@import url("gallery.css");

/* Plugin Stylesheets
================================================== */
@import url("plugins/elfinder.css");
@import url("plugins/fullcalendar.css");
@import url("plugins/minicolors.css");

/* IE Stylesheets
================================================== */
@import url("lt-ie9.css");

/* Demo Stylesheets
================================================== */
@import url("demo.css");
@import url("customizer.css");

Beside the main-layout.css file, there are two more files: login-style.css and error.css, these are used for the login and error page respectively.

The CSS files are separated in order to increase readability, and ease maintenance.
In case you want to merge these files into a single file to minimize HTTP requests, there's already a merged version of all those CSS files into four single files:

  • assets/css/mooncake.min.css
  • assets/css/error.min.css
  • assets/css/login.min.css
  • assets/css/plugins/plugins.min.css
These files are actually merged versions of all these CSS files, made for convenience. It's recommended to use these files when in production mode.

Below is a list of all CSS files, along with a short description of what each file contains:

Building the base HTML

In order to understand how this template works, the basic HTML structure will be covered and explained here. By reading this section, you should be able to build an empty, usable HTML page as the base of your web app.

Building the base HTML structure is pretty straightforward, we'll now go through a complete process on creating a complete page that includes the minimal required JavaScript and CSS files.

HTML5 Doctype and Meta Tags

<!DOCTYPE html>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--><html lang="en"><!--<![endif]-->

<head>
<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta name="description" content="">
<meta name="author" content="">

In order to fulfill Bootstrap Framework's main requirement and for the sake of keeping up to date with the current and upcoming standars, we define a HTML5 doctype for our pages on the first line on the code above.

After that, we'll define the opening HTML tag by using IE conditional comments to target IE versions lower than IE9, followed by meta tag attributes where the first one we could just ignore, and the second one that is required for mobile browsers to display the responsive layout correctly. The next two meta tags are optional, you can fill them yourself with your own attributes.

Bootstrap, Plugin, Main Stylesheets and HTML5 shim

<!-- Bootstrap Stylesheet -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" media="screen">

<!-- Plugin Stylesheets first to ease overrides -->

<!-- End Plugin Stylesheets -->

<!-- Main Layout Stylesheet -->
<link rel="stylesheet" href="assets/css/main-style.css" media="screen">

<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<title>MoonCake :: Responsive Admin Template</title>

</head>

<body>

Here we include the required stylesheets followed by the HTML5 shim, so IE8 and older will be able to support HTML5 tags

The first stylesheet is the main Bootstrap stylesheet, which MUST be included on each or your page, followed by the main layout stylesheet that defines the element and layout styles. This stylesheet can be customized by removing @imports to stylesheet you don't need.

For more explanation about the main stylesheet, you can look at the previous section.

Then we see the title tag followed by the closing head and opening body tag

Note: Above we also see a comment about the plugin stylesheets, it's recommended that you insert your plugin stylesheets here before the main stylesheet to ease overriding their styles. Overriding is meant to keep compatibility with newer versions of the plugin.

The Header

    <div id="wrapper">
        <header id="header" class="navbar navbar-inverse">
            <div class="navbar-inner">
                <div class="container">
                    <div class="brand-wrap pull-left">
                        <div class="brand-img">
                            <a class="brand" href="#">
                                <img src="assets/images/logo.png" alt="">
                            </a>
                        </div>
                    </div>
                    
                    <div id="header-right" class="clearfix">
                        <div id="nav-toggle" data-toggle="collapse" data-target="#navigation" class="collapsed">
                            <i class="icon-caret-down"></i>
                        </div>
                        <div id="header-search">
                            <span id="search-toggle" data-toggle="dropdown">
                                <i class="icon-search"></i>
                            </span>
                            <form class="navbar-search">
                                <input type="text" class="search-query" placeholder="Search">
                            </form>
                        </div>
                        <div id="dropdown-lists">
                            <a class="item" href="#">
                                <span class="item-icon"><i class="icon-exclamation-sign"></i></span>
                                <span class="item-label">Notifications</span>
                                <span class="item-count">4</span>
                            </a>
                            <a class="item" href="mail.html">
                                <span class="item-icon"><i class="icon-envelope"></i></span>
                                <span class="item-label">Messages</span>
                                <span class="item-count">16</span>
                            </a>
                        </div>
                        
                        <div id="header-functions" class="pull-right">
                            <div id="user-info" class="clearfix">
                                <span class="info">
                                    Welcome
                                    <span class="name">Shana-chan</span>
                                </span>
                                <div class="avatar">
                                    <a class="dropdown-toggle" href="#" data-toggle="dropdown">
                                        <img src="assets/images/pp.jpg" alt="Avatar">
                                    </a>
                                    <ul class="dropdown-menu pull-right">
                                        <li><a href="profile.html"><i class="icol-user"></i> My Profile</a></li>
                                        <li><a href="#"><i class="icol-layout"></i> My Invoices</a></li>
                                        <li class="divider"></li>
                                        <li><a href="index.html"><i class="icol-key"></i> Logout</a></li>
                                    </ul>
                                </div>
                            </div>
                            <div id="logout-ribbon">
                                <a href="index.html"><i class="icon-off"></i></a>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </header>

This is the header, this part is a customized version of Bootstrap's .navbar element. The explanation below will explain how this header would look like and which code produces that part when seen on a desktop with screen width more than 980px.

As you obviously should know, the header on this page itself is actually how this part of HTML markup renders. On the left side we see an image link, which we will put or logo in. This part is the contents of .brand-wrap on the code above. This part is just a short, simple markup that centers image vertically and setting the maximum height to 67px. Any images higher than 67px will be scaled down to fit.

Then if we look at the right side of the header, we should see #header-right. This part contains most of the elements on the header, which are the search form, button dropdowns, profile image, and the logout button.

I think it's better to explain each part of the right header to get a more better understanding so you can build your web app without any problems.

Element ID: #nav-toggle
This is a hidden button that is used to display a toggle button when viewing this template in a mobile phone (max-width: 480px). You can remove this button, but It's stritcly recommended to add this into your page markup, or else the navigation would be not available on mobile phones.
Element ID: #header-search
This part is the searc form wrapper, here we should see first an element with the id #search-toggle, this is a button that will be visible on screens lower than 767px, and is used to toggle the sidebar. You can try resizing your browser if you want to see this in effect. Following this, is the search form itself. Pretty straightforward.
Element ID: #dropdown-lists
This is a wrapper where the buttons that you can use to create dropdown lists are put in. These buttons can be primarily used to create dropdown lists like facebook notification and message dropdowns. These buttons can also contain a counter that can notice users about new messages, new notifications etc. The dropdown lists will be available on the next update (v1.1), for now you can just use the buttons to link to a specific page, or build the dropdowns yourself. For markup of these buttons, the code above should be pretty clear.
Element ID: #header-functions
This is a wrapper, that wraps the functional elements of the header, like the profile picture, profile dropdown menu, and the logout button. Building this part is pretty easy, just customize your username and avatar above to your requirements. The avatar here is used as the toggle button for the dropdown menu. Building the dropdown menu itself is part of the core Bootstrap functionality so it will be not explained here. Additionalty you can also change the icon for the logout button by using the Font icons (Covered in this section).

The Sidebar

        <div id="content-wrap">
            <div id="content">
                <div id="content-outer">
                    <div id="content-inner">
                        <aside id="sidebar">
                            <nav id="navigation" class="collapse">
                                <ul>
                                    <li class="active">
                                        <span title="Inner Navigation">
                                            <i class="icon-home"></i>
                                            <span class="nav-title">Inner</span>
                                        </span>
                                        <ul class="inner-nav">
                                            <li class="active"><a href="dashboard.html"><i class="icol-dashboard"></i> Menu 1</a></li>
                                            <li><a href="calendar.html"><i class="icol-calendar-2"></i> Menu 2</a></li>
                                        </ul>
                                    </li>
                                    <li>
                                        <a href="#" title="Anchor">
                                            <i class="icon-table"></i>
                                            <span class="nav-title">Anchor</span>
                                        </a>
                                    </li>
                                </ul>
                            </nav>
                        </aside>

                        <div id="sidebar-separator"></div>

Above is the sidebar markup, the second most important part of this template. The sidebar is what we see on the left, which will contain our navigation menu. The sidebar basically has two different kinds of navigation menus, a menu that has an inner navigation, and a direct link that links to a specific page (link to this documentation page is an example of a direct link, while the other menus are examples of the first type of navigation).

How we write the markup for both types of navigation menu is very easy. Inside <nav id="navigation" class="collapse">, I already put an example for both. The first li is a menu with an inner navigation, while the second one is a direct link. The difference is obvious enough, the first one has a span element as the first child element, followed by <ul class="inner-nav">, while the second one has only one a tag as its child element. Just follow this pattern, and you're ready to build your own complete navigation menu.

Also, don't forget to put the class .active on the menu item and inner-nav item li tag to mark it as active.

Last but not least, we see <div id="sidebar-separator"></div>, this markup is required to display the binder. This is just a part of the design. You can safely remove it if you do not like it.

WAIT! I saw a toggle button on the sidebar on this page. Where's the markup for that?
The toggle button will be added dynamically via JavaScript, so we do not need to write the code for that. This will be covered in the JavaScript and Custom Plugins section.

Main Content Section

                        <section id="main" class="clearfix">
                            <div id="main-header" class="page-header">
                                <ul class="breadcrumb">
                                    <li>
                                        <i class="icon-home"></i>MoonCake
                                        <span class="divider">&raquo;</span>
                                    </li>
                                    <li>
                                        <a href="#">Empty Page</a>
                                    </li>
                                </ul>
                                
                                <h1 id="main-heading">
                                    Empty Page <span>Just an empty page for your starting point</span>
                                </h1>
                            </div>
                            
                            <div id="main-content">
                            <!-- Put Here Your Content -->
                            </div>

                        </section>
                    </div>
                </div>
            </div>
        </div>

Here comes the main content part of our HTML markup as the most important part of this template. This one is just a basic, empty content markup that later will contain our pages content.

First, you'll see <div id="main-header" class="page-header">, this is the page header, where you can put your breadcrumbs and page title.

Below the header comes the main content that we'll talk about on the next section; Widgets

Footer

        <footer id="footer">
            <div class="footer-left">MoonCake - Responsive Admin Template</div>
            <div class="footer-right"><p>Copyright 2012. All Rights Reserved.</p></div>
        </footer>
        
    </div>

This is just a usual, boring footer. Just customize it to your liking, maybe you can make it less boring :)

The JavaScript Files

    <!-- Core Scripts -->
    <script src="assets/js/libs/jquery-1.8.2.min.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <script src="assets/js/libs/jquery.placeholder.min.js"></script>
    
    <!-- Template Script -->
    <script src="assets/js/template.js"></script>
    <script src="assets/js/setup.js"></script>
    
    <!-- Plugin Scripts -->

    <!-- Demo Scripts -->

</body>

</html>

Here is where we include the required JavaScript files for our page. The scripts are placed at the bottom of the page for better page performance.

The scripts above are the minimum required scripts to get this template to work properly. You may remove the jquery.placeholder.js and setup.js, but please only do that if you know what you do as it may break some functionalities.

That was it for the HTML markup, if you need the base, empty markup directly, you can find it in this template package file with the filename empty.html

Widgets

Widgets, they are what made this template possible to exists. Every element on the main content section are almost contained as widgets, even if they are forms, tables, text, profile page, google maps, etc.

Widgets are characterized by default by the stacked paper effect on their bottom part, like the container of the text you're reading right now :)

Building Widget Skeleton

You can always put forms, text, alert boxes and every other elements outside a widget, but then it won't look as a part of this template. Even this documentation section is a widget. It's recommended unless you want something different to divide Widgets into grids by using Bootstrap fluid grid system. All you need to do to divide those Widgets into grids is just following the steps you do to make fluid grids with Bootstrap, followed by adding the class name .widget to each grid.

<div class="row-fluid">
    <div class="span4 widget">...</div>
    <div class="span8 widget">...</div>
</div>

If you want to make more than one widget in a grid, you can put them vertically stacked on each grid. Doing this only requires you to put the .widget element inside the grid, instead directly on the grid. Look at the code below for an example,

<div class="row-fluid">
    <div class="span4">
        <div class="widget">...</div>
        <div class="widget">...</div>
        <div class="widget">...</div>
    </div>
    <div class="span8">
        <div class="widget">...</div>
        <div class="widget">...</div>
        <div class="widget">...</div>
    </div>
</div>

So, to put it simple now we'll go fill our main content with these widgets so we get the following markup,

<section id="main" class="clearfix">
    <div id="main-header" class="page-header">
        <ul class="breadcrumb">
            <li>
                <i class="icon-home"></i>MoonCake
                <span class="divider">&raquo;</span>
            </li>
            <li>
                <a href="#">Empty Page</a>
            </li>
        </ul>
        
        <h1 id="main-heading">
            Empty Page <span>Just an empty page for your starting point</span>
        </h1>
    </div>
    
    <div id="main-content">
        <div class="row-fluid">
            <div class="span4">
                <div class="widget">...</div>
                <div class="widget">...</div>
                <div class="widget">...</div>
            </div>
            <div class="span8">
                <div class="widget">...</div>
                <div class="widget">...</div>
                <div class="widget">...</div>
            </div>
        </div>
    </div>
</section>

If you haven't read the previous section about Base HTML Structure - Main Content Section, it's recommended that you read it to understand the above markup.

The Anatomy of Widget

Now I'll explain in more detail, how the HTML markup for theses widgets are structured.

<div class="widget">
    <div class="widget-header">
        <span class="title">Widget Title</span>
        <div class="toolbar">
        </div>
    </div>

    <div class="widget-content"></div>
</div>

The code above shows us the very basic structure that all widgets must have. The base structure will always have two elements; the .widget-header and the .widget-content. These structure can be further extended by adding toolbars and by extending the .widget-content itself. The .widget-content needs to be extended further to work together with every other elements such as forms, tables, and the different other widget contents.

On the above code, we also see a div with the class .toolbar in the .widget-header. In this toolbar you can actually put anything, from buttons, sliders, progressbars etc., usage of these elements in a toolbar can be seen on the Elements > Widget Boxes page.

Examples

Now, let's we try to render the code above, so we'll get a widget with a header and empty content.

Widget Title

Additionaly, these headers can be in two colors, dark (default) and light. Just put .light class on the header, and the header along with the buttons inside its toolbar will adjust to a light version. Below you can see how a light header looks like.

Widget Title

It's also possible to add toggle functionality to widget boxes. Collapsible widget boxes are very flexible, you can always make anything inside its header to be the trigger button. All you need is giving the HTML5 data attribute data-toggle="widget" to the element, then this script will wrap the widget box childrens into an additional div tag which is going to slide up/down when we toggle the widget box.

Note: Previews of what you can do with these widgets, are covered on the page I pointed before, and each of them also contain instructions on how to do it.

Extending Widget Content

In this template, a .widget-header can be ommited, but a widget MUST always have a .widget-content.

Widget contents can be anything, you can always put anything custom in it to suit your requirements. Basically, there are three main Widget Content types that is used to wrap the most used element in this template which are,

  • Default
    This is the most basic widget content. This kind of content can contain everything, from texts to images and charts. This type of widget content is utilized as the base for all contents. Both examples above are examples of a widget with this base widget content, which by default has a 25px padding and 1px border around it.

    Note: This base content type has two additional classes, .no-padding and .no-border. These classes do what its name says :)

  • Form Container
    Form Container is the widget content type you need to make forms inside widgets, these containers will define each form's layout. Forms inside these form containers will be styled nicely to match this template's style. Usage of this type of content will be covered on the Forms section,
  • Table Container
    Table Container is the widget content type you need to make tables inside widgets, these containers will set the proper borders of tables inside it. Usage of this type of content will be covered on the Elements section,

Additionaly, to minimize your effort creating custom widget contents, there is already a handfull of usefull and common widget contents predefined which are,

  • Shopping Cart
  • News
  • Task List
  • Summary List
  • Goal
  • User Box
  • Sortable List
  • Tweets
  • Chat Box
  • Google Maps

These widgets are simple widgets, that can work as a starting point of your widgets. Examples of these widgets can be found in the Custom Widgets page.

Forms

This section will explain how to build forms inside widgets. If you haven't read about Widget Contents, it's recommended to read it on the previous section.

Defining forms inside a Widget requires you to use the Form Container as mentioned on the previous section. This container is a .widget-content, that is extended by adding .form-container class. The following markup is a simple example with a basic form,

<div class="widget">
    <div class="widget-header">
        <span class="title">Horizontal Form</span>
    </div>

    <div class="widget-content form-container">
        <form class="form-horizontal">
            <div class="control-group">
                <label class="control-label">Input Field</label>
                <div class="controls">
                    <input type="text" class="span12">
                </div>
            </div>
            <div class="control-group">
                <label class="control-label">Input Field</label>
                <div class="controls">
                    <input type="text" class="span12">
                </div>
            </div>
            <div class="form-actions">
                <button type="button" class="btn btn-primary">Submit</button>
            </div>
        </form>
    </div>
</div>

which will render the following,

Horizontal Form

That was it about forms, defining the different kinds of forms inside widgets is actually just following the steps required to make forms with Bootstrap.
Everything is made to work nicely together with Bootstrap, so there should be no problems, if there are, please report it by contacting me.

Statistics

This template comes with widgets that can help you build advanced statistical functions in your web app, which are:

  • Analytics Tab
    This is a Bootstrap tab component that's customized to display charts and graphs. With this widget, you can control your statistical elements by using the controls you put in the tab content headers. Example of this tab is available on the dashboard page.
  • Statistic Boxes
    This is a widget that can be used to display your current stats, accompanied by an icon, sparkline, progressbar or the custom CircularStat plugin.
    Below is an example that shows the HTML markup for those stat elements.
    <ul class="stats-container">
        <!-- Summary Stats -->
        <li>
            <a href="#" class="stat summary">
                <span class="icon">
                    <i class="icon-stats"></i>
                </span>
                <span class="digit">
                    <span class="text">Current Balance</span>
                    $6,788
                </span>
            </a>
        </li>
    
        <!-- Circular Stats -->
        <li>
            <a href="#" class="stat circular">
                <span rel="tooltip" title="111/220 Files Uploaded" 
                    data-provide="circular" 
                    data-fill-color="#08c" 
                    data-value="169" 
                    data-max-value="220" 
                    data-radius="64" 
                    data-thickness="21" 
                    data-percent="false"
                ></span>
                <span class="text">Files Uploaded</span>
            </a>
        </li>
    
        <!-- Sparkline Stats -->
        <li>
            <a href="#" class="stat summary">
                <span class="sparkline" sparkType="bar" 
                    sparkBarColor="#08c" sparkBarWidth="6" sparkHeight="28">5,6,7,9,9,5,3,2,2,4,6,7</span>
                <span class="digit">
                    <span class="text">Total Revenue</span>
                    $5378
                </span>
            </a>
        </li>
    
        <!-- Progress Stats -->
        <li>
            <a href="#" class="stat progress-stat">
                <span class="text"><i class="icon-feather"></i> Designs Completed <span>130/200</span></span>
                <div class="progress progress-mini progress-info progress-striped active">
                    <div class="bar" style="width: 65%;"></div>
                </div>
            </a>
        </li>
    </ul>
    

Note: To use these features, you need the core statistic.css file included on your page. This file is located in /assets/css/.

Icons

This template comes with three icon sets,

  • Icon Web Font, with icons from the IcoMoon app
  • Led Color Icons (16x16) converted into a sprite image
  • IconSweets + IconSweets 2 Icons (16x16) converted into two sprite images (dark and light version)

Additionaly, you can use the jQuery-UI icon set, but there's no official support for this icon set.

Icon Web Font

To use this icon, just specify an inline HTML element, and give this Icon set class name. This Icon set class names are prefixed by icon-

<i class="icon-home"></i>

Led Color Icons (16x16)

To use this icon, just specify an inline HTML element, and give this Icon set class name. This Icon set class names are prefixed by icol-

<i class="icol-cross"></i>

IconSweets + IconSweets 2 Icons (16x16)

To use this icon, just specify an inline HTML element, and give this Icon set class name. This Icon set class names are prefixed by icos-.
To use the light version, just add an additional class to the element, icos-white

<i class="icos-home"></i>

<i class="icos-home icos-white"></i>

jQuery-UI

jQuery-UI is a library that provides abstractions for low-level interaction and animation, advanced effects and high-level, themeable widgets, built on top of the jQuery JavaScript Library, that you can use to build highly interactive web applications.

jQuery-UI that's shipped with this template is a custom build jQuery-UI v1.8.24 that has every core elements and part of the widgets without the effects package. The widgets which are included are Datepicker, Slider, Progressbar, Autocomplete and Dialog. The reason for not taking all the widgets is because Bootstrap itself already has a tabs, accordion and button component, which will conflict with jQuery-UI.

For jQuery-UI usage, you can visit their official website for documentation,

  • Datepicker
  • Slider
  • Progressbar
  • Autocomplete
  • Dialog

Extended jQuery-UI

One of the main difficulties when integrating Bootstrap is how to get the components to work with Bootstrap's style, without writing any of Bootstrap class names to the elements you want to have as jQuery-UI widgets. For example, Progressbar. Bootstrap's progressbar is very beautifully styled, while jQuery-UI doesn't. jQuery-UI only provides a plain, boring progressbar by default. We couldn't convert a jQuery-UI progressbar to a Bootstrap progressbar by default, because the inner div that is contained in a jQuery-UI progressbar is generated dynamically.

For this reason, I started to build an extending script for three jQuery-UI widgets, which are Slider, Progressbar, and Autocomplete, which is going to be explained thoroughly here.

Slider

Sliders are quite a usefull component, they can help us to select number ranges intuitively without typing anything.

One of the thing I don't like is that this component by default doesn't have any methods to display the data being interacted without specifying a custom element that will be updated with the sliders callback. This feature, as far as I saw written in jQuery-UI blog is not going to be added in a short time. So I decided to write my own and use it untill this feature is added into the slider component officialy. Below are the features that I added to the slider component:

  • Ability to add tick marks below a horizontal or beside a vertical jQuery-UI slider
  • Ability to show tooltip on the slider handle on hover or drag event

Below is a screenshot of this extended slider component:

This component would be just as easy to implement as the original one. The difference is that this extended component has two new options,

Option Name Default Description
ticks (array) []

This is an array that will contain our tick labels. The tick labels will be displayed proportianally across the slider from left to right in a horizontal slider, or from top to bottom in a vertical slider.

Example: ['|', 25, '|', 50, '|', 75, '|']

tooltip (none | always | ondrag) 'always'

This option allows us to change the tooltip behavior whether not to show it, or show it on hover or drag event.

Progressbar

This extension extends jQuery-UI progressbar for use with Twitter Bootstrap. It also adds the functionality to display the progressbar value on the center of the progress value. With these changes, there are five new options added which are:

Option Name Default Description
striped false By setting this option to true, .progress-striped class will be added to the progressbar
active false By setting this option to true, .progress-active class will be added to the progressbar
showValue false By setting this option to true, we will be able to see the progressbar value on the center of the progressbar.

type (info | success | warning | danger) '' This option will add Bootstrap's progressbar color classes

Below is a screenshot of this extended progressbar in action:

Autocomplete

Autocomplete is extended just for the sake of matching its style with Bootstrap's typeahead. Autocomplete has more functionalities than Bootstrap Typeahead, so this widget was not ommited from the package. With this extension you don't have to add any additional class to the input field.

Usage is all the same with the original autocomplete, and there are no new options.

Using Extended jQuery-UI

To use this extension, all you need to do is include /assets/jui/jquery-ui.custom.js and /assets/jui/jquery-ui.custom.css. After that, just initialize the widgets as usual.

Note: In a short time, jQuery-UI v1.9.0 which will update the core components and thus might break compatibility with this script will be released. I will the update the extension script as well, so don't worry.

JavaScript and Plugins

This template is build using as minimal JavaScript as possible, at its minimum this template only requires jQuery, Bootstrap collapse, Bootstrap toggle and the template core script itself.

What I'm going to explain here is this template's core script functionality and methods, which we will go through method by method, so here's the script:

;(function( $, window, document, undefined ) {
    
    var MoonCake = function( document ) {
        this.document = $(document);
    }

This template's core script is made in a plugin-like style, so here we have the plugin constructor where we save an internal reference to the document parameter. This document parameter should be the document object, where we later will bind the ready event.


    MoonCake.prototype = {
        
        version: '1.0', 

        init: function( options ) {

            this.bindEventHandlers();
            options.showSidebarToggleButton && this.attachSidebarToggleButton();
            this.setSidebarMinHeight( '#wrapper #sidebar #navigation > ul > li.active:first > .inner-nav' );
            
            return this;
        }, 

Here we define the template plugin prototype, where first we have the init() function. This function will call other methods and attach the sidebar toggle button if the it's defined as true in the template options.

The methods called here will be covered shortly when we arrive at those called methods.


        ready: function( fn ) {
            this.document.ready($.proxy(function() {
                fn.call( this.document, this );
            }, this));

            return this;
        }, 

This function is used to act like a wrapper for the document ready event. The parameter we passed into this function will be bind to the document ready event, and thus called when the document is ready.


        attachSidebarToggleButton: function() {

            var toggleButton = $( '<li id="sidebar-toggle-wrap"><span id="sidebar-toggle"><span></span></span></li>' );

            toggleButton
                .appendTo( '#wrapper #sidebar #navigation > ul' )
                .children( '#sidebar-toggle' )
                .on( 'click.template', function(e) {
                    if( !!$( '#sidebar #navigation > ul > li.active:first .inner-nav' ).length ) {
                        $(this).parents( '#content' )
                            .toggleClass( 'sidebar-minimized' )
                        .end()
                            .toggleClass( 'toggled' );
                    }
                    e.preventDefault();
                })
                .toggleClass( 'disabled', !$( '#sidebar #navigation > ul > li.active:first .inner-nav' ).length )
                .toggleClass( 'toggled', $( '#wrapper #content' ).hasClass( 'sidebar-minimized' ) );
        }, 

This is one the functions that is called in the previous init() function. This function will construct the sidebar toggle button HTML markup, insert it to the DOM, and bind the necessary event handlers. As you might remember, we didn't write the button's markup when we were building the base HTML structure before, so this is where the actual toggle button is generated.


        bindEventHandlers: function() {

            // Search and Dropdown-menu inputs
            $( '#header #header-search .search-query')
                .add( $( '.dropdown-menu' )
                .find( ':input' ) )
                .on( 'click.template', function( e ) {
                    e.stopPropagation();
                });

            var self = this;
            // Sidebar Navigation
            $( '#sidebar #navigation > ul > li' )
                .filter(':not(#sidebar-toggle-wrap)')
                .on( 'click.template', ' > span', function( e ) {
                    var hasInnerNav = !!$( this ).siblings( '.inner-nav' ).length;

                    $( this ).parent()
                        .siblings().removeClass( 'active open' )
                    .end()
                        .addClass( 'active' ).toggleClass( 'open' );

                    $( '#content' )
                        .toggleClass( 'sidebar-minimized', !hasInnerNav );

                    $( '#sidebar-toggle' )
                        .toggleClass( 'disabled', !hasInnerNav )
                        .toggleClass( 'toggled', $( '#content' ).hasClass( 'sidebar-minimized' ) );

                    self.setSidebarMinHeight( $( this ).siblings( '.inner-nav' ) ) ;
                    
                    e.stopPropagation();
                });

            // Collapsible Boxes
            $( '.widget .widget-header [data-toggle=widget]' )
            .each(function(i, element) {
                var p = $( this ).parents( '.widget' );
                if( !p.children( '.widget-inner-wrap' ).length ) {
                    p.children( ':not(.widget-header)' )
                        .wrapAll( $('<div></div>').addClass( 'widget-inner-wrap' ) );
                }
            }).on( 'click', function(e) {
                var p = $( this ).parents( '.widget' );
                if( p.hasClass('collapsed') ) {
                    p.removeClass( 'collapsed' )
                        .children( '.widget-inner-wrap' ).hide().slideDown( 250 );
                } else {
                    p.children( '.widget-inner-wrap' ).slideUp( 250, function() {
                        p.addClass( 'collapsed' );
                    });
                }
                e.preventDefault();
            });
        }, 

This is where the most important events in this template are bound,

  • First we need to prevent closing of Bootstrap dropdown menus when a form input inside it is clicked since this is not supported by Bootstrap by default. Additionalty, this is also bound to the search form on the header when it's hidden (when viewed on screens smaller than 768px).
  • Second is the sidebar navigation script. This is the most tricky part of our template scripting where we add the functionality to toggle and manage the minimized status of the sidebar. With this script along with Bootstrap collapse plugin data API which is directly defined in the HTML markup, it's possible to get the navigation working perfectly in all screen resolutions without any additional codes.
  • Third and last we have the code to add toggle functionality to widget boxes. Collapsible widget boxes are very flexible, you can always make anything inside its header to be the trigger button. All you need is giving the HTML5 data attribute data-toggle="widget" to the element, then this script will wrap the widget box childrens into an additional div tag which is going to slide up/down when we toggle the widget box.

        setSidebarMinHeight: function( nav ) {
            nav = $( nav )[0];
            $( '#wrapper #sidebar #navigation > ul' )
                .css( 'minHeight', nav? $( nav ).outerHeight() : '');
        }
    };

Here we have a function that sets the sidebars min-height style attribute. This is required for the navigation to display correctly even when we have lots of items.


    $.template = new MoonCake( document ).ready( function( template ) {

        template.init({
            showSidebarToggleButton: true // show or hide the sidebar toggle button
        });

    });

    
}) (jQuery, window, document);

Lastly we create a new template object by passing the document object as parameter, then listen to its ready event. In the ready event callback, we call the template's init function with the options as parameter.

Plugins

This template comes shipped with five custom plugins, each of them are made to work perfectly with this template. Those plugins are CircularStat, Contact List, Pick List, Wizard and FileInput.

Circular Stat

Circular stat is a HTML5 Canvas based plugin that works on IE by using Explorer Canvas. This plugin is used to display statistical values as a circular chart and is able to be updated dynamically using its API.

Circular stat has an API that allows us to change its attributes to match your requirements; you can change whether to show the data as percentage or fraction, the radius, the filled part thickness, the filled color, the back color, center color and the decimal count after the digit. For a demo of this plugin's API, you can view it on the Statistical Elements page.

To use this plugin you only need to include /assets/js/circular-stat.js, and the core statistic CSS files. To initiate the plugin you can use HTML5 data API by specifying data-provide="circular", or just call this plugin in the document ready event.

Usage Example
<link rel="stylesheet" href="custom-plugins/circular-stat/circular-stat.css">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<!--[if lt IE 9]>
<script src="assets/js/libs/excanvas.min.js"></script>
<![endif]-->
<script src="custom-plugins/circular-stat/circular-stat.min.js"></script>

<span data-provide="circular" 
    data-decimals="2" 
    data-fill-color="#769f5d" 
    data-value="11.55" 
    data-radius="56" data-thickness="15"></span>
API Usage Example
<link rel="stylesheet" href="custom-plugins/circular-stat/circular-stat.css">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<!--[if lt IE 9]>
<script src="assets/js/libs/excanvas.min.js"></script>
<![endif]-->
<script src="custom-plugins/circular-stat/circular-stat.min.js"></script>

<script>
    $(document).ready(function() {
        var cs = $('#circle').circularStat();

        // Change value
        cs.circularStat( 'option', 'value', (Math.random() * 75 + 25 ));
        // Change radius
        cs.circularStat( 'option', 'radius', (Math.random() * 68 + 32 ));
    });
</script>

<span id="circle" data-provide="circular" 
    data-decimals="2" 
    data-fill-color="#769f5d" 
    data-value="11.55" 
    data-radius="56" data-thickness="15"></span>
Plugin Options
Option Name Default Description
percent true This option determines whether to show the value as a percentage or fraction
value 0 This is the real value of the circular stat
maxValue 100 This option is the maximum value that this circular stat can have. Percentage is calculated by dividing value with maxValue

radius 32 This option determines the circular stat circle radius
thickness 6 This option determines the circular stat filled part thickness
backFillColor '#eeeeee' This option is the circular stat back color
fillColor '#e15656' This option is the circular stat filled part color

centerFillColor '#ffffff' This option is the color of the circular stat's center
decimals 0 This option determines the number of decimals to show after the comma

Contact List

This custom plugin is a modified and enhanced version of SliderNav, an iPhone Style Contact Lists Using jQuery and CSS. The plugin code has been optimized and rewritten using the same plugin template that is used in this template. Additionaly, a filtering function has also been added to search for content inside it.

Usage Example

To use the plugin, just include the necessary JavaScript and CSS files, and define your contact list in an unordered list. After that initialize the plugin in the document ready event, and do not forget to group your items using the HTML5 data attribute data-group in each li tag in your list. The contents of the list itself can be customized freely as long as you write the data-group attribute correctly.

<link rel="stylesheet" href="custom-plugins/contactlist/contactlist.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="custom-plugins/contactlist/contactlist.min.js"></script>

<script>
    $(document).ready(function() {
        $('#contactList').contactList();
    });
</script>

<ul id="contactList">
    <li data-group="a">
        <a class="title">A</a>
        <ul>
            <li>
                <a href="#">
                    <span class="thumbnail"><img src="sample/p1.jpg"></span> Aaron Avery
                    <span style="font-size: 11px; display: block;" class="muted">Creative Director</span>
                </a>
            </li>
            <li>    
                <a href="#">
                    <span class="thumbnail"><img src="sample/p6.jpg"></span> Aimee Foley
                    <span style="font-size: 11px; display: block;" class="muted">Creative Director</span>
                </a>
            </li>
        </ul>
    </li>

    ...
    
    <li data-group="z">
        <a class="title">Z</a>
        <ul>
            <li>    
                <a href="#">
                    <span class="thumbnail"><img src="sample/p1.jpg"></span> Zelenia Swanson
                    <span style="font-size: 11px; display: block;" class="muted">Creative Director</span>
                </a>
            </li>
            <li>    
                <a href="#">
                    <span class="thumbnail"><img src="sample/p3.jpg"></span> Zephr Rivers
                    <span style="font-size: 11px; display: block;" class="muted">Creative Director</span>
                </a>
            </li>
        </ul>
    </li>
</ul>
Plugin Options
Option Name Default Description
contactListClass 'thumbnails' Additional class names to be added on this plugin's target element
scrollTimeout 100 The time needed in milliseconds to trigger scrolling when you hover the list navigation
showFilters true Whether to show the filter or not
filterPlaceholder 'Search...' The placeholder text to be displayed on the filter text input
filterContainerClass 'search-form' Additional class names to be added to the filter container
filterInputClass 'search-query' Additional class names to be added to the filter text input
filterFunction null By default, filtering will look for content with text matching the user specified keyword. Using this option, you can override this behavior by returning a boolean value with a custom callback function. (return true if you want to have an element added to the filtered content, or false otherwise).
This option accepts a callback with the following signature: function( element, keyword )

Pick List

Pick list is a plugin for converting usual select inputs to those inputs where you can move items from the left to right column. This plugin was originally a modified version of jquery-ui-picklist which was included in my previous Admin Template. This plugin now comes with lots of enhancements, filtering functionality and responsive layout.

Usage Example

To use the plugin, just include the necessary JavaScript and CSS files, and create your select field. After that initialize the plugin in the document ready event, and you're done.

<link rel="stylesheet" href="custom-plugins/picklist/picklist.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="custom-plugins/picklist/picklist.min.js"></script>

<script>
    $(document).ready(function() {
        $('#pickList').pickList();
    });
</script>

<select id="pickList" name="picklist[]">
    <option>Apple</option>
    <option selected="selected">Banana</option>
    <option selected="selected">Kiwi</option>
    <option>Orange</option>
    <option>Pear</option>
    <option>Grape</option>
    <option>Mango</option>
    <option>Peach</option>
    <option>Dragon Fruit</option>
    <option>Durian</option>
    <option>Avocado</option>
    <option>Cherry</option>
</select>
Plugin Options

This plugin has too many options to be displayed here, but they are mainly just class names that is used for styling the plugin. It's not recommended to change them unless you know what you do. The options listed below are the ones that you can use to tweak the plugin functionality.

Option Name Default Description
enableCounters true Whether to show the numbers of visible/invisible options above each filter column.
enableFilters true Whether to show and bind the filtering events. If set to false, the filter inputs above each column will be hidden.
sortList true Whether to sort the list each time it's refreshed. If not sorted, the options will be ordered in the way you move and create the items before initialization.

Wizard

This plugin converts a set of form fields into a navigable wizard form with responsive layout. It can work together with jquery validation and form plugin seamlessly. The examples in this template shows how this plugin can be implemented to work with those plugins. AJAX submission through this plugin is done via configuring the form plugin with its options which can be found in jQuery Form plugin's official website and documentation here.

Usage Example

To use the plugin, just include the necessary JavaScript and CSS file, create and divide your forms into any elements with the specified wizard element class name that you can specify in this plugin options. After that initialize the plugin in the document ready event, and you're done.

Note: At the end of the form below, you'll see a div with the class .form-actions .wizard-actions. This div is actually a wrapper for the wizard buttons. It is not required to create this element unless you want to place the button container in an other place as the plugin will check whether this element exists, and create one if it doesn't. It is there just for showing an example.

<link rel="stylesheet" href="custom-plugins/wizard/wizard.css">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="custom-plugins/wizard/jquery.form.min.js"></script>

<script>
    $(document).ready(function() {
        $('#wizard-form').wizard();
    });
</script>

<form id="wizard-form" class="form-horizontal" data-forward-only="false">
    <fieldset class="wizard-step">
        <legend class="wizard-label"><i class="icon-book"></i> Account</legend>
        <div class="control-group">
            <label class="control-label">Username <span class="required">*</span></label>
            <div class="controls">
                <input type="text" name="wizard[username]" class="span12">
            </div>
        </div>
    </fieldset>

    ...

    <fieldset class="wizard-step">
        <legend class="wizard-label"><i class="icon-ok"></i> Confirmation</legend>
        <div class="control-group">
            <label class="control-label">Payment Method <span class="required">*</span></label>
            <div class="controls">
                <select name="wizard[payment]">
                    <option>PayPal</option>
                    <option>Visa</option>
                    <option>Mastercard</option>
                    <option>Wire Transfer</option>
                </select>
            </div>
        </div>
    </fieldset>
    <div class="form-actions wizard-actions">
    </div>
</form>
Plugin Options
Option Name Default Description
element '.wizard-step' The selector used to find elements inside the form
navLabelElement '.wizard-label' The selector used to find elements whose text is used as the navigation label
buttonContainer '.wizard-actions' The selector to find the button container. If this selector returns no elements, then a button container will be generated dynamically
navContainerClass 'wizard-nav' Additional class name to be given to the navigation
buttonContainerClass 'form-actions btn-toolbar' Additional class name to be given to the button container
transition null Transition callback, which will allow you to define a custom transition effect for the wizard steps. Usage of this callback requires you to have an average knowledge of jQuery.
onStepLeave null Function to be called before leaving a step, return false to cancel the event. (used to perform form validation in the demo)
onStepShown null Function to be called after a new step is shown
onBeforeSubmit null Function to be called before submitting the form, return false to cancel form submission
forwardOnly false Whether to allow users to navigate back to a previous wizard step
orientation (horizontal | vertical) 'horizontal' This option will determine the wizard layout
ajaxSubmit true This option determines whether the form is going to be submitted via AJAX or a normal HTTP request
ajaxOptions {} The options to pass to the jQuery Form plugin when submitting the form via AJAX
defaultButtonClass 'btn' The default button class name for the wizard buttons
responsiveNextButtonClass 'responsive-next-btn' The responsive next button class name
responsivePrevButtonClass 'responsive-prev-btn' The responsive prev button class name
submitButtonClass 'btn-primary pull-right' The submit button class name
responsiveNextButtonLabel '<i class="icon-caret-right"></i>' The text to show inside the responsive next button/td>
responsivePrevButtonLabel '<i class="icon-caret-left"></i>' The text to show inside the responsive prev button
nextButtonLabel 'Next' The text to show inside the next button
prevButtonLabel 'Prev' The text to show inside the prev button
submitButtonLabel 'Submit' The text to show inside the submit button

File Input

Lastly, this is a simple plugin to style file inputs with Bootstrap's uneditable-input and input-append. This plugin is very simple and can be used by just specifying data-provide="fileinput" on a file input field.

Usage Example

To use the plugin, just include the JavaScript file, and create your file input field with data-provide="fileinput".

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="custom-plugins/bootstrap-fileinput.min.js"></script>

<input type="file" data-provide="fileinput">
Plugin Options

This plugin has too many options to be displayed here, but they are mainly just class names that is used for styling the plugin. It's not recommended to change them unless you know what you do. The options listed below are the ones that you can use to tweak the plugin functionality.

Option Name Default Description
placeholder 'No file selected...' The text to show in the undeditable-input field to give users feedback before selecting a file
buttontext 'Browse...' The text to show in the browse button
inputSize (small | medium | large | xlarge | xxlarge) 'large' The input size of the uneditable-input, this follows Bootstrap's input sizing class names

Third Party Plugins

This section will cover every third party plugins. They are all styled nicely to work together with this template.

Each plugin explanation will contain a usage example that will provide you a the base markup along with the minimal required JavaScript and CSS file, where their file paths will follow this template's directory structure.

Totally, there are 20 great plugins shipped with this version of MoonCake. There will be more and more plugins added in the future, but for now let's go through each plugin and see what they are used for and how to use them,

CLEditor

CLEditor is a very simple, lightweight WYSIWYG editor that compared to other big, complex editors, is very easy to implement and use. This was the reason I choose this plugin as the WYSIWYG editor instead of other editors.

On the home page of CLEditor, it is stated that CLEditor is an open source jQuery plugin which provides a lightweight, full featured, cross browser, extensible, WYSIWYG HTML editor that can be easily added into any web site.

Usage Example
<link rel="stylesheet" href="plugins/cleditor/jquery.cleditor.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/cleditor/jquery.cleditor.min.js"></script>
<script>
    $(document).ready(function() {
        if( $.fn.cleditor ) {
            $('#cleditor').cleditor({
                // CLEditor options
            });
        }
    });
</script>

<textarea id="cleditor"></textarea>

Home Page: http://premiumsoftware.net/cleditor/

Documentation: http://premiumsoftware.net/cleditor/docs/GettingStarted.html

Plugin Location: /plugins/cleditor

DataTables

DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, based upon the foundations of progressive enhancement, which will add advanced interaction controls to any HTML table.

For this plugin to work together with Bootstrap, you need to include an extension script for this plugin. This script is already included in this template, all you need is just to include it on your page to get it to work.

Usage Example
<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/datatables/jquery.dataTables.min.js"></script>
<!-- Bootstrap Extension Script -->
<script src="plugins/datatables/dataTables.bootstrap.js"></script>

<script>
    $(document).ready(function() {
        if( $.fn.dataTable ) {
            $('#dTable').dataTable();
        }
    });
</script>

<table id="dTable" class="table table-striped">
    <!-- Your Table Contents -->
</table>

Home Page: http://datatables.net/

Documentation: http://datatables.net/

Plugin Location: /plugins/datatables

elFinder

elFinder is an open-source file manager for web, written in JavaScript using jQuery UI. Creation is inspired by simplicity and convenience of Finder program used in Mac OS X operating system.

This plugin needs you to configure your backend PHP connector script, this PHP script is located in plugins/elfinder/php. Working with this PHP connector requires you to have some PHP and server side scripting knowledge. Connectors for other languages can be found in elFinder's home page.

To use this plugin, make sure you have included /assets/css/plugins/elfinder.css on your page.

Usage Example
<link rel="stylesheet" href="plugins/elfinder/css/elfinder.min.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/elfinder/js/elfinder.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.fn.elfinder ) {
            $('#elfinder').elfinder({
                // elFinder options
            });
        }
    });
</script>

<div id="elfinder"></div>

Home Page: http://elfinder.org/

Documentation: https://github.com/Studio-42/elFinder/wiki

Plugin Location: /plugins/elfinder

Farbtastic Color Picker

Farbtastic is a jQuery plug-in that can add one or more color picker widgets into a page. Each widget is then linked to an existing element (e.g. a text field) and will update the element's value when a color is selected.

Usage Example
<link rel="stylesheet" href="plugins/farbtastic/farbtastic.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/farbtastic/farbtastic.min.js"></script>
<script>
    $(document).ready(function() {
        if( $.fn.farbtastic ) {
            $('#colorpicker').farbtastic('#color');
        }
    });
</script>

<form><input type="text" id="color" name="color" value="#123456" /></form>
<div id="colorpicker"></div>

Home Page: https://github.com/mattfarina/farbtastic

Documentation: https://github.com/mattfarina/farbtastic

Plugin Location: /plugins/farbtastic

Flot

Flot is a pure JavaScript plotting library for jQuery, with a focus on simple usage, attractive looks and interactive features.
Flot works with Internet Explorer 6+, Chrome, Firefox 2+, Safari 3+ and Opera 9.5+

Below is just a very simple example, you can actually create almost everything you need by using the provided plugins, or you can even create your own.

Generally, all browsers that support the HTML5 canvas tag are supported. For support for Internet Explorer < 9, you can use Excanvas, a canvas emulator. This canvas emulator is included on your page between IE conditional comments like on the example below.

Usage Example
<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<!--[if lt IE 9]>
<script src="assets/js/libs/excanvas.min.js"></script>
<![endif]-->
<script src="plugins/flot/jquery.flot.js"></script>

<script>
    $(document).ready(function() {
        var options = {
            series: {
                lines: { show: true },
                points: { show: true }
            }
        };

        // Generate your data here

        $.plot($( '#placeholder' ), data, options);
    });
</script>

<div id="placeholder" style="height: 300px;"></div>

Home Page: http://flotcharts.org/

Documentation: https://github.com/flot/flot/blob/master/API.md

Plugin Location: /plugins/flot

FreeTile

Freetile is a plugin for jQuery that enables the organization of webpage content in an efficient, dynamic and responsive layout. It can be applied to a container element and it will attempt to arrange it's children in a layout that makes optimal use of screen space, by "packing" them in a tight arrangement.

This plugin is used in this template for the Image Gallery. This plugin can work together with the jQuery resize plugin, to listen to events when it's container resizes, the resize plugin is also included on the example below.

Usage Example
<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/freetile/jquery.freetile.min.js"></script>
<script src="plugins/freetile/jquery.resize.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.fn.freetile ) {
            var f = $( '.gallery > ul' ).freetile({
                selector: 'li', 
                animate: true, 
            }).on( 'resize', function() {
                f.freetile( 'layout' );
            });
        }
    });
</script>

<div class="gallery">
    <ul>
        <li><!-- Gallery Content Here --></li>
    </ul>
</div>

Home Page: http://yconst.com/web/freetile/

Documentation: https://github.com/yconst/Freetile

Plugin Location: /plugins/freetile

FullCalendar

FullCalendar is a jQuery plugin that provides a full-sized, drag & drop calendar like the one below. It uses AJAX to fetch events on-the-fly for each month and is easily configured to use your own feed format. It is visually customizable and exposes hooks for user-triggered events.

FullCalendar is great for displaying events, but it isn't a complete solution for event content-management. Beyond dragging an event to a different time/day, you cannot change an event's name or other associated data. It is up to you to add this functionality through FullCalendar's event hooks.

This plugin has its own container when put in a widget in this template, just put the calendar inside a div with the class .calendar as a widget content.

Usage Example
<link rel="stylesheet" href="plugins/fullcalendar/fullcalendar.css" media="screen">
<link rel="stylesheet" href="plugins/fullcalendar/fullcalendar.print.css" media="print">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/fullcalendar/fullcalendar.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.fn.fullCalendar ) {
            var date = new Date();
            var d = date.getDate();
            var m = date.getMonth();
            var y = date.getFullYear();
            
            $( '#fullcalendar' ).fullCalendar({
                header: {
                    left: 'prev next today',
                    center: 'title',
                    right: 'month agendaWeek agendaDay'
                }, 
                editable: true, 
                events: [
                    {
                        title: 'All Day Event',
                        start: new Date(Date.UTC(y, m, 1))
                    },

                    ...

                    {
                        title: 'Click for Google',
                        start: new Date(Date.UTC(y, m, 28)), 
                        end: new Date(Date.UTC(y, m, 29)), 
                        url: 'http://google.com/'
                    }
                ], 
                
                buttonText: {
                    prev: '<i class="icon-caret-left"></i>', 
                    next: '<i class="icon-caret-right"></i>', 
                    prevYear: '<i class="icon-caret-left"></i><i class="icon-caret-left"></i>', 
                    nextYear: '<i class="icon-caret-right"></i><i class="icon-caret-right"></i>'
                }
            });
            
        }
    });
</script>

<div id="fullcalendar"></div>

Home Page: http://arshaw.com/fullcalendar/

Documentation: http://arshaw.com/fullcalendar/docs/

Plugin Location: /plugins/fullcalendar

iButton

The iButton jQuery plug-in emulates the checkbox functionality found on the iPhone. This plug-in was inspired by several other plug-ins—such as Thomas Reynolds' iphone-style-checkboxes. However, this plug-in attempts to combine the best features of all of the various iPhone checkbox-style plug-ins and then add the functionality that we felt was still missing.

Note: The plugin shipped within this template is a modified version of the original plugin, so it may work without any images, and is styled using pure CSS3. Additionaly this plugin now supports HTML5 data-attributes, so you can create an iButton by just specifying data-provide="ibutton". This also provides you the ability to use those data-attributes to set the plugin options. The example code below only includes the required scripts and HTML markup and shows how those data-attributes functionality can help you create iButtons without writing any JavaScript code.

Usage Example
<link rel="stylesheet" href="plugins/ibutton/jquery.ibutton.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/ibutton/jquery.ibutton.min.js"></script>

<div class="control-group">
    <label class="control-label">iOS CheckBoxes</label>
    <div class="controls">
        <label class="checkbox inline">
            <input type="checkbox" data-provide="ibutton">
        </label>
        <label class="checkbox inline">
            <input type="checkbox" data-provide="ibutton" disabled>
        </label>
        <label class="checkbox inline">
            <input type="checkbox" data-provide="ibutton" data-label-on="Like" data-label-off="Dislike" checked>
        </label>
        <label class="checkbox inline">
            <input type="checkbox" data-provide="ibutton" data-label-on="Yes, I'm in" data-label-off="No, I'm out">
        </label>
    </div>
</div>

Home Page: http://www.givainc.com/labs/ibutton_jquery_plugin.htm

Documentation: http://www.givainc.com/labs/ibutton_jquery_plugin.htm

Plugin Location: /plugins/ibutton

Map

The Google Map version 3 plugin for jQuery and jQM takes away some of the head aches from working with the Google Map API. Instead of having to use Google event listeners for simple events like click, you can use jQuery click events on the map and markers.

It is also very flexible, highly customizable, lightweight and works out of the box with jQuery mobile. But one of its best features is that you can populate a map from microformats, RDFa or microdata on your site, which can be used as a fallback when a user doesn't have javascript enabled.

Usage Example
<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="https://www.google.com/jsapi"></script>
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script src="plugins/map/jquery.ui.map.min.js"></script>
<script src="plugins/map/jquery.ui.map.services.min.js"></script>
<script src="plugins/map/jquery.ui.map.extensions.js"></script>

<script>
    $(document).ready(function() {
        if($.fn.gmap) {
            $('#gmap-canvas').gmap({
                'center': getLatLng(), 
                zoom: 15
            });

            $( '#gmap-getpos' ).on('click', function(e) {
                // Try to get the user's position
                $('#gmap-canvas').gmap('getCurrentPosition', function(position, status) {
                        if ( status === 'OK' ) {
                            setPosition(position);
                        }
                });
                e.preventDefault();
            });

            function setPosition(position) {
                $('#gmap-canvas').gmap( 'option', 'center', position);
                $('#gmap-canvas').gmap( 'clear', 'markers');
                $('#gmap-canvas').gmap( 'addMarker', { bounds: true, position: position, 'animation': google.maps.Animation.DROP });
            }
            
            // Get the google loaders client location
            // If it fails, return some defult value
            function getLatLng() {
                    if ( google && google.loader && google.loader.ClientLocation != null )
                        return new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);   
                    return new google.maps.LatLng( -6.175369, 106.827106 );
            }
        }
    });
    });
</script>

<div id="gmap-canvas" style="height: 400px;"></div>

The example above is the Google Map demo version of this template, to see it live please view the Widgets page.

Home Page: http://code.google.com/p/jquery-ui-map/

Documentation: http://code.google.com/p/jquery-ui-map/wiki/jquery_ui_map_v_3_api

Plugin Location: /plugins/map

MiniColors

jQuery MiniColors is a simple, compact color picker that complements a text or a hidden input control.

Usage Example
<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/minicolors/jquery.minicolors.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.fn.miniColors ) {
            $( '.minicolors' ).miniColors();
        }
    });
</script>

<input type="text" class="minicolors">

Home Page: http://www.abeautifulsite.net/blog/2011/02/jquery-minicolors-a-color-selector-for-input-controls/

Documentation: https://github.com/claviska/jquery-miniColors

Plugin Location: /plugins/map

CodeCanyon MsgBox

This is the exclusive freebie from CodeCanyon shipped within this template. This great plugin was created by aeroalquimia on CodeCanyon and has been sold over 1260 times at this time.

The author describes jQuery MsgBox as a jQuery plugin that is highly configurable to replace the basic functionality provided by the standard JavaScript alert(), confirm(), and prompt() functions.

Usage Example
<link rel="stylesheet" href="plugins/msgbox/jquery.msgbox.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/msgbox/jquery.msgbox.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.msgbox ) {

            $('button#msgbox').on( 'click', function(e) {
                $.msgbox("Are you sure that you want to permanently delete the selected element?", {
                    type: "confirm",
                    buttons : [
                        {type: "submit", value: "Yes"},
                        {type: "submit", value: "No"},
                        {type: "cancel", value: "Cancel"}
                    ]
                    }, function(result) {
                        $.msgbox( result );
                    }
                );

                e.preventDefault();
            });
        }
    });
</script>

<button class="btn" id="msgbox">

Home Page: http://codecanyon.net/item/jquery-msgbox/92626

Documentation: Click Here

Plugin Location: /plugins/msgbox

Pines Notify

Pines Notify is a JavaScript notification plugin, developed by Hunter Perrin as part of Pines. It is designed to provide an unparalleled level of flexibility, while still being very easy to implement and use.

This plugin does not need any external CSS stylesheet because it utilizes Bootstrap's alert component.

Usage Example
<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/pnotify/jquery.pnotify.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.pnotify ) {

            $('button#pnotify').on( 'click', function(e) {
                $.pnotify({
                    title: 'Regular Notice',
                    text: 'Check me out! I\'m a notice.'
                });

                e.preventDefault();
            });
        }
    });
</script>

<button class="btn" id="pnotify">

Home Page: http://pinesframework.org/pnotify/

Documentation: http://pinesframework.org/pnotify/

Plugin Location: /plugins/pnotify

Google Prettify

Google Prettify is a Javascript module and CSS file that allows syntax highlighting of source code snippets in an HTML page. The code examples in this documentation all are styled using this script. This script allows you to make your own themes, and it's very easy to use.

The code example and the whole documentation uses a theme named Balupton, which is actually a part of an another syntax highlighting plugin that utilizes Google Prettify. I choose the original Google Prettify because of it's simplicity and ease of use.

Usage Example
<link rel="stylesheet" href="plugins/prettify/themes/theme-balupton.css">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/prettify/prettify.js"></script>

<script>
    $(document).ready(function() {
        if( window.prettify ) {
            prettify();
        } 
    });
</script>

Home Page: https://code.google.com/p/google-code-prettify/

Documentation: http://google-code-prettify.googlecode.com/svn/trunk/README.html

Plugin Location: /plugins/prettify

jQuery Star Rating

The Star Rating Plugin is a plugin for the jQuery Javascript library that creates a non-obstrusive star rating control based on a set of radio input boxes.

This plugin's default functionality is very easy to use. Just add the .star class to your radio boxes, and you're done.

Usage Example
<link rel="stylesheet" href="plugins/rating/jquery.rating.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/rating/jquery.rating.min.js"></script>

<input name="star1" type="radio" class="star"/>
<input name="star1" type="radio" class="star"/>
<input name="star1" type="radio" class="star"/>
<input name="star1" type="radio" class="star"/>
<input name="star1" type="radio" class="star"/>

Home Page: http://www.fyneworks.com/jquery/star-rating/

Documentation: http://www.fyneworks.com/jquery/star-rating/#tab-API

Plugin Location: /plugins/rating

Select2

Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. Look and feel of Select2 is based on the excellent Chosen library.

Usage Example
<link rel="stylesheet" href="plugins/select2/select2.css" media="screen">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/select2/select2.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.fn.select2 ) {
            $('#e1').select2();
        }
    });
</script>

<select id="e1">
    <option value="AL">Alabama</option>
    ...
    <option value="WY">Wyoming</option>
</select>

Home Page: http://ivaynberg.github.com/select2/

Documentation: http://ivaynberg.github.com/select2/

Plugin Location: /plugins/select2

jQuery Sparklines

Sparklines is a jQuery plugin that generates sparklines (small inline charts) directly in the browser using data supplied either inline in the HTML, or via JavaScript.

Usage Example
<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<!--[if lt IE 9]>
<script src="assets/js/libs/excanvas.min.js"></script>
<![endif]-->
<script src="plugins/sparkline/jquery.sparkline.min.js"></script>

<script>
    $(document).ready(function() {
        /* Inline sparklines take their values from the contents of the tag */
        $('.inlinesparkline').sparkline(); 

        /* Sparklines can also take their values from the first argument 
        passed to the sparkline() function */
        var myvalues = [10,8,5,7,4,4,1];
        $('.dynamicsparkline').sparkline(myvalues);

        /* The second argument gives options such as chart type */
        $('.dynamicbar').sparkline(myvalues, {type: 'bar', barColor: 'green'} );

        /* Use 'html' instead of an array of values to pass options 
        to a sparkline with data in the tag */
        $('.inlinebar').sparkline('html', {type: 'bar', barColor: 'red'} );
    });
</script>

<p>Inline Sparkline: <span class="inlinesparkline">1,4,4,7,5,9,10</span><p>
<p>Sparkline with dynamic data: <span class="dynamicsparkline">Loading..</span><p>
<p>Bar chart with dynamic data: <span class="dynamicbar">Loading..</span><p>
<p>Bar chart with inline data: <span class="inlinebar">1,3,4,5,3,5</span><p>

Home Page: http://omnipotent.net/jquery.sparkline/

Documentation: http://omnipotent.net/jquery.sparkline/

Plugin Location: /plugins/sparkline

Tweet!

Tweet! is a plugin to put twitter on your website, which is an unobtrusive JavaScript plugin for jQuery.

A more advanced example usage of this plugin can be found on the Widgets page of this template, or on their home page.

Usage Example
<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/tweet/jquery.tweet.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.fn.tweet ) {
            $(".tweets").tweet({
              join_text: "auto",
              username: "nagaemas_tf",
              avatar_size: 48,
              count: 3
            });
        }
    });
</script>

<div class="tweets"></div>

Home Page: http://tweet.seaofclouds.com/

Documentation: http://tweet.seaofclouds.com/

Plugin Location: /plugins/tweet

Uniform

Uniform is a plugin that masks your standard form controls with custom themed controls. It works in sync with your real form elements to ensure accessibility and compatibility.

Usage of uniform on this template is by default already supported for the whole template, but is by default limited to only radio and checkbox inputs, as I think it's really unneeded to style other inputs with images. To use this plugin directly, you only need to include Uniform's JavaScript and CSS files, give the radio and checkbox inputs you want to style the class .uniform as styling every checkbox and radio buttons might cause conflicts with other plugins.

Remember! The plugin is initiated in the /assets/js/setup.js file, so don't forget to add this script on your page if you want to make it work directly without writing any JavaScript code.

Usage Example
<link rel="stylesheet" href="plugins/uniform/css/uniform.default.css">

<script src="assets/jui/js/jquery-ui-1.8.24.min.js"></script>
<script src="plugins/uniform/jquery.uniform.min.js"></script>

<script>
    $(document).ready(function() {
        if( $.fn.uniform ) {
            $( 'input:checkbox, input:radio' ).uniform();
        }
    });
</script>

Home Page: http://uniformjs.com/

Documentation: http://uniformjs.com/

Plugin Location: /plugins/uniform

jQuery Validate Plugin

This jQuery plugin makes simple clientside form validation trivial, while offering lots of option for customization. That makes a good choice if you’re building something new from scratch, but also when you’re trying to integrate it into an existing application with lots of existing markup. The plugin comes bundled with a useful set of validation methods, including URL and email validation, while providing an API to write your own methods. All bundled methods come with default error messages in english and translations into 36 locales.

Usage Example

There is no usage example for this plugin as the plugin itself is very flexible, so you need to customize the plugin to suit your needs. Below I'll just provide you the required steps to make this plugin work with your forms,

  1. As usual, include jQuery, and the jQuery validation plugin
  2. Create your form along with all inputs you need
  3. This is an important step, add for each input you want to validate a name attribute as this is required for this plugin to work correctly. If you want to define your validation rules inline, add the following predefined classes to your inputs.
  4. Then call validate on your form!

Home Page: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Documentation: http://docs.jquery.com/Plugins/Validation

Plugin Location: /plugins/validate

FAQ

This FAQ section is still empty. This section will grow in time as buyers asks questions.

Road Map

I have decided to dedicate myself to update and maintain this template as long as possible. So before even releasing this template, I have already planned some things to implement on the next version, which (hopefully) will not be too long after the initial release.

Features that surely will be added on v1.1

  • AJAX Loaders,
  • Enhance functionality of every custom plugins,
  • Create dropdown menu for the message and notification on the header,
  • Create advanced file uploading widgets,
  • Form fields cloning functionality,
  • Printable Documentation
  • Invoice Page
  • Implement lots of plugins, which plugins I planned to implement is a secret :)

Planned Features in the future

  • Create Bootstrap Affix support for the sidebar
  • RTL Support
  • Color changing functionality
  • Fixed header
  • Advanced CSS3 animations for elements
  • Improvement to the responsive layout if possible
  • More and more custom widgets will be added from time to time, this is just the beginning.

Changelog

Version 1.0 - 10/02/2012
  • Initial Release

Credits

JavaScript Libraries
  • Bootstrap
    http://twitter.github.com/bootstrap
  • jQuery
    http://www.jquery.com
  • jQuery-UI
    http://www.jqueryui.com
JavaScript Plugins
  • CLEditor
    http://premiumsoftware.net/cleditor/
  • DataTables
    http://datatables.net/
  • elFinder
    http://elfinder.org/
  • Farbtastic Color Picker
    https://github.com/mattfarina/farbtastic
  • Flot
    http://flotcharts.org/
  • FreeTile
    http://yconst.com/web/freetile/
  • FullCalendar
    http://arshaw.com/fullcalendar/
  • iButton
    http://www.givainc.com/labs/ibutton_jquery_plugin.htm
  • Google Maps
    http://code.google.com/p/jquery-ui-map/
  • MiniColors
    http://www.abeautifulsite.net/blog/2011/02/jquery-minicolors-a-color-selector-for-input-controls/
  • CodeCanyon MsgBox
    http://codecanyon.net/item/jquery-msgbox/92626
  • Pines Notify
    http://pinesframework.org/pnotify/
  • Google Prettify
    https://code.google.com/p/google-code-prettify/
  • jQuery Star Rating
    http://www.fyneworks.com/jquery/star-rating/
  • Select2
    http://ivaynberg.github.com/select2/
  • jQuery Sparklines
    http://omnipotent.net/jquery.sparkline/
  • Tweet!
    http://tweet.seaofclouds.com/
  • Uniform
    http://uniformjs.com/
  • jQuery Validate Plugin
    http://bassistance.de/jquery-plugins/jquery-plugin-validation/
Icons
  • IcoMoon Web Font Icons
    http://icomoon.io
  • Led Icon Set
    http://led24.de/iconset/
  • IconSweets
    http://www.yummgum.com/
Photos and Images
  • http://photodune.net/item/people/356057
  • http://photodune.net/item/people/396312
  • http://photodune.net/item/people/1124785
  • http://photodune.net/item/people/370694
  • http://photodune.net/item/happy-people/1836847
  • http://photodune.net/item/mad-about-golf/2193155
  • http://photodune.net/item/beautiful-asian-woman/2044122
  • http://photodune.net/item/sheep/2938598
  • http://photodune.net/item/pink-ribbon/881150
  • http://photodune.net/item/pearls/2770797
  • http://photodune.net/item/closeup-of-two-headed-royal-python/593623
  • http://photodune.net/item/red-panda/510184
  • http://photodune.net/item/bird-on-a-tree3/2437998
  • http://photodune.net/item/computers/1775805
  • http://themeforest.s3.amazonaws.com/asset_library/FDassets_nature.zip
Other Images
  • Background Patterns
    http://subtlepatterns.com/
  • Ribbon Graphics
    http://www.premiumpixels.com
MoonCake - Responsive Admin Template

Copyright 2012. All Rights Reserved.