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

Reply via email to