Hi all,
I have a sidebar menu with a tree. With this tree, users have possibility to add new node entry clicking on "new entry" link, display at the end of each node. However, until there I displayed the update page of a generic node in order to create a new one. But displayed a new page is not very ergonomic and I would like to display the update form in a dialog box.
here the java script I use to create link on click (on my controller’s tree building function):
sprintf('<span>%s</span>',CHtml::link(($img." New entry"),"",array('onclick'=>"{updateElement(20,'".$this->createUrl('')."','treemenu-grid','#dialogTreemenu'); $('#dialogTreemenu').dialog('open');}")));
here is my dialog widget put in a content file
<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array( // the dialog
'id'=>'dialogTreemenu',
'options'=>array(
'title'=>'Create new entry',
'autoOpen'=>false,
'modal'=>true,
'width'=>350,
'height'=>340,
),
));?>
<div class="divForForm"></div>
<?php $this->endWidget();?>
and here my javascript function called on click :
function updateElement(idvg,url,grid,box_name)
{
jQuery.ajax({'url':url+'/../update/'+idvg,'data':idvg,'type':'post','dataType':'json','success':function(data)
{
if (data.status == 'failure')
{
$(box_name+' div.divForForm').html(data.div);
// Here is the trick: on submit-> once again this function!
$(box_name+' div.divForForm form').submit(updateElement);
}
else
{
$(box_name+' div.divForForm').html(data.div);
setTimeout("$('"+box_name+"').dialog('close') ",1000);
window.location.reload();
//$.fn.yiiGridView.update(grid);
}
} ,'cache':false});;
return false;
}
The problem is, when I click on the link, my dialog opens but stays blank. Watching firebug gives me a “200 ok” on POST and the link called matches well with what is waited for. My javascript function is the same I use for my other grid and it works, but here for me tree, dialog stays blank and I don’t understand why…