summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Search/Form/SortForm.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Search/Form/SortForm.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Search/Form/SortForm.php127
1 files changed, 127 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Search/Form/SortForm.php b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Search/Form/SortForm.php
new file mode 100644
index 00000000..820cc1e6
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Search/Form/SortForm.php
@@ -0,0 +1,127 @@
+<?php
+
+namespace SMW\MediaWiki\Search\Form;
+
+use Html;
+use WebRequest;
+use SMW\Message;
+
+/**
+ * @private
+ *
+ * @license GNU GPL v2+
+ * @since 3.0
+ *
+ * @author mwjames
+ */
+class SortForm {
+
+ /**
+ * @var WebRequest
+ */
+ private $request;
+
+ /**
+ * @var Field
+ */
+ private $field;
+
+ /**
+ * @var []
+ */
+ private $parameters = [];
+
+ /**
+ * @since 3.0
+ *
+ * @param WebRequest $request
+ */
+ public function __construct( WebRequest $request ) {
+ $this->request = $request;
+ $this->field = new Field();
+ }
+
+ /**
+ * @since 3.0
+ *
+ * @return []
+ */
+ public function getParameters() {
+ return $this->parameters;
+ }
+
+ /**
+ * @since 3.0
+ *
+ * @param array $features
+ */
+ public function makeFields( $features = [] ) {
+
+ $default = isset( $features['best'] ) && $features['best'] ? 'best' : 'title';
+ $sort = $this->request->getVal( 'sort', $default );
+
+ $this->parameters['sort'] = $sort;
+
+ $list = [];
+ $name = '';
+
+ foreach ( $this->sortList( $features ) as $key => $value ) {
+
+ if ( $key === $sort ) {
+ $name = $value;
+ }
+
+ $list[] = [ 'id' => $key, 'name' => $value, 'desc' => $value ];
+ }
+
+ return Html::rawElement(
+ 'div',
+ [
+ 'class' => 'smw-search-sort'
+ ],
+ Html::rawElement(
+ 'button',
+ [
+ 'type' => 'button',
+ 'id' => 'smw-search-sort',
+ 'class' => 'smw-selectmenu-button is-disabled',
+ 'name' => 'sort',
+ 'value' => $sort,
+ 'data-list' => json_encode( $list ),
+ 'title' => Message::get( 'smw-search-profile-extended-section-sort', Message::TEXT, Message::USER_LANGUAGE ),
+ ],
+ $sort === '' ? 'Sort' : $name
+ ) . Html::rawElement(
+ 'input',
+ [
+ 'type' => 'hidden',
+ 'name' => 'sort',
+ 'value' => $sort,
+ ]
+ )
+ );
+ }
+
+ private function sortList( $features ) {
+
+ $list = [];
+
+ if ( isset( $features['best'] ) && $features['best'] ) {
+ $list['best'] = Message::get( 'smw-search-profile-sort-best', Message::TEXT, Message::USER_LANGUAGE );
+
+ $list += [
+ 'recent' => Message::get( 'smw-search-profile-sort-recent', Message::TEXT, Message::USER_LANGUAGE ),
+ 'title' => Message::get( 'smw-search-profile-sort-title', Message::TEXT, Message::USER_LANGUAGE )
+ ];
+
+ } else{
+ $list = [
+ 'title' => Message::get( 'smw-search-profile-sort-title', Message::TEXT, Message::USER_LANGUAGE ),
+ 'recent' => Message::get( 'smw-search-profile-sort-recent', Message::TEXT, Message::USER_LANGUAGE )
+ ];
+ }
+
+ return $list;
+ }
+
+}