Hi All,
In need of some help here, thanks.
I have an Asset form in which Consumable can be added along with the new Asset record. The Asset and Consumable are 2 separate models. I’m using Joblo’s extension (multimodel) to add Consumable when I’m creating a new Asset record. The Consumable consist of 3 input fields, 1 of the input is a drop-down list of consumable type.
The consumable type drop-down list has an ‘Add New…’ option that allows user to add new consumable type if no matching consumable type is found in the existing drop-down list. I’m using a pop-up dialog from the following extension (CJuiDialog) to add new consumable type.
The problem I’m having happens when I try to add new consumable type to the drop-down list, the newly added consumable type is only reflected in the first drop-down (having multiple consumable drop-down when multiple consumable is added along with the new Asset).
How can I properly update the respective drop-down list in which the ‘Add New…’ is selected from?
The following codes are my implementation,
Asset Form:
$consumableFormConfig = array(
			'elements'=>array(
				'type_id'=>array(
					'type'=>'dropdownlist',
					'prompt'=>'Select',
					'items'=>array( 
						'Type'=>Dropdown::model()->getTypeConsumable()),
					        'onchange'=>"javascript: {
						        if(this.value == 'addNew') {
							      addConsumable();
							      $('#dialogConsumable').dialog('open');
						              return false;
						        }
					        }",
                                         ),
					'quantity'=>array(
						'type'=>'text'
					),
					'expiry_date'=>array(
						'type'=>'zii.widgets.jui.CJuiDatePicker',
						'model'=>$consumable,
						'attribute'=>$consumable->expiry_date,
						'options'=>array(
			                		'dateFormat'=>'yy-mm-dd',
							'changeMonth'=>true,
							'changeYear'=>true,
						),
					),
			));
...
$this->widget('ext.multimodelform.MultiModelForm', array(
		'id'=>'id_consumable',
		'addItemText'=>'Add Consumable',
		'removeConfirm'=>null,
		'removeHtmlOptions'=>array(),
		'formConfig'=>$consumableFormConfig,
		'model'=>$consumable,
		'validatedItems'=>$validatedConsumables,
		'data'=>empty($validatedItems) ? $consumable->findAll(
				array('condition'=>'asset_id=:assetId',
				      'params'=>array(':assetId'=>$model->id),)) : null,
		'tableView'=>true,
		'jsAfterNewId'=>MultiModelForm::afterNewIdDatePicker($consumableFormConfig['elements']['expiry_date']),
								
		'showErrorSummary'=>true,
		'addItemAsButton'=>false,
		'bootstrapLayout'=>true,
		'fieldsetWrapper'=>array('tag'=>'div',
			'htmlOptions'=>array('class'=>'row')),), true),
Javascript:
function addConsumable()
	{		
		<?php echo CHtml::ajax(array(
				'url'=>array('dropdown/create', 'model'=>get_class($consumable)),
				'data'=>"js:$(this).serialize()",
				'type'=>'post',
				'dataType'=>'json',
				'success'=>"function(data)
				{
					if(data.status == 'failure')
					{
						$('#dialogConsumable div.consumableForm').html(data.div);
						$('#dialogConsumable div.consumableForm form').submit(addConsumable);
					}
					else
					{
						$('#Consumable_type_id').prepend('<option value=\"' + data.value[0] + '\">' + data.value[1] + '</option>');							
						$('#Consumable_type_id option[value=\"' + data.value[0] + '\"]').attr('selected', true);
						$('#dialogConsumable div.consumableForm').html(data.div);					
						setTimeout(\"$('#dialogConsumable').dialog('close') \", 1000);							
					}					
				}"
			)) ?>;		
		return false;
	}
Dialog:
<?php 		
	$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
			'id'=>'dialogConsumable',
			'options'=>array(
					'title'=>'Create Consumable Type',
					'autoOpen'=>false,
					'modal'=>true,
					'width'=>580,
					'height'=>420,
			),
	)); ?>
	<div class="consumableForm"></div>
<?php //End dialog 
	$this->endWidget(); ?>
Any help or alternative solution is greatly appreciated. Thanks in advance.
If additional information for the above mentioned problem is needed, please inform me. Thanks.