What is Modernizr

Modernizr is a small piece of JavaScript code library for feature detection that detects the browser support next-generation web technologies in your user’s browsers. Modernizr uses feature detection to allow you to easily fit¬†your website on user’s experiences based with the¬†actual capabilities of their browser.

There are several JavaScript libraries are available now a days, which can help you detect features and browsers. Using these libraries we can detect whether the browser has support for that particular feature or not.

Modernizr gives the ability to detect the new features in the browsers that can render or utilize

Let’s take a¬†example with¬†plain javascript to detect¬†canvas feature.

In this code, we tried to create a canvas element and then added it to body.

we could use the Modernizr.canvas property to test if the browser supported canvas or not:

Modernizr creates an object named Modernizr to the document, which contains all of the test results as Boolean properties. We can write a simple script to list all supported and unsupported features:

Polyfilling with YepNope,requireJS

As a Developer, we can load the JS as per the feature is supported by your browsers. We can use Modernizr.load() method to test if a certain feature is supported or not and load the appropriate JavaScript based on the result. Unfortunately Modernizr.load() is not provided in the modernizr.js file by default and was a part of Modernizr Version 2.8.3. But there are many other third party libraries are available to load resources like YepNope,requireJS,HeadJS etc.

Modernizr.load() is actually yepnope.js (http://yepnopejs.com/). yepnope.js was known as a conditional loader for polyfills, but now its deprecated after version 1.5.

Let’s take a example for this:

In below code we are checking if touch is available in the browser then it will load touch.js, otherwise it will load the no-touch.js file into the browser.

For the newer versions of Modernizr, we can include yepnope.js to use Modernizr.load().

Developers can also wrote the previous example of code as below with RequireJS:

AngularJS Starter Templete With Bootstrap

If you have not tried yet to create angularjs website then definitely this article will help you to create angularjs website with bootstrap starter template. So let’s start.

In this example i am using bootstrap “Justified¬†nav” template.

thumbnail

These are the following AngularJs features what we will covered with creating this template

  1. MVC(Model view Controller) Architecture
  2. Calling JSON service with factory
  3. Dependency Injection
  4. AngularUI Bootstrap
  5. Routing
  6. Directives
  7. Image Gallery with AngularJS

At the end of the article you understand what is MVC Architecture and how it works in AngularJS? | AngularJS MVC
MVC: It’s a design pattern that breaks the application into three parts Model View Controller. Using a pattern is a reusable solution but in regular javascript we organize the code differently. Another way of looking at patterns are as a templates which can be used in quite a few different scenarios.

Model:

Model is belongs to data it can be dynamic data or static which means you can get it from a database like Mongodb and you can also get data from static JSON file.

Let’s create a static JSON to defining a model. Add following lines in a data.json file.

View:

View is displaying the data of model. For this we use double curly brackets and it is lot like using JavaScript template library (like mustache.js).

Let’s create a view, following this instruction in index.html:

  • First¬†declare¬†the¬†name¬†of¬†the¬†application¬†using¬†ng-app¬†directive.
  • Download¬†and¬†add¬†the¬†angular¬†library¬†in¬†your¬†page¬†version¬†–¬†v1.3.0-rc.5.
  • Defining¬†the¬†controller¬†name¬†using¬†ng-controller¬†directive¬†in¬†your¬†parent¬†element.

    Let’s combined the code:

In this HTML we have use ng directives to rendering the data in view.

ng-repeat: The ngRepeat directive instantiates a template once per item from a  collection. Each template instance gets its own scope, where the given  loop variable is set to the current collection item, and $index is set to  the item index or key.

ng-init: The ngInit directive allows you to evaluate an expression in the current  scope.

ng-click: The ngClick directive allows you to specify custom behavior when an   element is clicked.

ng-show: The ngShow directive shows or hides the given HTML element based on    the expression provided to the ngShow attribute.

Controller

It controls how data is retrieved and displayed to end-user. which means Controller gives you control over model and view.

Creating angular module name which we have defined in ng-app directive in HTML.

We can also defined the dependency as per the module using [] brackets. For our application we need ngRoute for routing to navigate the site. For this you have to download and include

AngularUI¬†Bootstrap¬†‚Äúui.bootstrap‚Ä̬†using¬†the¬†angular¬†bootstrap¬†component.,¬†you¬†can¬†download¬†the¬†library¬†from¬†this¬†link¬†https://angular-ui.github.io.¬†and¬†add¬†in¬†html¬†page.

Creating Factory in Angularjs

AngularJS provides you three ways to create a service : factory,service and provider. A factory is a simple function which allows you to add some logic before creating the object. It returns the created object.

Scope is the glue between application controller and the view. During the template linking phase the directives set up $watch expressions on the scope. The $watch allows the directives to be notified of property changes, which allows the directive to render the updated value to the DOM.

If you find AngularJS MVC Article helpful please share it and comment below.

You can get the full code from here: https://github.com/harmeet090/Angularjs

What’s new in Bootstrap 4 alpha

Bootstrap 4 comes with ton of major changes so it’s impossible to cover them all in detail here, so here are some of our most major changes:

  • Moved from Less to Sass:Using Libsass bootstrap now compiles Sass faster then ever, and also joined large community of Sass developers.
  • Improved grid system: Bootstrap now have added a new grid standard to better target mobile devices.
  • Flexbox support: The future of web is now change a boolean variable and recompile your CSS to take advantage of a flexbox-based grid system and components.
  • Customization is easy:In Bootstrap 4 Now It’s easy to customize the some CSS style options instead of creating new style of like box-shadows,text-shadows transitions, gradients, and more to a separate stylesheet like v3, bootstrap moved all these options into Sass variables. If we want default transitions on everything or to disable rounded corners? Simply we just need to update a variable in Sass and recompiled it.
  • Drop IE8 support and moved to rem and em units: Bootstrap 4 dropped support for IE8 and we can take advantage of the CSS3 without being held back with CSS hacks or fallbacks. Typography Pixels have been swapped for rems and ems where appropriate to make responsive and component sizing even easier. If you need IE8 support, keep using Bootstrap 3.
  • Rewrote all our JavaScript plugins: Every plugin has been rewritten in ES6 to take advantage of the newest JavaScript enhancements. They also now come with UMD support, generic teardown methods, option type checking, and tons more.
  • Tooltips and Popovers: Bootstrap 4 improved auto-placement of tooltips and popovers using library called Tether.

And many other things like Custom form controls, margin and padding classes, new utility classes, and more have also been included.

Know more about Bootstrap 4 head to the v4 alpha docs!

One more thing…

Bootstrap 4 alpha also launching our latest side project, Official Bootstrap Themes.

wkhtmltopdf – Generating PDF and Images

wkhtmltopdf is amazing¬† open source (LGPLv3) command line tool wkhtmltopdf to render HTML to¬†PDF and various image formats using the Qt WebKit rendering engine. These run entirely “headless” and do not require any¬†service.

There is also a C library, if you’re into that kind of thing.

How to use wkhtmltopdf ?

  1. Download a precompiled binary or build from source
  2. Create your HTML document that you want to convert into a PDF (or image)
  3. Run your HTML document through the tool.
    For example, if I really like the treatment LiferayUI has done to their logo today and want to capture it forever as a PDF:wkhtmltopdf https://liferayui.com liferayui.pdf

Additional options

That’s amazing, I’ve always wanted to turn LiferayUI¬†homepage into a PDF, but I want a table of contents as well.

There are lot’s¬†of command line options. You can check out the auto-generated wkhtmltopdf options.

You can also add custom Header and Footer in PDF using page option.

Bootstrap 3 with Liferay 6.2

In Current Liferay version 6.2 we have bootstrap 2.3.2 as default theme library.Bootstrap 3 was released on August 19th, 2013, before releasing Liferay 6.3. Bootstrap 3 completely dropped support for IE7 and below. While Liferay 6.2 provided limited support for IE7 and below. So here are some of the distinctive differences between Bootstrap v2.3 and v3.0:

Bootstrap 3

Bootstrap 2.3.2

Grids: Fluid (480px, 768px, 992px, 1200px) Flat Design: Gradients are no longer available in V3.0
Grids: Fluid and fixed (724px, 940px, 1170px; below 768px are single column and vertically stacked) CSS3 gradients and box shadows
Columns Classes: .col-xs-1, .col-sm-1 .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2 .col-md-2, .col-lg-2 .span1,.span2

For know more in detail please go to this link:- http://getbootstrap.com/migration/

Creating Theme with Bootstrap 3 in Liferay 6.2

These are some basic steps for creating Theme with Bootstrap 3. In some of the steps are same except few additional Steps.

  1. In Liferay Devloper Studio, Go to –> File – New – Liferay Plugin Project.
  2. Provide the Name inside Project Name Text Box (say Test).
  3. Select the Plugin Type as – Theme and click Next.
  4. Select Theme parent – _styled and Theme framework – Velocity. Click Finish.
  5. A new Theme (Test-theme) will be created.
  6. Inside _diffs folder create css, images, js and templates folder.
  7. Copy and paste the required files in the corresponding folders as needed.
    1. Download Bootstrap 3 CSS file and place it inside _diffs – css
    2. Open Main.css and call the Bootstrap 3 css file above custom.css
  8. Modify the files as explained.

Liferay 6.2 Basic Structure: [Two Column Layout]

These are the some comman classes who are conflict with Bootstarp 2.3 in liferay 6.2.