summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/common.inc122
-rw-r--r--includes/theme.inc56
2 files changed, 92 insertions, 86 deletions
diff --git a/includes/common.inc b/includes/common.inc
index 428580a2c..aa0a08a9c 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -5071,196 +5071,196 @@ function drupal_common_theme() {
return array(
// theme.inc
'placeholder' => array(
- 'arguments' => array('text' => NULL)
+ 'variables' => array('text' => NULL)
),
'html' => array(
- 'arguments' => array('page' => NULL),
+ 'render element' => 'page',
'template' => 'html',
),
'page' => array(
- 'arguments' => array('page' => NULL),
+ 'render element' => 'page',
'template' => 'page',
),
'region' => array(
- 'arguments' => array('elements' => NULL),
+ 'render element' => 'elements',
'template' => 'region',
),
'status_messages' => array(
- 'arguments' => array('display' => NULL),
+ 'variables' => array('display' => NULL),
),
'links' => array(
- 'arguments' => array('links' => NULL, 'attributes' => array('class' => array('links')), 'heading' => array()),
+ 'variables' => array('links' => NULL, 'attributes' => array('class' => array('links')), 'heading' => array()),
),
'image' => array(
- 'arguments' => array('path' => NULL, 'alt' => '', 'title' => '', 'attributes' => array(), 'getsize' => TRUE),
+ 'variables' => array('path' => NULL, 'alt' => '', 'title' => '', 'attributes' => array(), 'getsize' => TRUE),
),
'breadcrumb' => array(
- 'arguments' => array('breadcrumb' => NULL),
+ 'variables' => array('breadcrumb' => NULL),
),
'help' => array(
- 'arguments' => array(),
+ 'variables' => array(),
),
'submenu' => array(
- 'arguments' => array('links' => NULL),
+ 'variables' => array('links' => NULL),
),
'table' => array(
- 'arguments' => array('header' => NULL, 'rows' => NULL, 'attributes' => array(), 'caption' => NULL, 'colgroups' => array(), 'sticky' => TRUE),
+ 'variables' => array('header' => NULL, 'rows' => NULL, 'attributes' => array(), 'caption' => NULL, 'colgroups' => array(), 'sticky' => TRUE),
),
'table_select_header_cell' => array(
- 'arguments' => array(),
+ 'variables' => array(),
),
'tablesort_indicator' => array(
- 'arguments' => array('style' => NULL),
+ 'variables' => array('style' => NULL),
),
'mark' => array(
- 'arguments' => array('type' => MARK_NEW),
+ 'variables' => array('type' => MARK_NEW),
),
'item_list' => array(
- 'arguments' => array('items' => array(), 'title' => NULL, 'type' => 'ul', 'attributes' => array()),
+ 'variables' => array('items' => array(), 'title' => NULL, 'type' => 'ul', 'attributes' => array()),
),
'more_help_link' => array(
- 'arguments' => array('url' => NULL),
+ 'variables' => array('url' => NULL),
),
'feed_icon' => array(
- 'arguments' => array('url' => NULL, 'title' => NULL),
+ 'variables' => array('url' => NULL, 'title' => NULL),
),
'more_link' => array(
- 'arguments' => array('url' => NULL, 'title' => NULL)
+ 'variables' => array('url' => NULL, 'title' => NULL)
),
'blocks' => array(
- 'arguments' => array('region' => NULL),
+ 'variables' => array('region' => NULL),
),
'username' => array(
- 'arguments' => array('account' => NULL),
+ 'variables' => array('account' => NULL),
),
'progress_bar' => array(
- 'arguments' => array('percent' => NULL, 'message' => NULL),
+ 'variables' => array('percent' => NULL, 'message' => NULL),
),
'indentation' => array(
- 'arguments' => array('size' => 1),
+ 'variables' => array('size' => 1),
),
// from theme.maintenance.inc
'maintenance_page' => array(
- 'arguments' => array('content' => NULL, 'show_messages' => TRUE),
+ 'variables' => array('content' => NULL, 'show_messages' => TRUE),
'template' => 'maintenance-page',
),
'update_page' => array(
- 'arguments' => array('content' => NULL, 'show_messages' => TRUE),
+ 'variables' => array('content' => NULL, 'show_messages' => TRUE),
),
'install_page' => array(
- 'arguments' => array('content' => NULL),
+ 'variables' => array('content' => NULL),
),
'task_list' => array(
- 'arguments' => array('items' => NULL, 'active' => NULL),
+ 'variables' => array('items' => NULL, 'active' => NULL),
),
'authorize_message' => array(
- 'arguments' => array('message' => NULL, 'success' => TRUE),
+ 'variables' => array('message' => NULL, 'success' => TRUE),
),
'authorize_report' => array(
- 'arguments' => array('messages' => array()),
+ 'variables' => array('messages' => array()),
),
// from pager.inc
'pager' => array(
- 'arguments' => array('tags' => array(), 'element' => 0, 'parameters' => array(), 'quantity' => 9),
+ 'variables' => array('tags' => array(), 'element' => 0, 'parameters' => array(), 'quantity' => 9),
),
'pager_first' => array(
- 'arguments' => array('text' => NULL, 'element' => 0, 'parameters' => array()),
+ 'variables' => array('text' => NULL, 'element' => 0, 'parameters' => array()),
),
'pager_previous' => array(
- 'arguments' => array('text' => NULL, 'element' => 0, 'interval' => 1, 'parameters' => array()),
+ 'variables' => array('text' => NULL, 'element' => 0, 'interval' => 1, 'parameters' => array()),
),
'pager_next' => array(
- 'arguments' => array('text' => NULL, 'element' => 0, 'interval' => 1, 'parameters' => array()),
+ 'variables' => array('text' => NULL, 'element' => 0, 'interval' => 1, 'parameters' => array()),
),
'pager_last' => array(
- 'arguments' => array('text' => NULL, 'element' => 0, 'parameters' => array()),
+ 'variables' => array('text' => NULL, 'element' => 0, 'parameters' => array()),
),
'pager_link' => array(
- 'arguments' => array('text' => NULL, 'page_new' => NULL, 'element' => NULL, 'parameters' => array(), 'attributes' => array()),
+ 'variables' => array('text' => NULL, 'page_new' => NULL, 'element' => NULL, 'parameters' => array(), 'attributes' => array()),
),
// from locale.inc
'locale_admin_manage_screen' => array(
- 'arguments' => array('form' => NULL),
+ 'render element' => 'form',
),
// from menu.inc
'menu_link' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'menu_tree' => array(
- 'arguments' => array('tree' => NULL),
+ 'render element' => 'tree',
),
'menu_local_task' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'menu_local_action' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'menu_local_tasks' => array(
- 'arguments' => array(),
+ 'variables' => array(),
),
// from form.inc
'select' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'fieldset' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'radio' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'radios' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'date' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'checkbox' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'checkboxes' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'button' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'image_button' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'hidden' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'textfield' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'form' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'textarea' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'markup' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'password' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'file' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'tableselect' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'form_element' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'text_format_wrapper' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'vertical_tabs' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
'container' => array(
- 'arguments' => array('element' => NULL),
+ 'render element' => 'element',
),
);
}
diff --git a/includes/theme.inc b/includes/theme.inc
index 7238a1fab..32140a62f 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -299,11 +299,15 @@ function drupal_theme_rebuild() {
* - 'template': The filename of the template generating output for this
* theme hook. The template is in the directory defined by the 'path' key of
* hook_theme() or defaults to $path.
- * - 'arguments': The arguments for this theme hook as defined in
- * hook_theme(). If there is more than one implementation and 'arguments' is
+ * - 'variables': The variables for this theme hook as defined in
+ * hook_theme(). If there is more than one implementation and 'variables' is
* not specified in a later one, then the previous definition is kept.
+ * - 'render element': The renderable element for this theme hook as defined
+ * in hook_theme(). If there is more than one implementation and
+ * 'render element' is not specified in a later one, then the previous
+ * definition is kept.
* - 'theme paths': The paths where implementations of a theme hook can be
- * found. Its definition is similarly inherited like 'arguments'. Each time
+ * found. Its definition is similarly inherited like 'variables'. Each time
* _theme_process_registry() is called for this theme hook, either the
* 'path' key from hook_theme() (if defined) or $path is added.
* - 'preprocess functions': See theme() for detailed documentation.
@@ -365,11 +369,15 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
$result[$hook]['includes'][] = $include_file;
}
- // If 'arguments' have been defined previously, carry them forward.
+ // If 'variables' have been defined previously, carry them forward.
// This should happen if a theme overrides a Drupal defined theme
// function, for example.
- if (!isset($info['arguments']) && isset($cache[$hook])) {
- $result[$hook]['arguments'] = $cache[$hook]['arguments'];
+ if (!isset($info['variables']) && isset($cache[$hook]['variables'])) {
+ $result[$hook]['variables'] = $cache[$hook]['variables'];
+ }
+ // Same for 'render element'.
+ if (!isset($info['render element']) && isset($cache[$hook]['render element'])) {
+ $result[$hook]['render element'] = $cache[$hook]['render element'];
}
// The following apply only to theming hooks implemented as templates.
@@ -780,30 +788,28 @@ function theme($hook, $variables = array()) {
}
// If a renderable array is passed as $variables, then set $variables to
- // what's expected by the theme hook. If the theme hook expects a single
- // argument, set the renderable array as that argument. If the theme hook
- // expects multiple arguments, set the properties of the renderable array as
- // those arguments.
+ // the arguments expected by the theme function.
if (isset($variables['#theme']) || isset($variables['#theme_wrappers'])) {
$element = $variables;
$variables = array();
- $n = count($info['arguments']);
- if ($n == 1) {
- $arg_keys = array_keys($info['arguments']);
- $variables[$arg_keys[0]] = $element;
- }
- elseif ($n > 1) {
- foreach ($info['arguments'] as $name => $default) {
+ if (isset($info['variables'])) {
+ foreach (array_keys($info['variables']) as $name) {
if (isset($element["#$name"])) {
$variables[$name] = $element["#$name"];
}
}
}
+ else {
+ $variables[$info['render element']] = $element;
+ }
}
// Merge in argument defaults.
- if (!empty($info['arguments'])) {
- $variables += $info['arguments'];
+ if (!empty($info['variables'])) {
+ $variables += $info['variables'];
+ }
+ elseif (!empty($info['render element'])) {
+ $variables += array($info['render element'] => array());
}
// Invoke the variable processors, if any. The processors may specify
@@ -968,8 +974,7 @@ function path_to_theme() {
}
/**
- * Find overridden theme functions. Called by themes and/or theme engines to
- * easily discover theme functions.
+ * Allow themes and/or theme engines to easily discover overridden theme functions.
*
* @param $cache
* The existing cache of theme hooks to test against.
@@ -990,9 +995,10 @@ function drupal_find_theme_functions($cache, $prefixes) {
if ($matches) {
foreach ($matches as $match) {
$new_hook = str_replace($prefix . '_', '', $match);
+ $arg_name = isset($info['variables']) ? 'variables' : 'render element';
$templates[$new_hook] = array(
'function' => $match,
- 'arguments' => $info['arguments'],
+ $arg_name => $info[$arg_name],
);
}
}
@@ -1015,8 +1021,7 @@ function drupal_find_theme_functions($cache, $prefixes) {
}
/**
- * Find overridden theme templates. Called by themes and/or theme engines to
- * easily discover templates.
+ * Allow themes and/or theme engines to easily discover overridden templates.
*
* @param $cache
* The existing cache of theme hooks to test against.
@@ -1093,10 +1098,11 @@ function drupal_find_theme_templates($cache, $extension, $path) {
foreach ($matches as $match) {
$file = substr($match, 0, strpos($match, '.'));
// Put the underscores back in for the hook name and register this pattern.
+ $arg_name = isset($info['variables']) ? 'variables' : 'render element';
$templates[strtr($file, '-', '_')] = array(
'template' => $file,
'path' => dirname($files[$match]->uri),
- 'arguments' => $info['arguments'],
+ $arg_name => $info[$arg_name],
);
}
}