[OK] paginación de un componente no funciona (en backend)

Para cualquier duda sobre Joomla! 1.5 que no tenga cabida en alguno de los foros de más abajo.

Moderator: hefesto

Locked
User avatar
garciasanchez
Joomla! Intern
Joomla! Intern
Posts: 85
Joined: Tue Nov 08, 2011 3:50 pm
Location: Spain
Contact:

[OK] paginación de un componente no funciona (en backend)

Post by garciasanchez » Mon Feb 20, 2012 5:20 pm

Hola a tod@s, tengo mi joomla 1.5.10 (con el plugin legacy activado), montado en un servidor con php 5.3.2. Y tengo el componente jobline, el cual funciona bien, pero en el backend de joomla, cuando tengo bastantes registros creados, la paginación no funciona; es decir, los botones de Anterior y Siguiente no hacen nada...

Después de buscar mucho y de mucho mirar código, veo que se llama a la clase mospagenav del fichero \plugins\system\legacy\pagination.php y encontré este link donde decía que había que editar este archivo para solucionar una incidencia... http://joomlacode.org/gf/project/joomla ... m_id=14654 Pero he editado y no se soluciona mi problema...

Os dejo el código de la función listJobPostings donde se llama la paginación:

Code: Select all

function listJobPostings( $listtype = 0 ) {
	global $database, $mosConfig_absolute_path, $option, $cfgfile, $cfgjl, $mainframe;
	
	$category = null;
	$search = "";

	$limit = $mainframe->getUserStateFromRequest( "viewlistlimit", 'limit', 10 );
	$limitstart = $mainframe->getUserStateFromRequest( "view{$option}limitstart",
													   'limitstart', 0 );
	$levellimit = $mainframe->getUserStateFromRequest( "view{$option}limit",
													   'levellimit', 10 );

	$where = array();
	if ( $listtype == 1 ) {
		$where[] = "c.state = -2";
	} else {
		$where[] = "c.state >= 0";
	}
	if ($category) {
		$where[] = "catid='$category->id'";
	}
	if ($search) {
		$where[] = "LOWER(title) LIKE '%$search%'";
	}

	$database->setQuery( "SELECT COUNT(*) FROM #__jl_jobposting AS c"
	    . (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
    );
	$total = $database->loadResult();

	require_once( $mosConfig_absolute_path . '/includes/pageNavigation.php' );
	$pageNav = new mosPageNav( $total, $limitstart, $limit  );

/*
	switch ( $cfgjl['adminlistorder'] ) {
		case "pricedesc": $ordering = "c.price DESC"; break;
		case "priceasc": $ordering = "c.price ASC"; break;
		case "orderingdesc": $ordering = "c.ordering DESC"; break;
		case "orderingasc": $ordering = "c.ordering ASC"; break;
		case "addressdesc": $ordering = "c.address DESC"; break;
		case "addressasc": $ordering = "c.address ASC"; break;
		case "createddesc": $ordering = "c.created DESC"; break;
		case "createdasc": $ordering = "c.created ASC"; break;
		default: $ordering = "c.id DESC";
	}
*/

	if ( $listtype == 1 ) {
		$ordering = "c.created DESC";
	} else {
		$ordering = "c.created DESC";
	}

	// Read job postings from db.
	if ( $listtype == 1 ) {
		$database->setQuery( "SELECT c.*, u.name AS editor"
		. "\nFROM #__jl_jobposting AS c"
		. "\nLEFT JOIN #__users AS u ON u.id = c.checked_out"
		. "\n WHERE c.jobtype!=2 and c.title!=''"
		// . "\nWHERE c.catid='$category->id' AND c.access<='$gid' $xwhere "
	    //. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
		. "\nORDER BY $ordering"
		. "\nLIMIT $limitstart, $limit"
		);
	} else if( $listtype == 0 ) {
		$database->setQuery( "SELECT c.*, u.name AS editor"
		. "\nFROM #__jl_jobposting AS c"
		. "\nLEFT JOIN #__users AS u ON u.id = c.checked_out"
		. "\n WHERE c.jobtype=2"
		// . "\nWHERE c.catid='$category->id' AND c.access<='$gid' $xwhere "
	    //. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
		. "\nORDER BY $ordering"
		. "\nLIMIT $limitstart, $limit"
		);
	}else {
		$database->setQuery( "SELECT c.*, u.name AS editor"
		. "\nFROM #__jl_jobposting AS c"
		. "\nLEFT JOIN #__users AS u ON u.id = c.checked_out"
		. "\n WHERE c.title=''"
		// . "\nWHERE c.catid='$category->id' AND c.access<='$gid' $xwhere "
	    //. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
		. "\nORDER BY $ordering"
		. "\nLIMIT $limitstart, $limit"
		);
	}
	
	$items = $database->loadObjectList();
	if ($database->getErrorNum()) {
		echo $database->getQuery();
		echo $database->stderr();
		return false;
	}

	if ( $listtype == 2 ) {
		HTML_jobline_admin::listJobQueue( $items, $pageNav );
	} else {
		HTML_jobline_admin::listJobPostings( $items, $pageNav );
	}


}
Espero vuestra ayuda, Daniel
Last edited by hefesto on Thu Mar 01, 2012 5:35 pm, edited 1 time in total.
Reason: Hilo marcado como SOLUCIONADO

carcam
Joomla! Hero
Joomla! Hero
Posts: 2176
Joined: Sat Dec 29, 2007 1:53 am
Location: Spain
Contact:

Re: paginación de un componente no funciona (en backend)

Post by carcam » Thu Mar 01, 2012 7:05 am

Creo que lo primero que deberías intentar es actualizar tu Joomla! a la versión 1.5.25 ya que la versión 1.5.10 es muy antigua y está plagada de fallos de seguridad y otros problemas. Alguno de estos puede ser que esté haciendo que no funcione la paginación correctamente (habría que revisar todos los logs de las actualizaciones para ver si esto último es cierto).

No tengo experiencia en las fuciones de legacy, por lo que no te puedo decir mucho más, pero el código que muestras a priori parece bueno para la creación del elemento de paginación. Es posible que el problema sea del Javascript del elemento de paginación propiamente dicho.
La web es Mejor Con Joomla ¡envíanos tu sitio en Joomla 4!: https://mejorconjoomla.com/showcase
Twitter: @carcam

User avatar
garciasanchez
Joomla! Intern
Joomla! Intern
Posts: 85
Joined: Tue Nov 08, 2011 3:50 pm
Location: Spain
Contact:

Re: paginación de un componente no funciona (en backend)

Post by garciasanchez » Thu Mar 01, 2012 8:19 am

Hola carcam, muchas gracias por tu ayuda ;)
El código anterior está contenido en el fichero jobline.php.
En mi caso, la solución fue modificar en el fichero jobline.html.php, de la siguiente manera.
En la función listJobPostings, hay un formulario, pues en este formulario necesitaba pasarle un input type="hidden" value="limitstart". Lo importante es esto, el limitstart. Lo averigué gracias a firebug, que al pinchar en los botones de paginación me alertaba de que "el parámetro limitstart no estaba definido"
Saludos, Daniel


Locked

Return to “Joomla! 1.5”