Merge "Fixed spacing"
[lhc/web/wiklou.git] / includes / pager / IndexPager.php
index 1d93c27..9398e30 100644 (file)
  * @ingroup Pager
  */
 abstract class IndexPager extends ContextSource implements Pager {
+       /**
+        * Constants for the $mDefaultDirection field.
+        *
+        * These are boolean for historical reasons and should stay boolean for backwards-compatibility.
+        */
+       const DIR_ASCENDING = false;
+       const DIR_DESCENDING = true;
+
        public $mRequest;
        public $mLimitsShown = array( 20, 50, 100, 250, 500 );
        public $mDefaultLimit = 50;
@@ -87,7 +95,7 @@ abstract class IndexPager extends ContextSource implements Pager {
        protected $mOrderType;
        /**
         * $mDefaultDirection gives the direction to use when sorting results:
-        * false for ascending, true for descending.  If $mIsBackwards is set, we
+        * DIR_ASCENDING or DIR_DESCENDING.  If $mIsBackwards is set, we
         * start from the opposite end, but we still sort the page itself according
         * to $mDefaultDirection.  E.g., if $mDefaultDirection is false but we're
         * going backwards, we'll display the last page of results, but the last
@@ -190,6 +198,7 @@ abstract class IndexPager extends ContextSource implements Pager {
                $fname = __METHOD__ . ' (' . get_class( $this ) . ')';
                wfProfileIn( $fname );
 
+               // @todo This should probably compare to DIR_DESCENDING and DIR_ASCENDING constants
                $descending = ( $this->mIsBackwards == $this->mDefaultDirection );
                # Plus an extra row so that we can tell the "next" link should be shown
                $queryLimit = $this->mLimit + 1;
@@ -447,8 +456,8 @@ abstract class IndexPager extends ContextSource implements Pager {
         *
         * @param string $text Text displayed on the link
         * @param array $query Associative array of parameter to be in the query string
-        * @param string $type Value of the "rel" attribute
-        *
+        * @param string $type Link type used to create additional attributes, like "rel", "class" or
+        *  "title". Valid values (non-exhaustive list): 'first', 'last', 'prev', 'next', 'asc', 'desc'.
         * @return string HTML fragment
         */
        function makeLink( $text, array $query = null, $type = null ) {
@@ -457,11 +466,14 @@ abstract class IndexPager extends ContextSource implements Pager {
                }
 
                $attrs = array();
-               if ( in_array( $type, array( 'first', 'prev', 'next', 'last' ) ) ) {
-                       # HTML5 rel attributes
+               if ( in_array( $type, array( 'prev', 'next' ) ) ) {
                        $attrs['rel'] = $type;
                }
 
+               if ( in_array( $type, array( 'asc', 'desc' ) ) ) {
+                       $attrs['title'] = wfMessage( $type == 'asc' ? 'sort-ascending' : 'sort-descending' )->text();
+               }
+
                if ( $type ) {
                        $attrs['class'] = "mw-{$type}link";
                }
@@ -705,8 +717,8 @@ abstract class IndexPager extends ContextSource implements Pager {
        }
 
        /**
-        * Return the default sorting direction: false for ascending, true for
-        * descending.  You can also have an associative array of ordertype => dir,
+        * Return the default sorting direction: DIR_ASCENDING or DIR_DESCENDING.
+        * You can also have an associative array of ordertype => dir,
         * if multiple order types are supported.  In this case getIndexField()
         * must return an array, and the keys of that must exactly match the keys
         * of this.
@@ -724,6 +736,6 @@ abstract class IndexPager extends ContextSource implements Pager {
         * @return bool
         */
        protected function getDefaultDirections() {
-               return false;
+               return IndexPager::DIR_ASCENDING;
        }
 }