Tuneando el doc root de Apache

Iniciado por Gus Garsaky, Mayo 10, 2015, 07:14:32 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 10, 2015, 07:14:32 PM Ultima modificación: Mayo 11, 2015, 12:15:26 PM por Gus Garsaky
Se me ocurrió ver mis proyectos "con estilo", así que, hice un pequeño script PHP y JS para que mis proyectos PHP se vean como una colección.

Los únicos requisitos son:


  • jQuery 2.x
  • Poner una imagen .png, .jpg, .jpeg o .gif en el root de nuestros proyectos.

Primero escribamos una función que lea los folders (proyectos) que hay en nuestro document root:

Código: php
function getAll() {
    $files = scandir(".");
    $folders = array(); // solo carpetas (nombres)
    $images = array(); // imagenes de las carpetas
    $pack = array(); // carpetas e imagenes

    foreach($files as $current) {
        if($current == "." || $current == "..") {
            continue;
        } else {
            if(is_dir($current)) {
                array_push($folders, $current);
            }
        }
    }
}


Ya tenemos solo las carpetas que hay en nuestro document root. Ahora, necesitamos checkear cada carpeta para buscar la imagen que usarmos como portada del proyecto:

Código: php
function getAll() {
    $files = scandir(".");
    $folders = array(); // solo carpetas (nombres)
    $images = array(); // imagenes de las carpetas
    $pack = array(); // carpetas e imagenes

    foreach($files as $current) {
        if($current == "." || $current == "..") {
            continue;
        } else {
            if(is_dir($current)) {
                array_push($folders, $current);
            }
        }
    }
    foreach($folders as $folder) {
        $files = scandir($folder);
        foreach($files as $file) {
            // si la carpeta está vacía (. y ..)
            if(count($files) < 3) {
                array_push($images, NULL);
                break;
            }
            // si no está vacía, ignora el . y .. leídos
            if($file == "." || $file == "..") {
                continue;
            }
            // checkea si el fichero es una imagen y la agrega al array
            if(strpos($file, ".jpg") || strpos($file, ".jpeg")
               || strpos($file, ".png") || strpos($file, ".gif")) {
               array_push($images, $file);
            }

        }
    }
    $pack["folders"] = $folders;
    $pack["images"] = $images;

    return json_encode($pack);
}


Ya tenemos los nombres de las carpetas e imágenes, pero necesitamos obtenerlos desde JS. Lo podemos hacer fácilmente:

Código: javascript
$(document).on("ready", init);

function init() {
    var all = <?php echo getAll(); ?>;
}


Ya las tenemos en el cliente, solo nos basta crear los elementos HTML que representarán nuestros proyectos y que utilizarán las imágenes de cada proyecto como portadas. En caso no el proyecto no tenga imagen, se colocará una que está encodeada en base64. Veamos como lo realizamos:

Código: javascript
$(document).on("ready", init);

function init() {
    var all = <?php echo getAll(); ?>;

    createDivs(all);

    function createDivs(data) {
        var folderNames = data["folders"];
        var folderImages = data["images"];
        var html = "<div class='project'>"+
            "<section class='back'>"+
            "<a class='link' href='#'>IR</a>"+
            "</section>"+
            "<section class='content'>"+
            "<section class='project-header'></section>"+
            "<section class='project-body'><img /></section>"+
            "</section>"+
            "</div>";
        for(var i=0; i<folderNames.length; i++) {
            $(".wrapper").append(html);
            var current = $(".project")[i];
            $(current).find(".project-header").html(folderNames[i]);
            // si la imagen existe (no es null)
            if(folderImages[i] !== undefined && folderImages[i] !== null) {
                $(current).find(".project-body > img").attr("src", folderNames[i]+"/"+folderImages[i]);
            } else { // de lo contrario asigna una por defecto en base64
                $(current).find(".project-body > img").attr("src", "data:image/jpg;base64,"+defaultImage);
            }
            $(current).find(".link").attr("href", folderNames[i]+"/"); // establece el link del proyecto
         }

var defaultImage = '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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/9k=';
    }
}


Ya tenemos toda nuestra lógica. Ahora solo nos queda hacer el HTML darle un poco de "estilo":

HTML

Código: html5
<!DOCTYPE html>
<html lang="es">
<head>
<link rel="icon" type="img/image/png" href="http://i.imgur.com/Fy36fAm.png"/>
<meta charset="UTF-8">
<title>Projects</title>
<!-- aquí irán nuestros estilos -->
</head>
<body>
<header>
<nav class="navbar">
<span>ÉSTOS SON TUS PROYECTOS</span>
</nav>
</header>
<section class="wrapper"></section>
<script src="http://code.jquery.com/jquery-latest.js"></script>
        <!-- aquí irá nuestro código JS -->
</body>
</html>


CSS

Código: css

* {
margin: 0px;
padding: 0px;
}
body {
background: #fff;
padding: 25px 50px;
}
.wrapper {
display: flex;
flex-flow: row wrap;
}
header {
display: block;
margin-bottom: 32px;
width: 100%;
}
.navbar {
display: block;
padding: .5rem;
text-align: center;
width: 100%;
}
.navbar > span {
font-family: 'dosis', 'segoe ui';
font-size: 24pt;
font-weight: normal;
}
.project {
background-color: #f7f7f7;
border-radius: 2px;
border-top: 2px solid #1E90FF;
box-shadow: 0px 2px 2px rgba(0,0,0,0.3);
display: flex;
height: 250px;
margin: 0px 30px 30px 0px;
overf low: hidden;
width: 200px;
}
.project:hover {
cursor: pointer;
}
.project:hover > .back {
width: 100%;
}
.project:hover > .content {
width: 0px;
}
.project > .content {
display: block;
height: 100%;
transition: width .3s ease-out;
width: 100%;
}
.project > .back {
align-items: center;
background-color: #eee;
display: flex;
height: 100%;
justify-content: center;
overflow: hidden;
transition: width .3s ease-out;
width: 0px;
}
.back > .link {
align-items: center;
color: #1e90ff;
display: flex;
font-family: 'segoe ui';
font-size: 20pt;
height: 100%;
justify-content: center;
padding: .8rem 1.5rem;
text-decoration: none;
text-transform: uppercase;
width: 100%;
}
.project-header {
align-items: center;
color: #555;
display: flex;
font-family: "segoe ui";
height: 40px;
justify-content: center;
text-align: center;
text-transform: uppercase;
}
.project-body {
display: block;
height: calc(100% - 40px);
}
.project-body > img {
border: 0px !important;
height: 100%;
width: 100%;
}


Ya está, probemos cómo se ve.




ANTES


DESPUÉS


Para ir hacia el proyecto, solo hay que colocar el cursor en el proyecto y una capa se deslizará, mostrándonos el link hacia el proyecto:





Simple y bonito. El código completo lo pueden ver en éste gist: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

se ve muy bonita, como aporte digo que seria bueno implementarle algún tipo de script que genere una screenshot del proyecto, a ver si le dedico un tiempito y miro si puedo implementarlo en tu código :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Acepta con humildad y aprecio que en la vida la muerte es inevitable y amarás ésta, adorando la muerte

Te quedó genial, lo he puesto en mi localhost, gracias por aportarlo!

Saludos.



@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Gracias man, pensaba algo así pero como lo hice así en un ratito, pues lo hice bien simple. Si lo modificas, lo colocas para verlo.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Gracias blacky xD, no es un aporte como tal, es algo muy pequeñito pero se ve mejor xD

Increíble Gus! Un cambio total jajajaja

Un saludo