Thursday 25 April 2013

Create HomePageBanner Module for X cart in Few Steps



Create HomePageBanner Module for X cart in Few Steps
Directory Structure.
Catelog
-admin
  -- home_banners.php (new file)
  --/* save as home_banners.php */
<?php
define('USE_TRUSTED_POST_VARIABLES',1);
$trusted_post_variables = array('add');
require './auth.php';
require $xcart_dir.'/include/security.php';
//if (empty($active_modules['XAffiliate']))
   // func_403(6);
require $xcart_dir . '/include/home_banners.php';
// Assign the section navigation data
$smarty->assign('dialog_tools_data', $dialog_tools_data);
if (
    file_exists($xcart_dir.'/modules/gold_display.php')
    && is_readable($xcart_dir.'/modules/gold_display.php')
) {
    include $xcart_dir.'/modules/gold_display.php';
}
func_display('admin/home.tpl', $smarty);
?>
-include
   -- home_banners.php (new file)
--/* save as home_banners.php */

<?php
if ( !defined('XCART_START') ) { header("Location: ../"); die("Access denied"); }
x_load('image');
x_session_register('file_upload_data');
x_session_register('store_banner_data', array());
$is_partner_area = constant('AREA_TYPE') == 'B';
$location[] = array(func_get_langvar_by_name('lbl_home_banners'), "");
/*** Define data for the navigation within section */
$dialog_tools_data['left'][] = array('link' => "home_banners.php", 'title' => func_get_langvar_by_name('lbl_banners_list'));
if (!$is_partner_area) {  
    $dialog_tools_data['left'][] = array('link'  => 'home_banners.php?banner_type=G','title' => func_get_langvar_by_name('lbl_add_graphic_banner'));
}
if ($mode == 'add' && $add && $banner_type)
{
    // Add/Modify banner
    $error = $err_field = false;
    if (empty($add['banner'])) {
        $error = func_get_langvar_by_name('lbl_banner_has_no_name');
        $err_field = 'banner';
    } elseif ( !empty($add['banner_x']) && (!is_numeric($add['banner_x']) || $add['banner_x'] < 1)) {
        $error = func_get_langvar_by_name('lbl_banner_has_wrong_width');
        $err_field = 'banner_xy';
    } elseif (!empty($add['banner_y']) && (!is_numeric($add['banner_y']) || $add['banner_y'] < 1)) {
        $error = func_get_langvar_by_name('lbl_banner_has_wrong_height');
        $err_field = 'banner_xy';
    }
    if ($error) {
        $store_banner_data = $add;
        $store_banner_data['bannerid'] = $bannerid;
        $top_message = array( 'type' => 'E',  'content' => $error );
        func_header_location('home_banners.php?banner_type=' . $banner_type . '&bannerid=' . $bannerid . '&err_field=' . $err_field);
    }
    $store_banner_data = array();
    $data = array(
        'banner'        => $add['banner'],
        'body'          => $add['body'],
        'avail'         => $add['avail'],
        'is_image'      => $add['is_image'],
        'is_name'       => $add['is_name'],
        'is_descr'      => $add['is_descr'],
        'is_add'        => $add['is_add'],
        'banner_type'   => $banner_type,
        'open_blank'    => $add['open_blank'],
        'legend'        => $add['legend'],
        'alt'           => $add['alt'],
        'direction'     => $add['direction'],
        'banner_x'      => $add['banner_x'],
        'banner_y'      => $add['banner_y']
    );
    $is_new = false;
    if ($bannerid) {
        func_array2update('home_banners', $data, "bannerid = '$bannerid'");
        $top_message = array('content' => func_get_langvar_by_name('lbl_banner_is_updated'));
    } else {     
       $bannerid = func_array2insert('home_banners', $data);
        $top_message = array('content' => func_get_langvar_by_name('lbl_banner_is_created'));
        $is_new = true;
    }
    if ($banner_type == 'G' && $bannerid && func_check_image_posted($file_upload_data, 'H')) {
        func_save_image($file_upload_data, 'H', $bannerid);
    }
    if ($banner_type == 'G' && $bannerid) {
        $has_image = func_query_first_cell("SELECT COUNT(*) FROM $sql_tbl[images_H] WHERE id = '$bannerid'");
        if (!$has_image) {
            func_array2update('home_banners', array('avail' => ''), "bannerid = '$bannerid'");
            $top_message['content'] .='<br>'.func_get_langvar_by_name($is_new ? 'lbl_banner_is_created_without_image':'lbl_banner_is_updated_without_image');
        }
    }
    func_header_location('home_banners.php?bannerid=' . $bannerid);
}
elseif ($mode == 'delete') { // Delete banner element
    if ($bannerid) {
        db_query ("DELETE FROM $sql_tbl[home_banners] WHERE bannerid = '$bannerid'");
        func_delete_image($bannerid, 'H');
        $top_message = array('content' => func_get_langvar_by_name('lbl_banner_is_deleted'));
        func_header_location('home_banners.php');
    }
}

if (!empty($bannerid) && empty($err_field)) {
    $banner = func_query_first("SELECT * FROM $sql_tbl[home_banners] WHERE bannerid = '$bannerid'");
    if (!$banner) {
        func_header_location('home_banners.php');
    }   
    $banner['can_edit'] = true;
    $smarty->assign ('banner', $banner);
    $banner_type = $banner['banner_type'];
    $location[count($location) - 1][1] = 'home_banners.php';
    $location[] = array($banner['banner'], 'home_banners.php?bannerid=' . $bannerid);
} elseif ($store_banner_data) {
    $smarty->assign ('err_field', $err_field);
    $smarty->assign ('banner', $store_banner_data);
}

$banners = func_query("SELECT * FROM $sql_tbl[home_banners]");
if ($banners) {
    foreach ($banners as $k => $v) {
        $banners[$k]['banner_type_text'] = func_get_banner_type_text($v['banner_type']);
        $banners[$k]['can_edit'] = true;
    }
    $smarty->assign('banners', $banners);
}
if (!empty($banner_type)) {
    $smarty->assign('banner_type', $banner_type);
}
$smarty->assign('now',            XC_TIME);
$smarty->assign('main',           'home_banners');
// Assign the current location line
$smarty->assign('location', $location);
?>
-module
  ---HomeBanners
      ---config.php(newfile)
--/* save as config.php */
            <?php
if (!defined('XCART_START') ) { header('Location: ../../'); die('Access denied'); }
$addons['HomeBanners'] = true;
$css_files['HomeBanners'][] = array();
$config['available_images']['H'] = "U";
$sql_tbl['images_H']       = XC_TBL_PREFIX . 'images_H';
$sql_tbl['home_banners']   = XC_TBL_PREFIX . 'home_banners';
if (defined('TOOLS')) {     
    $tbl_keys['images_H.id'] = array(
        'keys' => array('images_H.id' => 'home_banners.bannerid'),
        'where' => "home_banners.banner_type = 'G'",
        'fields' => array('id')
    );
    $tbl_keys['home_banners.imageid'] = array(
        'keys' => array('home_banners.bannerid' => 'images_H.id'),
        'where' => "home_banners.banner_type = 'G'",
        'fields' => array('bannerid')
    );
    $tbl_demo_data['HomeBanners'] = array('home_banners'  => '', );
}
?>
      --- home_banners.php (newfile)
--/* save as home_banners.php */
            <?php
if ( !defined('XCART_START') ) { header("Location: ../"); die("Access denied"); }
$banners = func_query("SELECT * FROM $sql_tbl[home_banners] WHERE avail = 'Y'");
if ($banners) {   
    $smarty->assign('banners', $banners);
    $smarty->assign('customer_home_banners','Y');
}
?>
-images
   --image_H
-skin
   --common_files
      ---admin
          ---newfilesbysr
              --- display_banner.tpl (newfile)
{if $banners ne "" and $banner_type eq ''}
            <a href="home_banners.php?bannerid={$v.bannerid}">
<img src="{$current_location}/image.php?type=H&amp;id={$banner.bannerid}" border="0" alt="{if $banner.alt ne ''}{$banner.alt|escape}{/if}" width="960" height="230px;">
            </a>
{/if}  
              --- edit_image.tpl (newfile)
{if $idtag eq ''}
  {assign var="idtag" value="edit_image"}
{/if}
<img id="{$idtag}" src="{$xcart_web_dir}/image.php?type={$type}&amp;id={$id}&amp;ts={$smarty.now}{if $already_loaded}&amp;tmp=Y{/if}" width="905" height="230" alt="{include file="main/image_property.tpl"}" style="margin-bottom: 10px;" />

<table  cellpadding="0" cellspacing="0">
  <tr>
    <td>
      <input type="button" value="{$lng.lbl_change_image|strip_tags:false|escape}" onclick='javascript: popup_image_selection("{$type}", "{$id}", "{$idtag}");' />
      {if $id ne '' and not $no_delete and ($delete_url or $delete_js)}
        &nbsp;&nbsp;
        <input id="{$idtag}_delete" type="button" value="{$lng.lbl_delete_image|strip_tags:false|escape}" onclick="javascript: {if $delete_js ne ''}{$delete_js|replace:'"':'\"'}{else}self.location='{$delete_url}';{/if}" />
      {/if}
      <span style="{if not $already_loaded}display: none; {/if}padding-left: 10px;" id="{$idtag}_reset">
        <input type="button" value="{$lng.lbl_reset|strip_tags:false|escape}" onclick="javascript: popup_image_selection_reset('{$type}', '{$id}', '{$idtag}');" />
        <input id="skip_image_{$type}" type="hidden" name="skip_image[{$type}]" value="" />
      </span>
    </td>
  </tr>
  <tr style="display: none;" id="{$idtag}_text">
 {if $button_name eq ''} {assign var="button_name" value=$lng.lbl_submit} {/if}
    <td style="padding-top: 10px;">{$lng.txt_image_note|substitute:"button_name":$button_name}</td>
  </tr>
</table>
              --- home_banners.tpl (newfile)

{include file="page_title.tpl" title=$lng.lbl_home_banners_management}
<script type="text/javascript" src="{$SkinDir}/js/popup_image_selection.js"></script>
This section is used to create, modify and delete the home page banners.
<br /><br />
{if $banners ne "" and $banner_type eq ''}
  {capture name=dialog}
    {foreach from=$banners item=v}
      <div class="xaff-banner-item{cycle values=", xaff-banner-item-odd"}">
        {if $v.can_edit}
          <a href="home_banners.php?bannerid={$v.bannerid}" class="modify" >{$lng.lbl_modify}</a>
          &nbsp;&nbsp;&nbsp;
          <a href="home_banners.php?bannerid={$v.bannerid}&amp;mode=delete" class="delete">{$lng.lbl_delete}</a>
        {/if}
        <br />
        <table cellspacing="1" cellpadding="0" class="banner-box">
          <tr>
            <td class="banner-box">
                        {include file="admin/newfilesbysr/display_banner.tpl" assign="ban" banner=$v}
                        {$ban|amp}
                </td>
          </tr>
        </table>
      </div>
    {/foreach}
  {/capture}
  {include file="dialog.tpl" content=$smarty.capture.dialog title=$lng.lbl_available_banners extra='width="100%"'}
{elseif $banner_type ne ''}
  {if not $get and (not $banner.banner_type or $banner.can_edit)}
    {capture name=dialog}
    <script type="text/javascript">
    //<![CDATA[
    var requiredFields = [
      ['banner', "{$lng.lbl_banner_name|strip_tags|wm_remove|escape:javascript}", false], ]
    //]]>
    </script>
    {include file="check_required_fields_js.tpl"}
    <form action="home_banners.php" method="post" enctype="multipart/form-data" name="edit_banner" onsubmit="javascript: return checkRequired(requiredFields)">
      <input type="hidden" name="mode" value="add" />
      <input type="hidden" name="mode2" value="" />
      <input type="hidden" name="banner_type" value="{$banner_type}" />
      <input type="hidden" name="bannerid" value="{$banner.bannerid}" />
      <table cellpadding="0" cellspacing="3" width="100%">
        <tr{cycle values=", class='TableSubHead'"}>
          <td><label for="banner">{$lng.lbl_banner_name}:</label></td>
          <td><input type="text" maxlength="128" size="40" id="banner" name="add[banner]" value="{$banner.banner|escape}" />{if $err_field eq 'banner'}<font class="Star">&lt;&lt;</font>{/if}</td>
        </tr>
        <tr{cycle values=", class='TableSubHead'"} style="display:none;">
          <td><label>Banner size (width x height):</label></td>
          <td>
            <input type="text" size="5" id="banner_x" value="{$banner.banner_x|default:960}" name="add[banner_x]" />
            &nbsp;x&nbsp;
            <input type="text" size="5" id="banner_y" value="{$banner.banner_y|default:230}" name="add[banner_y]" />{if $err_field eq 'banner_xy'}<font class="Star">&lt;&lt;</font>{/if}
          </td>
        </tr>
             <tr{cycle values=", class='TableSubHead'"} class='TableSubHead' >
            <td><label for="alt">{$lng.lbl_alt_tag}</label> ({$lng.lbl_optional}):</td>
            <td><textarea cols="50" rows="3" id="alt" name="add[alt]">{$banner.alt}</textarea></td>
          </tr>
        <tr>
          <td><label for="avail">{$lng.lbl_availability}:</label></td>
          <td><input type="checkbox" value="Y" id="avail" name="add[avail]"{if $banner.avail eq 'Y' or ($banner.bannerid eq '' and $err_field eq '')} checked="checked"{/if} /></td>
        </tr>
        <tr{cycle values=", class='TableSubHead'"}  style="display:none;">
          <td><label for="open_blank">{$lng.lbl_open_in_new_window}:</label></td>
          <td><input type="checkbox" value="N" id="open_blank" name="add[open_blank]"{if $banner.open_blank eq 'Y' or ($banner.bannerid eq '' and $err_field eq '')} checked="checked"{/if} /></td>
        </tr>      
          <tr{cycle values=", class='TableSubHead'"} style="display:none;">
            <td><label for="legend">{$lng.lbl_text}</label> ({$lng.lbl_optional}):</td>
            <td><textarea cols="50" rows="3" id="legend" name="add[legend]">{$banner.legend}</textarea></td>
          </tr>
          
          <tr{cycle values=", class='TableSubHead'"} style="display:none;">
            <td><label for="direction">{$lng.lbl_text_location}:</label></td>
            <td>
              <select id="direction" name="add[direction]">
                <option value="U"{if $banner.direction eq 'U' or $banner.direction eq ''} selected="selected"{/if}>{$lng.lbl_above}</option>
                <option value="L"{if $banner.direction eq 'L'} selected="selected"{/if}>{$lng.lbl_left}</option>
                <option value="R"{if $banner.direction eq 'R'} selected="selected"{/if}>{$lng.lbl_right}</option>
                <option value="D"{if $banner.direction eq 'D'} selected="selected"{/if}>{$lng.lbl_below}</option>
              </select>
            </td>
          </tr> 
          <tr{cycle values=", class='TableSubHead'"} class='TableSubHead'>
            <td>{$lng.lbl_image}:</td>
            <td>
              {include file="admin/newfilesbysr/edit_image.tpl" type="H" id=$banner.bannerid button_name=$lng.lbl_save_banner}
            </td>
          </tr> 
         <tr>
          <td>&nbsp;</td>
          <td class="SubmitBox"><input type="submit" value="{$lng.lbl_save_banner|strip_tags:false|escape}" /></td>
        </tr>
      </table>
    </form>  
  {/capture}
  {if $banner.banner_type ne ''}
    {assign var="title" value=$lng.lbl_modify_banner}
  {else}
    {assign var="title" value=$lng.lbl_add_banner}
  {/if}
  {include file="dialog.tpl" content=$smarty.capture.dialog title=$title extra='width="100%"'}
  {/if}
{/if}

n      custommodules.tpl (newfile)
n      <li>
n              <a href='{$catalogs.provider}/testimonials.php'>Custom Modules</a>
n              <div>
n                          <a href="{$catalogs.admin}/home_banners.php">Home Page Banners</a>
n              </div>
n      </li>
      ---customer
         ---newfilesbysr
              --- home_banners.tpl (newfile)
{literal}
<style type="text/css">
div#slideshow {width: 965px; overflow: scroll; position: relative; z-index: 5; margin-bottom:20px;}
div#slideshow ul#nav {display: none;list-style: none;position: relative; top: 75px; z-index: 15;}
div#slideshow ul#nav li#prev {float: left; margin: 0 0 0 10px;}
div#slideshow ul#nav li#next {float: right; margin: 0 50px 0 0;}
div#slideshow ul#nav li a {display: block; width: 80px; height: 80px; text-indent: -9999px;}
div#slideshow ul#nav li#prev a {background: url("../AddYourDirName/skin/common_files/images/prev.png");}
div#slideshow ul#nav li#next a {background: url("../AddYourDirName/skin/common_files/images/next.png");}
div#slideshow ul#slides {list-style: none; padding-left:0px;}
div#slideshow ul#slides li {margin: 0 0 20px 0;}
a {outline: none!important; }
</style>
<script type="text/javascript" src="../AddYourDirName/skin/common_files/js/newfilesbysr/jquery.cycle.all.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
            $("#slideshow").css("overflow", "hidden");   
            $("ul#slides").cycle({
                        fx: 'fade',
                        pause: 1,
                        prev: '#prev',
                        next: '#next'
            });       
            $("#slideshow").hover(function() { $("ul#nav").fadeIn(); },
            function() { $("ul#nav").fadeOut(); });
});
</script>
{/literal}
<div id="slideshow">
{if $banners|@count gt 1} <ul id="nav" style="display: none;"> <li id="prev"><a href="#">Previous</a></li><li id="next"><a href="#">Next</a></li> </ul> {/if}
<ul id="slides">
    {foreach from=$banners item=v}
            <li>
<img src="{$current_location}/image.php?type=H&amp;id={$v.bannerid}" border="0" alt="{if $v.alt ne ''}{$v.alt|escape}{/if}" width="{$v.banner_x}" height="{$v.banner_y}" >
</li>
    {/foreach}
</ul>
</div>
      ---images
          next.png,prev.png(80X80)
      ---js
         ---newfilesbysr
                ----jquery.cycle.all.min.js (new files) à http://code.google.com/p/rgbm/downloads/detail?name=jquery.cycle.all.min.js&can=2&q=
                        or
                ----jquery.wgslider.js (new files) à http://wegraphics.net/downloads/free-simple-jquery-slider/

MODIFY Following EXSITING FILES
home.php
/*** HOME PAGE BANNER MODULE CODE ***/
if (!empty($active_modules['HomeBanners'])) {
    include $xcart_dir . '/modules/HomeBanners/home_banners.php';
}
/** END */

INSTALLATION INSTRUCTION
1. place all the file on proper laoction.
2. run the following patch
     2.a) Create Table for store banner Image
           CREATE TABLE IF NOT EXISTS `xcart_images_H` (
             `imageid` int(11) NOT NULL AUTO_INCREMENT,
             `id` int(11) NOT NULL DEFAULT '0',
             `image` mediumblob NOT NULL,
             `image_path` varchar(255) NOT NULL DEFAULT '',
             `image_type` varchar(64) NOT NULL DEFAULT 'image/jpeg',
             `image_x` int(11) NOT NULL DEFAULT '0',
             `image_y` int(11) NOT NULL DEFAULT '0',
             `image_size` int(11) NOT NULL DEFAULT '0',
             `filename` varchar(255) NOT NULL DEFAULT '',
             `date` int(11) NOT NULL DEFAULT '0',
             `alt` varchar(255) NOT NULL DEFAULT '',
             `avail` char(1) NOT NULL DEFAULT 'Y',
             `orderby` int(11) NOT NULL DEFAULT '0',
             `md5` char(32) NOT NULL DEFAULT '',
             PRIMARY KEY (`imageid`),
             UNIQUE KEY `id` (`id`),
             KEY `image_path` (`image_path`)
           ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

     2.b) Create Table for store banner Image Info.
           CREATE TABLE IF NOT EXISTS `xcart_home_banners` (
             `bannerid` int(11) NOT NULL AUTO_INCREMENT,
             `banner` varchar(128) NOT NULL DEFAULT '',
             `body` mediumblob NOT NULL,
             `avail` char(1) NOT NULL DEFAULT 'Y',
             `is_image` char(1) NOT NULL DEFAULT 'Y',
             `is_name` char(1) NOT NULL DEFAULT 'Y',
             `is_descr` char(1) NOT NULL DEFAULT 'Y',
             `is_add` char(1) NOT NULL DEFAULT 'Y',
             `banner_type` char(1) NOT NULL DEFAULT 'T',
             `open_blank` char(1) NOT NULL DEFAULT 'Y',
             `legend` text NOT NULL,
             `alt` text NOT NULL,
             `direction` char(1) NOT NULL DEFAULT 'D',
             `banner_x` int(11) NOT NULL DEFAULT '0',
             `banner_y` int(11) NOT NULL DEFAULT '0',
             `userid` int(11) NOT NULL DEFAULT '0',
             PRIMARY KEY (`bannerid`),
             KEY `userid` (`userid`)
           ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

     2.c) Patch for home page banner Labels and text
           REPLACE INTO xcart_languages SET code='en', name='lbl_home_banners', value='Home page banners', topic='Labels';
           REPLACE INTO xcart_languages SET code='en', name='lbl_home_banners_management', value='Home page banners management', topic='Labels';
     2.d) patch for insert new module entry in database
           INSERT INTO `xcart_modules` (`moduleid`, `module_name`, `module_descr`, `active`, `init_orderby`, `author`, `module_url`) VALUES
           ('', 'HomeBanners', 'This module enables the Home Page Banners', 'Y', 0, 'qualiteam', '');


3.) Create images_H folder under images folder at root level with 777 permision

4.) Modify following files.
     4.1) Admin section TPL
           a.) open /skin/common_files/single/menu_box.tpl
                insert <a href="{$catalogs.admin}/home_banners.php">Home Page Banners</a>
                after <a href="{$catalogs.admin}/images_location.php">{$lng.lbl_images_location}</a>
           b.) open /skin/common_files/single/home.tpl
                insert
                     {elseif $main eq "home_banners"}
                     {include file="admin/newfilesbysr/home_banners.tpl"}
                after
                     {elseif $main eq "configuration"}
                           {include file="admin/main/configuration.tpl"}
     4.2) FRONT END SECTION TPL
           a.) open /skin/common_files/customer/home_main.tpl
                insert
                      {if $customer_home_banners eq "Y"} 
                         {include file="customer/newfilesbysr/home_banners.tpl"}
                      {/if}
                after
                     {elseif $main eq "catalog" and $current_category.category eq ""}
           b.) open /home.php
                insert
                     if (!empty($active_modules['HomeBanners'])) {
                          include $xcart_dir . '/modules/HomeBanners/home_banners.php';
                     }
                before
                     $smarty->assign('main',     'catalog');
    

For Customize slider option check this link
http://wegraphics.net/downloads/free-simple-jquery-slider/
http://basic-slider.com/

No comments:

Post a Comment

List OF BANK PAN Numbers

List OF BANK PAN Numbers Bank/Home Loan Providers PAN Number Allahabad Bank AACCA8464F Andhra Bank AABCA7375C Axis Bank...