Code

MediaWiki : choisir son moteur de recherche dans les préférences utilisateur

Je travaille depuis quelques temps sur l’extension MediaWiki SphinxSearch et j’ai souhaité laisser le choix à l’utilisateur d’un wiki (1.16.x) de l’utiliser ou non.

Pour cela, j’ai ajouté un « hook » dans l’extension elle-même afin de rajouter un menu dans les préférences utilisateur :

class SphinxSearchHooks {
	/**
	 * GetPreferences hook
	 * Add module-releated items to the preferences
	 */
	public static function addPreferences( $user, &$defaultPreferences ) {

		wfLoadExtensionMessages( 'SphinxSearch' );
		// The preference with the key 'enable' determines if the rest are even relevant, so in the future
		// setting up some dependencies on that might make sense
		$defaultPreferences["usesphinxsearch"] = array(
				'type' => 'toggle',
				'label-message' => 'sphinxPreference',
				'section' => 'searchoptions/sphinx'
				);

	return true;
	}
}
$wgHooks['GetPreferences'][] = 'SphinxSearchHooks::addPreferences';

Le label de la nouvelle section « searchoptions/sphinx » n’existe pas par défaut et s’appelera « prefs-sphinx ».

L’ajout des labels se fait directement dans le dictionnaire de l’extension qui est chargé en début de hook :

'sphinxPreference'		=> "Activer la recherche Sphinx",
'prefs-sphinx'			=> "Recherche Sphinx"

J’ai ensuite modifié le skin vector en me basant sur l’option de préférence « $wgUser->getOption(« usesphinxsearch ») » (si elle est égale à 1 c’est que la case est cochée) :

<div id="p-search">
	<h5<?php $this->html('userlangattributes') ?>><label for="searchInput"><?php $this->msg( 'search' ); ?></label></h5>
	<form action="<?php
		$this->text( 'wgScript' ) ;
		if($wgUser->getOption("usesphinxsearch")==1)
		{
			echo '/Special:SphinxSearch';
		}
		?>" id="searchform">
		<input type='hidden' name="title" value="<?php if($wgUser->getOption("usesphinxsearch")==1){$this->text( 'searchtitle' );}else{echo 'Special:SphinxSearch';} ?>"/>
		<input type="hidden" value="1" name="match_mode"/>
		<input type="hidden" value="1" name="ns0"/>
		<input type="hidden" value="Rechercher" name="fulltext"/>
		<?php if ( $wgVectorUseSimpleSearch ): ?>
		<div id="simpleSearch">
			<input id="searchInput" name="<?php echo ($wgUser->getOption("usesphinxsearch")==1) ? 'sphinx' : '';?>search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
			<button id="searchButton" type='submit' name='button' <?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?>>&nbsp;</button>
		</div>
		<?php else: ?>
		<input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
		<input type='submit' name="go" class="searchButton" id="searchGoButton"	value="<?php $this->msg( 'searcharticle' ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> />
		<input type="submit" name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg( 'searchbutton' ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> />
		<?php endif; ?>
	</form>
</div>
Related Posts with Thumbnails

Laisser une réponse

Connect with Facebook