Merged changes for MDL-25394
authorSam Hemelryk <sam@moodle.com>
Wed, 8 Jun 2011 02:58:42 +0000 (10:58 +0800)
committerSam Hemelryk <sam@moodle.com>
Wed, 8 Jun 2011 02:58:42 +0000 (10:58 +0800)
1  2 
lib/adminlib.php
lib/db/upgrade.php
lib/moodlelib.php
theme/index.php
version.php

Simple merge
@@@ -6521,4 -6119,4 +6521,4 @@@ WHERE gradeitemid IS NOT NULL AND grade
  // 1/ drop block_pinned_old table here and in install.xml
  // 2/ drop block_instance_old table here and in install.xml
  
--//TODO: AFTER 2.0 remove the column user->emailstop and the user preference "message_showmessagewindow"
++//TODO: AFTER 2.0 remove the column user->emailstop and the user preference "message_showmessagewindow"
Simple merge
diff --cc theme/index.php
@@@ -74,74 -79,117 +79,117 @@@ if ($reset and confirm_sesskey()) 
  echo $OUTPUT->header('themeselector');
  echo $OUTPUT->heading(get_string('themes'));
  
- echo $OUTPUT->single_button(new moodle_url('index.php', array('sesskey'=>sesskey(),'reset'=>1)), get_string('themeresetcaches', 'admin'));
+ echo $OUTPUT->single_button(new moodle_url('index.php', array('sesskey' => sesskey(), 'reset' => 1)), get_string('themeresetcaches', 'admin'));
  
  $table = new html_table();
- $table->id = 'adminthemeselector';
- $table->head = array(get_string('theme'), get_string('info'));
- $themes = get_plugin_list('theme');
- foreach ($themes as $themename => $themedir) {
-     // Load the theme config.
-     try {
-         $theme = theme_config::load($themename);
-     } catch (Exception $e) {
-         // Bad theme, just skip it for now.
-         continue;
-     }
-     if ($themename !== $theme->name) {
-         //obsoleted or broken theme, just skip for now
-         continue;
+ $table->data = array();
 -if ($CFG->enabledevicedetection && empty($device)) {
++if (!empty($CFG->enabledevicedetection) && empty($device)) {
+     // Display a list of devices that a user can select a theme for.
+     $strthemenotselected = get_string('themenoselected', 'admin');
+     $strthemeselect = get_string('themeselect', 'admin');
+     // Display the device selection screen
+     $table->id = 'admindeviceselector';
+     $table->head = array(get_string('devicetype', 'admin'), get_string('theme'), get_string('info'));
+     $devices = get_device_type_list();
+     foreach ($devices as $device) {
+         $themename = get_selected_theme_for_device_type($device);
+         if (!$themename && $device == 'default') {
+             $themename = theme_config::DEFAULT_THEME;
+         }
+         $screenshotcell = $strthemenotselected;
+         if ($themename) {
+             // Check the theme exists
+             $themename = clean_param($themename, PARAM_THEME);
+             if (empty($themename)) {
+                 // Likely the theme has been deleted
+                 unset_config(get_device_cfg_var_name($device));
+             } else {
+                 $strthemename = get_string('pluginname', 'theme_'.$themename);
+                 // link to the screenshot, now mandatory - the image path is hardcoded because we need image from other themes, not the current one
+                 $screenshoturl = new moodle_url('/theme/image.php', array('theme' => $themename, 'image' => 'screenshot', 'component' => 'theme'));
+                 // Contents of the screenshot/preview cell.
+                 $screenshotcell = html_writer::empty_tag('img', array('src' => $screenshoturl, 'alt' => $strthemename));
+             }
+         }
+         $deviceurl = new moodle_url('/theme/index.php', array('device' => $device, 'sesskey' => sesskey()));
+         $select = new single_button($deviceurl, $strthemeselect, 'get');
+         $table->data[] = array(
+             $device,
+             $screenshotcell,
+             $OUTPUT->render($select)
+         );
      }
-     if (!$CFG->themedesignermode && $theme->hidefromselector) {
-         // The theme doesn't want to be shown in the theme selector and as theme
-         // designer mode is switched off we will respect that decision.
-         continue;
-     }
-     $strthemename = get_string('pluginname', 'theme_'.$themename);
-     // Build the table row, and also a list of items to go in the second cell.
-     $row = array();
-     $infoitems = array();
-     $rowclasses = array();
-     // Set up bools whether this theme is chosen either main or legacy
-     $ischosentheme = ($themename == $CFG->theme);
-     $ischosenlegacytheme = (!empty($CFG->themelegacy) && $themename == $CFG->themelegacy);
+ } else {
+     // Either a device has been selected of $CFG->enabledevicedetection is off so display a list
+     // of themes to select.
  
-     if ($ischosentheme) {
-         // Is the chosen main theme
-         $rowclasses[] = 'selectedtheme';
+     if (empty($device)) {
+         // if $CFG->enabledevicedetection is off this will return 'default'
+         $device = get_device_type();
      }
-     if ($ischosenlegacytheme) {
-         // Is the chosen legacy theme
-         $rowclasses[] = 'selectedlegacytheme';
-     }
-     // link to the screenshot, now mandatory - the image path is hardcoded because we need image from other themes, not the current one
-     $screenshotpath = new moodle_url('/theme/image.php', array('theme'=>$themename, 'image'=>'screenshot','component'=>'theme'));
-     // Contents of the first screenshot/preview cell.
-     $row[] = html_writer::empty_tag('img', array('src'=>$screenshotpath, 'alt'=>$strthemename));
  
-     // Contents of the second cell.
-     $infocell = $OUTPUT->heading($strthemename, 3);
-     // Button to choose this as the main theme
-     $maintheme = new single_button(new moodle_url('/theme/index.php', array('choose' => $themename, 'sesskey' => sesskey())), get_string('useformaintheme'), 'get');
-     $maintheme->disabled = $ischosentheme;
-     $infocell .= $OUTPUT->render($maintheme);
-     // Button to choose this as the legacy theme
-     $legacytheme = new single_button(new moodle_url('/theme/index.php', array('chooselegacy' => $themename, 'sesskey' => sesskey())), get_string('useforlegacytheme'), 'get');
-     $legacytheme->disabled = $ischosenlegacytheme;
-     $infocell .= $OUTPUT->render($legacytheme);
-     $row[] = $infocell;
-     $table->data[$themename] = $row;
-     $table->rowclasses[$themename] = join(' ', $rowclasses);
+     $table->id = 'adminthemeselector';
+     $table->head = array(get_string('theme'), get_string('info'));
+     $themes = get_plugin_list('theme');
+     foreach ($themes as $themename => $themedir) {
+         // Load the theme config.
+         try {
+             $theme = theme_config::load($themename);
+         } catch (Exception $e) {
+             // Bad theme, just skip it for now.
+             continue;
+         }
+         if ($themename !== $theme->name) {
+             //obsoleted or broken theme, just skip for now
+             continue;
+         }
+         if (!$CFG->themedesignermode && $theme->hidefromselector) {
+             // The theme doesn't want to be shown in the theme selector and as theme
+             // designer mode is switched off we will respect that decision.
+             continue;
+         }
+         $strthemename = get_string('pluginname', 'theme_'.$themename);
+         // Build the table row, and also a list of items to go in the second cell.
+         $row = array();
+         $infoitems = array();
+         $rowclasses = array();
+         // Set up bools whether this theme is chosen either main or legacy
+         $ischosentheme = ($themename == get_selected_theme_for_device_type($device));
+         if ($ischosentheme) {
+             // Is the chosen main theme
+             $rowclasses[] = 'selectedtheme';
+         }
+         // link to the screenshot, now mandatory - the image path is hardcoded because we need image from other themes, not the current one
+         $screenshotpath = new moodle_url('/theme/image.php', array('theme'=>$themename, 'image'=>'screenshot', 'component'=>'theme'));
+         // Contents of the first screenshot/preview cell.
+         $row[] = html_writer::empty_tag('img', array('src'=>$screenshotpath, 'alt'=>$strthemename));
+         // Contents of the second cell.
+         $infocell = $OUTPUT->heading($strthemename, 3);
+         // Button to choose this as the main theme
+         $maintheme = new single_button(new moodle_url('/theme/index.php', array('device' => $device, 'choose' => $themename, 'sesskey' => sesskey())), get_string('usetheme'), 'get');
+         $maintheme->disabled = $ischosentheme;
+         $infocell .= $OUTPUT->render($maintheme);
+         $row[] = $infocell;
+         $table->data[$themename] = $row;
+         $table->rowclasses[$themename] = join(' ', $rowclasses);
+     }
  }
  
  echo html_writer::table($table);
diff --cc version.php
@@@ -30,7 -30,7 +30,7 @@@
  defined('MOODLE_INTERNAL') || die();
  
  
- $version  = 2011060500.02;              // YYYYMMDD      = weekly release date of this DEV branch
 -$version  = 2011053100.00;              // YYYYMMDD      = weekly release date of this DEV branch
++$version  = 2011060500.03;              // YYYYMMDD      = weekly release date of this DEV branch
                                          //         RR    = release increments - 00 in DEV branches
                                          //           .XX = incremental changes