Directionality improvements as part of bug 6100 (under $wgBetterDirectionality):
[lhc/web/wiklou.git] / skins / MonoBook.php
index cfcce4b..a766e94 100644 (file)
@@ -23,6 +23,9 @@ class SkinMonoBook extends SkinTemplate {
        var $skinname = 'monobook', $stylename = 'monobook',
                $template = 'MonoBookTemplate', $useHeadElement = true;
 
+       /**
+        * @param $out OutputPage
+        */
        function setupSkinUserCss( OutputPage $out ) {
                global $wgHandheldStyle;
                parent::setupSkinUserCss( $out );
@@ -52,7 +55,12 @@ class SkinMonoBook extends SkinTemplate {
  * @ingroup Skins
  */
 class MonoBookTemplate extends BaseTemplate {
+
+       /**
+        * @var Skin
+        */
        var $skin;
+
        /**
         * Template filter callback for MonoBook skin.
         * Takes an associative array of data set from a SkinTemplate-based
@@ -62,10 +70,7 @@ class MonoBookTemplate extends BaseTemplate {
         * @access private
         */
        function execute() {
-               global $wgRequest;
-
                $this->skin = $skin = $this->data['skin'];
-               $action = $wgRequest->getText( 'action' );
 
                // Suppress warnings to prevent notices about missing indexes in $this->data
                wfSuppressWarnings();
@@ -89,6 +94,8 @@ class MonoBookTemplate extends BaseTemplate {
 <?php } ?>
                <!-- start content -->
 <?php $this->html('bodytext') ?>
+               <?php if($this->data['printfooter']) { ?><div class="printfooter"><?php $this->html('printfooter'); ?></div><?php } ?>
+               <?php $this->html('debughtml'); ?>
                <?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
                <!-- end content -->
                <?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
@@ -96,28 +103,7 @@ class MonoBookTemplate extends BaseTemplate {
        </div>
 </div></div>
 <div id="column-one"<?php $this->html('userlangattributes')  ?>>
-       <div id="p-cactions" class="portlet">
-               <h5><?php $this->msg('views') ?></h5>
-               <div class="pBody">
-                       <ul><?php
-                               foreach($this->data['content_actions'] as $key => $tab) {
-                                       echo '
-                                <li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
-                                       if( $tab['class'] ) {
-                                               echo ' class="'.htmlspecialchars($tab['class']).'"';
-                                       }
-                                       echo '><a href="'.htmlspecialchars($tab['href']).'"';
-                                       if( $tab["tooltiponly"] ) {
-                                               echo $skin->tooltip( "ca-$key" );
-                                       } else {
-                                               echo $skin->tooltipAndAccesskey( "ca-$key" );
-                                       }
-                                       echo '>'.htmlspecialchars($tab['text']).'</a></li>';
-                               } ?>
-
-                       </ul>
-               </div>
-       </div>
+<?php $this->cactions( $skin ); ?>
        <div class="portlet" id="p-personal">
                <h5><?php $this->msg('personaltools') ?></h5>
                <div class="pBody">
@@ -130,9 +116,13 @@ class MonoBookTemplate extends BaseTemplate {
                </div>
        </div>
        <div class="portlet" id="p-logo">
-               <a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
-                       ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
-                       echo $skin->tooltipAndAccesskey('p-logo') ?>></a>
+               <?php
+                       $logoAttribs = array() + Linker::tooltipAndAccesskeyAttribs('p-logo');
+                       $logoAttribs['style'] = "background-image: url({$this->data['logopath']});";
+                       $logoAttribs['href'] = $this->data['nav_urls']['mainpage']['href'];
+                       echo Html::element( 'a', $logoAttribs );
+               ?>
+
        </div>
        <script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
 <?php
@@ -154,8 +144,18 @@ class MonoBookTemplate extends BaseTemplate {
 ?>
 </div><!-- end of the left (by default at least) column -->
 <div class="visualClear"></div>
+<?php
+       $validFooterIcons = $this->getFooterIcons( "icononly" );
+       $validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links
+
+       if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) { ?>
 <div id="footer"<?php $this->html('userlangattributes') ?>>
-<?php foreach ( $this->getFooterIcons("icononly") as $blockName => $footerIcons ) { ?>
+<?php
+               $footerEnd = '</div>';
+       } else {
+               $footerEnd = '';
+       }
+       foreach ( $validFooterIcons as $blockName => $footerIcons ) { ?>
        <div id="f-<?php echo htmlspecialchars($blockName); ?>ico">
 <?php foreach ( $footerIcons as $icon ) { ?>
                <?php echo $this->skin->makeFooterIcon( $icon ); ?>
@@ -165,31 +165,22 @@ class MonoBookTemplate extends BaseTemplate {
        </div>
 <?php }
 
-               // Generate additional footer links
-               $validFooterLinks = $this->getFooterLinks("flat");
                if ( count( $validFooterLinks ) > 0 ) {
 ?>     <ul id="f-list">
 <?php
                        foreach( $validFooterLinks as $aLink ) { ?>
                <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
-
 <?php
                        }
 ?>
        </ul>
 <?php  }
+echo $footerEnd;
 ?>
-</div>
-</div>
-<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
-<?php $this->html('reporttime') ?>
-<?php if ( $this->data['debug'] ): ?>
-<!-- Debug output:
-<?php $this->text( 'debug' ); ?>
-
--->
-<?php endif;
 
+</div>
+<?php
+               $this->printTrail();
                echo Html::closeElement( 'body' );
                echo Html::closeElement( 'html' );
                wfRestoreWarnings();
@@ -220,6 +211,45 @@ class MonoBookTemplate extends BaseTemplate {
 <?php
        }
 
+       /**
+        * Prints the cactions bar.
+        * Shared between MonoBook and Modern
+        *
+        * @param $skin Skin
+        */
+       function cactions( Skin $skin ) {
+?>
+       <div id="p-cactions" class="portlet">
+               <h5><?php $this->msg('views') ?></h5>
+               <div class="pBody">
+                       <ul><?php
+                               foreach($this->data['content_actions'] as $key => $tab) {
+                                       $linkAttribs = array( 'href' => $tab['href'] );
+                                       
+                                       if( isset( $tab["tooltiponly"] ) && $tab["tooltiponly"] ) {
+                                               $title = Linker::titleAttrib( "ca-$key" );
+                                               if ( $title !== false ) {
+                                                       $linkAttribs['title'] = $title;
+                                               }
+                                       } else {
+                                               $linkAttribs += Linker::tooltipAndAccesskeyAttribs( "ca-$key" );
+                                       }
+                                       $linkHtml = Html::element( 'a', $linkAttribs, $tab['text'] );
+                                       
+                                       /* Surround with a <li> */
+                                       $liAttribs = array( 'id' => Sanitizer::escapeId( "ca-$key" ) );
+                                       if( $tab['class'] ) {
+                                               $liAttribs['class'] = $tab['class'];
+                                       }
+                                       echo '
+                               ' . Html::rawElement( 'li', $liAttribs, $linkHtml );
+                               } ?>
+
+                       </ul>
+               </div>
+       </div>
+<?php
+       }
        /*************************************************************************************************/
        function toolbox() {
 ?>
@@ -263,9 +293,15 @@ class MonoBookTemplate extends BaseTemplate {
 
        /*************************************************************************************************/
        function customBox( $bar, $cont ) {
+               $portletAttribs = array( 'class' => 'generated-sidebar portlet', 'id' => Sanitizer::escapeId( "p-$bar" ) );
+               $tooltip = Linker::titleAttrib( "p-$bar" );
+               if ( $tooltip !== false ) {
+                       $portletAttribs['title'] = $tooltip;
+               }
+               echo '  ' . Html::openElement( 'div', $portletAttribs );
 ?>
-       <div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
-               <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo htmlspecialchars($bar); else echo htmlspecialchars($out); ?></h5>
+
+               <h5><?php $msg = wfMessage( $bar ); echo htmlspecialchars( $msg->exists() ? $msg->text() : $bar ); ?></h5>
                <div class='pBody'>
 <?php   if ( is_array( $cont ) ) { ?>
                        <ul>