CSS_THEME, 'weight' => 100)); $theme = alpha_get_theme(); $form_state['theme'] = $theme->theme; $form_state['regions'] = $theme->regions; $form_state['zones'] = $theme->zones; $form['alpha_settings'] = array( '#type' => 'vertical_tabs', '#weight' => -10, '#prefix' => t('

Layout configuration

'), ); alpha_theme_settings_general($form, $form_state); alpha_theme_settings_structure($form, $form_state); $form['#validate'][] = 'alpha_theme_settings_form_validate'; $form['#submit'][] = 'alpha_theme_settings_form_submit'; } /** * Form element validation handler for replacing the value "_none" with NULL. */ function alpha_theme_settings_validate_not_empty(&$element, &$form_state) { if ($element['#value'] == '_none') { form_set_value($element, NULL, $form_state); } } /** * Form element validation handler for validating the primary region setting for zones. */ function alpha_theme_settings_validate_primary(&$element, &$form_state) { if ($element['#value'] != '_none') { $values = $form_state['values']; if ($values['alpha_region_' . $element['#value'] . '_zone'] != $element['#zone']) { form_set_value($element, NULL, $form_state); } else { $sum = 0; foreach ($form_state['regions'] as $region => $item) { if ($values['alpha_region_' . $region . '_zone'] == $element['#zone']) { $sum += $values['alpha_region_' . $region . '_columns']; $sum += $values['alpha_region_' . $region . '_prefix']; $sum += $values['alpha_region_' . $region . '_suffix']; } } if ($sum > $values['alpha_zone_' . $element['#zone'] . '_columns']) { form_error($element, t('You have specified the %region region as the primary region for the %zone zone but the summed region width is greater than the number of available columns for that zone.', array('%region' => $form_state['regions'][$element['#value']]['name'], '%zone' => $form_state['zones'][$element['#zone']]['name']))); } } } } /** * Form element validation handler for validating the region order manipulation setting for zones. */ function alpha_theme_settings_validate_order(&$element, &$form_state) { if ($element['#value']) { $values = $form_state['values']; $sum = 0; foreach ($form_state['regions'] as $region => $item) { if ($values['alpha_region_' . $region . '_zone'] == $element['#zone']) { $sum += $values['alpha_region_' . $region . '_columns']; $sum += $values['alpha_region_' . $region . '_prefix']; $sum += $values['alpha_region_' . $region . '_suffix']; } } if ($sum > $values['alpha_zone_' . $element['#zone'] . '_columns']) { form_error($element, t('You have chosen to manipulate the region positioning of the %zone zone but the summed region width is greater than the number of available columns for that zone.', array('%zone' => $form_state['zones'][$element['#zone']]['name']))); } } } /** * Removes the vertical tab active tab from the values. It really doesn't * belong there! */ function alpha_theme_settings_form_validate($form, &$form_state) { unset($form_state['values']['alpha_settings__active_tab']); } /** * Clears the cache for the theme settings upon form submission. */ function alpha_theme_settings_form_submit($form, &$form_state) { alpha_cache_clear($form_state['theme'], (isset($form_state['delta']) ? $form_state['delta'] : NULL)); } /** * A helper function to return a proper options array for a form. * * @param $start * The number to start with. * * @param $end * The number to end with. * * @param $step * The size of a step. * * @return * An array of scale options. */ function alpha_scale_options($start, $end, $step) { $options = array(); foreach (range($start, $end, $step) as $number) { // Format the value to display with one decimal. $options[(string) $number] = number_format($number, 1); } return $options; } /** * A helper function to return a proper options array for a form. * * @return * An array of optional or responsive stylesheet options. */ function alpha_css_options($css) { $output = array(); foreach ($css as $key => $info) { $output[$key] = '' . check_plain($info['name']) . ' (' . (isset($info['options']['media']) ? $info['options']['media'] : 'all') . ') - ' . $info['file'] . '
' . $info['description'] . '
'; } return $output; } /** * A helper function to return a proper options array for a form. * * @param $theme * The key (machin-readable name) of a theme. * * @see * hook_css_alter(). * * @return * An array of stylesheets that can be disabled / excluded with * hook_css_alter(). */ function alpha_exclude_options($theme) { $output = array(); foreach (alpha_retrieve_excludes($theme) as $key => $info) { if ($info['type'] == 'exclude') { $output[$key] = '' . basename($key) . ' - ' . t('Defined by') . ' ' . $info['name'] . '
' . $info['description'] . '
'; } else { $output[$key] = '' . basename($key) . ' (' . $info['media'] . ') - ' . t('Belongs to') . ' ' . $info['name'] . '
' . $info['description'] . '
'; } } return $output; } /** * A helper function to return a proper options array for a form. * * @return * An array of available grids. */ function alpha_grid_options($grids) { $output = array(); foreach ($grids as $key => $info) { $output[$key] = check_plain($info['name']); } return $output; } /** * A helper function to return a proper options array for a form. * * @param $grid * The name of a grid. * * @return * An array of available layouts. */ function alpha_grid_layouts_options($grid) { $output = array(); if (!empty($grid['layouts'])) { foreach ($grid['layouts'] as $key => $info) { $output[$key] = check_plain($info['name']); } } return $output; } /** * A helper function to return a proper options array for a form. * * @return * An array of available libraries. */ function alpha_library_options($libraries) { $output = array(); foreach ($libraries as $key => $info) { $output[$key] = check_plain($info['name']) . '
' . $info['description'] . '
'; } return $output; } /** * A helper function to return a proper options array for a form. * * @param $grid * The grid that you want to fetch the available containers for. * * @return * An array of available containers. */ function alpha_container_options($grid) { $output = array(); if (!empty($grid['columns'])) { foreach ($grid['columns'] as $count => $title) { $output[$count] = t('@count Columns', array('@count' => $count)); } } return $output; } /** * A helper function to return a proper options array for a form. * * @param $max * The maximum number of columns that you want to cover. * * @return * An array of available columns counts. */ function alpha_column_options($max = NULL) { $output = array(); if (isset($max)) { foreach (range(0, $max) as $width) { $output[$width] = t('@width Columns', array('@width' => $width)); } } return $output; } /** * A helper function to return a proper options array for a form. * * @return * An array of available zones. */ function alpha_zone_options($zones) { $output = array(); foreach ($zones as $key => $info) { $output[$key] = check_plain($info['name']); } return $output; } /** * A helper function to return a proper options array for a form. * * @return * An array of available regions. */ function alpha_region_options($regions) { $output = array(); foreach ($regions as $region => $item) { $output[$region] = $item['name']; } return $output; } /** * A helper function to return a proper options array for a form. * * @return * An array of available regions for a zone. */ function alpha_zone_regions($zone, $regions) { $matches = array(); foreach ($regions as $region => $info) { if ($zone == $info['zone']) { $matches[$region] = $info; } } return alpha_region_options($matches); }