Elephanti the Revolutionary Lifestyle Media Network

Today social media applications plays an important role in our day-to-day activities as a result of the Web 2.0 revolution that took place in the Internet. It has revolutionized the lifestyle of almost all the individuals and business entities, for the majority of them spending at least few minutes with it has become an integral part of the day. The Elephanti, is a retail media ecosystem that aims to provide a platform for both individuals (Shoppers) and business entities (Merchants) to virtually interact with each other to buy and sells items on the go. It composed of a free Web based application for the Merchants and a free smart phone application (iPhone and Android) for Shoppers.

  • The Merchants can sign up for a free account and be able to create a virtual storefront in few minutes and manage its routine activities via the Web based console to update their profile, add products, post discounts, etc…
  • Those who are signing up as Merchants, initially selects their type of business (Single store, Chain store, Mall, Brand, Department store and Freelancer). Each type of business is modeled with an unique, customized set of features to facilitate its main line of business requirements.
  • For Merchant signing up with Elephanti, the system facilitates the merchant to describe the nature of the business and its specialization areas, such as Fashion retail, Cafes, Dinning venue, Cinema, Book stores, Services, Health and Beauty, Consumer electronic, Grocery stores, Automotive, Hotel, Travel and Tourism, Entertainment venue, etc… Each category further goes into a fine level of detailed specializations.
  • Shoppers only needs to download the app into their mobile phones to follow their favorite merchants, search for interesting place, items, create a shopping list, and many more. Using the app, they will be able to look at stores nearby and see what they have, write a review, add items to their shopping lists.
    • Shoppers will be able to look at places nearby and see what they have by check-in to the place, this provides the shopper and the shop owner a customized set of interactive features.
    • Also the Shoppers can discover Friends on the Elephanti network or sending invitations via other social media networks or via an Email and interact with each other through messaging, sharing activity updates, exchange shopping lists, uploading photo(s) to an album and tag their friends or/and places(Merchants), etc…
    • Shoppers can organize list of items planning buy just by creating a shopping lists and select nearby place(Merchant) they plans to buy it.
    • Rate a place and write a review and/or to comment them.

The main idea of Elephanti is to provide a platform for business owners to create a virtual storefront and invite shoppers to get to know about the items they sell and the discounts they offer, in the meantime the Shoppers are benefited by finding places nearby, items they sell and the discounts they offer and getting touch with their friends, plan their activities and many more.


Div based Fixed or Fluid CSS/HTML layout Template

About two year back I worte an article introducing a simple HTML structure to organize the content on the web page as shown below.

Layout structure

sidebar left
sidebar right

The above illustration just a simple introduction to how the template looks like. This HTML/CSS layout structure consists of examples illustrating the usage of Fixed and Fluid layouts covering following aspects

  • Without any Sidebars
  • With one Sidebar on Left
  • With one Sidebar on Right
  • With two Sidebars on either sides (Left and Right)

Folder sturcture

  • css – consists of all the CSS files
  • js – consists of all the JavaScript files
  • images – consists of all the image files
  • plugins – consists of all the third party components
  • template – consists of examples
  • readme.txt – simple introduction
  • lgpl.txt – lgpl license file


Inside the css folder you’ll find several files as illustated below, I adapted this structure after studing the Drupal Zen theme. Currely the theme is not Sass aware.

  • Core
    • html-elements.css – style rules to neutralize browser defaults and define baseline formatting to HTML elements
    • form-elements.css – style rules to format form blocks
    • layout.css – style rules to control the overall layout of the template (fixed or fluid)
    • sidebar.css – style rules to ncontrol the formating of sidebar(s)
    • print.css – style rules to format the web page when printing to a paper or PDF/Postscript.
    • website.css – style rules that requires to meets the look and feel of the custome design (main CSS file)
  • Optional
    • website-popup.css – style rules used for popul dialogs
    • handheld.css – style rules required to override website.css to make the site mobile friendly
    • ie_8.css – to keep IE 8 specific style rules
    • ie_7.css – to keep IE 7 specific style rules
    • ie_6.css – to keep IE 6 specific style rules

The above CSS files linked to the HTML markup was done within HTML head element as illustrated in Figure 1. CSS files with IE version specifc style rules were loaded inside a conditional comment block.

Figure 1: Linking of CSS files

JavaScript (breed of ECMAScript)

Inside the js folder you’ll find the javascript files used by the theme. I have used jQuery library as the base for all the client-side scripting requirements.

  • actions.js – to handle client side logic
  • window.orientation.js – to control the orientation of the page when viewing from a handheld device.

The above JavaScript files and the ones mentioned under plugins section was linked to the HTML markup was done just before the HTML closing body element as illustrated in Figure 2. This method was adapted to minimized the loading delay introduce by JavaScript files to the clent browser.

Figure 2: Linking of JavaScript files


Inside the images folder you’ll find all the images used in the theme. Inside this you’ll find a folder called icons, which holds third party icons find from the Web (unfortunately I’m unable to locate the repository, my apologies to the creator/owner of the icon.)


Inside the plugin folder you’ll find all the third pary libraries used in the theme.


Inside the template folder you’ll find examples illustrating following layouts

  • Fixed layout
    • no-sidebars-tableless-fixed
    • sidebar-left-tableless-fixed
    • sidebar-right-tableless-fixed
    • two-sidebars-tableless-fixed
  • Fluid layout
    • no-sidebars-tableless-fluid
    • sidebar-left-tableless-fluid
    • sidebar-right-tableless-fluid
    • two-sidebars-tableless-fluid

Fixed/Fluid switching

The switching between the Fixed and Fluid layout structures and be very easily achieved by toggleing the class attribute found on the HTML body element as follows:

  • Fixed – fixed-layout
  • Fluid – fluid-layout

<body class="fixed-layout">
<body class="fluid-layout">

With and without Side-bars switching

The switching between the With and without Side-bars layout structures and be very easily achieved by toggleing the class attribute found on the first HTML div element next to body element as follows:

<body class="fixed-layout">
<div id="wrapper" class="no-sidebars">
<body class="fixed-layout">
<div id="wrapper" class="sidebar-left">
<body class="fixed-layout">
<div id="wrapper" class="sidebar-right">
<body class="fixed-layout">
<div id="wrapper" class="two-sidebars">

To create an easily customizable div based HTML/CSS template by myself was their in my mind for sometimes and I’ll be sharing it for the benefit of others. The template can be download form Github repository.

Google Analytic user action tracking inside Flash

Recently I got the chance get involve with the development of the site called I Call Mine. It is a Flash based interactive site that was dedicated for males, focusing on helping the medical practitioners in UK to getting an understanding of the terms used by males to call their big fella in general.

The site collects the user’s choice and displays it with respective to the region as a word cloud. In the meantime the client wanted to track the user’s interaction on the site through Google Analytics as well. In this effort we refer the method introduced by Evan Mullins to integrate the event tracking functionality of Google Analytics to the Flash application.

Additionally have to make sure to set the parameter of allowScriptAccess to always when embedding the Flash object to the Web page. You can find more information over here. I have to specially thank Anjana for his time and effort on this.

Once the event tracking code is in place you’ll be able to monitor the site’s user activity through Google Analytics page. As soon as you Sign-in to the account it shows the general statistics of the site on the Dashboard – refer the first image below. To monitor the activity of the event tracking navigates along the left side navigation to Content section. Once inside that you’ll get a section called Event Tracking which displays an in details view of the event tracking used inside the Flash application – please refer the second image below.

Create & copy shoter URL to clipboard

Today I’m going to share some work I did during the last couple of weeks. These days most of us make use of Tweeter, Buzz, etc … to update our status, pass some information, etc… . So in most cases when we want to share some interesting things found on web sites it’s convenient if we can get a shorter version of the actual URL generated within the site itself, because this can be very easily place among the content we want to share. In the mean time get it copied to the clipboard with a single mouse click. You might wonder why getting into this much of a trouble when there are enough freely available services (bit.ly, tiny.cc,shortURL.com, etc…) to make the required URL shorter. The most important point is that we should always make sure that we make our user’s life easy with one go.

I found this interesting article on JustNI Blog that explained how to generate a shorter version of the true URL locally with the use of PHP and MySQL. His approach has provided a way to make use of the .htaccess file to handle the necessary url redirection.

His approach


Let me introduce my 2 cents to his approach by further extending the functionality to have the generated URL copied to the clipboard:

  • During each page load grab the page URL
  • Generate the corresponding shorter URL version if it doesn’t exists ( short database table).
  • Store that URL on the page(preferably inside a HTML hidden field).
  • Provide a button or image to get the URL copied to the clipboard ( Here it provides a comprehensive cross browser compatible, Flash supported jQuery based implementation of Copy to Clipboard ).
  • Place the URL redirection process related logic inside the index.php file.
  • Once the shorter version of the URL is requested, the logic on the index.php extracts the query string passed for url( ?url=AX37JEGJR335AK4RB ) part and check its corresponding longer/original URL stored inside the system( short database table). If exists then it takes the user to the corresponding page else shows the user a message like “Page not found – 404”.

Sahana XForm

Let me give you a quick introduction on what this “Sahana XForm” is all about and what is trying to achieve through this. The main idea behind this effort is to come up with a working prototype to transform the forms on Web-based applications in to a print friendly form that heavily involves data capturing. Sahana is one such application that heavily involves in such activities and it’s main targeted for the overall management of diverse activities in a post disaster situation.

A disaster means it involves recording and dissemination of information among various parties for the immediate fulfillment of victims requirements. Although there are very sophisticated methods and equipments in most cases still the preferred and the used method is the use of paper based forms. In here I should especially mentioned about Chamindra because it was he who came up with this idea and encouraged me on this.

In this approach it provides a way to extracts the XHTML from elements in an active Web form and transform them to a print friendly format (printed and to be used as off-line paper forms) leaving behind the images and unwanted elements on the page. In order for the functionality to work the XHTML mark for the form should be organized in the following manner.

<h2>Personal Details</h2>
<div class="xform-container">
<form name="form" >
  <fieldset><legend> Identity </legend>
     <label for="nic"> Identity Card Number </label>
              <input type="text" name="nic" id="nic"/>
     <label for="passport"> Passport Number </label>
              <input type="text" name="passport" id="passport"/>

  <fieldset><legend> Basic Details </legend>
     <label for="family_name"> Family Name </label>
              <input type="text" name="family_name" id="family_name" value=""/>
     <label for="local_name"> Local Name </label>
              <input type="text" name="local_name" id="local_name" value=""/>
     <label for="dob"> Date of Birth </label>
              <input type="text" name="dob" value="" id="dob"/>
     <label for="opt_gender"> Gender </label>
              <select name="opt_gender">
                <option value="male"> Male </option>
                <option value="female"> Female </option>

  <fieldset><legend> Contact Information </legend>
     <label for="address"> Address </label>
              <textarea name="address" id="address"></textarea>
     <label for="zip"> Postal Code </label>
              <input type="text" name="zip" id="zip"/>
     <label for="home_phone"> Home Phone </label>
              <input type="text" name="home_phone" id="home_phone"/>
     <label for="mobile_phone"> Mobile Phone </label>
              <input type="text" name="mobile_phone" id="mobile_phone"/>

Next using JavaScript scripting language and CSS implement the functionality as follows.

  • First identify Web forms from rest of the page(s) (It is very important that you enclose all form related elements inside a XHTML div element having a class attribute which holds a name. eg: <div class=”xform-container” > rest comes here… </div> ).
  • On success extract the XHTML form elements.
  • Then regenerate the XHTML markup on the same page. This should maintain the correct sequence of the original form(Label name and its corresponding input ).
  • Use the CSS to maintain the layouts and dimensions to match the layout for each section, which was there on the original form (Label name and the place to fill the data)
  • Next since we need to print this generated from to a paper we should arrange the components to fit into the page size(A4, Letter. Legal, etc…).
  • To invoke the functionality link the JavaScript file that hold the logic to the head section of the Web page and call the initialization function on any convenient location on the page (eg: <a href=”#” onclick=”init_xform();” title=”Generate XForm” > XForm</a>).

In the current implementation it is capable of transforming the page as shown in figure 1 into a form as shown in figure 2. Since the functionality itself can be extended for various directions I would like to invite all those who are interested in this work to come join us to extend this approach and the functionality to be readily used(eliminate the application level dependencies and to extend it to generate customized label layouts, etc… ) with any web based system just by linking the JavaScript library and generate the print friendly form. The code library is released under LGPL license along with Sahana.

Disaster Victim Registry - Web from

Figure 1: Disaster Victim Registry - Web from

Disaster Victim Registry - XForn

Figure2: Disaster Victim Registry - XForm

Your comments and suggestions are highly appreciated in developing this into a readily usable library for any web application.

« Older entries