<?php 
/**
 * Este es el formulario de login de usuarios...
 */
class FRMLogin extends AppFormulario
{
	
	protected $_controller;
	
    /**
     * init() hereda de AppFormulario
     */
    public function init()
    {
    	parent::init();
		$this->setName('formulariologin');
       $this->setAddClassFormHorizontal(true);
		if(is_file(APPLICATION_PATH.'/../public/images/logo.png')){
			$mensaje = new EFHtml('mensaje');
			$mensaje->setValue('<img class="logo_usuario"  src="'.PUBLICURL.'/images/logo.png"/>');
			$this->addElement($mensaje);
			$caja = new VstCaja('ii',VstCaja::TIPO_NORMAL,'','wrap_logo_login');
			$caja->addElement($mensaje);
			$this->addElementoVista($caja);
		}
		
		$evento = new EVAjax(AppEvento::APP_EVENTO_SUBMIT);
		$evento->setUrl('/'.$this->_controller.'/login');
		$this->addEvento($evento);
		
		$caja = new VstCaja('form_login');
        
        $campo = new EFTexto('nombre');
        $campo->setLabel('Usuario');
        $campo->setRequired(true);
        $this->addElement($campo);
        $caja->addElement($campo);
    
		$campo = new EFClave('clave');
        $campo->setLabel('Contraseņa');
        $this->addElement($campo);
        $caja->addElement($campo);
        
        //add the submit button
        $submit = new EFSubmit('login');
		$submit->setValue('Entrar');
		$this->addElement($submit);
		$caja->addElement($submit);
		$recuperaContrasenyo = new EFEnlace('recupera');
		$recuperaContrasenyo->setLink('Recupera tu contraseņa', 'usuarios/recuperapass');
		
		$this->addElement($recuperaContrasenyo);
		$caja->addElement($recuperaContrasenyo);
		
		$this->addElementoVista($caja);
    }
    
	public function __construct(Usuario $objeto, $options = null, $controller){
		$this->setObjeto($objeto);
		$this->_controller = $controller;
		parent::__construct($options);
		
	}
    
    
	public function loginAccion($datos){
		
		$objeto = $this->getObjeto();
			if($this->isValid($datos)){
					$valores = $this->getValues();
					try {
						$objeto->login($valores['nombre'], $valores['clave']);
						AppAjax::setRedirigir(BASEURL.'/'.$this->_controller.'/index');
					} catch(Exception $e){
						AppAjax::setMensajeError('#clave',  $e->getMessage());
					}
			}else{
					foreach ($this->getElements() as $element){
						if($element instanceof AppElementoFormulario){
							if(count($element->getMessages()>1))
								foreach($element->getMessages() as $mensaje){
									AppAjax::setMensajeError($element->identificadorScript(), $mensaje);
								}
						}
								
					}
			}
		}			
	
}