Example #1
0
	/**
	 * Genera el listado ABM con las funciones de editar, nuevo y borrar (segun la configuracion).
	 * NOTA: Esta funcion solamente genera el listado, se necesita usar la funcion generarAbm() para que funcione el ABM.
	 *
	 * @param string $sql Query SQL personalizado para el listado. Usando este query no se usa $adicionalesSelect
	 * @param string $titulo Un titulo para mostrar en el encabezado del listado
	 */
	public function generarListado($sql="", $titulo){
		global $db;
		
		//por cada campo...
		for ($i=0;$i<count($this->campos);$i++){
			if($this->campos[$i][campo] == "") continue;
			if($this->campos[$i][noListar] == true) continue;
			if($this->campos[$i][noOrdenar] == true) continue;
			
			//para la class de ordenar por columnas
			if($camposOrder != "")$camposOrder .= "|";
			$camposOrder .= $this->campos[$i][campo];
			
			//campos para el select
			if($camposSelect != "")$camposSelect .= ", ";
			$camposSelect .= $this->campos[$i][campo];
		}

		$o = new class_orderby($this->orderByPorDefecto, $camposOrder);
		
		if($o->getOrderBy()!="") $orderBy = " ORDER BY ".$o->getOrderBy();
		
		if ($sql=="") {
			$sql = "SELECT $this->campoId, $camposSelect FROM $this->tabla WHERE 1 $this->adicionalesSelect $orderBy";
		}else{
			$sql = $sql." ".$orderBy;
		}

		$paginado = new class_paginado;
		$paginado->registros_por_pagina = $this->registros_por_pagina;
		$result = $paginado->query($sql);
		
		//genera el query string de variables previamente existentes
		$get = $_GET;
		unset($get[abmsg]);
		$qs = http_build_query($get);
		if($qs!="") $qs = "&".$qs;
		
		echo "<div class='mabm'>";
		?>
		<script type="text/javascript">
		function abmBorrar(id, idObjetoHtml){
			var classAnt = document.getElementById(idObjetoHtml).style.backgroundColor;
			
			//resalto el elemento que se va a borrar
			document.getElementById(idObjetoHtml).style.backgroundColor = 'yellow';
			
			if (confirm("<?=$this->textoPreguntarBorrar?>")){
				window.location = "<?= $_SERVER[PHP_SELF]."?".$qs."&abm_borrar=" ?>" + id;
			}
			
			document.getElementById(idObjetoHtml).style.backgroundColor = classAnt;
		}
		</script>
		<?
		if (isset($_GET[abmsg])) {
			echo "<div class='merror'>".urldecode($_GET[abmsg])."</div>";
		}
		
		echo "<table class='mlistado' $this->adicionalesTableListado> \n";
		
		//titulo y boton nuevo
		echo "<thead>";
		echo "<tr><th colspan=".(count($this->campos)+2).">";
		
		echo "<div class='mtitulo'>$titulo</div>";
		
		if($this->mostrarNuevo){
			echo "<div class='mbotonera'>";
			echo sprintf($this->iconoAgregar, "$_SERVER[PHP_SELF]?abm_nuevo=1$qs");
			echo "</div>";
		}
		
		echo "</th></tr> \n";
		echo "</thead>";
		//fin titulo y boton nuevo
			
		if($paginado->total_registros > 0){
			
			//columnas del encabezado
			if($this->mostrarEncabezadosListado){
				echo "<tr> \n";
				foreach($this->campos as $campo){
					if($campo[noListar] == true) continue;
					
					if($campo[campo]=="" or $campo[noOrdenar]){
						echo "<th>".($campo[tituloListado]!="" ? $campo[tituloListado] : ($campo[titulo]!=''?$campo[titulo]:$campo[campo]))."</th> \n";
					}else{
						echo "<th>".$o->linkOrderBy( ($campo[tituloListado]!="" ? $campo[tituloListado] : ($campo[titulo]!=''?$campo[titulo]:$campo[campo])), $campo[campo])."</th> \n";
					}
				}
				if ($this->mostrarEditar) echo "<th class='tituloColEditar'>$this->textoEditarListado</th> \n";
				if ($this->mostrarBorrar) echo "<th class='tituloColBorrar'>$this->textoBorrarListado</th> \n";
				echo "</tr> \n";
			}
			
			//filas de datos
			$i = 0;
			while ($fila = $db->fetch_array($result)) {
				$fila = $this->limpiarEntidadesHTML($fila);
				$i++;
				$rallado = !$rallado;
				
				echo "<tr class='rallado$rallado' id='t$i'";
				if(isset($this->evalEnTagTR)) eval($this->evalEnTagTR);
				echo "> \n";
				foreach($this->campos as $campo){
					if($campo[noListar] == true) continue;
					
					if($campo['centrarColumna']){
						$centradoCol = 'align="center"';
					}else{
						$centradoCol = '';
					}
					
					if ($campo[customEvalListado] != "") {
						
						extract($GLOBALS);
						$id = $fila[$this->campoId];
						$valor = $fila[$campo[campo]];
						eval($campo[customEvalListado]);
						
					}elseif ($campo[customFuncionListado] != "") {
						
						call_user_func_array($campo[customFuncionListado], array($fila));
						
					}elseif ($campo[customPrintListado] != "") {
						
						echo "<td $centradoCol>";
						$campo[customPrintListado] = str_ireplace('{id}', $fila[$this->campoId], $campo[customPrintListado]);
						echo sprintf($campo[customPrintListado], $fila[$campo[campo]]);
						echo "</td> \n";
						
					}else{
						
						if ($campo[tipo] == "bit") {
							if ($fila[$campo[campo]]) {
								echo "<td $centradoCol>".$campo[datos][1]."</td> \n";
							}else{
								echo "<td $centradoCol>".$campo[datos][0]."</td> \n";
							}
						}else{

							//si es tipo fecha lo formatea
							if ($campo[tipo] == "fecha") {
								if( $fila[$campo[campo]] != "" and $fila[$campo[campo]] != "0000-00-00" and $fila[$campo[campo]] != "0000-00-00 00:00:00" ){
									if (strtotime($fila[$campo[campo]]) !== -1){
										$fila[$campo[campo]] = date($this->formatoFechaListado, strtotime($fila[$campo[campo]]));
									}
								}
							}

							echo "<td $centradoCol>".$fila[$campo[campo]]."</td> \n";
						}
						
					}
					
				}
				if ($this->mostrarEditar) echo "<td class='celdaEditar'>".sprintf($this->iconoEditar, $_SERVER[PHP_SELF]."?abm_editar=".$fila[$this->campoId].$qs)."</td> \n";
				if ($this->mostrarBorrar) echo "<td class='celdaBorrar'>".sprintf($this->iconoBorrar, "javascript:abmBorrar('".$fila[$this->campoId]."', 't$i');void(0)")."</td> \n";
				echo "</tr> \n";
			}
			
			if($paginado->total_paginas > 1){
				echo "<tfoot> \n";
				echo "<tr> \n";
				echo "<th colspan=".(count($this->campos)+2).">";
				$paginado->mostrar_paginado();
				echo "</th> \n";
				echo "</tr> \n";
				echo "</tfoot> \n";
			}
			
		}else{
			
			echo "<td colspan=".(count($this->campos)+2).">$this->textoNoHayRegistros</td>";
			
		}
		
		echo "</table> \n";
		echo "</div>";
		
		if ($this->mostrarNuevo){
			//genera el query string de variables previamente existentes
			$get = $_GET;
			unset($get[abmsg]);
			unset($get[$o->variableOrderBy]);
			$qs = http_build_query($get);
			if($qs!="") $qs = "&".$qs;
		}
		
	}
Example #2
0
    public function generarListado($sql = "", $titulo)
    {
        global $db;
        //por cada campo...
        for ($i = 0; $i < count($this->campos); $i++) {
            if ($this->campos[$i][campo] == "") {
                continue;
            }
            if ($this->campos[$i][noListar] == true) {
                continue;
            }
            if ($this->campos[$i][noOrdenar] == true) {
                continue;
            }
            //para la class de ordenar por columnas
            if ($camposOrder != "") {
                $camposOrder .= "|";
            }
            $camposOrder .= $this->campos[$i][campo];
            //campos para el select
            if ($camposSelect != "") {
                $camposSelect .= ", ";
            }
            $camposSelect .= $this->campos[$i][campo];
        }
        $o = new class_orderby($this->orderByPorDefecto, $camposOrder);
        if ($o->getOrderBy() != "") {
            $orderBy = " ORDER BY " . $o->getOrderBy();
        }
        if ($sql == "") {
            if ($this->campoId == "") {
                $sql = "SELECT {$camposSelect} FROM {$this->tabla} WHERE 1 {$this->adicionalesSelect} ";
            } else {
                $sql = "SELECT {$this->campoId}, {$camposSelect} FROM {$this->tabla} WHERE 1 {$this->adicionalesSelect} ";
            }
        } else {
            $sql = $sql . " Where 1 ";
        }
        // -------------------------------------------------------------
        // Todo lo relacionado con el buscador fue introducidos
        // por sergio. Las funciones estan en el
        // archivo propia.js
        if ($_GET['Buscar'] != "") {
            if ($this->mostrarBuscador) {
                if ($this->adicionales_buscar_Select == "") {
                    $sql = $sql . " {$orderBy}";
                } else {
                    $sql = $sql . " {$this->adicionales_buscar_Select} {$orderBy}";
                }
                // reemplazamos la variable "@1" por el valor ingresado en el edit de busqueda.
                $sql = str_replace('@1', $_GET['Buscar'], $sql);
            } else {
                $sql = $sql . " {$orderBy}";
            }
        }
        //--------------------------------------------------------------
        $paginado = new class_paginado();
        $paginado->registros_por_pagina = $this->registros_por_pagina;
        $result = $paginado->query($sql);
        //genera el query string de variables previamente existentes
        $get = $_GET;
        unset($get[abmsg]);
        $qs = http_build_query($get);
        if ($qs != "") {
            $qs = "&" . $qs;
        }
        echo "<div class='mabm'>";
        ?>
                <script type="text/javascript" src="../js/propias.js"></script>
		<script type="text/javascript">
                    
		function abmBorrar(id, idObjetoHtml){
			var classAnt = document.getElementById(idObjetoHtml).style.backgroundColor;			
			//resalto el elemento que se va a borrar
			document.getElementById(idObjetoHtml).style.backgroundColor = 'yellow';			
			if (confirm("<?php 
        echo $this->textoPreguntarBorrar;
        ?>
")){
				window.location = "<?php 
        echo $_SERVER[PHP_SELF] . "?" . $qs . "&abm_borrar=";
        ?>
" + id;
			}			
			document.getElementById(idObjetoHtml).style.backgroundColor = classAnt;
		}
                
                
                function abmBuscar(){
                        var x = document.getElementById('e_buscar').value;
                        window.location = "<?php 
        echo $_SERVER[PHP_SELF] . "?" . $qs . "&Buscar=";
        ?>
" + x;

                }
                
                
		</script>
		<?php 
        if (isset($_GET[abmsg])) {
            echo "<div class='merror'>" . urldecode($_GET[abmsg]) . "</div>";
        }
        echo "<div class=centraTabla>";
        // por sergio
        echo "<table class='mlistado' {$this->adicionalesTableListado}> \n";
        //titulo y botonera nuevo
        echo "<thead>";
        echo "<tr><th rowspan='2'><img src='" . $this->logo . "'></th>";
        echo "    <th colspan=" . count($this->campos) . ">";
        echo "    <div class='mtitulo'>{$titulo}</div>";
        if ($this->mostrarNuevo) {
            echo "<div class='mbotonera'>";
            echo sprintf($this->iconoAgregar, "{$_SERVER['PHP_SELF']}?abm_nuevo=1{$qs}");
            echo "</div>";
        }
        echo "</th></tr> \n";
        //--------------------------------------------------------------
        // buscador en el listado
        if ($this->mostrarBuscador) {
            echo "<tr><th colspan=" . count($this->campos) . ">";
            echo "<div id='buscador'><span class='mbusqueda'>{$this->textoBusqueda}:</span><input id='e_buscar' value='" . $_GET['Buscar'] . "' width='100%' />";
            echo "     <div class='mbotonera' onclick='abmBuscar();'>";
            echo sprintf($this->iconoBuscar, "{$_SERVER['PHP_SELF']}");
            echo "     </div>";
            echo "</div>";
            echo "</tr>";
        } else {
            echo "<tr><th colspan=" . count($this->campos) . "></th></tr>";
        }
        //--------------------------------------------------------------
        //  Paginado superior. Se muetsra solo si es el superior o ambos.
        if ($this->mostrarPaginado == 1 || $this->mostrarPaginado == 3) {
            if ($paginado->total_paginas > 1) {
                echo "<tr> \n";
                echo "<th colspan=" . (count($this->campos) + 2) . ">";
                echo "<span class='paginado'>" . $paginado->mostrar_paginado() . "</span>";
                echo "</th> \n";
                echo "</tr> \n";
            }
        }
        echo "</thead>";
        //--------------------------------------------------------------
        //fin titulo y botonera nuevo
        if ($paginado->total_registros > 0) {
            //columnas del encabezado
            if ($this->mostrarEncabezadosListado) {
                echo "<tr> \n";
                foreach ($this->campos as $campo) {
                    if ($campo[noListar] == true) {
                        continue;
                    }
                    if ($campo[campo] == "" or $campo[noOrdenar]) {
                        echo "<th>" . ($campo[tituloListado] != "" ? $campo[tituloListado] : ($campo[titulo] != '' ? $campo[titulo] : $campo[campo])) . "</th> \n";
                    } else {
                        echo "<th>" . $o->linkOrderBy($campo[tituloListado] != "" ? $campo[tituloListado] : ($campo[titulo] != '' ? $campo[titulo] : $campo[campo]), $campo[campo]) . "</th> \n";
                    }
                }
                if ($this->mostrarEditar) {
                    echo "<th class='tituloColEditar'>{$this->textoEditarListado}</th> \n";
                }
                if ($this->mostrarBorrar) {
                    echo "<th class='tituloColBorrar'>{$this->textoBorrarListado}</th> \n";
                }
                echo "</tr> \n";
            }
            //filas de datos
            $i = 0;
            while ($fila = $db->fetch_array($result)) {
                $fila = $this->limpiarEntidadesHTML($fila);
                $i++;
                $rallado = !$rallado;
                // ---------------------------------------------
                // onmouseover y onmouseout fueron introducidos
                // por sergio. Las funciones estan en el
                // archivo propia.js
                echo "<tr class='rallado{$rallado}' id='t{$i}' onmouseover='cambiar_color_over(this);' onmouseout='cambiar_color_out(this);'   ";
                if (isset($this->evalEnTagTR)) {
                    eval($this->evalEnTagTR);
                }
                echo "> \n";
                foreach ($this->campos as $campo) {
                    if ($campo[noListar] == true) {
                        continue;
                    }
                    if ($campo['centrarColumna']) {
                        $centradoCol = 'align="center"';
                    } else {
                        $centradoCol = '';
                    }
                    if ($campo[customEvalListado] != "") {
                        extract($GLOBALS);
                        $id = $fila[$this->campoId];
                        $valor = $fila[$campo[campo]];
                        eval($campo[customEvalListado]);
                    } elseif ($campo[customFuncionListado] != "") {
                        call_user_func_array($campo[customFuncionListado], array($fila));
                    } elseif ($campo[customPrintListado] != "") {
                        echo "<td {$centradoCol}>";
                        $campo[customPrintListado] = str_ireplace('{id}', $fila[$this->campoId], $campo[customPrintListado]);
                        echo sprintf($campo[customPrintListado], $fila[$campo[campo]]);
                        echo "</td> \n";
                    } elseif ($campo[tipo] == "bit") {
                        if ($fila[$campo[campo]]) {
                            echo "<td {$centradoCol}>" . $campo[datos][1] . "</td> \n";
                        } else {
                            echo "<td {$centradoCol}>" . $campo[datos][0] . "</td> \n";
                        }
                    } elseif ($campo[tipo] == "fecha") {
                        //si es tipo fecha lo formatea
                        if ($fila[$campo[campo]] != "" and $fila[$campo[campo]] != "0000-00-00" and $fila[$campo[campo]] != "0000-00-00 00:00:00") {
                            if (strtotime($fila[$campo[campo]]) !== -1) {
                                $fila[$campo[campo]] = date($this->formatoFechaListado, strtotime($fila[$campo[campo]]));
                            }
                        }
                        echo "<td {$centradoCol}>" . $fila[$campo[campo]] . "</td> \n";
                    } elseif ($campo[tipo] == "hora") {
                        if ($fila[$campo[campo]] != "" and $fila[$campo[campo]] != "00:00" and $fila[$campo[campo]] != "00:00:00") {
                            if (strtotime($fila[$campo[campo]]) !== -1) {
                                $fila[$campo[campo]] = date($this->formatoHoraListado, strtotime($fila[$campo[campo]]));
                            }
                        }
                        echo "<td {$centradoCol}>" . $fila[$campo[campo]] . "</td> \n";
                    } elseif ($campo[tipo] == "color") {
                        //si es tipo Color lo formatea
                        if ($fila[$campo[campo]] != "") {
                            if (strtotime($fila[$campo[campo]]) !== -1) {
                                $color = $fila[$campo[campo]];
                            }
                        }
                        echo "<td bgcolor=" . $color . " {$centradoCol}>" . $fila[$campo[campo]] . "</td> \n";
                    } else {
                        echo "<td  {$centradoCol}>" . $fila[$campo[campo]] . "</td> \n";
                    }
                }
                // fin del forich
                if ($this->mostrarEditar) {
                    echo "<td class='celdaEditar'>" . sprintf($this->iconoEditar, $_SERVER[PHP_SELF] . "?abm_editar=" . $fila[$this->campoId] . $qs) . "</td> \n";
                }
                if ($this->mostrarBorrar) {
                    echo "<td class='celdaBorrar'>" . sprintf($this->iconoBorrar, "javascript:abmBorrar('" . $fila[$this->campoId] . "', 't{$i}');void(0)") . "</td> \n";
                }
                echo "</tr> \n";
            }
            if ($this->mostrarPaginado == 2 || $this->mostrarPaginado == 3) {
                if ($paginado->total_paginas > 1) {
                    echo "<tfoot> \n";
                    echo "<tr> \n";
                    echo "<th colspan=" . (count($this->campos) + 2) . ">";
                    $paginado->mostrar_paginado();
                    echo "</th> \n";
                    echo "</tr> \n";
                    echo "</tfoot> \n";
                }
            }
        } else {
            echo "<td colspan=" . (count($this->campos) + 2) . ">{$this->textoNoHayRegistros}</td>";
        }
        echo "</table> \n";
        echo "</div>";
        // por sergio
        if ($this->mostrarNuevo) {
            //genera el query string de variables previamente existentes
            $get = $_GET;
            unset($get[abmsg]);
            unset($get[$o->variableOrderBy]);
            $qs = http_build_query($get);
            if ($qs != "") {
                $qs = "&" . $qs;
            }
        }
    }