comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Tuneando el doc root de Apache

  • 4 Respuestas
  • 1553 Vistas

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

Desconectado Gus Garsaky

  • *
  • Underc0der
  • Mensajes: 93
  • Actividad:
    0%
  • Reputación -1
    • Ver Perfil
  • Skype: gus.garsaky
« en: Mayo 10, 2015, 07:14:32 pm »
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
  1. function getAll() {
  2.     $files = You are not allowed to view links. Register or Login(".");
  3.     $folders = You are not allowed to view links. Register or Login(); // solo carpetas (nombres)
  4.     $images = You are not allowed to view links. Register or Login(); // imagenes de las carpetas
  5.     $pack = You are not allowed to view links. Register or Login(); // carpetas e imagenes
  6.  
  7.     foreach($files as $current) {
  8.         if($current == "." || $current == "..") {
  9.             continue;
  10.         } else {
  11.             if(You are not allowed to view links. Register or Login($current)) {
  12.                 You are not allowed to view links. Register or Login($folders, $current);
  13.             }
  14.         }
  15.     }
  16. }

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
  1. function getAll() {
  2.     $files = You are not allowed to view links. Register or Login(".");
  3.     $folders = You are not allowed to view links. Register or Login(); // solo carpetas (nombres)
  4.     $images = You are not allowed to view links. Register or Login(); // imagenes de las carpetas
  5.     $pack = You are not allowed to view links. Register or Login(); // carpetas e imagenes
  6.  
  7.     foreach($files as $current) {
  8.         if($current == "." || $current == "..") {
  9.             continue;
  10.         } else {
  11.             if(You are not allowed to view links. Register or Login($current)) {
  12.                 You are not allowed to view links. Register or Login($folders, $current);
  13.             }
  14.         }
  15.     }
  16.     foreach($folders as $folder) {
  17.         $files = You are not allowed to view links. Register or Login($folder);
  18.         foreach($files as $file) {
  19.             // si la carpeta está vacía (. y ..)
  20.             if(You are not allowed to view links. Register or Login($files) < 3) {
  21.                 You are not allowed to view links. Register or Login($images, NULL);
  22.                 break;
  23.             }
  24.             // si no está vacía, ignora el . y .. leídos
  25.             if($file == "." || $file == "..") {
  26.                 continue;
  27.             }
  28.             // checkea si el fichero es una imagen y la agrega al array
  29.             if(You are not allowed to view links. Register or Login($file, ".jpg") || You are not allowed to view links. Register or Login($file, ".jpeg")
  30.                || You are not allowed to view links. Register or Login($file, ".png") || You are not allowed to view links. Register or Login($file, ".gif")) {
  31.                You are not allowed to view links. Register or Login($images, $file);
  32.             }
  33.  
  34.         }
  35.     }
  36.     $pack["folders"] = $folders;
  37.     $pack["images"] = $images;
  38.  
  39.     return You are not allowed to view links. Register or Login($pack);
  40. }

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

Código: Javascript
  1. $(document).on("ready", init);
  2.  
  3. function init() {
  4.     var all = <?php echo getAll(); ?>;
  5. }

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
  1. $(document).on("ready", init);
  2.  
  3. function init() {
  4.     var all = <?php echo getAll(); ?>;
  5.  
  6.     createDivs(all);
  7.  
  8.     function createDivs(data) {
  9.         var folderNames = data["folders"];
  10.         var folderImages = data["images"];
  11.         var html = "<div class='project'>"+
  12.             "<section class='back'>"+
  13.             "<a class='link' href='#'>IR</a>"+
  14.             "</section>"+
  15.             "<section class='content'>"+
  16.             "<section class='project-header'></section>"+
  17.             "<section class='project-body'><img /></section>"+
  18.             "</section>"+
  19.             "</div>";
  20.         for(var i=0; i<folderNames.length; i++) {
  21.             $(".wrapper").append(html);
  22.             var current = $(".project")[i];
  23.             $(current).find(".project-header").html(folderNames[i]);
  24.             // si la imagen existe (no es null)
  25.             if(folderImages[i] !== undefined && folderImages[i] !== null) {
  26.                 $(current).find(".project-body > img").attr("src", folderNames[i]+"/"+folderImages[i]);
  27.             } else { // de lo contrario asigna una por defecto en base64
  28.                 $(current).find(".project-body > img").attr("src", "data:image/jpg;base64,"+defaultImage);
  29.             }
  30.             $(current).find(".link").attr("href", folderNames[i]+"/"); // establece el link del proyecto
  31.          }
  32.  
  33.  var defaultImage = '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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/9k=';
  34.     }
  35. }

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

HTML

Código: HTML5
  1. <!DOCTYPE html>
  2. <You are not allowed to view links. Register or Login lang="es">
  3. <You are not allowed to view links. Register or Login>
  4.         <You are not allowed to view links. Register or Login rel="icon" type="img/image/png" href="http://i.imgur.com/Fy36fAm.png"/>
  5.         <You are not allowed to view links. Register or Login charset="UTF-8">
  6.         <You are not allowed to view links. Register or Login>Projects</You are not allowed to view links. Register or Login>
  7.         <!-- aquí irán nuestros estilos -->
  8. </You are not allowed to view links. Register or Login>
  9. <You are not allowed to view links. Register or Login>
  10.         <You are not allowed to view links. Register or Login>
  11.                 <You are not allowed to view links. Register or Login class="navbar">
  12.                         <You are not allowed to view links. Register or Login>ÉSTOS SON TUS PROYECTOS</You are not allowed to view links. Register or Login>
  13.                 </You are not allowed to view links. Register or Login>
  14.         </You are not allowed to view links. Register or Login>
  15.         <You are not allowed to view links. Register or Login class="wrapper"></You are not allowed to view links. Register or Login>
  16.         <You are not allowed to view links. Register or Login src="http://code.jquery.com/jquery-latest.js"></You are not allowed to view links. Register or Login>
  17.         <!-- aquí irá nuestro código JS -->
  18. </You are not allowed to view links. Register or Login>
  19. </You are not allowed to view links. Register or Login>

CSS

Código: CSS
  1. * {
  2.         margin: 0px;
  3.         padding: 0px;
  4. }
  5. body {
  6.         background: #fff;
  7.         padding: 25px 50px;
  8. }
  9. .wrapper {
  10.         display: flex;
  11.         flex-flow: row wrap;
  12. }
  13. header {
  14.         display: block;
  15.         margin-bottom: 32px;
  16.         width: 100%;
  17. }
  18. .navbar {
  19.         display: block;
  20.         padding: .5rem;
  21.         text-align: center;
  22.         width: 100%;
  23. }
  24. .navbar > span {
  25.         font-family: 'dosis', 'segoe ui';
  26.         font-size: 24pt;
  27.         font-weight: normal;
  28. }
  29. .project {
  30.         background-color: #f7f7f7;
  31.         border-radius: 2px;
  32.         border-top: 2px solid #1E90FF;
  33.         box-shadow: 0px 2px 2px rgba(0,0,0,0.3);
  34.         display: flex;
  35.         height: 250px;
  36.         margin: 0px 30px 30px 0px;
  37.         overf   low: hidden;
  38.         width: 200px;
  39. }
  40. .project:hover {
  41.         cursor: pointer;
  42. }
  43. .project:hover > .back {
  44.         width: 100%;
  45. }
  46. .project:hover > .content {
  47.         width: 0px;
  48. }
  49. .project > .content {
  50.         display: block;
  51.         height: 100%;
  52.         transition: width .3s ease-out;
  53.         width: 100%;
  54. }
  55. .project > .back {
  56.         align-items: center;
  57.         background-color: #eee;
  58.         display: flex;
  59.         height: 100%;
  60.         justify-content: center;
  61.         overflow: hidden;
  62.         transition: width .3s ease-out;
  63.         width: 0px;
  64. }
  65. .back > .link {
  66.         align-items: center;
  67.         color: #1e90ff;
  68.         display: flex;
  69.         font-family: 'segoe ui';
  70.         font-size: 20pt;
  71.         height: 100%;
  72.         justify-content: center;
  73.         padding: .8rem 1.5rem;
  74.         text-decoration: none;
  75.         text-transform: uppercase;
  76.         width: 100%;
  77. }
  78. .project-header {
  79.         align-items: center;
  80.         color: #555;
  81.         display: flex;
  82.         font-family: "segoe ui";
  83.         height: 40px;
  84.         justify-content: center;
  85.         text-align: center;
  86.         text-transform: uppercase;
  87. }
  88. .project-body {
  89.         display: block;
  90.         height: calc(100% - 40px);
  91. }
  92. .project-body > img {
  93.         border: 0px !important;
  94.         height: 100%;
  95.         width: 100%;
  96. }

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: You are not allowed to view links. Register or Login
« Última modificación: Mayo 11, 2015, 12:15:26 pm por Gus Garsaky »

Desconectado kid_goth

  • *
  • Underc0der
  • Mensajes: 201
  • Actividad:
    0%
  • Reputación 3
  • Tu conocimiento se limita cuando dices NO PUEDO...
    • Ver Perfil
    • DC Projects
    • Email
« Respuesta #1 en: Mayo 11, 2015, 08:00:06 pm »
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 :)
You are not allowed to view links. Register or Login

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

Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1892
  • Actividad:
    15%
  • Reputación 14
    • Ver Perfil
« Respuesta #2 en: Mayo 14, 2015, 06:25:43 am »
Te quedó genial, lo he puesto en mi localhost, gracias por aportarlo!

Saludos.



Desconectado Gus Garsaky

  • *
  • Underc0der
  • Mensajes: 93
  • Actividad:
    0%
  • Reputación -1
    • Ver Perfil
  • Skype: gus.garsaky
« Respuesta #3 en: Mayo 14, 2015, 01:23:20 pm »
@You are not allowed to view links. Register or Login 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.

@You are not allowed to view links. Register or Login Gracias blacky xD, no es un aporte como tal, es algo muy pequeñito pero se ve mejor xD

Desconectado D4RKS0N1K

  • *
  • Underc0der
  • Mensajes: 119
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Mayo 14, 2015, 01:27:10 pm »
Increíble Gus! Un cambio total jajajaja

Un saludo

 

¿Te gustó el post? COMPARTILO!