Find us on facebook

Aug 29, 2014

google map with way points

for($via_counter=0;$via_counter<$no_of_via_points;$via_counter++){
$via=mysql_real_escape_string($_GET["via_point_postcode_$via_counter"]);
$waypts[] = array(
'location' => $via,
'stopover' => true,
                     
);

}
$waypts[] = array(
'location' => $from_val_return,
'stopover' => true,
 
);
$waypts=json_encode($waypts);

<div id="map" style="width: 908px; height: 300px; float: left; margin-bottom:10px;"></div>
<div id="directions_panel" style="background-color:rgb(229, 227, 223);"></div>
<style>
<style>
#route {
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
    width: 100%;
    border-collapse: collapse;
}

#route td, #route th {
    font-size: 1em;
    border: 1px solid #98bf21;
    padding: 3px 7px 2px 7px;
}

#route th {
    font-size: 1.1em;
    text-align: left;
    padding-top: 5px;
    padding-bottom: 4px;
    background-color: #A7C942;
    color: #ffffff;
}

#route tr.alt td {
    color: #000000;
    background-color: #EAF2D3;
}
</style>
</style>
<script type="text/javascript">

var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();

var map = new google.maps.Map(document.getElementById('map'), {
   zoom:5,
   mapTypeId: google.maps.MapTypeId.ROADMAP
});

directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('panel'));
waypts = <?php echo $waypts;?>;

     var request = {
       origin: '<?php echo $from; ?>',
       destination: '<?php echo $to_val_return; ?>',
  waypoints: waypts,
       travelMode: google.maps.DirectionsTravelMode.DRIVING
     };


     directionsService.route(request, function(response, status) {
       if (status == google.maps.DirectionsStatus.OK) {
         directionsDisplay.setDirections(response);
var route = response.routes[0];
 var summaryPanel = document.getElementById('directions_panel');
 var HTML = '<table id="route">';
 HTML += '<tr><th>Route</th><th>From</th><th>To</th><th>Distance</th></tr>';
 // For each route, display summary information.
 for (var i = 0; i < route.legs.length; i++) {
var routeSegment = i + 1;
HTML += '<tr><td><b>' + routeSegment + '</b></td>';
HTML += '<td><b>' +route.legs[i].start_address + '</b></td>';
HTML += '<td><b>'+route.legs[i].end_address + '</b></td>';
HTML += '<td><b>'+route.legs[i].distance.text + '</b></td></tr>';
 }
 HTML +='</table>';
 summaryPanel.innerHTML = HTML;
       }
     });
   </script> 

Via Points

HTML
include_once $_SERVER['DOCUMENT_ROOT'].COMMON.'/js/js_homewaypoint.php';
<input type="button" value="Add Waypoint" id="addwaypoint"/>
<div id="via-container"></div>
<input type="hidden" id="no_of_via_points" name="no_of_via_points" value=""/>
js_homewaypoint.php
<link rel="stylesheet" href="scripts/jquery/themes/redmond/jquery.autocomplete.css">
<script src="scripts/jquery/autocompleteused/jquery-1.9.1.min.js"></script>
<script src="scripts/jquery/autocompleteused/jquery-ui.min.js"></script>
<script>
$(document).ready(function()
{

var via_counter = 0;

$('#addwaypoint').click(function () {
                var str = '';
str += '<div id="via_container_' + via_counter + '"><label>Via Point No: ' + (via_counter+1) + ' <a href="javascript:void(0);" class="remove"><img src="styles/images/cross.png"></a></label>';
str += '<input type="text" id="via_point_' + via_counter + '"  class="area-point-text-input" />';
str += '<input type="hidden" id="via_point_id_' + via_counter + '"  class="via_point_id" />';
str += '<input type="hidden" id="via_point_table_' + via_counter + '"  class="area-point-text-input" />';
str += '<input type="hidden" id="via_point_type_' + via_counter + '"  class="area-point-text-input" />';
str += '<input type="hidden" id="via_point_postcode_' + via_counter + '"  class="area-point-text-input" />';
str += '<div id="via_point_error_' + via_counter + '" class="error_bg" style="display: none;">Please Enter Valid Drop Off Point</div>';
str += '</div></div>';
$("#via-container").append(str);
$(function() {
$("#via_point_" + via_counter).autocomplete({
source: "get_search_values.php",
minLength: 1,
select: function( event, ui ) {
$("#via_point_id_"+(via_counter-1)).val(ui.item.id);
$("#via_point_table_" + (via_counter-1)).val(ui.item.table);
$("#via_point_type_" + (via_counter-1)).val(ui.item.area_type);
   $("#no_of_via_points").val(via_counter);
$('#via_point_postcode_'+(via_counter-1)).val(ui.item.postcode);
if(ui.item.id != ''){
$("#via_point_" + (via_counter-1)).css("background"," url('styles/images/tick.png') right center no-repeat #ffffff");
$("#via_point_error_" + (via_counter-1)).hide();
//$("#from-point-container").hide();
//$("#from-point-container-display").show();
}
  return ui.item.label;
 },
});

});
                via_counter++;
        });

$("body").on('click', ".remove", function () {
via_counter--;
$('#via_container_' + via_counter + '').remove();
$("#no_of_via_points").val(via_counter);

});

});
</script>

when click on button we can call to php file to get something done

var no_of_via_points = $("#no_of_via_points").val();
viaString="";
for (via_counter = 0; via_counter < no_of_via_points; via_counter++) {
viaid=$("#via_point_id_"+via_counter).val();
viatable=$("#via_point_table_"+via_counter).val();
constidstring = "&via_point_id_"+via_counter+"=";
consttablestring = "&via_point_table_"+via_counter+"=";
if(viaString==""){
viaString = constidstring+ viaid+consttablestring+viatable;
}else{
viaString = viaString+constidstring+viaid+consttablestring+viatable;
}
}
var dataString = 'no_of_via_points='+no_of_via_points+viaString;
;
$.ajax({
 type: "POST",
 url: "ajax_quote.php",
 data: dataString,
 beforeSend: function(){ jQuery("#ajax_loader_quote").show(); jQuery("#quote-price-container").show(); jQuery("#reserve-button").show(); $('#load_price_ajax').hide(); },
 complete: function(){ jQuery("#ajax_loader_quote").hide(); $('#load_price_ajax').show();},
 success: function(response)
 {
$('#load_price_ajax').html(unescape(response));
 }
});

ajax_quote.php
for($via_counter=0;$via_counter<=$no_of_via_points;$via_counter++){
unset($_SESSION["via_point_id_".$via_counter]);
unset($_SESSION["via_point_table_".$via_counter]);
$_SESSION["via_point_id_".$via_counter] = (int)mysql_real_escape_string($_POST['via_point_id_'.$via_counter]);
$_SESSION["via_point_table_".$via_counter] = mysql_real_escape_string($_POST['via_point_table_'.$via_counter]);

}

Vehicle Dropdown with images

html file
include_once $_SERVER['DOCUMENT_ROOT'].COMMON.'/js/js_homewaypoint.php';
<div id="vehicle"></div>

js_homewaypoint.php
<script src="scripts/jquery/autocompleteused/jquery-ui.min.js"></script>

<script src="scripts/ddslickvehicles/jquery.ddslick.js"></script>
<?php
$vehicleArray = $objaVehiclesTbl->getVehiclesAll();
while($vehicleRow = mysql_fetch_array($vehicleArray)):
    $imageName = $vehicleRow['image'];
    $imageSrc = "images/$imageName";
    $vehicleData[] = array(
'text' => ucwords(strtolower($vehicleRow['name'])),
'value' => (int)$vehicleRow['id'],
                        'description' => $vehicleRow['desc'],
                        'imageSrc' => $imageSrc
);
endwhile;


$vehicleDataJason = json_encode($vehicleData);

?>

<script language="javascript">
   
$(document).ready(function()
{
$('#vehicle').ddslick({
data: <?php echo $vehicleDataJason; ?>,
width: 289,
imagePosition: "left",
selectText: "Select Vehicle",
onSelected: function (data) {
  console.log(data);
$("#vehicle_way_one_index").val(data.selectedIndex);
$("#vehicle_way_one").val(data.selectedData.value);
$('#vehicle-return').ddslick('select', {index: data.selectedIndex });
if(data.selectedData.value != ''){
$('#vehicle_error').hide();
}
}
});
});
</script>

Auto complete Text Field jquery-1.9.1.min.js

html file
<?php
include_once $_SERVER['DOCUMENT_ROOT'].COMMON.'/js/js_homewaypoint.php';

?>
<input type="text" name="from_point" id="from_point" class="area-point-text-input"/>
<input type="hidden" id="from_point_id" name="from_point_id"/>
<input type="hidden" id="from_point_table" name="from_point_table"/>
<input type="hidden" id="from_point_type" name="from_point_type"/>
<div id="from_point_error" class="error_bg" style="display: none;">Please Enter Valid Pickup Point</div>

js_homewaypoint.php file
<link rel="stylesheet" href="scripts/jquery/themes/redmond/jquery.autocomplete.css">
<script src="scripts/jquery/autocompleteused/jquery-1.9.1.min.js"></script>
<script src="scripts/jquery/autocompleteused/jquery-ui.min.js"></script>

<script language="javascript">
 $(document).ready(function()
{
$(function() {

$("#from_point").autocomplete({
source: "get_search_values.php",
minLength: 1,
select: function( event, ui ) {
  $('#from_point_id').val(ui.item.id);
  $('#from_point_table').val(ui.item.table);
  $('#from_point_type').val(ui.item.area_type);
  $('#from_point_postcode').val(ui.item.postcode);
if(ui.item.id != ''){
$('#from_point').css("background"," url('styles/images/tick.png') right center no-repeat #ffffff");
$('#from_point_error').hide();
//$("#from-point-container").hide();
//$("#from-point-container-display").show();
}
  return ui.item.label;
 },
});

});
});
</script>

get_search_values.php

$qstring = "SELECT inner_postcode, outer_postcode_suffix, outer_postcode,name,id, area_type, full_postcode,is_address FROM a_area_points WHERE is_display = '1' AND (name LIKE '".$term."%') LIMIT 300";
     $result = mysql_query($qstring);


      while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
      {
                $name = ucwords(strtolower($row['name']));
                $outer_postcode = $row['outer_postcode'];
                $area_type = $row['area_type'];
                if($area_type == 'AIRPORT'):
                    $outer_postcode = "";
                     $label = "$name";
                else:
                     $label = "$name, $outer_postcode";
                endif;
                $outerSuffix = $row['outer_postcode_suffix'];
$inner = $row['inner_postcode'];
$full_postcode="$outer_postcode$outerSuffix $inner";
             
                $id_array[] = $id = (int)$row['id'];
$data[] = array(
'label' => $label ,
'id' => (int)$row['id'],
                        'table' => "a_area_points",
                        'postcode' => $full_postcode,
                        'outer_postcode' => $row['outer_postcode'],
                        'area_type' => $area_type,
                        'is_address' => $row['is_address']
);
               
             
      }
 echo json_encode($data); 

Aug 26, 2014

JQuery/AJAX/PHP Mysql Autocomplete

<link rel="stylesheet" href="scripts/jquery/themes/redmond/jquery.autocomplete.css">
<script src="scripts/jquery/ui/jquery.autocomplete.js"></script>
<script>
$(document).ready(function()
{
 $("#txtfrom").autocomplete("get_search_values.php?",
{
selectFirst: true
});
});
</script>
<input type="text" name="txtfrom" id="txtfrom" class="area-point-text-input"/>
inc_get_search_values.php code

$term=$_GET['q'];
$term=trim(strip_tags(mysql_real_escape_string($term)));

$searchByNameStr = "SELECT name, outer_postcode, id, area_type, full_postcode, outer_postcode, is_address FROM a_area_points WHERE is_display = '1' AND (name LIKE '".$term."%') LIMIT 300";
$searchByNameResult = mysql_query($searchByNameStr);
$searchByNameResultCount = mysql_num_rows($searchByNameResult);
if($searchByNameResultCount>0){

while ($row = mysql_fetch_array($searchByNameResult,MYSQL_ASSOC))
{
$name = ucwords(strtolower($row['name']));
$outer_postcode = $row['outer_postcode'];
$area_type = $row['area_type'];
if($area_type == 'AIRPORT'){
$outer_postcode = "";
$label = "$name";
}else{
$label = "$name, $outer_postcode";
}
echo $label."\n";
}
}

Aug 21, 2014

Auto refresh page in yii with javascript

<?php
Yii::app()->clientScript->registerCoreScript('jquery');
Yii::app()->clientScript->registerScript('Refresh', "setTimeout('location.reload(true);',50000)", CClientScript::POS_READY);
?>

Many to Many relationship shown in the grid

In Controller
protected function gridCategoryDescription($data,$row)
    {
       return $this->_lastProductId != $data->id ? $data->discription : '';          
    }

protected function gridCategoryPrice($data,$row)
    {
        if($this->_lastProductId != $data->id)
        {
            $this->_lastProductId = $data->id;
            return $data->code;
        }
        else
             return '';
    }

In view
array(            
'name'=>'discription',
'value'=>array($this,'gridCategoryDescription')
),

array(            
'name'=>'code',
'value'=>array($this,'gridCategoryPrice')
),

Aug 18, 2014

Get Unique values from an array

public function actionGetLunchCategory() {

$this -> layout = false;
header('Content-type: application/json');

$id = $_POST['id'];
$LunchMenus = MenuDiningtypes::model() -> findAll(array("condition" => "diningtypes_type_id =  $id"));

$LunchCategories = array();
foreach ($LunchMenus as $LunchMenu) {
$menu_id=$LunchMenu->menu_id;
$Menu = Menu::model() -> find(array("condition" => "id = $menu_id "));

$mainmenu_id=$Menu -> main_menu;

$MainMenu = MainMenu::model() -> find(array("condition" => "id = $mainmenu_id "));

$path = "/" . $MainMenu -> id . "/" . $MainMenu -> image;
$return_array = array('id' => $MainMenu -> id, 'name' => $MainMenu -> name, 'image' => $path, );
array_push($LunchCategories, $return_array);
}
$LunchCategories = array_unique($LunchCategories,SORT_REGULAR);
echo CJSON::encode($LunchCategories);
Yii::app() -> end();

}

Aug 15, 2014

MySQL Triggers

BEGIN
declare msg varchar(255);
IF NEW.update_by = 0  OR NEW.update_by='' OR NEW.update_by=Null THEN
set msg = concat('MyTriggerError: Trying to insert a invalied value: ', cast(new.id as char));
signal sqlstate '45000' set message_text = msg;  
END IF;
END

====================
CREATE TRIGGER `allow_with_update_by` BEFORE INSERT ON  `table_order`
FOR EACH
ROW BEGIN
IF NEW.update_by <>0
THEN
SET NEW.update_by = 2;
END IF ;
END ;

Aug 13, 2014

Web service in .net

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Collections;

namespace SampleWS
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
        DataClasses1DataContext DB = new DataClasses1DataContext();


        [WebMethod]
        public String Registration(String G_name,String T_name,String password)
        {

            Guide guide = new Guide();

            guide.G_name = G_name;
            guide.T_name = T_name;
            guide.Password = password;

            DB.Guides.InsertOnSubmit(guide);
            try
            {
                DB.SubmitChanges();
            }
            catch
            {
                return "fail";
            }
         

            return "success";
        }

        [WebMethod]
        public String update(String T_name,String vehicalinfo,String Charges,String More,String phone,String email,String contactExtra)
        {
            var r2 = DB.Guides
                   .Where(w => w.T_name == T_name)
                   .SingleOrDefault();


            if (r2 != null)
            {

                r2.VehicleInfo = vehicalinfo;
                r2.ContactInfo = contactExtra;
                r2.More = More;
                r2.Phone = phone;
                r2.email = email;

                DB.Guides.InsertOnSubmit(r2);

                try
                {
                    DB.SubmitChanges();
                }
                catch
                {
                    return "fail";
                }

            }
            else
            {
                return "fail";
            }

            return "success";
        }

        [WebMethod]
        public String updatelatlon(String lat, String lon)
        {
            Guide guide = new Guide();

            guide.Lat = lat;
            guide.@long = lon;

            DB.Guides.InsertOnSubmit(guide);
            try
            {
                DB.SubmitChanges();
            }
            catch
            {
                return "faile";
            }


            return "success";
        }


        [WebMethod]
        public void getAllLocation()
        {

            ArrayList parent = new ArrayList();
            var query = from guide in DB.Guides
                        select guide;

            foreach (var gud in query)
            {
                Dictionary<string, string> dictionary = new Dictionary<string, string>();
                dictionary.Add("lat", gud.Lat);
                dictionary.Add("log", gud.@long);

                parent.Add(dictionary);
            }
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            string json = serializer.Serialize(parent);
    Context.Response.Write(json);
            ///return json;
        }


        [WebMethod]
        public String gettravelinfo(String T_name)
        {
            return "success";
        }
    }
}


==============================
[WebMethod] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public void MyMethod(... params ...) { try { var retval = new JavaScriptSerializer() .Serialize(new MyObject()); Context.Response.Write(retval); } catch (Exception ex) { Context.Response.Write(string.Format("[ERROR: {0}]", ex.Message)); } }

Aug 12, 2014

Convert full Date Time into DateTime format

$d1 = strtotime($MainMenu -> create_date);

Current Date/Time Timestamp

$timezone = "Asia/Colombo";
if (function_exists('date_default_timezone_set'))
date_default_timezone_set($timezone);
$i = date('Y-m-d H:i:s');
Table::model()->updateByPk($id, array(
'delete_date'       => $i,
'is_active'      => 0,

));

Date/ Time String to Date /Time Format

$date = $_POST['date'];
$newDateformat = new DateTime($date);
$newDateformat = $newDateformat->format('Y-m-d');
$time = $_POST['time'];
$newTimeformat = new DateTime($time);
$newTimeformat = $newTimeformat->format('H-i-s');

Draggable Droppable for image positioning under various groups

View
  <?php
$baseUrl = Yii::app()->baseUrl;
$cs = Yii::app()->getClientScript();
$cs->registerScriptFile($baseUrl.'/css/jquery-ui.js');
?>
 
  <?php
  Yii::app()->clientScript->registerCoreScript('jquery');
  $HotelAreas = HotelArea::model()->findAll();
foreach($HotelAreas as $HotelArea){
$Tables = Table::model()->findAll('is_active = 1 AND place='.$HotelArea->id);
foreach($Tables as $Table){
?>

  <script>
  $(function() {
left=0;
top=0;
    $("#<?php echo $Table->id?>").draggable();
$( "#droppable-<?php echo $HotelArea->id ?>").droppable({


      drop: function( event, ui ) {
       //alert(ui.draggable.prop('id'));
  event.stopPropagation();
var left = ui.position.left;
var dropPositionY = event.pageY - $(this).offset().top;
var dragItemOffsetY = event.offsetY;
var top =ui.position.top;
var droppableId = $(this).attr("id");
           $.ajax({
   
 url: "<?php echo Yii::app()->createAbsoluteUrl('Table/UpdatePosition');?>",
 type:"POST",
 data: "id="+ui.draggable.prop('id')+"&left=" + left+"&top=" + top+"&droppableId=" + droppableId,
 //dataType:"json",
 success: function(responce)

 {
 //alert(responce);

 }

});
           
      }
    });

  });
 
  </script>
  <?php
  }
  }
  ?>
<div class="span12">

<div class='fulid-row'>

<?php
$a_id = Yii::app() -> controller -> action -> id;
$c_id = Yii::app() -> controller -> id;
?>
<div id="content-box">
<div id="element-box">
<div id="system-message-container"></div>
<div class="">
<div class="adminform">

<?php $this->renderPartial('_left_menu'); ?>
<div class="span10">
<div class="headerContent">
<h3 style="padding: 5px;">Manage Tables</h3>
<!-- <h1 style="font-style: italic; margin: 25px 0px 0px -408px;">Manage Menu Items</h1> -->

</div>
<div class="space"></div>

</div>

<div class="span10" style="">
<div class="cpanel-right right-side">
<div style="margin-left: 20px;float: left;">
<?php
$HotelAreas = HotelArea::model()->findAll();
foreach($HotelAreas as $HotelArea){

$Tables = Table::model()->findAll('is_active = 1 AND place='.$HotelArea->id);


foreach($Tables as $Table){
$sql="SELECT image from table_type_images where table_type_id =".$Table->shape." AND chairs = ".$Table->chairs;
$TableTypeImage = TableTypeImages::model()->findBySql($sql);
if($Table->position==""|| $Table->position==Null){
$style="width:110px;margin-left: 20px;";
echo '<div id='.$Table->id.' style='.$style.'>';
}
elseif($Table->position!=""|| $Table->position!=Null){
$position=$Table->position;
$position=explode(",",$position);
$left=$position[0].'px';
$top=$position[1].'px';
$style="width:110px;left:$left;top:$top;";
echo '<div id='.$Table->id.' style='.$style.'>';
}
echo CHtml::image(Yii::app()->getBaseUrl().'/images/tables/'.$TableTypeImage->image, 'Tables[]');
echo '</div>';


}


}

?>
</div>
<div style="margin-left: 200px;">
<?php
$HotelAreas = HotelArea::model()->findAll();
foreach($HotelAreas as $HotelArea){

echo '<div id="droppable-'.$HotelArea->id.'" style="border: 3px solid #f90;border-radius: 1em;width:1000px;height:300px;">'.$HotelArea->name.
'</div>';

}
?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>


Controller
public function actionUpdatePosition(){
$left= $_POST['left'];
$top = $_POST['top'];
$id = $_POST['id'];
$droppableId = $_POST['droppableId'];
$droppableId=explode('-',$droppableId);
$Table = new Table;
$Table->updatePosition($left,$top,$id,$droppableId[1]);
//echo $top.",".$left;

}

Model
public function updatePosition($left=null,$top=null,$id=null,$droppableId=null)
{

$position =$left.",".$top;

$sql = "UPDATE `table` SET `position`='$position',`place`=$droppableId WHERE id=:id";

$parameters = array(":id"=>$id);

Yii::app()->db->createCommand($sql)->execute($parameters);

}

Aug 9, 2014

Draggable Droppable in yii

 <style>
 #droppable {
    width: 64em;
    height: 49em;
    padding: 0.5em;
    border: 3px solid #f90;
    border-radius: 1em;
    margin: 0 auto;
}</style>

  <?php
$baseUrl = Yii::app()->baseUrl;
$cs = Yii::app()->getClientScript();
$cs->registerScriptFile($baseUrl.'/css/jquery-ui.js');
?>
 
  <?php
  Yii::app()->clientScript->registerCoreScript('jquery');
$Tables = Table::model()->findAll('is_active = 1');
foreach($Tables as $Table){
?>

  <script>
  $(function() {
left=0;
top=0;
    $("#<?php echo $Table->id?>").draggable();
$( "#droppable" ).droppable({


      drop: function( event, ui ) {
       //alert(ui.draggable.prop('id'));
  event.stopPropagation();
var left = ui.position.left;
var dropPositionY = event.pageY - $(this).offset().top;
var dragItemOffsetY = event.offsetY;
var top =ui.position.top;
//var top = event.offsetY;//
           $.ajax({
   
 url: "<?php echo Yii::app()->createAbsoluteUrl('Table/UpdatePosition');?>",
 type:"POST",
 data: "id="+ui.draggable.prop('id')+"&left=" + left+"&top=" + top,
 //dataType:"json",
 success: function(responce)

 {
 //alert(responce);

 }

});
           
      }
    });

  });
 
  </script>
  <?php
  }
  ?>
<div class="span12">

<div class='fulid-row'>

<?php
$a_id = Yii::app() -> controller -> action -> id;
$c_id = Yii::app() -> controller -> id;
?>
<div id="content-box">
<div id="element-box">
<div id="system-message-container"></div>
<div class="">
<div class="adminform">

<?php $this->renderPartial('_left_menu'); ?>
<div class="span10">
<div class="headerContent">
<h3 style="padding: 5px;">Manage Tables</h3>
<!-- <h1 style="font-style: italic; margin: 25px 0px 0px -408px;">Manage Menu Items</h1> -->

</div>
<div class="space"></div>

</div>

<div class="span10" style="">
<div class="cpanel-right right-side">
<div style="margin-left: 20px;float: left;">
<?php
$Tables = Table::model()->findAll('is_active = 1');


foreach($Tables as $Table){
if($Table->position==""|| $Table->position==Null){
$style="width:110px;margin-left: 20px;";
echo '<div id='.$Table->id.' style='.$style.'>';
}
elseif($Table->position!=""|| $Table->position!=Null){
$position=$Table->position;
$position=explode(",",$position);
$left=$position[0].'px';
$top=$position[1].'px';
$style="width:110px;left:$left;top:$top;";
echo '<div id='.$Table->id.' style='.$style.'>';
}
echo CHtml::image(Yii::app()->getBaseUrl().'/images/tables/'.$Table->image, 'Tables[]');
echo '</div>';


}

?>
</div>
<div style="margin-left: 200px;">

<div id="droppable"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

Controller
public function actionUpdatePosition(){
$left= $_POST['left'];
$top = $_POST['top'];
$id = $_POST['id'];
$Table = new Table;
$Table->updatePosition($left,$top,$id);
//echo $top.",".$left;
}
Model
public function updatePosition($left=null,$top=null,$id=null)
{

$position =$left.",".$top;

$sql = "UPDATE `table` SET `position`='$position' WHERE id=:id";

$parameters = array(":id"=>$id);

Yii::app()->db->createCommand($sql)->execute($parameters);
}

Aug 8, 2014

exact same query: SELECT (..) WHERE (t.id=:ycp0).

$criteria = new CDbCriteria;
// Classic method
$criteria->addCondition('t.id = :id');
$criteria->params = array(':id' => Yii::app()->user->id);
// Often used in search functions. Note: if passed value is empty, the WHERE is not added!
$criteria->compare('t.id', Yii::app()->user->id);
// This is my current favorite
$criteria->addColumnCondition(array('t.id' => Yii::app()->user->id));
// A bit weird here, but you can also do this
$criteria->addInCondition('t.id', array(Yii::app()->user->id));

Yii: working with multiple tables

public function rules()
{
return array(array('item_id', 'safe', 'on'=>'search'),);
}

public function relations()
{
return array(
'items'           => array(self::BELONGS_TO, 'Menu','item_id'),
)
}
public function attributeLabels()
{
return array('item_id'=>'Item Id',);
}

$criteria=new CDbCriteria;
$criteria->together = true;
$criteria->with = array('items');
$criteria->compare('id',$this->id);
$criteria->compare('type',$this->type);
$criteria->compare('items.name',$this->item_id);

view file

 array(
'name'=>'item_id',
'value'=>'$data->items->name',
),

Aug 5, 2014

Add OR Clause to addSearchCondition

$criteria->addSearchCondition('AuthAssignment.itemname', 'Staff');
$criteria->addSearchCondition('AuthAssignment.itemname', 'Waiter' , true , 'OR');
$criteria->addSearchCondition('AuthAssignment.itemname', 'Admin' , true , 'OR');
$criteria->addSearchCondition('AuthAssignment.itemname', 'Cashier' , true , 'OR'); 

Join two tables with CDbCriteria

$criteria=new CDbCriteria;
$criteria->alias = 'de';
$criteria->select = 'expences_type.type AS expences_type_name,de.id,de.driver_id,de.details,de.comment,de.price';
$criteria -> join = "inner join  expences_type on  expences_type.id = de.expences_type ";
$criteria->compare('id',$this->id);
$criteria->compare('driver_id',$this->driver_id);
$criteria->compare('expences_type',$this->expences_type);
$criteria->compare('details',$this->details,true);
$criteria->compare('comment',$this->comment,true);
$criteria->compare('price',$this->price,true);
$criteria->compare('request_date',$this->request_date,true);
$criteria->compare('paid_date',$this->paid_date,true);
$criteria->compare('update_date',$this->update_date,true);
$criteria->compare('update_by',$this->update_by);
$criteria->compare('create_date',$this->create_date,true);
$criteria->compare('create_by',$this->create_by);
$criteria->compare('expences_type.type',$this->expences_type_name);

return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));

Aug 2, 2014

Make Buttons Visible or Not visible according to permissions Given

<?php
$user_id=Yii::app()->user->id;
$AuthAssignments = AuthAssignment::model() -> findAll(array("condition"=>"userid = $user_id","order"=>"itemname"));

$Authitemchildren = Authitemchild::model() -> findAll();
$visibleView = 'false;';
$visibleEdit = 'false;';
$visibleDelete = 'false;';
foreach($Authitemchildren as $Authitemchild){
foreach($AuthAssignments as $AuthAssignment){
if($Authitemchild['parent']==$AuthAssignment['itemname'] && $Authitemchild['child']=='MainMenu.View'){
$visibleView = 'true;';
}else if($Authitemchild['parent']==$AuthAssignment['itemname'] && $Authitemchild['child']=='MainMenu.Update'){
$visibleEdit = 'true;';
}
else if($Authitemchild['parent']==$AuthAssignment['itemname'] && $Authitemchild['child']=='MainMenu.Delete'){
$visibleDelete = 'true;';
}
}
}


In buttons

array(
'class'=>'bootstrap.widgets.TbButtonColumn',
'template'=>'{View}{Edit}{Delete}',
'buttons'=>array
(
 
'View' => array
(
'label'=>'View',
'visible' => $visibleView,
'url'=>'Yii::app()->createUrl("MainMenu/view", array("id"=>$data->id))',
'imageUrl' => Yii::app()->baseUrl . '/images/icon/viewicon.jpg',
'options'=>array(
'style'=>'width:130px;height:130px;',
//   'class'=>'btn btn-small btn-info',
),
),
),),

Button visibility in Grid view

array(
'class'=>'bootstrap.widgets.TbButtonColumn',
'template'=>'{view}{edit}{delete}',
'buttons'=>array
(


'view' => array
(
'label'=>'View',
'visible' => '(isset($data->id))?false:true;',
'url'=>'Yii::app()->createUrl("MainMenu/view", array("id"=>$data->id))',
'imageUrl' => Yii::app()->baseUrl . '/images/icon/viewicon.jpg',
'options'=>array(
'style'=>'width:130px;height:130px;',
//   'class'=>'btn btn-small btn-info',
),
),

CDbCriteria with grid searching ability

$criteria=new CDbCriteria;
$res_id = CF::get_resid();
$criteria->compare('id',$this->id);
$criteria->compare('name',$this->name,true);
$criteria->compare('create_date',$this->create_date,true);
$criteria->compare('res_id',$res_id);
$criteria->compare('is_active',$this->is_active);
$criteria->addSearchCondition('is_active', 1);
$criteria->addSearchCondition('res_id', $res_id);
//condition = "is_active=:is_active AND res_id=:res_id";
//$criteria->params = array(':is_active'=>1,':res_id'=>$res_id);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination'=>array(
                        'pageSize'=>4,
                ),
));

Aug 1, 2014

Call AJAX function when checkbox change

echo CHtml::checkbox("actions[]",true, array("value"=>"$keydes-$Authitem"));


<?php
Yii::app()->clientScript->registerCoreScript('jquery');
Yii::app()->clientScript->registerScript('updateAction', '
$(":checkbox").change(function()
{
var value =$(this).val();

var check = $(this).attr("checked");


$.ajax({

 url: "' . Yii::app()->createAbsoluteUrl('rights/Authitemchild/Update').'",
 type:"POST",
 data: "value="+value+"&check=" + check,
 //dataType:"json",
 success: function(responce)

 {
alert(responce);

 }

});

});

',CClientScript::POS_READY);
?>