/**
 * Implements hook_form_system_theme_settings_alter()
 */
function alpha_form_system_theme_settings_alter(&$form, &$form_state)
{
    require_once DRUPAL_ROOT . '/' . drupal_get_path('theme', 'alpha') . '/includes/theme-settings-general.inc';
    require_once DRUPAL_ROOT . '/' . drupal_get_path('theme', 'alpha') . '/includes/theme-settings-zones.inc';
    require_once DRUPAL_ROOT . '/' . drupal_get_path('theme', 'alpha') . '/includes/theme-settings-regions.inc';
    drupal_add_css(drupal_get_path('theme', 'alpha') . '/css/alpha-theme-settings.css', array('group' => CSS_THEME, 'weight' => 100));
    $theme = $form_state['build_info']['args'][0];
    alpha_register_grids($theme);
    alpha_register_css($theme);
    alpha_register_libraries($theme);
    $form_state['alpha_settings'] = alpha_settings($theme);
    $form_state['alpha_zones'] = alpha_zones(NULL, $theme);
    $form_state['alpha_regions'] = alpha_regions(NULL, $theme);
    $form_state['alpha_containers'] = alpha_container_options($form_state['alpha_settings']['grid'], $theme);
    $form['alpha_settings'] = array('#type' => 'vertical_tabs', '#weight' => -10, '#prefix' => t('<h3>Layout configuration</h3>'));
    alpha_theme_settings_general($form, $form_state);
    alpha_theme_settings_zones($form, $form_state);
    alpha_theme_settings_regions($form, $form_state);
}
Beispiel #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);
}