/**
 * Implements hook_form_system_theme_settings_alter()
 */
function omega_form_system_theme_settings_alter(&$form, &$form_state)
{
    $theme = $form_state['build_info']['args'][0];
    $zones = $form_state['alpha_zones'];
    $regions = $form_state['alpha_regions'];
    $sections = alpha_sections();
    foreach ($regions as $region => $item) {
        $zone = $item['enabled'] ? 'zone_' . $item['zone'] : 'unassigned';
        $section = $item['enabled'] && $zones[$item['zone']]['enabled'] ? 'section_' . $zones[$item['zone']]['section'] : 'unassigned';
        $form['alpha_settings']['regions'][$section][$zone]['region_' . $region]['alpha_region_' . $region . '_equal_height'] = array('#type' => 'checkbox', '#title' => t('Force equal height for all child elements'), '#description' => t("Force equal height for all child elements."), '#default_value' => $item['equal_height'], '#weight' => -10, '#states' => array('visible' => array(':input[name="alpha_libraries[omega_equalheights]"]' => array('checked' => TRUE))));
    }
    foreach ($zones as $zone => $item) {
        $section = $item['enabled'] ? 'section_' . $item['section'] : 'unassigned';
        $item['regions'] = !empty($item['regions']) ? $item['regions'] : array();
        $form['alpha_settings']['zones'][$section]['zone_' . $zone]['alpha_zone_' . $zone . '_equal_height'] = array('#type' => 'checkbox', '#title' => t('Force equal height for all child elements.'), '#description' => t("Force equal height for all child elements."), '#default_value' => $item['equal_height'], '#weight' => -10, '#states' => array('visible' => array(':input[name="alpha_libraries[omega_equalheights]"]' => array('checked' => TRUE))));
    }
}
Esempio n. 2
0
/**
 * Implements hook_page_alter().
 */
function alpha_page_alter(&$vars)
{
    $settings = alpha_settings();
    $regions = $columns = array();
    $reference =& drupal_static('alpha_regions');
    if ($settings['debug']['access']) {
        if ($settings['debug']['block']) {
            foreach (alpha_regions() as $region => $item) {
                if ($item['enabled']) {
                    $block = new stdClass();
                    $block->delta = 'debug-' . $region;
                    $block->region = $region;
                    $block->module = 'alpha-debug';
                    $block->subject = $item['name'];
                    $vars[$region]['#sorted'] = FALSE;
                    $vars[$region]['alpha_debug_' . $region] = array('#block' => $block, '#weight' => -999, '#markup' => t('This is a debugging block'), '#theme_wrappers' => array('block'));
                }
            }
        }
        if ($settings['debug']['grid']) {
            $class = 'alpha-grid-toggle alpha-grid-toggle-' . ($settings['debug']['active'] ? 'active' : 'inactive');
            if (empty($vars['page_bottom'])) {
                $vars['page_bottom']['#region'] = 'page_bottom';
                $vars['page_bottom']['#theme_wrappers'] = array('region');
            }
            if ($settings['responsive']) {
                $vars['page_bottom']['alpha_resize_indicator'] = array('#type' => 'markup', '#markup' => '<div class="alpha-resize-indicator"></div>');
            }
            $vars['page_bottom']['alpha_grid_toggle'] = array('#type' => 'markup', '#markup' => '<a class="' . $class . '" href="#"></a>');
        }
    }
    foreach (alpha_regions() as $region => $item) {
        if ($item['enabled'] && ($item['force'] || !empty($vars[$region]))) {
            $zone = $item['zone'];
            $regions[$zone][$region] = isset($vars[$region]) ? $vars[$region] : array();
            $regions[$zone][$region]['#region'] = $region;
            $regions[$zone][$region]['#theme_wrappers'] = array('region');
            $regions[$zone][$region]['#data'] = $item;
            $regions[$zone][$region]['#weight'] = (int) $item['weight'];
            if ($children = element_children($regions[$zone][$region])) {
                $last = count($children) - 1;
                foreach ($children as $element) {
                    $regions[$zone][$region][$element]['#first'] = $element == $children[0];
                    $regions[$zone][$region][$element]['#last'] = $element == $children[$last];
                }
            }
        }
        unset($vars[$region]);
    }
    foreach (alpha_zones() as $zone => $item) {
        if ($item['enabled'] && ($item['force'] || !empty($regions[$zone]))) {
            $section = $item['section'];
            $columns[$item['columns']] = $item['columns'];
            if (!empty($item['primary']) && !empty($regions[$zone][$item['primary']])) {
                $children = element_children($regions[$zone]);
                $theme = $GLOBALS['theme_key'];
                $primary =& $regions[$zone][$item['primary']];
                $primary['#weight'] = -999;
                $primary['#data']['columns'] = $item['columns'] - $primary['#data']['prefix'] - $primary['#data']['suffix'];
                $primary['#data']['width'] = $item['columns'];
                foreach ($children as $region) {
                    if (!$regions[$zone][$region]['#data']['primary']) {
                        $primary['#data']['columns'] -= $regions[$zone][$region]['#data']['width'];
                        $primary['#data']['width'] -= $regions[$zone][$region]['#data']['width'];
                        if ($primary['#data']['weight'] > $regions[$zone][$region]['#data']['weight']) {
                            $primary['#data']['push'] += $regions[$zone][$region]['#data']['width'];
                        }
                    }
                }
                $reference[$theme][$item['primary']]['columns'] = $primary['#data']['columns'];
                $reference[$theme][$item['primary']]['width'] = $primary['#data']['width'];
                $reference[$theme][$item['primary']]['push'] = $primary['#data']['push'];
                foreach ($children as $region) {
                    if (!$regions[$zone][$region]['#data']['primary'] && $primary['#data']['weight'] > $regions[$zone][$region]['#data']['weight']) {
                        $regions[$zone][$region]['#data']['pull'] = $primary['#data']['width'];
                        $reference[$theme][$region]['pull'] = $primary['#data']['width'];
                    }
                }
            }
            $vars[$section][$zone] = !empty($regions[$zone]) ? $regions[$zone] : array();
            $vars[$section][$zone]['#theme_wrappers'] = array('zone');
            $vars[$section][$zone]['#zone'] = $zone;
            $vars[$section][$zone]['#weight'] = (int) $item['weight'];
            $vars[$section][$zone]['#sorted'] = FALSE;
            $vars[$section][$zone]['#data'] = $item;
            $vars[$section][$zone]['#data']['type'] = !empty($item['primary']) && !empty($vars[$section][$zone][$item['primary']]) ? 'dynamic' : 'static';
        }
    }
    foreach (alpha_sections() as $section => $item) {
        if (isset($vars[$section])) {
            $vars[$section]['#theme_wrappers'] = array('section');
            $vars[$section]['#section'] = $section;
        }
    }
    alpha_include_grid($settings['grid'], $columns);
}