From 06585e6b6b13804f472cc4d5d7ec47b27b01079f Mon Sep 17 00:00:00 2001
From: Angie Byron <webchick@24967.no-reply.drupal.org>
Date: Thu, 29 Apr 2010 04:57:59 +0000
Subject: [PATCH] #718860 by djac, jhodgdon: Fixes to hook_theme()
 documentation.

---
 modules/system/system.api.php | 147 +++++++++++++++++-----------------
 1 file changed, 74 insertions(+), 73 deletions(-)

diff --git a/modules/system/system.api.php b/modules/system/system.api.php
index 02cf2747a9ad..b292d3feea2c 100644
--- a/modules/system/system.api.php
+++ b/modules/system/system.api.php
@@ -1587,91 +1587,92 @@ function hook_permission() {
 /**
  * Register a module (or theme's) theme implementations.
  *
- * Modules and themes implementing this return an array of arrays. The key
- * to each sub-array is the internal name of the hook, and the array contains
- * info about the hook. Each array may contain the following items:
- *
- * - variables: (required if "render element" not present) An array of
- *   variables that this theme hook uses. This value allows the theme layer to
- *   properly utilize templates. Each array key represents the name of the
- *   variable and the value will be used as the default value if it is not given
- *   when theme() is called. Template implementations receive these arguments as
- *   variables in the template file. Function implementations are passed this
- *   array data in the $variables parameter.
- * - render element: (required if "variables" not present) A string that is the
- *   name of the sole renderable element to pass to the theme function. The
- *   string represents the name of the "variable" that will hold the renderable
- *   array inside any optional preprocess or process functions. Cannot be used
- *   with the "variables" item; only one or the other, not both, can be present
- *   in a hook's info array.
- * - file: The file the implementation resides in. This file will be included
- *   prior to the theme being rendered, to make sure that the function or
- *   preprocess function (as needed) is actually loaded; this makes it possible
- *   to split theme functions out into separate files quite easily.
- * - path: Override the path of the file to be used. Ordinarily the module or
- *   theme path will be used, but if the file will not be in the default path,
- *   include it here. This path should be relative to the Drupal root
- *   directory.
- * - template: If specified, this theme implementation is a template, and this
- *   is the template file <b>without an extension</b>. Do not put .tpl.php
- *   on this file; that extension will be added automatically by the default
- *   rendering engine (which is PHPTemplate). If 'path', above, is specified,
- *   the template should also be in this path.
- * - function: If specified, this will be the function name to invoke for this
- *   implementation. If neither file nor function is specified, a default
- *   function name will be assumed. For example, if a module registers
- *   the 'node' theme hook, 'theme_node' will be assigned to its function.
- *   If the chameleon theme registers the node hook, it will be assigned
- *   'chameleon_node' as its function.
- * - pattern: A regular expression pattern to be used to allow this theme
- *   implementation to have a dynamic name. The convention is to use __ to
- *   differentiate the dynamic portion of the theme. For example, to allow
- *   forums to be themed individually, the pattern might be: 'forum__'. Then,
- *   when the forum is themed, call: <code>theme(array('forum__' . $tid, 'forum'),
- *   $forum)</code>.
- * - preprocess functions: A list of functions used to preprocess this data.
- *   Ordinarily this won't be used; it's automatically filled in. By default,
- *   for a module this will be filled in as template_preprocess_HOOK. For
- *   a theme this will be filled in as phptemplate_preprocess and
- *   phptemplate_preprocess_HOOK as well as themename_preprocess and
- *   themename_preprocess_HOOK.
- * - override preprocess functions: Set to TRUE when a theme does NOT want the
- *   standard preprocess functions to run. This can be used to give a theme
- *   FULL control over how variables are set. For example, if a theme wants
- *   total control over how certain variables in the page.tpl.php are set,
- *   this can be set to true. Please keep in mind that when this is used
- *   by a theme, that theme becomes responsible for making sure necessary
- *   variables are set.
- * - type: (automatically derived) Where the theme hook is defined:
- *   'module', 'theme_engine', or 'theme'.
- * - theme path: (automatically derived) The directory path of the theme or
- *   module, so that it doesn't need to be looked up.
- *
  * The following parameters are all optional.
  *
- * @param $existing
+ * @param array $existing
  *   An array of existing implementations that may be used for override
  *   purposes. This is primarily useful for themes that may wish to examine
  *   existing implementations to extract data (such as arguments) so that
  *   it may properly register its own, higher priority implementations.
  * @param $type
- *   What 'type' is being processed. This is primarily useful so that themes
- *   tell if they are the actual theme being called or a parent theme.
- *   May be one of:
- *     - module: A module is being checked for theme implementations.
- *     - base_theme_engine: A theme engine is being checked for a theme which is a parent of the actual theme being used.
- *     - theme_engine: A theme engine is being checked for the actual theme being used.
- *     - base_theme: A base theme is being checked for theme implementations.
- *     - theme: The actual theme in use is being checked.
+ *   Whether a theme, module, etc. is being processed. This is primarily useful
+ *   so that themes tell if they are the actual theme being called or a parent
+ *   theme. May be one of:
+ *   - 'module': A module is being checked for theme implementations.
+ *   - 'base_theme_engine': A theme engine is being checked for a theme that is
+ *     a parent of the actual theme being used.
+ *   - 'theme_engine': A theme engine is being checked for the actual theme
+ *     being used.
+ *   - 'base_theme': A base theme is being checked for theme implementations.
+ *   - 'theme': The actual theme in use is being checked.
  * @param $theme
- *   The actual name of theme that is being being checked (mostly only useful for
- *   theme engine).
+ *   The actual name of theme, module, etc. that is being being processed.
  * @param $path
  *   The directory path of the theme or module, so that it doesn't need to be
  *   looked up.
  *
- * @return
- *   A keyed array of theme hooks.
+ * @return array
+ *   An associative array of theme hook information. The keys on the outer
+ *   array are the internal names of the hooks, and the values are arrays
+ *   containing information about the hook. Each array may contain the
+ *   following elements:
+ *   - variables: (required if "render element" not present) An array of
+ *     variables that this theme hook uses. This value allows the theme layer to
+ *     properly utilize templates. Each array key represents the name of the
+ *     variable and the value will be used as the default value if it is not
+ *     given when theme() is called. Template implementations receive these
+ *     arguments as variables in the template file. Function implementations
+ *     are passed this array data in the $variables parameter.
+ *   - render element: (required if "variables" not present) A string that is
+ *     the name of the sole renderable element to pass to the theme function.
+ *     The string represents the name of the "variable" that will hold the
+ *     renderable array inside any optional preprocess or process functions.
+ *     Cannot be used with the "variables" item; only one or the other, not
+ *     both, can be present in a hook's info array.
+ *   - file: The file the implementation resides in. This file will be included
+ *     prior to the theme being rendered, to make sure that the function or
+ *     preprocess function (as needed) is actually loaded; this makes it
+ *     possible to split theme functions out into separate files quite easily.
+ *   - path: Override the path of the file to be used. Ordinarily the module or
+ *     theme path will be used, but if the file will not be in the default path,
+ *     include it here. This path should be relative to the Drupal root
+ *     directory.
+ *   - template: If specified, this theme implementation is a template, and this
+ *     is the template file without an extension. Do not put .tpl.php on this
+ *     file; that extension will be added automatically by the default rendering
+ *     engine (which is PHPTemplate). If 'path', above, is specified, the
+ *     template should also be in this path.
+ *   - function: If specified, this will be the function name to invoke for this
+ *     implementation. If neither file nor function is specified, a default
+ *     function name will be assumed. For example, if a module registers
+ *     the 'node' theme hook, 'theme_node' will be assigned to its function.
+ *     If the chameleon theme registers the node hook, it will be assigned
+ *     'chameleon_node' as its function.
+ *   - pattern: A regular expression pattern to be used to allow this theme
+ *     implementation to have a dynamic name. The convention is to use __ to
+ *     differentiate the dynamic portion of the theme. For example, to allow
+ *     forums to be themed individually, the pattern might be: 'forum__'. Then,
+ *     when the forum is themed, call:
+ *     @code
+ *     theme(array('forum__' . $tid, 'forum'), $forum)
+ *     @endcode
+ *   - preprocess functions: A list of functions used to preprocess this data.
+ *     Ordinarily this won't be used; it's automatically filled in. By default,
+ *     for a module this will be filled in as template_preprocess_HOOK. For
+ *     a theme this will be filled in as phptemplate_preprocess and
+ *     phptemplate_preprocess_HOOK as well as themename_preprocess and
+ *     themename_preprocess_HOOK.
+ *   - override preprocess functions: Set to TRUE when a theme does NOT want the
+ *     standard preprocess functions to run. This can be used to give a theme
+ *     FULL control over how variables are set. For example, if a theme wants
+ *     total control over how certain variables in the page.tpl.php are set,
+ *     this can be set to true. Please keep in mind that when this is used
+ *     by a theme, that theme becomes responsible for making sure necessary
+ *     variables are set.
+ *   - type: (automatically derived) Where the theme hook is defined:
+ *     'module', 'theme_engine', or 'theme'.
+ *   - theme path: (automatically derived) The directory path of the theme or
+ *     module, so that it doesn't need to be looked up.
  */
 function hook_theme($existing, $type, $theme, $path) {
   return array(
-- 
GitLab