<?php
  /**
   * Definición de un perfil para el banco del tiempo de Málaga.
   **/
   class PerfilBtMalaga extends ComponenteBtMalaga {
   
   	static $db = array(
   	                                   'Nombre' => 'Varchar',
   	                                   'Descripcion' => 'Varchar',
   	                                   'Credito' => 'Int'   	                                   
                                         );
                                         
	static $has_one = array(
	                                             'Sistema' => 'SistemaBtMalaga'
	                                            );                                         
	
	public $NombreSistema;
	
	function __construct($record = null, $isSingleton = false) {
		parent::__construct($record, $isSingleton);
		
		$this->NombreSistema = $this->Sistema()->Nombre;
	}	                                            

    /**
     * Devuelve el nombre del componente 
     **/
    public function getNombreComponente() {
        return 'perfil';
    }

	                                            
	/**
	 * Función que indica los campos para poner en el grid de listado.
	 **/
	protected function camposGrid() {
		$resultado = parent::camposGrid();
		$resultado .= '{"Nombre": "Nombre", "Columna":"Nombre", "Ordenacion":"str", "Tipo":"ro", "Tamano":200, "Filtro":"#text_filter", "Alineacion":"left"},';
		$resultado .= '{"Nombre": "Descripci&oacute;n", "Columna":"Descripcion", "Ordenacion":"str", "Tipo":"ro", "Tamano":"*", "Filtro":"#text_filter", "Alineacion":"left"}';
		return $resultado;
	}
	
    /**
     * Función que devuelve los campos para editar
     * el contenido en modo principal.
     **/
    protected function cargarEdicionPrincipal() {
        $pestanasEditable = parent::cargarEdicionPrincipal();       

	//Nombre del contenido.
	$campoNombre = new CampoEditable();
	$campoNombre->setNombre('Nombre');
	$campoNombre->setField(new TextField('Nombre', 'Nombre', $this->Nombre));
	$campoNombre->setValidador(new CampoRequeridoValidador());
	$pestanasEditable->add("Contenido", $campoNombre);

	//Descripción del contenido.
	$campoDescripcion = new CampoEditable();
	$campoDescripcion->setNombre('Descripci&oacute;n');
	$campoDescripcion->setField(new TextareaField('Descripcion', 'Descripcion', 8, 3, $this->Descripcion));
	$campoDescripcion->setValidador(new CampoRequeridoValidador());
	$pestanasEditable->add('Contenido', $campoDescripcion);
	
	//Credito del contenido.
	$campoCredito = new CampoEditable();
	$campoCredito->setNombre('Credito');
	$campoCredito->setField(new TextField('Credito', 'Credito', $this->Credito));
	$campoCredito->setValidador(new NumeroRequeridoValidador());
	$pestanasEditable->add('Contenido', $campoCredito);
	
	//Tipo de sistema.
	$columnasSistema = '{"Campos":[
	                                                   {"Nombre": "", "Columna":"Seleccionado", "Ordenacion":"na", "Tipo":"ra", "Tamano":20, "Filtro":"&nbsp;", "Alineacion":"left"},
						           {"Nombre": "Nombre", "Columna":"Nombre", "Ordenacion":"str", "Tipo":"ro", "Tamano":200, "Filtro":"#text_filter", "Alineacion":"left"},
		                                           {"Nombre": "Descripción", "Columna":"Descripcion", "Ordenacion":"str", "Tipo":"ro", "Tamano":"*", "Filtro":"#text_filter", "Alineacion":"left"}
                                                         ]}';
        $sistemas = DataObject::get('SistemaBtMalaga', 'Borrado=0');
	$sistemaField = new DataGridField(
	                                  'SistemaID',
                                          $columnasSistema,
	                                  $sistemas,                                     	                                                                       $columnasSistema,
	                                  $this->SistemaID
	                                 );     
	$campoSistema = new CampoEditable();
        $campoSistema->setNombre('Sistema');
        $campoSistema->setField($sistemaField);
        $campoSistema->setValidador(new ReferenciaRequeridaValidador());
        $pestanasEditable->add('Sistema', $campoSistema);
	
        return $pestanasEditable;
    }	
    
    /**
     * Devuelve el c�digo par ver el componente.
     **/	
    protected function CodigoVer() {
      return $this->renderWith('PlantillaVerPerfil');
    }

   	/**
	 * Clase que devuelve los botones para el toolbar.
	 * Nota: debe ser sobreescrito por cada componente.
	 **/
	public function botonesToolbar() {
		$this->cargarAcciones();
		$xml = parent::botonesToolbar();
		
		//botón para editar
        $xml .= '<item id="editar#'.$this->ID.'" type="button" text="Editar" img="btmalaga/images/edit.gif" imgdis="btmalaga/images/editdisabled.gif"';
        if (strpos($this->AccionEditar,'javascript') === false) {
        	$xml .= ' enabled="false"';
     	}        
        $xml .= '></item>';		
        
   		//botón para borrar
        $xml .= '<item id="borrar#'.$this->ID.'" type="button" text="Borrar" img="btmalaga/images/delete.gif" imgdis="btmalaga/images/deletedisabled.gif"';
        if (strpos($this->AccionBorrar,'javascript') === false) {
        	$xml .= ' enabled="false"';
     	}        
        $xml .= '></item>';        

        
        return $xml;
    }  

    /**
     * sobreescribe la función para borrar
     */
    public function cargarAcciones() {
      	parent::cargarAcciones();
      	
      	//compruesa si existe algún servicio con el sistema actual
      	if (strpos($this->AccionBorrar, 'javascript') !== false) {
      	  $perfiles = DataObject::get('PerfilUsuarioBtMalaga','PerfilID='.$this->ID);
      	  if (($perfiles) && ($perfiles->Count() > 0)) {
      		$this->AccionBorrar = 'btmalaga/images/deletedisabled.gif^Borrar';
      	  }	      		
      	}
    }    

    /**
     * Devuelve los campos para el formulario para el filtrado de datos.
     **/
    public function formularioFiltro() {
      $sistemas = DataObject::get('SistemaBtMalaga');
      if ($sistemas) {
	  $sistemas = $sistemas->toDropdownMap('ID', 'Nombre', ' ', true);
	}
      $fields = new FieldSet(new DropdownField('Sistema', 'Sistema:', $sistemas));
      return $fields;
    }
	
   }
?>
