[Renderiza] los datos principales de un artículo

This commit is contained in:
Ricardo García Jiménez 2022-02-20 15:55:18 -06:00
parent 11b3718749
commit 57ee90f0b2
5 changed files with 131 additions and 63 deletions

View file

@ -105,7 +105,103 @@ class articlesController {
require_once 'views/pages/all-articles.php';
}
// Renderiza un artículo publicado
// y publica un comentario con el método POST.
static public function article() {
$token = csrf::generate();
$messages = messages::get();
$validations = new validations(NABU_ROUTES['home']);
// Valida la URL del artículo.
$data = $validations -> validate($_GET, array(
array('field' => 'slug', 'min_length' => 1, 'max_length' => 255)
));
$articlesModel = new articlesModel();
// Obtiene el contenido del artículo.
$article = $articlesModel -> get_article($data['slug']);
$articles = array();
if (empty($article))
utils::redirect(NABU_ROUTES['home']);
unset($validatiosn, $data, $articlesModel);
$login = array('avatar' => null);
$login['avatar'] = utils::url_image('avatar', $login['avatar']);
require_once 'libs/parsedown-1.7.4/Parsedown.php';
// Formatea los datos del artículo.
$article['title'] = utils::escape($article['title']);
$article['cover'] = utils::url_image('cover', $article['cover']);
$article['author'] = utils::escape($article['author']);
$article['avatar'] = utils::url_image('avatar', $article['avatar']);
$article['profile'] = NABU_ROUTES['profile'] . '&user=' . urlencode($article['username']);
$article['username'] = utils::escape($article['username']);
$parsedown = new Parsedown;
$parsedown -> setSafeMode(true);
// Convierte el artículo Markdown en HTML.
$article['body'] = $parsedown -> text($article['body']);
if (empty($article['description']))
$article['description'] = NABU_DEFAULT['description'];
$article['description'] = utils::escape($article['description']);
$date = date_parse($article['date']);
switch ($date['month']) {
case 1:
$month = 'Enero';
break;
case 2:
$month = 'Febrero';
break;
case 3:
$month = 'Marzo';
break;
case 4:
$month = 'Abril';
break;
case 5:
$month = 'Mayo';
break;
case 6:
$month = 'Junio';
break;
case 7:
$month = 'Julio';
break;
case 8:
$month = 'Agosto';
break;
case 9:
$month = 'Septiembre';
break;
case 10:
$month = 'Octubre';
break;
case 11:
$month = 'Noviembre';
break;
case 12:
$month = 'Diciembre';
break;
default:
$month = '';
}
$article['date'] = $date['day'] . ' de ' . $month . ' del ' . $date['year'];
$view = NABU_ROUTES['article'] . '&slug=' . $article['slug'];
require_once 'views/pages/article.php';
}
}

View file

@ -69,7 +69,7 @@ class profilesController {
$profile['background'] = utils::url_image('background', $profile['background']);
if (empty($profile['description']))
$profile['description'] = 'Compartiendo conocimiento...';
$profile['description'] = NABU_DEFAULT['description'];
$profile['description'] = utils::escape($profile['description']);

View file

@ -41,6 +41,7 @@ define('NABU_DEFAULT', array(
'avatar' => NABU_URL . '/assets/images/avatar.svg',
'background' => NABU_URL . '/assets/images/background.svg',
'cover' => NABU_URL . '/assets/images/cover.jpg',
'description' => 'Compartiendo conocimiento...',
'image-formats' => 'image/gif, image/jpeg, image/png, image/svg+xml',
'image-size' => 1048576 * 2, // 2 MB (en bytes).
));

View file

@ -114,6 +114,27 @@ class articlesModel extends dbConnection {
}
}
// @return el contenido de un artículo.
public function get_article(string $slug) {
$query = 'SELECT a.title, a.body, a.slug, a.cover, a.modification_date AS date, ' .
'u.id AS user_id, u.name AS author, u.username, p.avatar, p.description ' .
'FROM articles AS a ' .
'INNER JOIN users AS u ON a.user_id = u.id ' .
'LEFT JOIN profiles AS p ON u.id = p.id ' .
'WHERE a.authorized = TRUE AND a.slug = ? LIMIT 1';
try {
$prepare = $this -> pdo -> prepare($query);
$prepare -> execute(array($slug));
return $prepare -> fetch();
}
catch (PDOException $e) {
$this -> errors($e -> getMessage(), 'tuvimos un problema para obtener el contenido de un artículo');
}
}
public function __destruct() {
parent::__destruct();
$this -> pdo = null;

View file

@ -47,29 +47,28 @@
<?php require_once 'views/components/navbar.php' ?>
<div class="post__head">
<h1 class="post__title">
<?= $article['title'] ?>¿Cómo ser creativo en un ambiete de estudio cuadrado?
<?= $article['title'] ?>
</h1>
<div class="post__details">
<a class="post__author-link" href="<?= $author_profile ?>">
<a class="post__author-link" href="<?= $article['profile'] ?>">
<picture class="post__profile">
<img src="https://scontent-lax3-1.xx.fbcdn.net/v/t1.6435-9/103564332_100818335008500_4987535241959814468_n.jpg?_nc_cat=108&ccb=1-5&_nc_sid=174925&_nc_eui2=AeFLfQ6m44wh0nGXbCIoQp9rQi_G7p1L5IpCL8bunUvkipd7MyfqDBh6lvl5slEJxg2JfKqtfoJLLSFgbZBhQ1tV&_nc_ohc=2Ht3awmMIc0AX975ljD&_nc_ht=scontent-lax3-1.xx&oh=aa5254a401801cdf23a8e02ae0239237&oe=616EB288" alt="Foto de perfil del autor" class="post__img-author">
<img src="<?= $article['avatar'] ?>" alt="Foto de perfil del autor" class="post__img-author">
</picture>
</a>
<div class="post__info">
<p class="post__author-name">
<a href="<?= $author_profile ?>">
<?= $article['author-username'] ?>Juan Jose Ramirez Lopez
<a href="<?= $article['profile'] ?>">
<?= $article['author'] ?>
</a>
</p>
<p class="post__date">
<?= $article['date'] ?>18 de Octubre 2021
<?= $article['date'] ?>
</p>
</div>
</div>
</div>
</header>
<section class="post__body">
<aside class='post__aside'>
<div class="heart">
@ -79,36 +78,7 @@
</aside>
<article class="post__copy">
<p>
<?= $article['content'] ?>
A las personas que estudiamos una ingeniería, desde pequeño se nos dicen frases como "Eres bueno para los números, no para lo demás", "Desarrollaste más la parte izquierda del cerebro", "La creatividad no va con personas como tu" y cosas por el estilo. Afortunadamente a lo largo de la vida me he dado cuenta de que la creatividad está dentro de todos y aún la persona más cuadrada puede ser creativa en un punto excelso.
</p>
<p>
El estudiar en un ambiente ingenieril puede reprimir nuestro sentido creativo demasiado, llegando a un punto en que pensamos que no nacimos para ser creativos, por eso hoy me permito compartir tres simples consejos que me han funcionado a lo largo de la carrera para no dejar de lado mi "Yo" artista, soñador y creativo.
</p>
<h3>Entender que la creatividad no está en contra del conocimiento.</h3>
<p>
Creatividad no es antítesis del saber, de hecho yo lo pondría como un complemento del mismo, ya que la definición de ser creativo es precisamente eso; resolver problemas de forma diferente y sobre todo crear. Sabiendo esto podemos darnos cuenta que no son bandos contrarios ni nada parecido, dentro de la ingeniería nos encontramos con problemas que normalmente los resolvemos de forma lineal, siguiendo una formula o un patrón establecido por quien nos enseña a resolverlo, pero si le damos la vuelta al problema, es decir, entender el problema por completo desde la raíz, nos podremos dar cuenta que en el problema está la solución y no solo una, sino que hay muchas formas de resolver un mismo problema, solo hay que pensar un poquito fuera de la caja.
</p>
<h3>Define tu "Yo" creativo.</h3>
<p>
Para despertar un poco más tu instinto creativo, no nos debemos quedar encerrados en hacer cosas similares siempre, a veces es bueno salir un poco de tu zona de confort y buscar algunas cosas que te puedan gustar además de tu ingeniería, bailar, pintar, escribir, crear contenido audiovisual e incluso meternos en temas de otras ingenierías.
</p>
<p>
Todas esas cosas que parecen no estar relacionadas con nuestra carrera pueden estarlo más de lo que nos imaginamos, pues el pensar en cosas distintas y resolver problemas a los que nunca nos imaginamos que nos enfrentaríamos , puede ser de mucho apoyo para pensar diferente dentro de nuestra área y pensar mas allá, e incluso mezclar conceptos de distintas áreas para crear aplicaciones de interés dentro de nuestra carrea y darles ese valor agregado que todos necesitamos para destacar un poquito y alimentar nuestra marca personal.
</p>
<p>
<em>
¡Sal de tu zona de confort, no sabes con lo que te puedes encontrar!
</em>
</p>
<h3> autodidacta</h3>
<p>
Si buscamos un hobbie que nos saque de la rutina de aprender siempre lo mismo, por lo menos hay que hacerlo bien, en nuestro escritorio o en nuestro bolsillo se encuentra una puerta a todo el conocimiento humano, aprende a escribir, tomar fotografía, física, pero aprende bien, vuélvete bueno en tu hobbie y ¿por qué no? aprende más cosas acerca de tu carrera, los cursos y blogs online son de las mejores cosas en las cuales podemos invertir el tiempo navegando por internet.
</p>
<p>
Sin duda lo anterior me ha funcionado durante estos cuatro años y medio a salir muchas veces de la rutina y me llevó a descubrir talentos que ni siquiera sabía que tenía. Recuerda, la creatividad la tenemos todos y podemos ser capaces de desarrollarla, solo hace falta practicar y practicar mucho, no eres "Una persona de números" eres una persona creativa, con un potencial inmenso guardado dentro de ti.
</p>
<?= $article['body'] ?>
</article>
</section>
@ -116,27 +86,22 @@
<h2 class="popular-posts__title">También tenemos esto para ti</h2>
<section class="popular-cards__container">
<?php require 'views/components/articles.php' ?>
<?php require 'views/components/articles.php' ?>
<?php require 'views/components/articles.php' ?>
</section>
</section>
<section class="author-info">
<div class="author-info__container">
<picture class="author-info__image">
<img class="author__image" src="https://64.media.tumblr.com/ca2bffff55fb8d4e84f5686502813d78/b16ec16ee09df3f4-65/s128x128u_c1/8773c700858f518d93429ce71b3e90349ee009c7.jpg">
<!-- <img class="author__image" src="<?= $article['author']['image'] ?>" alt="Author profile image"> -->
<img class="author__image" src="<?= $article['avatar'] ?>">
</picture>
<div class="author-info__text">
<h3 class="author-info__title">
<a href="<?= $author_profile ?>">
<a href="<?= $article['profile'] ?>">
<?= $article['author'] ?>
Juan Jose Ramirez Lopez
</a>
</h3>
<p class="author-info__description">
<?= $article['author-description'] ?>
Le ordené a mi fase REM que anotase todos mis sueños en cuadernos.
<?= $article['description'] ?>
</p>
</div>
</div>
@ -150,30 +115,15 @@
</div>
<div class="comments__box">
<picture class="author-info__image comment__user-image-container">
<img class="author__image comment__user-image" src="https://64.media.tumblr.com/ca2bffff55fb8d4e84f5686502813d78/b16ec16ee09df3f4-65/s128x128u_c1/8773c700858f518d93429ce71b3e90349ee009c7.jpg">
<!-- <img class="author__image" src="<?= $article['author']['image'] ?>" alt="Author profile image"> -->
<img class="author__image comment__user-image" src="<?= $login['avatar'] ?>">
</picture>
<form class="comments__form">
<textarea class="comments__textarea" placeholder="Hazle saber que estuviste aqui" maxlength="250" name="textarea"></textarea>
<textarea class="comments__textarea" placeholder="Hazle saber que estuviste aqui" maxlength="255" name="textarea"></textarea>
<input type="submit" class="comments__button" value="Enviar">
</form>
</div>
</div>
</section>
<!-- <h2>Datos del autor</h2>
<div>
<a href="<?= $author_profile ?>">
<img src="<?= $article['author-avatar'] ?>" alt="Foto de perfil del autor" width="8%">
</a>
<p>
<a href="<?= $author_profile ?>">
<?= $article['author'] ?>
</a>
</p>
<p><?= $article['author-description'] ?></p>
</div> -->
<?php require_once 'views/components/messages.php' ?>
<?php require_once 'views/components/footer.php' ?>