diff --git a/www/protected/controllers/CandidatoCapacidadController.php b/www/protected/controllers/CandidatoCapacidadController.php index e5a1d19..113534f 100644 --- a/www/protected/controllers/CandidatoCapacidadController.php +++ b/www/protected/controllers/CandidatoCapacidadController.php @@ -55,6 +55,9 @@ class CandidatoCapacidadController extends Controller { $model=new CandidatoCapacidad; $model->candidato_id = $cid; + + $tecnologia = new CandidatoCapacidadTecnologia(); + $tecnologiasValidas = array(); $candidato = Candidato::model()->findByPk($cid); @@ -73,6 +76,8 @@ class CandidatoCapacidadController extends Controller $this->render('create',array( 'model'=>$model, 'candidato'=>$candidato, + 'tecnologia'=>$tecnologia, + 'tecnologiasValidas'=>$tecnologiasValidas, )); } @@ -83,24 +88,53 @@ class CandidatoCapacidadController extends Controller */ public function actionUpdate($id) { + Yii::import('ext.multimodelform.MultiModelForm'); + $model=$this->loadModel($id); $candidato = Candidato::model()->findByPk($model->candidato_id); + $tecnologia = new CandidatoCapacidadTecnologia(); + $tecnologiasValidas = array(); + // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if(isset($_POST['CandidatoCapacidad'])) { $model->attributes=$_POST['CandidatoCapacidad']; - if($model->save()) { - Yii::app()->user->setFlash('success', Yii::t('intranet', 'Capacidad actualizada correctamente.')); - $this->redirect(array('index', 'cid'=>$candidato->id)); + + $foundInvalidChild = false; + if ($model->validate()) { + if (!MultiModelForm::validate($tecnologia, $tecnologiasValidas, $tecnologiasBorradas)) { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Alguna tecnología no es válida.')); + $foundInvalidChild = true; + } + } else { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Algún dato de la capacidad profesional no es válida.')); + } + + if (!$foundInvalidChild && $model->save() ) { + $masterValues = array ('capacidad_id'=>$model->id); + + if (!MultiModelForm::save($tecnologia, $tecnologiasValidas, $tecnologiasBorradas, $masterValues)) { + Yii::app()->user->setFlash('error', Yii::t('intranet', 'Se ha producido un error al guardar los datos de las tecnologías.')); + $foundInvalidChild = true; + } + + if (!$foundInvalidChild) { + Yii::app()->user->setFlash('success', Yii::t('intranet', 'Capacidad actualizada correctamente.')); + $this->redirect(array('index', 'cid'=>$candidato->id)); + } + } else { + //Yii::app()->user->setFlash('error', Yii::t('intranet', 'Se ha producido un error al guardar la capacidad.')); } } $this->render('update',array( 'model'=>$model, 'candidato'=>$candidato, + 'tecnologia'=>$tecnologia, + 'tecnologiasValidas'=>$tecnologiasValidas, )); } diff --git a/www/protected/models/CandidatoCapacidadTecnologia.php b/www/protected/models/CandidatoCapacidadTecnologia.php index aa7386c..4b74498 100644 --- a/www/protected/models/CandidatoCapacidadTecnologia.php +++ b/www/protected/models/CandidatoCapacidadTecnologia.php @@ -41,11 +41,13 @@ class CandidatoCapacidadTecnologia extends CActiveRecord // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( - array('capacidad_id, tecnologia_id', 'required'), - array('capacidad_id, tecnologia_id, meses_tecnologia', 'numerical', 'integerOnly'=>true), - // The following rule is used by search(). - // Please remove those attributes that should not be searched. - array('id, capacidad_id, tecnologia_id, meses_tecnologia', 'safe', 'on'=>'search'), + array('tecnologia_id', 'required'), + array('capacidad_id, tecnologia_id, meses_tecnologia', 'numerical', 'integerOnly'=>true), + //array('id, capacidad_id, tecnologia_id, meses_tecnologia', 'safe'), + + // The following rule is used by search(). + // Please remove those attributes that should not be searched. + array('id, capacidad_id, tecnologia_id, meses_tecnologia', 'safe', 'on'=>'search'), ); } diff --git a/www/protected/views/candidato/create.php b/www/protected/views/candidato/create.php index e9f560c..5fb2b44 100644 --- a/www/protected/views/candidato/create.php +++ b/www/protected/views/candidato/create.php @@ -14,10 +14,10 @@ $this->pageTitle=Yii::t('intranet', 'Nuevo candidato'); ?> renderPartial('_form', array( - 'model'=>$model, - 'idioma'=>$idioma, - 'titulacion'=>$titulacion, - 'idiomasValidos'=>$idiomasValidos, - 'titulacionesValidas'=>$titulacionesValidas, + 'model'=>$model, + 'idioma'=>$idioma, + 'titulacion'=>$titulacion, + 'idiomasValidos'=>$idiomasValidos, + 'titulacionesValidas'=>$titulacionesValidas, )); ?> \ No newline at end of file diff --git a/www/protected/views/candidatoCapacidad/_form.php b/www/protected/views/candidatoCapacidad/_form.php index 4939ddd..4f292ef 100644 --- a/www/protected/views/candidatoCapacidad/_form.php +++ b/www/protected/views/candidatoCapacidad/_form.php @@ -42,7 +42,7 @@ Yii::app()->clientScript->registerScript('wysiwyg', $script, CClientScript::POS_

- Datos de contacto + Capacidad profesional

@@ -87,7 +87,15 @@ Yii::app()->clientScript->registerScript('wysiwyg', $script, CClientScript::POS_ error($model,'meses_perfil_tecnico', array('class'=>'errortext')); ?>
- + +
+ renderPartial('_tecnologias', array( + 'model'=>$model, + 'tecnologia'=>$tecnologia, + 'tecnologiasValidas'=>$tecnologiasValidas, + )); ?> +
+
diff --git a/www/protected/views/candidatoCapacidad/_tecnologias.php b/www/protected/views/candidatoCapacidad/_tecnologias.php new file mode 100644 index 0000000..ed5eae9 --- /dev/null +++ b/www/protected/views/candidatoCapacidad/_tecnologias.php @@ -0,0 +1,63 @@ +clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/plugins/jquery-ui-1.8.16.custom.min.js'); +?> + +array( + 'tecnologia_id'=>array( + 'type'=>'dropdownlist', + 'layout'=>'{input}', + 'class'=>'ff', + 'items'=>array(0 => '-') + CHtml::listData(Tecnologia::model()->findAll(), 'id', 'descripcion'), + ), + 'meses_tecnologia'=>array( + 'class'=>'sf', + ), + ), +); +?> + +
+ + +
+ widget('ext.multimodelform.MultiModelForm',array( + 'id' => 'id_tecnologia', //the unique widget id + 'addItemText' => '', // no quiero mostrar el enlace de añadir + 'removeText' => 'Eliminar', + 'removeConfirm' => '¿Desea eliminar esta tecnología?', + 'tableHtmlOptions' => array( + 'class' => 'sTable2', + 'width' => '99%', + ), + 'tableView' => true, + 'formConfig' => $tecnologiaFormConfig, //the form configuration array + 'model' => $tecnologia, //instance of the form model + + //if submitted not empty from the controller, + //the form will be rendered with validation errors + 'validatedItems' => $tecnologiasValidas, + + //array of member instances loaded from db + 'data' => $tecnologia->findAll('capacidad_id=:capacidad_id', array(':capacidad_id'=>$model->id)), + + 'removeHtmlOptions' => array( + 'class' => 'button plain', + ), + )); + ?> +
+ +
+
+
diff --git a/www/protected/views/candidatoCapacidad/create.php b/www/protected/views/candidatoCapacidad/create.php index b9955a9..b769d76 100644 --- a/www/protected/views/candidatoCapacidad/create.php +++ b/www/protected/views/candidatoCapacidad/create.php @@ -10,6 +10,8 @@ $this->pageTitle=Yii::t('intranet', 'Nueva capacidad profesional'); ?> renderPartial('_form', array( - 'model'=>$model, + 'model'=>$model, + 'tecnologia'=>$tecnologia, + 'tecnologiasValidas'=>$tecnologiasValidas, )); ?> \ No newline at end of file diff --git a/www/protected/views/candidatoCapacidad/update.php b/www/protected/views/candidatoCapacidad/update.php index f8e8b32..82c3aec 100644 --- a/www/protected/views/candidatoCapacidad/update.php +++ b/www/protected/views/candidatoCapacidad/update.php @@ -10,6 +10,8 @@ $this->pageTitle=Yii::t('intranet', 'Modificar capacidad profesional'); ?> renderPartial('_form', array( - 'model'=>$model, + 'model'=>$model, + 'tecnologia'=>$tecnologia, + 'tecnologiasValidas'=>$tecnologiasValidas, )); ?>