4 minutos de lectura ( 864 palabras)

Como ocultar articulos que no se pueden editar en el backend

Como ocultar articulos que no se pueden editar en el backend

Para quienes estamos a cargo de un portal de JOOMLA y el panel de administración es nuestra página de bienvenida día a día, nos hemos preguntado ¿Será posible que de la lista de artículos, se muestren únicamente aquellos en los que tengamos permiso de modificar?. Pues esta fue una pregunta que surgió en el equipo de admin de la página en la que participó y con un poco de suerte, lectura y ayuda encontre una respuesta.

Desde hace unos meses he estado trabajando con JOOMLA en su versión 2.5, y sin duda es un gran CMS. En mi caso les comento que tenemos cerca de 15 grandes categorías y un poco más de 30 usuarios. Se comenzaron a aplicar permisos sobre los artículos que ciertos usuarios podrán editar y aquí es donde encontré un pequeño inconveniente. Esto aparece cuando un usuario no tiene permisos para editar los artículos de cierta categoría y entra al apartado de gestor de artículos.

tuto joomla img1.png

Como vemos en la imagen, los artículos con título en gris son aquellos en los cuales no podemos realizar edición, sin embargo podemos marcar la casilla y dar clic en el botón de editar. Este pequeño detalle podría confundir a nuestros usuarios novatos. En mi caso se tomó la decisión de no mostrar los artículos que no se pueden editar, a continuación les mostrare como se realiza esto.

Advertencia: La solución presentada debe ser utilizada en casos especiales, ya que es necesario modificar archivos del núcleo de JOOMLA, por lo que el cambio puede verse afectado, al actualizar tú Joomla.

Primer Paso

Dejar de mostrar los artículos que un usuario no puede editar: Para esto debemos editar el archivo que se encuentra en JOOMLA/administrator/components/com_content/views/articles/tmpl/default.php y buscar aproximadamente a partir de la línea 134, el siguiente código:

<?php if ($canEdit || $canEditOwn) : ?>
      <a href="/<?php echo JRoute::_('index.php?option=com_content&task=article.edit&id='.$item->id);?>">
                           <?php echo $this->escape($item->title); ?></a>
           <?php else : ?>
               <?php echo $this->escape($item->title); ?>
           <?php endif; ?>

cortamos la linea: <?php if ($canEdit || $canEditOwn) : ?> y la pegamos antes de la línea: <tr class="row<?php echo $i % 2; ?>"> que la podemos encontrar aproximadamente en la línea 126.

Ahora cortamos las líneas:

<?php else : ?>
    <?php echo $this->escape($item->title); ?>
<?php endif; ?>

y las pegamos antes de la línea: <?php endforeach; ?>, que esta aproximadamente en la línea 197.

Luego comentamos el “<?php echo $this->escape($item->title); ?>” de esta forma: <?php //echo $this->escape($item->title); ?>

Nota: Prefiero realizar un comentario antes de eliminar código ya que si en su momento queremos dejar todo como estaba tendremos siempre el código original. Guardamos nuestro archivo.

Si actualizamos nuestra página de joomla podremos ver que los artículos que ya no podemos editar ya no se muestran.

tuto joomla img2.png

Pero aun falta mas, ya que si nos damos cuenta la paginación toma en cuenta el total de artículos y en algunas ocasiones podría mostrarnos pocos o ningún resultado en cierta pagina como se puede apreciar en la siguiente imagen.

tuto joomla img3.png

Podemos observar que mi paginación indica que debe mostrar 20 resultados pero en esta página se pueden ver únicamente 10, ya que los otros 10 son artículos que yo no puedo editar y que al realizar las modificaciones ya no aparecen pero siguen siendo tomados en cuenta por el paginador.

Segundo Paso

Mostrar todos los resultados: Ahora realizaremos una modificación para que por defecto se muestren todos los artículos. Sin embargo es muy importante destacar que esta modificación afectará todos aquellas partes en donde se utilicen las paginaciones de JOOMLA, por eso es importante que realicen esto tomando esto en cuenta.

Para realizar esto abrimos el archivo: configuration.php y buscamos la siguiente linea: public $list_limit = '20';

Le vamos a decir que la paginación sea igual a 0, al hacer esto joomla toma el valor de mostrar todos, quedando de esta forma: public $list_limit = '0';

Guardamos nuestro archivo, y si recargamos nuestra página podremos ver el cambio:

tuto joomla img4.png

Podemos observar que en el paginador ahora dice “todos”. Sin embargo ahora tenemos el detalle que se siguen mostrando las cantidades a paginar.

Tercer Paso 

Dejar solo la opción todos: Para realizar este cambio es necesario modificar el siguiente archivo ubicado en: libraries/joomla/html/pagination.php

Buscaremos las siguientes líneas:

    // Make the option list.
       for ($i = 5; $i <= 30; $i += 5)
       {
           $limits[] = JHtml::_('select.option', "$i");
       }
       $limits[] = JHtml::_('select.option', '50', JText::_('J50'));
       $limits[] = JHtml::_('select.option', '100', JText::_('J100'));
       $limits[] = JHtml::_('select.option', '0', JText::_('JALL'));

Y comentaremos varias líneas, dejando el código de la siguiente manera:

    // Make the option list.
       /*for ($i = 5; $i <= 30; $i += 5)
       {
           $limits[] = JHtml::_('select.option', "$i");
       }
       $limits[] = JHtml::_('select.option', '50', JText::_('J50'));
       $limits[] = JHtml::_('select.option', '100', JText::_('J100'));*/
       $limits[] = JHtml::_('select.option', '0', JText::_('JALL'));

Guardamos nuestro archivo, y veremos que ahora solo nos muestra la opcion de todos.

tuto joomla img6.png

Y ahora si hemos dejado que nuestros usuarios vean todos los artículos que pueden editar. Les recuerdo que deben realizar esto tomando en cuenta la consideración de que la modificación de los archivos de paginación afectara a todos los apartados de JOOMLA que la utilicen.

Especial agradecimiento a Carlos Rodríguez, por su ayuda.

Hasta la próxima.

0
¡La JCM hispana ya tiene un año!
Desarrollo práctico
 

Comentarios

¿Ya està registrado? Ingresa Aquí
No hay comentarios por el momento. Sé el primero en enviar un comentario.

By accepting you will be accessing a service provided by a third-party external to https://magazine.joomla.org/