Ver índice de contenidos del libro

10.4. La página de previsualización

La página de previsualización de la oferta de trabajo es la misma que la página que muestra los detalles de una oferta. Gracias al sistema de enrutamiento, si el usuario accede con el token adecuado, su valor será accesible en el parámetro token de la petición.

Si el usuario accede con una URL que incluye el token, añadimos en la parte superior de la página una barra con opciones útiles para los administradores. Añade al principio de la plantilla showSuccess un elemento parcial para incluir la barra de administrador y elimina el enlace edit que se encuentra al final de la página:

<!-- apps/frontend/modules/job/templates/showSuccess.php -->
<?php if ($sf_request->getParameter('token') == $job->getToken()): ?>
  <?php include_partial('job/admin', array('job' => $job)) ?>
<?php endif; ?>

A continuación crea el elemento parcial _admin:

<!-- apps/frontend/modules/job/templates/_admin.php -->
<div id="job_actions">
  <h3>Admin</h3>
  <ul>
    <?php if (!$job->getIsActivated()): ?>
      <li><?php echo link_to('Edit', 'job_edit', $job) ?></li>
      <li><?php echo link_to('Publish', 'job_edit', $job) ?></li>
    <?php endif; ?>
    <li><?php echo link_to('Delete', 'job_delete', $job, array('method' => 'delete', 'confirm' => 'Are you sure?')) ?></li>
    <?php if ($job->getIsActivated()): ?>
      <li<?php $job->expiresSoon() and print ' class="expires_soon"' ?>>
        <?php if ($job->isExpired()): ?>
          Expired
        <?php else: ?>
          Expires in <strong><?php echo $job->getDaysBeforeExpires() ?></strong> days
        <?php endif; ?>
 
        <?php if ($job->expiresSoon()): ?>
         - <a href="">Extend</a> for another <?php echo sfConfig::get('app_active_days') ?> days
        <?php endif; ?>
      </li>
    <?php else: ?>
      <li>
        [Bookmark this <?php echo link_to('URL', 'job_show', $job, true) ?> to manage this job in the future.]
      </li>
    <?php endif; ?>
  </ul>
</div>

El elemento parcial anterior incluye mucho código, pero la mayor parte de su código es muy fácil de entender.

Para hacer que el código de la plantilla sea más fácil de leer, hemos añadido varios atajos en la clase JobeetJob:

// lib/model/JobeetJob.php
public function getTypeName()
{
  return $this->getType() ? JobeetJobPeer::$types[$this->getType()] : '';
}
 
public function isExpired()
{
  return $this->getDaysBeforeExpires() < 0;
}
 
public function expiresSoon()
{
  return $this->getDaysBeforeExpires() < 5;
}
 
public function getDaysBeforeExpires()
{
  return floor(($this->getExpiresAt('U') - time()) / 86400);
}

La barra de administrador es diferente en función del estado de la oferta de trabajo:

Oferta de trabajo sin activar

Figura 10.2 Oferta de trabajo sin activar

Oferta de trabajo activada

Figura 10.3 Oferta de trabajo activada

Nota Hasta la próxima sección no vas a poder ver la barra de las ofertas de trabajo activadas.