<?php
/**
 * Clase para el contenido interior de la web del Banco del Tiempo de Málaga. 
 **/
class ContenidoInteriorWebBtMalaga extends WebBtMalaga {
    static $db = array();
    static $has_one = array();


}

/**
 * Controlador de la clase ContenidoInteriorWebBtMalaga.
 **/
class ContenidoInteriorWebBtMalaga_Controller extends WebBtMalaga_Controller {
  
    /**
     * Almacena la categoria de los servicios.
     **/
    private $categoria;

    //añade los controles necesarios para la vista
    function __construct($record = null, $isSingleton = false) {
        parent::__construct($record, $isSingleton);
        $colector = new NivelCollector();
        $colector->EditableBD = true;
        $colector->TipoBD = 'WebBtMalaga';
        $colector->NivelBD = 3;      
        $colector->setPagina($this);
        $menu = new ContentLoadControl();
        $menu->NombreBD = 'menu1';
        $menu->setColector($colector);
        $this->addControl($menu);
    }

	
    /**
     * Función para poner el menú lateral.
     **/
    public function MenuLateral() {
        if (($this->URLSegment == 'registrarse') || ($this->URLSegment == 'contactar') || ($this->URLSegment == 'mapadelsitio')) {
            return parent::MenuLateral();
        } else {
  	    $resultado = '<ul>';
  	    $hijos = $this->Menu(3);
  	    foreach ($hijos as $hijo) {
                if ($hijo->ID == $this->ID) {
                    $current = 'class="current"';
                    $esCurrent = true;
                } else {
                    $current = ''; 
                    $esCurrent = false;
                }
  	        $resultado .= '<li><div class="menulateral"><a href="'.$hijo->Link().'" '.$current.'>&raquo; '.$hijo->MenuTitle.'</a></div>';
  	        if ($esCurrent) {
  	          $resultado .= $this->subMenuLateral();
              }
              $resultado .='</li>';
  	    }  
  	    $resultado .= '</ul>';
  	    return $resultado;
        }
    }
    
    /**
     * Pinta el submenú lateral.
     **/
    public function subMenuLateral() {
        $resultado = '';
        if (($this->URLSegment == 'ofertas') || (($this->URLSegment == 'demandas'))){
            $categorias = $this->Categorias();
            if ($categorias->Count() > 0) {
                $resultado .= '<ul>';
                foreach ($categorias as $categoria) {
                    if ((isset($_GET['categoria'])) && ($_GET['categoria'] == $categoria->Nombre)) {
                        $current = 'class="subcurrent"';
                    } else {
                        $current = '';
                    }    
                    $resultado .= '<li><a href="'.$this->Link().'?categoria='.$categoria->Nombre.'" '.$current.'>&raquo; '.$categoria->Texto.'</a></li>';
                }
                $resultado .= '</ul>';
            }
        }  
        return $resultado;
    }
  
    /**
     * Devuevle las migas.
     **/
    public function Migas() {
        $page = $this;
	$i = 0;
	$parts = array();
	
	//pone la categoria de los servicios
	$categoria = $this->Categoria();
        if ($categoria) {
            $parts[] = '<a href="'.$this->Link().'?categoria='.$_GET['categoria'].'">'.Convert::raw2xml($categoria->Texto).'</a>';
        }	

	while($page) {
	    if ($page->URLSegment != 'bdtmalaga') {
	        $parts[] = "<a href=\"" . $page->Link() . "\">" . Convert::raw2xml($page->MenuTitle) . "</a>";
	    }   
  	    $page = $page->Parent;
	}
        if ($this->URLSegment == 'registrarse') {
            $pagina = DataObject::get_one('SiteTree',"URLSegment='participantes'");
            $parts[] = "<a href=\"" . $pagina->Link() . "\">" . Convert::raw2xml($pagina->MenuTitle) . "</a>";
        }
	$resultado = implode(" &raquo; ", array_reverse($parts));
		
	return $resultado;
    }
  
    /**
     * Dependiendo de la página que sea renderiza su plantilla.
     **/
    public function init() {
        parent::init();
        switch ($this->URLSegment) {
    	    case 'ofertas': $this->setPlantilla('PlantillaListadoOfertas');
    	                    break;	
    	    case 'demandas': $this->setPlantilla('PlantillaListadoDemandas');
    	                     break;    	                 
    	    case 'mapadelsitio': $this->setPlantilla('PlantillaMapaDelSitio');
    	                         break;    	                 
    	    case'registrarse': $this->setPlantilla('PlantillaRegistrarse');
    	                       break;    	                 
        }
    }
  
    /**
     * Indica si se ha seleccionado categoria para listar los servicios.
     **/
    public function HayCategoria() {
        $hay = false;
        if (isset($_GET['categoria'])) {
            $hay = true;
        }  
        return $hay;
    }
    
    /**
     * Devuelve todas las categorias de los servicios.
     **/
    public function Categorias() {
        return DataObject::get('CategoriaServicioBtMalaga');
    }

    /**
     * Devuelve la categoria actual para los servicios.
     **/
    public function Categoria() {
        if ((!$this->categoria) && (isset($_GET['categoria']))) {
            $this->categoria = DataObject::get_one('CategoriaServicioBtMalaga',"Nombre='".$_GET['categoria']."'");
        }    
        return $this->categoria;
    }
          
    /**
     * Devuelve el listado de ofertas.
     */
    public function listadoOfertas() {
        $categoria = DataObject::get_one('CategoriaServicioBtMalaga',"Nombre='".$_GET['categoria']."'");
        $componentes = DataObject::get('OfertaBtMalaga','Publicado=1 AND Borrado=0 AND CategoriaID='.$categoria->ID,'LastEdited DESC');
  	$hayComponentes = false;
  	$documento = '{rows:[';
	if ($componentes != null) {
	    $hayComponentes = true;
	    foreach ($componentes as $componente) {
	        $sistema = DataObject::get_by_id('SistemaBtMalaga',$componente->SistemaID);
		$documento .= '{id:'.$componente->ID.',data:["btmalaga/images/show.png^Ver datos de la oferta^participantes/verDatosOferta/'.$componente->ID.'^_self",';
		$documento .= '"'.$sistema->Nombre.'",';
		$documento .= '"'.$componente->Titulo.'"';
		$documento .= ']},';
	    }
	}
	//quita la ultima coma.
	if ($hayComponentes) {
	    $documento = substr($documento, 0, -1);
	}
	$documento .= ']}';
	return $documento;
    }
  
    /**
     * Carga un datagrid.
     */
    public function cargarGrid($tipo) {
        //incluye el css y el javascript necesario.
  	Requirements::css('dhtmlx/dhtmlxgrid/dhtmlxgrid.css');
  	Requirements::css('dhtmlx/dhtmlxgrid/skins/dhtmlxgrid_dhx_skyblue.css');
  	Requirements::css('dhtmlx/dhtmlxgrid/ext/dhtmlxgrid_pgn_bricks.css');
  	Requirements::javascript('dhtmlx/dhtmlxcommon/dhtmlxcommon.js');
  	Requirements::javascript('dhtmlx/dhtmlxgrid/dhtmlxgrid.js');
  	Requirements::javascript('dhtmlx/dhtmlxgrid/dhtmlxgridcell.js');
  	Requirements::javascript('dhtmlx/dhtmlxgrid/ext/dhtmlxgrid_filter.js');
  	Requirements::javascript('dhtmlx/dhtmlxgrid/ext/dhtmlxgrid_pgn.js');
  	Requirements::javascript('jsparty/jquery/jquery.js');
  	
  	$direccionCargaDatos = $this->URLSegment.'/'.$tipo.'?categoria='.$_GET['categoria'];
	Requirements::customScript(<<<JS
			var mygrid;
			function doInitGrid() {
				mygrid = new dhtmlXGridObject("mygrid_container");
				mygrid.setImagePath("dhtmlx/dhtmlxgrid/imgs/");
				mygrid.setHeader("&nbsp;,Sistema,T&iacute;tulo");
				mygrid.setColSorting("na,str,str");
				mygrid.setColTypes("img,ro,ro");
				mygrid.setColAlign("left,left,left");
				mygrid.setInitWidths("20,180,*");	
				mygrid.attachHeader("&nbsp;,#text_filter,#text_filter");
				mygrid.enablePaging(true,10,5,"pagingArea",true,"recinfoArea");
				mygrid.setSkin("dhx_skyblue");
				mygrid.setPagingSkin("bricks");
				mygrid.init();
				mygrid.load("$direccionCargaDatos","json");
			}
			$(document).ready(
				 function() {  doInitGrid(); }
                               );			                                                                       	    
JS
	  	);  	
    }
  
    /**
     * Devuelve el listado de demandas.
     */
    public function listadoDemandas() {
        $categoria = DataObject::get_one('CategoriaServicioBtMalaga',"Nombre='".$_GET['categoria']."'");
        $componentes = DataObject::get('DemandaBtMalaga','Publicado=1 AND Borrado=0 AND CategoriaID='.$categoria->ID,'LastEdited DESC');
  	
  	$documento = '{rows:[';
	if ($componentes != null) {
	    foreach ($componentes as $componente) {
	        $sistema = DataObject::get_by_id('SistemaBtMalaga',$componente->SistemaID);
		$documento .= '{id:'.$componente->ID.',data:["btmalaga/images/show.png^Ver datos de la demanda^participantes/verDatosDemanda/'.$componente->ID.'^_self",';
		$documento .= '"'.$sistema->Nombre.'",';
		$documento .= '"'.$componente->Titulo.'"';
		$documento .= ']},';
	    }
	}
	//quita la ultima coma.
	$documento = substr($documento, 0, -1);	
	$documento .= ']}';
	return $documento;
    }
  
    /**
     * Carga el mapa del sitio.
     **/
    public function ponerMapaDelSitio() {
        $resultado = '<ul>';
        $padreUno = DataObject::get_one('WebBtMalaga',"URLSegment='bdtmalaga'");  	
  	$primerNivel = DataObject::get('WebBtMalaga','ParentID='.$padreUno->ID);
  	foreach ($primerNivel as $nivel1) {
  	    $resultado .= '<li><a href="'.$nivel1->Link().'">&raquo; '.$nivel1->MenuTitle.'</a>';
            $segundoNivel = DataObject::get('WebBtMalaga','ParentID='.$nivel1->ID);
            if ($segundoNivel != null) {
                foreach ($segundoNivel as $nivel2) {
                    $resultado .= '<li><a href="'.$nivel2->Link().'">&raquo; '.$nivel2->MenuTitle.'</a></li>';
       	        }
            }
  	    $resultado .= '</li>';
        }
  	$resultado .= '</ul>';
  	return $resultado;
    }
    
    /**
     * Carga el formulario de registro.
     **/
    public function FormularioRegistro() {
        $formulario = new FormularioRegistroUsuarioBtMalaga($this,'FormularioRegistro');
        return $formulario;
    }
  
}
?>
