Bartosz Dziewoński has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/170341

Change subject: OOUI PHP: Support RTL text direction
......................................................................

OOUI PHP: Support RTL text direction

Added support to the demo. Note how the GridLayout's directionality changes.

Bug: 72584
Change-Id: I4a4242d36c5765c39b37efbbddd822ac1f2d4f3b
---
M demos/widgets.php
M php/OoUiElement.php
2 files changed, 68 insertions(+), 34 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/oojs/ui refs/changes/41/170341/1

diff --git a/demos/widgets.php b/demos/widgets.php
index 3c922f6..76c068d 100644
--- a/demos/widgets.php
+++ b/demos/widgets.php
@@ -1,27 +1,47 @@
+<?php
+       $autoload = '../vendor/autoload.php';
+       if ( !file_exists( $autoload ) ) {
+               trigger_error(
+                       '<h1>Did you forget to run <code>composer 
install</code>?</h1>'
+               );
+               exit();
+       }
+       require_once $autoload;
+
+       OoUiTheme::setSingleton( new OoUiMediaWikiTheme() );
+
+       $direction = ( isset( $_GET['dir'] ) && $_GET['dir'] === 'rtl' ) ? 
'rtl' : 'ltr';
+       OoUiElement::setDir( $direction );
+?>
 <!DOCTYPE html>
 <html lang="en" dir="ltr">
 <head>
        <meta charset="UTF-8">
        <title>OOjs UI Widget Demo</title>
-       <link rel="stylesheet" href="../dist/oojs-ui-mediawiki.svg.css">
-       <link rel="stylesheet" href="styles/demo.css">
+       <link rel="stylesheet" href="../dist/oojs-ui-mediawiki.svg<?php echo 
$direction === 'rtl' ? '.rtl' : ''; ?>.css">
+       <link rel="stylesheet" href="styles/demo<?php echo $direction === 'rtl' 
? '.rtl' : ''; ?>.css">
 </head>
-<body>
+<body class="oo-ui-<?php echo $direction; ?>">
        <div class="oo-ui-demo">
-               <div class="oo-ui-demo-container">
+               <div class="oo-ui-demo-menu">
                        <?php
-                               $autoload = '../vendor/autoload.php';
-                               if ( !file_exists( $autoload ) ) {
-                                       trigger_error(
-                                               '<h1>Did you forget to run 
<code>composer install</code>?</h1>'
-                                       );
-                                       exit();
-                               }
-                               require_once $autoload;
-
-                               OoUiTheme::setSingleton( new 
OoUiMediaWikiTheme() );
+                               echo new OoUiButtonGroupWidget( array(
+                                       'items' => array(
+                                               new OoUiButtonWidget( array(
+                                                       'label' => 'LTR',
+                                                       'href' => '?dir=ltr',
+                                                       'target' => null,
+                                               ) ),
+                                               new OoUiButtonWidget( array(
+                                                       'label' => 'RTL',
+                                                       'href' => '?dir=rtl',
+                                                       'target' => null,
+                                               ) ),
+                                       )
+                               ) );
                        ?>
-
+               </div>
+               <div class="oo-ui-demo-container">
                        <?php
 
                                function widgetWrap( $element ) {
@@ -120,7 +140,7 @@
                                        'items' => array(
                                                new OoUiFieldLayout(
                                                        new ButtonWidgetTitled( 
array(
-                                                               'label' => 
'Hover me!',
+                                                               'label' => 
"Hover me!\xE2\x80\x8E",
                                                        ) ),
                                                        array(
                                                                'label' => 
'Titled button',
@@ -129,7 +149,7 @@
                                                ),
                                                new OoUiFieldLayout(
                                                        new OoUiButtonWidget( 
array(
-                                                               'label' => 
'Click me!',
+                                                               'label' => 
"Click me!\xE2\x80\x8E",
                                                                'href' => 
'http://example.com/',
                                                        ) ),
                                                        array(
@@ -238,7 +258,7 @@
                                                                'title' => 
'Picture icon'
                                                        ) ),
                                                        array(
-                                                               'label' => 
'IconWidget (normal)',
+                                                               'label' => 
"IconWidget (normal)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
@@ -249,7 +269,7 @@
                                                                'disabled' => 
true
                                                        ) ),
                                                        array(
-                                                               'label' => 
'IconWidget (disabled)',
+                                                               'label' => 
"IconWidget (disabled)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
@@ -259,7 +279,7 @@
                                                                'title' => 
'Required icon'
                                                        ) ),
                                                        array(
-                                                               'label' => 
'IndicatorWidget (normal)',
+                                                               'label' => 
"IndicatorWidget (normal)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
@@ -270,7 +290,7 @@
                                                                'disabled' => 
true
                                                        ) ),
                                                        array(
-                                                               'label' => 
'IndicatorWidget (disabled)',
+                                                               'label' => 
"IndicatorWidget (disabled)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
@@ -281,7 +301,7 @@
                                                        ) ),
                                                        array(
                                                                'align' => 
'top',
-                                                               'label' => 
'ButtonInputWidget (type: submit)'
+                                                               'label' => 
"ButtonInputWidget (type: submit)\xE2\x80\x8E"
                                                        )
                                                ),
                                                new OoUiFieldLayout(
@@ -292,7 +312,7 @@
                                                        ) ),
                                                        array(
                                                                'align' => 
'top',
-                                                               'label' => 
'ButtonInputWidget (type: submit, using <input/>)'
+                                                               'label' => 
"ButtonInputWidget (type: submit, using <input/>)\xE2\x80\x8E"
                                                        )
                                                ),
                                                new OoUiFieldLayout(
@@ -311,7 +331,7 @@
                                                        ) ),
                                                        array(
                                                                'align' => 
'inline',
-                                                               'label' => 
'CheckboxInputWidget (disabled)'
+                                                               'label' => 
"CheckboxInputWidget (disabled)\xE2\x80\x8E"
                                                        )
                                                ),
                                                new OoUiFieldLayout(
@@ -324,21 +344,21 @@
                                                new OoUiFieldLayout(
                                                        new 
OoUiTextInputWidget( array( 'icon' => 'search' ) ),
                                                        array(
-                                                               'label' => 
'TextInputWidget (icon)',
+                                                               'label' => 
"TextInputWidget (icon)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
                                                new OoUiFieldLayout(
                                                        new 
OoUiTextInputWidget( array( 'indicator' => 'required' ) ),
                                                        array(
-                                                               'label' => 
'TextInputWidget (indicator)',
+                                                               'label' => 
"TextInputWidget (indicator)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
                                                new OoUiFieldLayout(
                                                        new 
OoUiTextInputWidget( array( 'placeholder' => 'Placeholder' ) ),
                                                        array(
-                                                               'label' => 
'TextInputWidget (placeholder)',
+                                                               'label' => 
"TextInputWidget (placeholder)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
@@ -348,7 +368,7 @@
                                                                'readOnly' => 
true
                                                        ) ),
                                                        array(
-                                                               'label' => 
'TextInputWidget (readonly)',
+                                                               'label' => 
"TextInputWidget (readonly)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
@@ -358,7 +378,7 @@
                                                                'disabled' => 
true
                                                        ) ),
                                                        array(
-                                                               'label' => 
'TextInputWidget (disabled)',
+                                                               'label' => 
"TextInputWidget (disabled)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
@@ -368,7 +388,7 @@
                                                                'value' => 
'Multiline'
                                                        ) ),
                                                        array(
-                                                               'label' => 
'TextInputWidget (multiline)',
+                                                               'label' => 
"TextInputWidget (multiline)\xE2\x80\x8E",
                                                                'align' => 'top'
                                                        )
                                                ),
diff --git a/php/OoUiElement.php b/php/OoUiElement.php
index a37b908..9c1c8e2 100644
--- a/php/OoUiElement.php
+++ b/php/OoUiElement.php
@@ -16,6 +16,13 @@
         */
        public static $tagName = 'div';
 
+       /**
+        * Default text direction, used for some layout calculations. Use 
setDir() to change.
+        *
+        * @var string
+        */
+       public static $dir = 'ltr';
+
        /* Members */
 
        /**
@@ -156,11 +163,18 @@
        /**
         * Get the direction of the user interface.
         *
-        * @return string Text direction, either `ltr` or `rtl`
+        * @return string Text direction, either 'ltr' or 'rtl'
         */
        public static function getDir() {
-               // TODO: Figure out a way to override this functionality when 
used within MediaWiki, and use
-               // $wgLang->getDir() to get the user interface direction
-               return 'ltr';
+               return self::$dir;
+       }
+
+       /**
+        * Set the default direction of the user interface.
+        *
+        * @return string Text direction, either 'ltr' or 'rtl'
+        */
+       public static function setDir( $dir ) {
+               self::$dir = $dir === 'rtl' ? 'rtl' : 'ltr';
        }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/170341
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4a4242d36c5765c39b37efbbddd822ac1f2d4f3b
Gerrit-PatchSet: 1
Gerrit-Project: oojs/ui
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <matma....@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to