summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Specials/Ask/SortWidget.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Specials/Ask/SortWidget.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Specials/Ask/SortWidget.php185
1 files changed, 185 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Specials/Ask/SortWidget.php b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Specials/Ask/SortWidget.php
new file mode 100644
index 00000000..cafecb9f
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Specials/Ask/SortWidget.php
@@ -0,0 +1,185 @@
+<?php
+
+namespace SMW\MediaWiki\Specials\Ask;
+
+use Html;
+use SMW\Message;
+
+/**
+ * @private
+ *
+ * @license GNU GPL v2+
+ * @since 3.0
+ *
+ * @author mwjames
+ */
+class SortWidget {
+
+ /**
+ * @var boolean
+ */
+ private static $sortingSupport = false;
+
+ /**
+ * @var boolean
+ */
+ private static $randSortingSupport = false;
+
+ /**
+ * @since 3.0
+ *
+ * @param boolean $sortingSupport
+ */
+ public static function setSortingSupport( $sortingSupport ) {
+ self::$sortingSupport = (bool)$sortingSupport;
+ }
+
+ /**
+ * @since 3.0
+ *
+ * @param boolean $randSortingSupport
+ */
+ public static function setRandSortingSupport( $randSortingSupport ) {
+ self::$randSortingSupport = (bool)$randSortingSupport;
+ }
+
+ /**
+ * @since 3.0
+ *
+ * @param array $params
+ *
+ * @return string
+ */
+ public static function sortSection( array $params ) {
+
+ if ( self::$sortingSupport === false ) {
+ return '';
+ }
+
+ if ( !array_key_exists( 'sort', $params ) || !array_key_exists( 'order', $params ) ) {
+ $orders = [];
+ $sorts = [];
+ } else {
+ $sorts = explode( ',', $params['sort'] );
+ $orders = explode( ',', $params['order'] );
+ reset( $sorts );
+ }
+
+ return Html::rawElement(
+ 'div',
+ [
+ 'id' => 'options-sort',
+ 'class' => 'smw-ask-options-sort'
+ ], Html::rawElement(
+ 'div',
+ [
+ 'id' => 'sorting-title',
+ 'class' => 'strike'
+ ],
+ Html::rawElement(
+ 'span',
+ [],
+ Message::get( 'smw-ask-options-sort', Message::TEXT, Message::USER_LANGUAGE )
+ )
+ ) . Html::rawElement(
+ 'div',
+ [
+ 'id' => 'sorting-input', 'class' => ''
+ ],
+ self::sortingOptions( $sorts, $orders )
+ )
+ );
+ }
+
+ private static function sortingOptions( array $sorts, array $orders ) {
+
+ $result = '';
+
+ foreach ( $orders as $i => $order ) {
+
+ if ( in_array( $order, [ 'ASC', 'asc', 'ascending' ] )) {
+ $order = 'asc';
+ }
+
+ if ( in_array( $order, [ 'DESC', 'desc', 'descending' ] )) {
+ $order = 'desc';
+ }
+
+ if ( in_array( $order, [ 'RAND', 'rand', 'random' ] )) {
+ $order = 'rand';
+ }
+
+ if ( !isset( $sorts[$i] ) ) {
+ $sorts[$i] = '';
+ }
+
+ $html = Html::rawElement(
+ 'input',
+ [
+ 'type' => 'text',
+ 'name' => "sort_num[]",
+ 'size' => '35',
+ 'class' => 'smw-property-input autocomplete-arrow',
+ 'value' => htmlspecialchars( $sorts[$i] )
+ ]
+ );
+
+ $html .= '<select name="order_num[]"><option ';
+
+ if ( $order == 'asc' ) {
+ $html .= 'selected="selected" ';
+ }
+
+ $html .= 'value="asc">' . Message::get( 'smw_ask_ascorder', Message::TEXT, Message::USER_LANGUAGE ) . '</option><option ';
+
+ if ( $order == 'desc' ) {
+ $html .= 'selected="selected" ';
+ }
+
+ $html .= 'value="desc">' . Message::get( 'smw_ask_descorder', Message::TEXT, Message::USER_LANGUAGE ) . "</option>";
+
+ if ( self::$randSortingSupport ) {
+ $html .= '<option ';
+
+ if ( $order == 'rand' ) {
+ $html .= 'selected="selected" ';
+ }
+
+ $html .= 'value="rand">' . Message::get( 'smw-ask-order-rand', Message::TEXT, Message::USER_LANGUAGE ) . '</option>';
+ }
+
+ $html .= '</select>';
+ $html .= '<span class="smw-ask-sort-delete"><a class="smw-ask-sort-delete-action" data-target="sort_div_' . $i . '" >' . Message::get( 'delete', Message::TEXT, Message::USER_LANGUAGE ) . '</a></span>';
+
+ $result .= Html::rawElement( 'div', [ 'id' => "sort_div_$i", 'class' => "smw-ask-sort-input" ], $html );
+ }
+
+ $result .= '<div id="sorting_starter" style="display: none"><input type="text" name="sort_num[]" size="35" class="smw-property-input autocomplete-arrow" />';
+ $result .= '<select name="order_num[]">' . "\n";
+ $result .= ' <option value="asc">' . Message::get( 'smw_ask_ascorder', Message::TEXT, Message::USER_LANGUAGE ) . "</option>\n";
+ $result .= ' <option value="desc">' . Message::get( 'smw_ask_descorder', Message::TEXT, Message::USER_LANGUAGE ) . "</option>\n";
+
+ if ( self::$randSortingSupport ) {
+ $result .= ' <option value="rand">' . Message::get( 'smw-ask-order-rand', Message::TEXT, Message::USER_LANGUAGE ) . "</option>\n";
+ }
+
+ $result .= "</select>";
+ $result .= "</div>";
+ $result .= '<div id="sorting_main"></div>' . "\n";
+
+ return $result . Html::rawElement(
+ 'span',
+ [
+ 'class' => 'smw-ask-sort-add'
+ ],
+ Html::rawElement(
+ 'a',
+ [
+ 'class' => 'smw-ask-sort-add-action'
+ ],
+ Message::get( 'smw-ask-sort-add-action', Message::TEXT, Message::USER_LANGUAGE )
+ )
+ );
+ }
+
+}