MDL-39871 Blocks,Themes: Swap block regions in RTL mode (using pre-defined array)
authorNadav Kavalerchik <nadavkav@gmail.com>
Sun, 25 Aug 2013 22:06:55 +0000 (01:06 +0300)
committerDamyon Wiese <damyon@moodle.com>
Tue, 27 Aug 2013 03:14:52 +0000 (11:14 +0800)
lib/outputlib.php
theme/base/config.php
theme/base/layout/frontpage.php
theme/base/layout/general.php
theme/base/style/pagelayout.css

index be02e35..59b8cd2 100644 (file)
@@ -487,6 +487,11 @@ class theme_config {
             }
         }
 
+        // Use parent theme's "blockrtlmanipulations" if it was defined and if it was not defined on current theme.
+        if (empty($this->blockrtlmanipulations) and !empty($parent_config->blockrtlmanipulations)) {
+            $this->blockrtlmanipulations = $parent_config->blockrtlmanipulations;
+        }
+
         //fix arrows if needed
         $this->check_theme_arrows();
     }
index bb9e2c4..881ee94 100644 (file)
@@ -174,3 +174,7 @@ $THEME->hidefromselector = true;
 /** List of javascript files that need to included on each page */
 $THEME->javascripts = array();
 $THEME->javascripts_footer = array();
+
+// Swap side-pre with side-post blocks regions, in RTL mode (can be override on derived themes)
+$THEME->blockrtlmanipulations = array('side-pre'=>'side-post','side-post'=>'side-pre');
+
index 3304169..f068b23 100644 (file)
@@ -10,17 +10,9 @@ $hascustommenu = (empty($PAGE->layout_options['nocustommenu']) && !empty($custom
 
 $bodyclasses = array();
 if ($showsidepre && !$showsidepost) {
-    if (!right_to_left()) {
-        $bodyclasses[] = 'side-pre-only';
-    }else{
-        $bodyclasses[] = 'side-post-only';
-    }
+    $bodyclasses[] = 'side-pre-only';
 } else if ($showsidepost && !$showsidepre) {
-    if (!right_to_left()) {
-        $bodyclasses[] = 'side-post-only';
-    }else{
-        $bodyclasses[] = 'side-pre-only';
-    }
+    $bodyclasses[] = 'side-post-only';
 } else if (!$showsidepost && !$showsidepre) {
     $bodyclasses[] = 'content-only';
 }
@@ -66,29 +58,22 @@ echo $OUTPUT->doctype() ?>
                     </div>
                 </div>
 
-                <?php if ($hassidepre OR (right_to_left() AND $hassidepost)) { ?>
+                <?php if ($hassidepre) { ?>
                 <div id="region-pre" class="block-region">
                     <div class="region-content">
-                            <?php
-                        if (!right_to_left()) {
+                        <?php
                             echo $OUTPUT->blocks_for_region('side-pre');
-                        } elseif ($hassidepost) {
-                            echo $OUTPUT->blocks_for_region('side-post');
-                    } ?>
-
+                        ?>
                     </div>
                 </div>
                 <?php } ?>
 
-                <?php if ($hassidepost OR (right_to_left() AND $hassidepre)) { ?>
+                <?php if ($hassidepost) { ?>
                 <div id="region-post" class="block-region">
                     <div class="region-content">
-                           <?php
-                       if (!right_to_left()) {
-                           echo $OUTPUT->blocks_for_region('side-post');
-                       } elseif ($hassidepre) {
-                           echo $OUTPUT->blocks_for_region('side-pre');
-                    } ?>
+                        <?php
+                            echo $OUTPUT->blocks_for_region('side-post');
+                        ?>
                     </div>
                 </div>
                 <?php } ?>
index 1a0f9e4..ecda10c 100644 (file)
@@ -25,17 +25,9 @@ if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
 
 $bodyclasses = array();
 if ($showsidepre && !$showsidepost) {
-    if (!right_to_left()) {
         $bodyclasses[] = 'side-pre-only';
-    }else{
-        $bodyclasses[] = 'side-post-only';
-    }
 } else if ($showsidepost && !$showsidepre) {
-    if (!right_to_left()) {
         $bodyclasses[] = 'side-post-only';
-    }else{
-        $bodyclasses[] = 'side-pre-only';
-    }
 } else if (!$showsidepost && !$showsidepre) {
     $bodyclasses[] = 'content-only';
 }
@@ -96,29 +88,18 @@ echo $OUTPUT->doctype() ?>
                     </div>
                 </div>
 
-                <?php if ($hassidepre OR (right_to_left() AND $hassidepost)) { ?>
+                <?php if ($hassidepre) { ?>
                 <div id="region-pre" class="block-region">
                     <div class="region-content">
-                            <?php
-                        if (!right_to_left()) {
-                            echo $OUTPUT->blocks_for_region('side-pre');
-                        } elseif ($hassidepost) {
-                            echo $OUTPUT->blocks_for_region('side-post');
-                    } ?>
-
+                        <?php echo $OUTPUT->blocks_for_region('side-pre'); ?>
                     </div>
                 </div>
                 <?php } ?>
 
-                <?php if ($hassidepost OR (right_to_left() AND $hassidepre)) { ?>
+                <?php if ($hassidepost) { ?>
                 <div id="region-post" class="block-region">
                     <div class="region-content">
-                           <?php
-                       if (!right_to_left()) {
-                           echo $OUTPUT->blocks_for_region('side-post');
-                       } elseif ($hassidepre) {
-                           echo $OUTPUT->blocks_for_region('side-pre');
-                    } ?>
+                        <?php echo $OUTPUT->blocks_for_region('side-post'); ?>
                     </div>
                 </div>
                 <?php } ?>
index ac8ffaf..eb369da 100644 (file)
@@ -97,4 +97,19 @@ body {margin:auto 0px;width:auto;}
 .ie6.pagelayout-report #report-main-content {float:none;width:auto;}
 .ie6.pagelayout-report #report-region-wrap {float:none;width:200px;left:auto;position:absolute;top:0;}
 .ie6.pagelayout-report #report-region-pre,
-.ie6.pagelayout-report #report-region-pre .block {width:100%;}
\ No newline at end of file
+.ie6.pagelayout-report #report-region-pre .block {width:100%;}
+
+/** Only side PRE **/
+.dir-rtl.side-pre-only #page-content #region-main-box {left:0px;}
+.dir-rtl.side-pre-only #page-content #region-post-box {margin-left:-200px;}
+.dir-rtl.side-pre-only #page-content #region-main {margin-left:200px;}
+.dir-rtl.side-pre-only #page-content #region-post {width:0px;}
+.dir-rtl.side-pre-only #page-content #region-pre {left:50%; width: 200px;}
+
+/**RTL Only side POST **/
+.dir-rtl.side-post-only #page-content {clear:both;float:left;overflow:hidden;position:relative;width:100%;min-width:900px;}
+.dir-rtl.side-post-only #page-content #region-main-box {float:left;left:200px;position:relative;width:200%;}
+.dir-rtl.side-post-only #page-content #region-post-box {margin-left:-200px;}
+.dir-rtl.side-post-only #page-content #region-main {margin-left:200px;}
+.dir-rtl.side-post-only #page-content #region-pre {width: 0;}
+.dir-rtl.side-post-only #page-content #region-post {float:left;left:0px;overflow:hidden;position:relative;width:200px;margin-left:-50%;}