2009-07-31 19:35:57 +00:00
<?php
2010-05-12 09:22:24 +00:00
/**
2012-04-19 15:30:31 +00:00
* @file
* Functions to support theming in the Seven theme.
*/
2013-07-14 20:17:23 +00:00
use Drupal\Core\Template\RenderWrapper;
2013-08-30 15:22:28 +00:00
/**
* Implements hook_library_info().
*/
function seven_library_info() {
$path = drupal_get_path('theme', 'seven');
$libraries['install-page'] = array(
2013-09-05 09:48:11 +00:00
'version' => Drupal::VERSION,
2013-08-30 15:22:28 +00:00
'js' => array(
$path . '/js/mobile.install.js' => array(
'group' => JS_THEME,
),
),
'css' => array(
$path . '/install-page.css' => array(
'group' => CSS_AGGREGATE_THEME,
),
),
);
return $libraries;
}
2012-04-19 15:30:31 +00:00
/**
2013-05-24 16:53:16 +00:00
* Implements hook_preprocess_HOOK() for maintenance-page.html.twig.
2010-05-12 09:22:24 +00:00
*/
2013-07-13 10:29:57 +00:00
function seven_preprocess_maintenance_page(&$variables) {
2010-05-12 09:22:24 +00:00
// While markup for normal pages is split into page.tpl.php and html.tpl.php,
// the markup for the maintenance page is all in the single
2013-05-24 16:53:16 +00:00
// maintenance-page.html.twig template. So, to have what's done in
2010-05-12 09:22:24 +00:00
// seven_preprocess_html() also happen on the maintenance page, it has to be
// called here.
2013-07-13 10:29:57 +00:00
seven_preprocess_html($variables);
2010-05-12 09:22:24 +00:00
}
2009-07-31 19:35:57 +00:00
/**
2012-04-19 15:30:31 +00:00
* Implements hook_preprocess_HOOK() for html.tpl.php.
2009-07-31 19:35:57 +00:00
*/
2013-07-13 10:29:57 +00:00
function seven_preprocess_html(&$variables) {
2012-11-02 06:28:14 +00:00
drupal_add_library('system', 'normalize');
2009-09-15 17:10:39 +00:00
}
2010-02-25 20:57:39 +00:00
/**
2012-04-19 15:30:31 +00:00
* Implements hook_preprocess_HOOK() for page.tpl.php.
2010-02-25 20:57:39 +00:00
*/
2013-07-13 10:29:57 +00:00
function seven_preprocess_page(&$variables) {
$variables['primary_local_tasks'] = $variables['tabs'];
unset($variables['primary_local_tasks']['#secondary']);
$variables['secondary_local_tasks'] = array(
2010-11-20 04:03:51 +00:00
'#theme' => 'menu_local_tasks',
2013-07-13 10:29:57 +00:00
'#secondary' => isset($variables['tabs']['#secondary']) ? $variables['tabs']['#secondary'] : '',
2010-11-20 04:03:51 +00:00
);
2009-07-31 19:35:57 +00:00
}
/**
2012-04-19 15:30:31 +00:00
* Displays the list of available node types for node creation.
2009-07-31 19:35:57 +00:00
*/
2009-10-09 01:00:08 +00:00
function seven_node_add_list($variables) {
$content = $variables['content'];
2009-07-31 19:35:57 +00:00
if ($content) {
2010-10-03 02:46:12 +00:00
$output = '<ul class="admin-list">';
2012-05-14 02:50:42 +00:00
foreach ($content as $type) {
2009-07-31 19:35:57 +00:00
$output .= '<li class="clearfix">';
2012-11-06 13:42:12 +00:00
$content = '<span class="label">' . check_plain($type->name) . '</span>';
$content .= '<div class="description">' . filter_xss_admin($type->description) . '</div>';
$options['html'] = TRUE;
$output .= l($content, 'node/add/' . $type->type, $options);
2009-07-31 19:35:57 +00:00
$output .= '</li>';
}
$output .= '</ul>';
}
2010-10-03 00:09:28 +00:00
else {
$output = '<p>' . t('You have not created any content types yet. Go to the <a href="@create-content">content type creation page</a> to add a new content type.', array('@create-content' => url('admin/structure/types/add'))) . '</p>';
}
2009-07-31 19:35:57 +00:00
return $output;
}
2013-02-18 22:17:49 +00:00
/**
* Overrides theme_custom_block_add_list().
*
* Displays the list of available custom block types for creation.
*/
function seven_custom_block_add_list($variables) {
$content = $variables['content'];
$output = '';
if ($content) {
$output = '<ul class="admin-list">';
foreach ($content as $type) {
$output .= '<li class="clearfix">';
$content = '<span class="label">' . check_plain($type->label()) . '</span>';
$content .= '<div class="description">' . filter_xss_admin($type->description) . '</div>';
$options['html'] = TRUE;
2013-09-03 20:30:49 +00:00
$output .= Drupal::l($content, 'custom_block_add_form' , array('custom_block_type' => $type->id()), $options);
2013-02-18 22:17:49 +00:00
$output .= '</li>';
}
$output .= '</ul>';
}
return $output;
}
2009-07-31 19:35:57 +00:00
/**
2010-10-01 15:24:18 +00:00
* Overrides theme_admin_block_content().
2009-07-31 19:35:57 +00:00
*
2012-04-19 15:30:31 +00:00
* Uses an unordered list markup in both compact and extended mode.
2009-07-31 19:35:57 +00:00
*/
2009-10-09 01:00:08 +00:00
function seven_admin_block_content($variables) {
$content = $variables['content'];
2009-07-31 19:35:57 +00:00
$output = '';
if (!empty($content)) {
$output = system_admin_compact_mode() ? '<ul class="admin-list compact">' : '<ul class="admin-list">';
foreach ($content as $item) {
2012-11-06 13:42:12 +00:00
$output .= '<li>';
$content = '<span class="label">' . filter_xss_admin($item['title']) . '</span>';
$options = $item['localized_options'];
$options['html'] = TRUE;
2010-10-01 15:24:18 +00:00
if (isset($item['description']) && !system_admin_compact_mode()) {
2012-11-06 13:42:12 +00:00
$content .= '<div class="description">' . filter_xss_admin($item['description']) . '</div>';
2009-07-31 19:35:57 +00:00
}
2012-11-06 13:42:12 +00:00
$output .= l($content, $item['href'], $options);
2009-07-31 19:35:57 +00:00
$output .= '</li>';
}
$output .= '</ul>';
}
return $output;
}
/**
2012-04-19 15:30:31 +00:00
* Overrides theme_tablesort_indicator().
2009-07-31 19:35:57 +00:00
*
2012-04-19 15:30:31 +00:00
* Uses Seven's image versions, so the arrows show up as black and not gray on
* gray.
2009-07-31 19:35:57 +00:00
*/
2009-10-09 01:00:08 +00:00
function seven_tablesort_indicator($variables) {
2009-07-31 19:35:57 +00:00
$theme_path = drupal_get_path('theme', 'seven');
2013-06-09 18:08:59 +00:00
if($variables['style'] == 'asc') {
$image_uri = $theme_path . '/images/arrow-asc.png';
2013-06-18 12:11:49 +00:00
$text = t('Sort ascending');
2009-07-31 19:35:57 +00:00
}
else {
2013-06-09 18:08:59 +00:00
$image_uri = $theme_path . '/images/arrow-desc.png';
2013-06-18 12:11:49 +00:00
$text = t('Sort descending');
2009-07-31 19:35:57 +00:00
}
2013-06-09 18:08:59 +00:00
$image = array(
'#theme' => 'image',
'#uri' => $image_uri,
'#alt' => $text,
2013-07-23 23:31:40 +00:00
'#width' => 9,
'#height' => 5,
2013-06-09 18:08:59 +00:00
'#title' => $text,
);
return drupal_render($image);
2009-07-31 19:35:57 +00:00
}
2009-08-12 11:32:07 +00:00
2012-12-29 08:52:15 +00:00
/**
* Implements hook_preprocess_install_page().
*/
function seven_preprocess_install_page(&$variables) {
2013-07-14 20:17:23 +00:00
$variables['styles'] = new RenderWrapper('drupal_get_css');
$variables['scripts'] = new RenderWrapper('drupal_get_js');
2013-08-30 15:22:28 +00:00
// Normally we could attach libraries via hook_page_alter(), but when the
// database is inactive it's not called so we add them here.
$libraries = array(
'#attached' => array(
'library' => array(
array('seven', 'install-page'),
),
),
);
drupal_render($libraries);
2012-12-29 08:52:15 +00:00
}
2013-02-09 00:13:30 +00:00
/**
* Implements hook_form_BASE_FORM_ID_alter().
*
* Changes vertical tabs to container and adds meta information.
*/
function seven_form_node_form_alter(&$form, &$form_state) {
2013-04-29 23:46:14 +00:00
$node = $form_state['controller']->getEntity();
2013-02-09 00:13:30 +00:00
2013-02-16 18:33:45 +00:00
$form['#theme'] = array('node_edit_form');
$form['#attached'] = array(
2013-06-07 10:48:55 +00:00
'css' => array(drupal_get_path('module', 'node') . '/css/node.module.css'),
2013-02-16 18:33:45 +00:00
);
2013-02-09 00:13:30 +00:00
$form['advanced']['#type'] = 'container';
$form['meta'] = array (
'#type' => 'fieldset',
'#attributes' => array('class' => array('entity-meta-header')),
'#type' => 'container',
'#group' => 'advanced',
'#weight' => -100,
'published' => array(
'#type' => 'item',
'#wrapper_attributes' => array('class' => array('published')),
2013-08-16 17:13:11 +00:00
'#markup' => $node->isPublished() ? t('Published') : t('Not published'),
2013-07-20 12:21:43 +00:00
'#access' => !$node->isNew(),
2013-02-09 00:13:30 +00:00
),
'changed' => array(
'#type' => 'item',
'#wrapper_attributes' => array('class' => array('changed', 'container-inline')),
'#title' => t('Last saved'),
2013-08-16 17:13:11 +00:00
'#markup' => !$node->isNew() ? format_date($node->getChangedTime(), 'short') : t('Not saved yet'),
2013-02-09 00:13:30 +00:00
),
'author' => array(
'#type' => 'item',
'#wrapper_attributes' => array('class' => array('author', 'container-inline')),
'#title' => t('Author'),
2013-08-16 17:13:11 +00:00
'#markup' => $node->getAuthor()->getUsername(),
2013-02-09 00:13:30 +00:00
),
);
$form['revision_information']['#type'] = 'container';
$form['revision_information']['#group'] = 'meta';
}