Aller au contenu

Discussion utilisateur:LaosLos/Proofreadpage index template

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Ajouter un sujet
La bibliothèque libre.

for{ $return .= "{$link} "; }

[modifier]
function wfPRRenderPageList( $input, $args ) {

	global $wgUser, $wgTitle;

	wfLoadExtensionMessages( 'ProofreadPage' );
	$index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
	if ( !preg_match( "/^$index_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText(), $m ) ) {
		return true;
	}

	$imageTitle = Title::makeTitleSafe( NS_IMAGE, $m[1] );
	if ( !$imageTitle ) {
		return true;
	}
	$image = Image::newFromTitle( $imageTitle );
	$return="";

	if ( $image->isMultipage() ) {

		$name = $imageTitle->getDBkey();
		$count = $image->pageCount();
		$dbr = wfGetDB( DB_SLAVE );
		$pagetable = $dbr->tableName( 'page' );

		$page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
		$page_ns_index = Namespace::getCanonicalIndex( strtolower( $page_namespace ) );
		if( $page_ns_index == NULL ) {
			$page_ns_index = NS_MAIN;
		}

		for( $i=0; $i<$count ; $i++) { 

			if ( !isset( $query ) ) {
				$query =  "SELECT page_id, page_title, page_namespace";
				$query .= " FROM $pagetable WHERE (page_namespace=$page_ns_index AND page_title IN(";
			} else {
				$query .= ', ';
			}
			$link_name = "$name" . '/'. ($i+1) ;	
			$query .= $dbr->addQuotes( $link_name );
		}
		$query .= '))';
		$res = $dbr->query( $query, __METHOD__ );

		$colours = array();
		$linkcolour_ids = array();
		while ( $s = $dbr->fetchObject($res) ) {
			$title = Title::makeTitle( $s->page_namespace, $s->page_title );
			$pdbk = $title->getPrefixedDBkey();
			$colours[$pdbk] = 'known';
			$linkcolour_ids[$s->page_id] = $pdbk;
		}
		wfPRLinkColours( $linkcolour_ids, $colours );

		$sk = $wgUser->getSkin();

		$offset = 0;
		$mode = 'normal';
		for( $i=1; $i<$count+1 ; $i++) { 

			$pdbk = "$page_namespace:$name" . '/'. $i ;

			$single=false;
			foreach ( $args as $num => $param ) {
				if($i == $num) {
					$param = explode(";",$param);
					if(isset($param[1])) $mode = $param[1]; else $mode='normal';
					if(is_numeric($param[0])) $offset = $i - $param[0]; 
					else $single=$param[0];
				}
		  	}

			if( $single ) { $view = $single; $single=false; $offset=$offset+1;}
			else {
			  $view = ($i - $offset);
			  if($mode == 'highroman') $view = ' '.toRoman($view);
			  elseif($mode == 'roman') $view = ' '.strtolower(toRoman($view));
			  elseif($mode == 'normal') $view = ''.$view;
			  else $view = $mode.$view;
			}

			$n = strlen($count) - strlen($view);
			if( $n && ($mode == 'normal') ){
				$txt = '<span style="visibility:hidden;">';
				for( $j=0; $j<$n; $j++) $txt = $txt.'0';
				$view = $txt.'</span>'.$view;
			}
			$title = Title::newFromText( $pdbk );
			if ( !isset( $colours[$pdbk] ) ) {
				$link = $sk->makeBrokenLinkObj( $title, $view );
			} else {
				$link = $sk->makeColouredLinkObj( $title, $colours[$pdbk], $view );
			}
			$return .= "{$link} ";
		}

	}
	return $return;
}