renderPartial doesn't load scripts by default and the CMultiFileUpload widget uses scripts, so you need to make the renderPartial load scripts. You can do that by changing your renderPartial to include two extra parameters:
$this->renderPartial('viewName',
array('variable' => $variable), false, true
);
Notice the false, true
added to the end? The false means "don't return the view, display it" and the true means "postprocess," which is what will add the scripts.
For more info: http://www.yiiframework.com/doc/api/1.1/CController#renderPartial-detail
[edit]
Here's a different way of loading the dialog. It still requires the "false, true" in renderPartial:
Yii::app()->clientScript->registerScript('uploadDialog', "
$(function(){
$('#upload-image').click(function(){
$('#gallery-form').load('".Yii::app()->createUrl('gallery/create')."', function(){
$('#gallery-form').dialog('open');
});
return false;
});
});");
echo CHtml::link('Upload', '#', array('id' => 'upload-image'));
$this->beginWidget('zii.widgets.jui.CJuiDialog',array(
'id'=>'gallery-form',
'options'=>array(
'title'=>Yii::t('image','Upload'),
'autoOpen'=>false,
'model'=>'true',
'width'=>'auto',
'height'=>'auto',
),
));
$this->endWidget('zii.widgets.jui.CJuiDialog');
Then, remove the line below from your controller:
Yii::app()->clientScript->scriptMap['jquery.js'] = false;
If that still doesn't work, I would recommend adding your renderPartial directly in between the CJuiDialog widget tags instead of loading the content via ajax.