<?php
  /**  
   *  Autor: Juan Antonio Garrido Dom锟絥guez - jagarrido@almogia.net
   *  
   *  Versi锟絥: 1.0
   *
   *  Control que define un formulario de edici锟絥 para los controles.
   *
   **/ 
  class FormularioEditableBtMalaga extends FormularioEditableControl {
  
    /**
     * M锟絫odo para las acciones de edici锟絥 del control.
     **/
    public function ejecutarAccion() {
      $datos = $this->Datos();
      $parametros = explode('&',$datos[ControlPicasso::PARAMETRO_ACCION]);
      $accion = $parametros[0];
      $resultado = '';
      switch ($accion) {
        case OpcionMenuBtMalaga::ACCION_RECARGAR_POSICION_OPCION:
                                                              $datosFields = $datos['datos'];
                                                              $datosFields['PosicionMenu'] = null;
                                                              $datos['datos'] = $datosFields;
                                                              $this->setDatos($datos);                                                                       
                                                              $this->mapearDatos($datos);                                                                                                                           
                                                              $resultado .= $this->renderizar();
                                                              break;
      }
      $resultado .= parent::ejecutarAccion();
      return $resultado;      
    }
    
    /**
     * Devuelve el c锟絛igo javascript para cerrar la ventana.
     * Nota: Sobreescribe el m锟絫odo del padre.
     **/
    protected function cerrarVentana($recurso, $datos) {
      $esNuevo = '0';
      if ((isset($datos[ControlPicasso::PARAMETRO_NUEVO_RECURSO])) && ($datos[ControlPicasso::PARAMETRO_NUEVO_RECURSO] == 'si')) {
        $esNuevo = '1';
        $recurso->borrar();
      }
      $actualizarDataGrid = '1';
      if ((isset($datos[ComponenteBtMalagaControl::PARAMETRO_ACTUALIZAR_DATOS_GRID])) && ($datos[ComponenteBtMalagaControl::PARAMETRO_ACTUALIZAR_DATOS_GRID] == 'no')) {
        $actualizarDataGrid = '0';
      }
      $recargarVentana = '0';
      if ($recurso instanceof OpcionMenuBtMalaga) {
      	$recargarVentana = '1';
      } 
      
      //indica si es una factura, para ir a su opci锟絥.
      //Nota: mejorar esto
      $esFactura = '0';
      if ($recurso instanceof FacturaBtMalaga) {
      	$esFactura = '1';
      }
      
      //indica si es una opini锟絥, para ir a su opci锟絥.
      //Nota: mejorar esto
      $esOpinion = '0';
      $usuario = Member::currentUser();
      if (($recurso instanceof OpinionServicioBtMalaga) && ($usuario->ID == $recurso->AutorID)) {
      	$esOpinion = '1';
      }      
      $variables = array('idComponenteAEditar' => $this->RecursoAEditar()->ID,
                         'ActualizarDatosEdicionComponente' => $this->actualizarDatosEdicionComponente(),
                         'esNuevo' => $esNuevo,
                         'recargarVentana' => $recargarVentana, 
                         'actualizarDataGrid' => $actualizarDataGrid,
                         'esFactura' => $esFactura,
                         'esOpinion' => $esOpinion
                        );
      Requirements::javascriptTemplate('btmalaga/javascript/editarcomponente.js', $variables);
      return $this->renderizar();
    }   

   /**
    * Funci髇 para actualizar los datos de edici锟絥 de un componente.
    **/
  public function actualizarDatosEdicionComponente() {
  	$componente = $this->RecursoAEditar();
  	$resultado = '';
  	if (!$componente->puedeLeer()) {
 		//elimina la fila. 		
 		$resultado .= 'mygrid.deleteRow('.$componente->ID.');';
  	} else {
  	  	$componente->cargarAcciones();
  	  	$campos = json_decode($componente->getCamposGrid());
  	  	$contador = 0;
  	  	foreach ($campos->Campos as $campo) {
  	  	  $nombreCampo = $campo->Columna;  	  	  
  	  	  $resultado .= "mygrid.cells(".$componente->ID.",".$contador++.").setValue('".$componente->$nombreCampo."');";
  	  	}  
  	}
  	return $resultado;
  }	



  }	
?>
