Lucie Kaffee has uploaded a new change for review. https://gerrit.wikimedia.org/r/243715
Change subject: [WIP] Article placeholder appear in search ...................................................................... [WIP] Article placeholder appear in search Make the article placeholder appear in the search. Very much work in progress Bug: T109438 Change-Id: Icc359c5c5cbaad4fd628f54d3263e01d124e427a --- M ArticlePlaceholder.php M i18n/en.json M i18n/qqq.json A includes/SearchArticlePlaceholder.php 4 files changed, 122 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ArticlePlaceholder refs/changes/15/243715/1 diff --git a/ArticlePlaceholder.php b/ArticlePlaceholder.php index 2d7e10c..b25a777 100644 --- a/ArticlePlaceholder.php +++ b/ArticlePlaceholder.php @@ -29,7 +29,9 @@ $wgAutoloadClasses['ArticlePlaceholder\Specials\SpecialFancyUnicorn'] = $dir . '/Specials/SpecialFancyUnicorn.php'; $wgAutoloadClasses['ArticlePlaceholder\Hooks'] = __DIR__ . '/includes/Hooks.php'; +$wgAutoloadClasses['ArticlePlaceholder\SearchArticlePlaceholder'] = __DIR__ . '/includes/SearchArticlePlaceholder.php'; $wgHooks['ScribuntoExternalLibraryPaths'][] = '\ArticlePlaceholder\Hooks::registerScribuntoExternalLibraryPaths'; +$wgHooks['SpecialSearchResultsAppend'][] = '\ArticlePlaceholder\SearchArticlePlaceholder::onSpecialSearchResultsAppend'; $wgMessagesDirs[ 'ArticlePlaceholder' ] = __DIR__ . '/i18n'; $wgExtensionMessagesFiles['ArticlePlaceholderAliases'] = __DIR__ . '/ArticlePlaceholder.alias.php'; diff --git a/i18n/en.json b/i18n/en.json index 2d8890d..3cb1bf4 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -9,5 +9,6 @@ "articleplaceholder-fancyunicorn": "Fancy Unicorn", "articleplaceholder-fancyunicorn-intro": "This is the SpecialPage Fancy Unicorn of the ArticlePlaceholder extension. Much fancy, very unicorn. (so exciting)", "articleplaceholder-fancyunicorn-entityid": "Enter a entity ID to get a auto generated Article Placeholder.", - "articleplaceholder-fancyunicorn-submit": "craft" + "articleplaceholder-fancyunicorn-submit": "craft", + "articleplaceholder-search-header": "Results in Article Placeholder" } diff --git a/i18n/qqq.json b/i18n/qqq.json index 7c111f0..da56fda 100644 --- a/i18n/qqq.json +++ b/i18n/qqq.json @@ -9,5 +9,6 @@ "articleplaceholder-fancyunicorn": "Title of SpecialFancyUnicorn.", "articleplaceholder-fancyunicorn-intro": "Intro paragraph shown on SpecialFancyUnicorn.", "articleplaceholder-fancyunicorn-entityid": "Text to encourage the user to enter an entity id.", - "articleplaceholder-fancyunicorn-submit": "Label on the submit button." + "articleplaceholder-fancyunicorn-submit": "Label on the submit button.", + "articleplaceholder-search-header": "Header in the search for the results of ArticlePlacholder Extension" } diff --git a/includes/SearchArticlePlaceholder.php b/includes/SearchArticlePlaceholder.php new file mode 100644 index 0000000..0eaffbe --- /dev/null +++ b/includes/SearchArticlePlaceholder.php @@ -0,0 +1,116 @@ +<?php + +/** + * The FancyUnicorn SpecialPage for the ArticlePlaceholder extension + * + * @ingroup Extensions + * @author Lucie-Aimée Kaffee + * @license GNU General Public Licence 2.0 or later + * + */ + +namespace ArticlePlaceholder; + +use Wikibase\Client\WikibaseClient; +use Wikibase\TermIndex; +use OutputPage; +use SpecialSearch; +use Wikibase\TermIndexEntry; + +class SearchArticlePlaceholder extends SpecialSearch { + + private static function newFromGlobalState() { + $wikibaseClient = WikibaseClient::getDefaultInstance(); + + return new self( + $wikibaseClient->getStore()->getTermIndex() + ); + } + + /** + * @var TermIndex + */ + private $termIndex; + + public function __construct( TermIndex $termIndex ) { + $this->termIndex = $termIndex; + } + + /** + * + * @param SpecialSearch $specialSearch + * @param OutputPage $output + * @param Array $term + * @return boolean + */ + public static function onSpecialSearchResultsAppend( $specialSearch, $output, $term ) { + $self = self::newFromGlobalState(); + $self->addToSearch( $specialSearch, $output, $term ); + return true; + } + + /** + * + * @param SpecialSearch $specialSearch + * @param OutputPage $output + * @param string $term + */ + public function addToSearch( SpecialSearch $specialSearch, OutputPage $output, $term ) { + //$termIndexEntries = $this->termIndex->getTopMatchingTerms( + // array( $this->makeTermIndexEntryTemplate( $term, $this->getLanguage(), 'item' )), + // array( 'item' ), + // array(TermIndexEntry::TYPE_LABEL, TermIndexEntry::TYPE_ALIAS) + //); + //foreach ( $termIndexEntries as $termIndexEntry ) { + // $output->addHTML( $termIndexEntry->getEntityId() ); + //} + $output->addWikiText( $term ); + $this->showSearchHeader( $output ); + $output->addHTML( "Type:" . getType( $term ) ); + } + + private function showSearchHeader( OutputPage $output ) { + $header = wfMessage( 'articleplaceholder-search-header' ); + $output->addWikiText( "==" . $header . "==" ); + } + + /** + * @param string $text + * @param string $languageCode + * @param string $termType + * + * @returns TermIndexEntry[] + */ + private function makeTermIndexEntryTemplate( $text, $languageCode, $termType ) { + $term =new TermIndexEntry( array( + 'termText' => $text, + 'termLanguage' => $languageCode, + 'termType' => $termType, + ) ); + return $term; + } + + /** + * @param bool isCaseSensitive + * @param bool isPrefixSearch + * @param int limit + * + * @return string[] array + */ + private function getTermIndexOptions( $isCaseSensitive, $isPrefixSearch, $limit ) { + return array( + 'caseSensitive' => $isCaseSensitive, + 'prefixSearch' => $isPrefixSearch, + 'LIMIT' => $limit, + ); + } + + /** + * @return Language + */ + public function getLanguage() { + global $wgLanguageCode; + return $wgLanguageCode; + } + +} -- To view, visit https://gerrit.wikimedia.org/r/243715 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icc359c5c5cbaad4fd628f54d3263e01d124e427a Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/ArticlePlaceholder Gerrit-Branch: master Gerrit-Owner: Lucie Kaffee <lucie.kaf...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits