This is the code which is calling the JUIDialog.
<h1><?php echo $model->name; ?></h1>
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'description',
'website',
'email',
'phone',
'ship_products_to',
'action',
array(
'name'=>'country',
'type'=>'raw',
'value'=> Country::name($model->country)
),
array(
'name'=>'state',
'type'=>'raw',
'value'=> CountryStates::name($model->state)
),
array(
'name'=>'city',
'type'=>'raw',
'value'=> CountryCity::name($model->city)
),
'zipcode',
'address',
'supplier_type',
array(
'name'=>'general_category',
'type'=>'raw',
'value'=> SupplierCategory::ListCategories($model->categories)
),
'date'
),
));
?>
<div class="span-8">
<h3>Brands</h3>
<?php
echo CHtml::link('Add Brand From List', Yii::app()->createUrl("admin/suppliers/addbrands",array("supplier_id"=>$model->id)), // the link for open the dialog
array(
'style'=>'cursor: pointer; text-decoration: underline;',
'onClick'=>'calldialog._url= $(this).attr("href");
calldialog._update="products-grid";
calldialog();
$("#calldialog").dialog("open");
return false;'
)).' | ';
echo CHtml::link('Add New Brand', Yii::app()->createUrl("admin/brands/create",array('supplier_id'=>$model->id)), // the link for open the dialog
array(
'style'=>'cursor: pointer; text-decoration: underline;',
'onclick'=>"{
calldialog._url= $(this).attr('href');
calldialog._up;
calldialog();
$('#calldialog').dialog('open');
return false;}"));
$criteria=new CDbCriteria;
$criteria->condition="supplier_id='".$model->id."'";
$states=new CActiveDataProvider('BrandSupplier', array(
'criteria'=>$criteria,
'pagination'=>false
));
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'brandsuppliers-grid',
'dataProvider'=>$states,
'enablePagination'=>false,
'columns'=>array(
array(
'name'=>'name',
'type'=>'raw',
'value'=>'$data->brand->name'
),
array
(
'class'=>'CButtonColumn',
'template'=>'{delete}',
'buttons'=>array
(
'delete' => array
(
'label'=>'Delete',
'url'=>'Yii::app()->createUrl("/admin/suppliers/deletebrand",array("id"=>$data->brand_id,"supplier_id"=>$data->supplier_id))',
),
),
)
),
));
?>
</div>
<div class="span-8">
<h3>Products</h3>
<?php
echo CHtml::link('Add Products From List', Yii::app()->createUrl("admin/suppliers/addproducts",array("supplier_id"=>$model->id)), // the link for open the dialog
array(
'style'=>'cursor: pointer; text-decoration: underline;'
)).' | ';
echo CHtml::link('Add New Product', Yii::app()->createUrl("admin/products/create",array('supplier_id'=>$model->id)), // the link for open the dialog
array(
'style'=>'cursor: pointer; text-decoration: underline;',
'onclick'=>"{
calldialog._url= $(this).attr('href');
calldialog._up;
calldialog();
$('#calldialog').dialog('open');
return false;}"));
$criteria=new CDbCriteria;
$criteria->condition="supplier_id='".$model->id."'";
$states=new CActiveDataProvider('ProductSupplier', array(
'criteria'=>$criteria,
'pagination'=>false
));
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'products-grid',
'dataProvider'=>$states,
'enablePagination'=>false,
'columns'=>array(
array(
'name'=>'name',
'type'=>'raw',
'value'=>'$data->product->name'
),
array
(
'class'=>'CButtonColumn',
'template'=>'{delete}',
'buttons'=>array
(
'delete' => array
(
'label'=>'Delete',
'url'=>'Yii::app()->createUrl("/admin/suppliers/deleteproduct",array("id"=>$data->product_id,"supplier_id"=>$data->supplier_id))',
),
),
)
),
));
?>
</div>
<?php
$this->beginWidget('zii.widgets.jui.CJuiDialog', array( // the dialog
'id'=>'calldialog',
'options'=>array(
'title'=>$model->name,
'autoOpen'=>false,
'modal'=>true,
'width'=>700,
'height'=>500,
),
));?>
<div class="calldialog"></div>
<?php $this->endWidget();?>
<script type="text/javascript">
function calldialog()
{
// public property
var _url;
var _update;
<?php echo CHtml::ajax(array(
'url'=>'js:calldialog._url',
'data'=> "js:$(this).serialize()",
'type'=>'post',
'dataType'=>'json',
'success'=>"function(data)
{
if (data.status == 'failure')
{
$('#calldialog div.calldialog').html(data.div);
// Here is the trick: on submit-> once again this function!
$('#calldialog div.calldialog form').submit(calldialog);
}
else
{
$('#calldialog div.calldialog').html(data.div);
$.fn.yiiGridView.update(calldialog._update);
$('#calldialog').dialog('close');
}
} ",
))?>;
return false;
}
</script>