Skip to content
Snippets Groups Projects
theme-settings.php 5.40 KiB
<?php

/**
 * @file
 * Theme settings file for the WCM Omega theme.
 */

require_once dirname(__FILE__) . '/template.php';

/**
 * Implements hook_form_FORM_alter().
 */
function wcm_omega_form_system_theme_settings_alter(&$form, $form_state) {
  // You can use this hook to append your own theme settings to the theme
  // settings form for your subtheme. You should also take a look at the
  // 'extensions' concept in the Omega base theme.
  $form['wcm_omega'] = array(
    '#type' => 'fieldset',
    '#title' => t('Theme Customization'),
    '#description' => t('Customize the look and feel of the site.'),
    'wcm_omega_breadcrumb' => array(
      '#type'  => 'checkbox',
      '#title' => t('Show Breadcrumbs'),
       '#description' => t('If checked, breadcrumbs will display on all pages except for the front page. You will also have the option of hiding breadcrumbs for other Landing Pages on a per-page basis.'),
      '#default_value' => theme_get_setting('wcm_omega_breadcrumb'),
    ),
  );   

  //colorize fieldset
  $form['wcm_omega']['colorize'] = array(
    '#title' => t('Site Colors'),
    '#type' => 'fieldset',
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );

  $form['wcm_omega']['colorize']['wcm_omega_color_navbar'] = array(   
    '#type'  => 'radios',
    '#title' => t('OSU Nav Bar'),
    '#default_value' => theme_get_setting('wcm_omega_color_navbar'),
    '#options' => wcm_omega_generate_color_swatches(
      array(
        'lt-gray' => t('Light Gray'),
        'dk-gray' => t('Dark Gray'),
      )
    ),
  );
  
  $form['wcm_omega']['colorize']['wcm_omega_color_masthead'] = array(   
    '#type' => 'radios',
    '#title' => t('Masthead'),
    '#default_value' => theme_get_setting('wcm_omega_color_masthead'),
    '#options' => wcm_omega_generate_color_swatches(
      array(
        'white' => t('White'),
        'lt-gray' => t('Light Gray'),
        'md-gray' => t('Mid Gray'),
        'dk-gray' => t('Dark Gray'),
      )
    )
  );
  
  $form['wcm_omega']['colorize']['wcm_omega_color_menu'] = array(   
    '#type' => 'radios',
    '#title' => t('Menu'),
    '#default_value' => theme_get_setting('wcm_omega_color_menu'),
    '#options' => wcm_omega_generate_color_swatches(
      array(
        'white' => t('White'),
        'lt-gray' => t('Light Gray'),
        'md-gray' => t('Mid Gray'),
        'dk-gray' => t('Dark Gray'),
        'black' => t('Black'),
        'red' => t('Red'),
      )
    )
  );
  
  $form['wcm_omega']['colorize']['wcm_omega_color_body'] = array(   
    '#type' => 'radios',
    '#title' => t('Body Color'),
    '#default_value' => theme_get_setting('wcm_omega_color_body'),
    '#options' => wcm_omega_generate_color_swatches(
      array(
        'white' => t('White'),
        'lt-gray' => t('Light Gray'),
      )
    )
  );
  
  $form['wcm_omega']['colorize']['wcm_omega_color_footer'] = array(   
    '#type' => 'radios',
    '#title' => t('Footer Color'),
    '#default_value' => theme_get_setting('wcm_omega_color_footer'),
    '#options' => wcm_omega_generate_color_swatches(
      array(
        'white' => t('White'),
        'lt-gray' => t('Light Gray'),
        'md-gray' => t('Mid Gray'),
        'dk-gray' => t('Dark Gray'),
      )
    )
  ); 
  
  //typography fieldset
  $form['wcm_omega']['typography'] = array(
    '#type' => 'fieldset',
    '#title' => t('Site Typography'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );
  
  $form['wcm_omega']['typography']['wcm_omega_typography_group'] = array(   
    '#type'  => 'radios',
    '#default_value' => theme_get_setting('wcm_omega_typography_group'),
    '#options' => wcm_omega_generate_typography_group_samples(
      array(
        'group1' => t('Group 1'),
        'group2' => t('Group 2'),
        'group3' => t('Group 3'),
      )
    ),
  );

  $form['#attached']['css'][] = drupal_get_path('theme', 'wcm_omega') . '/css/wcm-omega.settings.css';
  $form['#validate'][] = 'wcm_omega_form_system_theme_settings_validate';
}


// validation to not allow certain color combinations
function wcm_omega_form_system_theme_settings_validate(&$form, &$form_state) {

  if (!empty($form['ocio_omega']['ocio_omega_color_navbar'])) {  
	  if ($form_state['values']['ocio_omega_color_navbar'] == 'dk-gray' && $form_state['values']['ocio_omega_color_masthead'] == 'dk-gray') {
	    form_set_error('ocio_omega_color_masthead', t('Dark masthead cannot be used with dark navbar.'));
	    $form['ocio_omega']['ocio_omega_color_masthead']['dk-gray']['#attributes']['class'][] = 'form-radio-error';
	  }
	}
}

//Generate Color swatches for settings
function wcm_omega_generate_color_swatches($options = array()) {
  foreach ($options as $name => $title) {
    $option = '<span class="' . $name . '-option swatch-panel">';
    $option .= '<span class="label">' . $title . '</span>';
    $option .= '<div class="swatch ' . $name . '"></div>';
    $option .= '</span>';
    $options[$name] = $option;
  }
  return $options;
}

//Generate typography group samples
function wcm_omega_generate_typography_group_samples($options = array()) {
  foreach ($options as $name => $title) {
    $option = '<span class="type-' . $name . '-sample">';
    $option .= '<span class="label">' . $title . '</span>';
    $option .= '<div class="sample-block">';
    $option .= '<h1>Heading 1</h1><h2>Heading 2</h2><h3>Heading 3</h3><h4>Heading 4</h4><h2 class="block__title">Block Title</h2>';
    $option .= '</div>';
    $option .= '</span>';
    $options[$name] = $option;
  }
  return $options;
}