Ticket #1485031: multi_skin.patch

File multi_skin.patch, 3.5 KB (added by bpat1434, 5 years ago)

Patch (diff) file for use with trunk rev1343 to add multi-skin selection

  • program/include/rcube_template.php

     
    5353        $this->task = $task; 
    5454        $this->config = $config; 
    5555 
     56                // load the correct skin (in case user-defined) 
     57                if (empty($config['skin'])) 
     58                  $config['skin'] = $config['default_skin']; 
     59 
     60                $this->config['skin_path'] = $config['skins_path'].$config['skin']; 
     61 
    5662        // add common javascripts 
    5763        $javascript = 'var '.JS_OBJECT_NAME.' = new rcube_webmail();'; 
    5864 
  • program/localization/en_US/labels.inc

     
    275275$labels['sortasc']  = 'Sort ascending'; 
    276276$labels['sortdesc'] = 'Sort descending'; 
    277277 
     278$labels['skin'] = 'Skin to use'; 
     279 
    278280?> 
  • program/steps/settings/func.inc

     
    181181                    $input_preview->show($CONFIG['preview_pane']?1:0)); 
    182182    } 
    183183 
     184  // show drop-down for available skins 
     185  if (!isset($no_override['skins'])) 
     186        { 
     187        $field_id = 'rcmfd_skin'; 
     188 
     189        // Determine if skins are available for use: 
     190        if (($skins = rcmail_multi_skin())!== false) 
     191          { 
     192          $input_preview = new html_select(array('name'=>'_skin', 'id'=>$field_id)); 
     193          foreach ($skins as $skin) 
     194                  $input_preview->add(ucfirst($skin), $skin); 
     195          } 
     196        else 
     197      { 
     198          $input_preview = new html_select(array('name'=>'_skin', 'id'=>$field_id, 'disabled'=>'disbabled')); 
     199          $input_preview->add('No skins to choose from', ''); 
     200          } 
     201 
     202        $out .= sprintf("<tr><td class=\"title\"><lable for=\"%s\">%s</label></td><td>%s</td></tr>\n", 
     203                            $field_id, 
     204                            Q(rcube_label('skin')), 
     205                            $input_preview->show($CONFIG['skin'])); 
     206        } 
     207 
    184208  $out .= "</table></fieldset>\n<fieldset><legend>" . Q(rcube_label('serversettings')) . "</legend>\n<table" . $attrib_str . ">\n\n"; 
    185209                   
    186210  if (!empty($CONFIG['drafts_mbox']) && !isset($no_override['draft_autosave'])) 
     
    278302  return array($form_start, $form_end);   
    279303  } 
    280304 
     305function rcmail_multi_skin() 
     306  { 
     307  global $CONFIG; 
     308  $dir = opendir($CONFIG['skins_path']); 
     309   
     310  if (!$dir) 
     311        return false; 
     312   
     313  $skins = array(); 
     314  while (($file = readdir($dir)) !== false) 
     315        { 
     316          if (is_dir($CONFIG['skins_path'].$file) && $file != '.' && $file != '..') 
     317            $skins[] = $file; 
     318        } 
    281319 
     320  if (count($skins) <= 1) 
     321        return false; 
     322 
     323  closedir($dir); 
     324  return $skins; 
     325  } 
     326 
     327 
    282328// register UI objects 
    283329$OUTPUT->add_handlers(array( 
    284330  'userprefs' => 'rcmail_user_prefs_form', 
  • program/steps/settings/save_prefs.inc

     
    3030  'logout_purge' => isset($_POST['_logout_purge']) ? TRUE : FALSE, 
    3131  'logout_expunge' => isset($_POST['_logout_expunge']) ? TRUE : FALSE, 
    3232  'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0, 
     33  'skin'         => isset($_POST['_skin']) ? $_POST['_skin'] : $CONFIG['default_skin'], 
    3334  ); 
    3435 
    3536// don't override these parameters