theme = $theme; $this->delta = $delta; if ($cache = alpha_cache_get($theme, $delta)) { foreach ($cache->data as $key => $item) { $this->$key = $item; } } foreach ($this->cacheable() as $item => $required) { if ($required && !isset($this->$item)) { $this->init(); alpha_alter('alpha_pre_cache', $this, $theme, $delta); alpha_cache_set($this); return; } } alpha_alter('alpha', $this, $theme, $delta); } /** * @todo */ function init() { $this->settings(); $this->sections(); $this->zones(); $this->regions(); $this->grids(); $this->grid(); $this->css(); $this->libraries(); } /** * @todo */ function settings() { if (!isset($this->settings)) { $this->settings = array( 'grid' => alpha_theme_get_setting('alpha_grid', 'default', $this->theme), 'css' => alpha_theme_get_setting('alpha_css', array(), $this->theme), 'libraries' => alpha_theme_get_setting('alpha_libraries', array(), $this->theme), 'exclude' => alpha_theme_get_setting('alpha_exclude', array(), $this->theme), 'responsive' => alpha_theme_get_setting('alpha_responsive', FALSE, $this->theme), 'toggle' => array(), 'hidden' => array(), 'viewport' => array( 'enabled' => alpha_theme_get_setting('alpha_viewport', FALSE, $this->theme), 'initial' => alpha_theme_get_setting('alpha_viewport_initial_scale', 1, $this->theme), 'min' => alpha_theme_get_setting('alpha_viewport_min_scale', 1, $this->theme), 'max' => alpha_theme_get_setting('alpha_viewport_max_scale', 1, $this->theme), 'user' => alpha_theme_get_setting('alpha_viewport_user_scaleable', TRUE, $this->theme), ), 'debug' => array( 'block' => alpha_theme_get_setting('alpha_debug_block_toggle', FALSE, $this->theme), 'block_active' => alpha_theme_get_setting('alpha_debug_block_active', FALSE, $this->theme), 'grid' => alpha_theme_get_setting('alpha_debug_grid_toggle', FALSE, $this->theme), 'grid_active' => alpha_theme_get_setting('alpha_debug_grid_active', FALSE, $this->theme), 'roles' => array_keys(array_filter(alpha_theme_get_setting('alpha_debug_grid_roles', array(), $this->theme))), ), ); foreach (alpha_toggle() as $item => $title) { $this->settings['toggle'][$item] = alpha_theme_get_setting('alpha_toggle_' . $item, TRUE, $this->theme); } foreach (alpha_visibility() as $item => $title) { $this->settings['hidden'][$item] = alpha_theme_get_setting('alpha_hidden_' . $item, FALSE, $this->theme); } alpha_alter('alpha_settings', $this->settings, $this->theme); } return $this->settings; } /** * @todo */ function grids() { if (!isset($this->grids)) { $this->settings(); $this->grids = alpha_retrieve_grids($this->theme); } return $this->grids; } /** * @todo */ function grid() { if (!isset($this->grid)) { $this->grids(); if (isset($this->grids[$this->settings['grid']])) { $this->grid = alpha_grid_css($this->theme, $this->grids[$this->settings['grid']], $this->settings['responsive']); } else { $this->grid = array(); } } return $this->grid; } /** * @todo */ function css() { if (!isset($this->css)) { $this->css = alpha_retrieve_css($this->theme); } return $this->css; } /** * @todo */ function libraries() { if (!isset($this->libraries)) { $this->libraries = alpha_retrieve_libraries($this->theme); } return $this->libraries; } /** * @todo */ function sections() { if (!isset($this->sections)) { $this->sections = array( 'header' => t('Header'), 'content' => t('Content'), 'footer' => t('Footer'), ); } return $this->sections; } /** * @todo */ function zones() { if (!isset($this->zones)) { $this->sections(); $this->zones = array(); if ($zones = alpha_info('zones', $this->theme)) { foreach ($zones as $zone => $title) { $section = alpha_zone_get_setting('section', $zone, NULL, $this->theme); $section = isset($this->sections[$section]) ? $section : NULL; $this->zones[$zone] = array( 'zone' => $zone, 'name' => $title, 'enabled' => isset($this->sections[$section]), 'force' => alpha_zone_get_setting('force', $zone, FALSE, $this->theme), 'columns' => alpha_zone_get_setting('columns', $zone, 0, $this->theme), 'section' => $section, 'weight' => alpha_zone_get_setting('weight', $zone, 0, $this->theme), 'wrapper' => alpha_zone_get_setting('wrapper', $zone, FALSE, $this->theme), 'wrapper_css' => alpha_zone_get_setting('wrapper_css', $zone, NULL, $this->theme), 'primary' => alpha_zone_get_setting('primary', $zone, NULL, $this->theme), 'order' => alpha_zone_get_setting('order', $zone, FALSE, $this->theme), 'css' => alpha_zone_get_setting('css', $zone, NULL, $this->theme), ); } } uasort($this->zones, 'drupal_sort_weight'); alpha_alter('alpha_zones', $this->zones, $this->theme); } return $this->zones; } /** * @todo */ function regions() { if (!isset($this->regions)) { $this->zones(); $this->sections(); $this->regions = array(); $exclude = alpha_regions_exclude(); foreach (system_region_list($this->theme) as $region => $title) { if (!in_array($region, $exclude)) { $zone = alpha_region_get_setting('zone', $region, NULL, $this->theme); $prefix = alpha_region_get_setting('prefix', $region, 0, $this->theme); $columns = alpha_region_get_setting('columns', $region, 1, $this->theme); $suffix = alpha_region_get_setting('suffix', $region, 0, $this->theme); $zone = isset($zone) && isset($this->zones[$zone]) ? $zone : NULL; $section = isset($zone) && isset($this->zones[$zone]['section']) ? $this->zones[$zone]['section'] : NULL; $this->regions[$region] = array( 'region' => $region, 'name' => $title, 'zone' => $zone, 'section' => $section, 'enabled' => isset($zone), 'force' => alpha_region_get_setting('force', $region, FALSE, $this->theme), 'prefix' => $prefix, 'columns' => $columns, 'suffix' => $suffix, 'width' => $prefix + $columns + $suffix, 'push' => 0, 'pull' => 0, 'wrapper_css' => alpha_region_get_setting('css', $region, NULL, $this->theme), 'weight' => alpha_region_get_setting('weight', $region, 0, $this->theme), 'position' => alpha_region_get_setting('position', $region, 0, $this->theme), 'primary' => isset($zone) && $this->zones[$zone]['primary'] == $region, ); } } uasort($this->regions, 'drupal_sort_weight'); alpha_alter('alpha_regions', $this->regions, $this->theme); } return $this->regions; } /** * @todo */ function cacheable() { $cacheable = array_fill_keys(array('settings', 'libraries', 'css', 'grids', 'grid', 'regions', 'zones', 'sections'), TRUE); alpha_alter('alpha_cacheable', $cacheable, $this->theme); return $cacheable; } }