comparison includes/theme.inc @ 15:4347c45bb494 6.7

Drupal 6.7
author Franck Deroche <webmaster@defr.org>
date Tue, 23 Dec 2008 14:32:44 +0100
parents 8b6c45761e01
children
comparison
equal deleted inserted replaced
14:626fcabfa4b8 15:4347c45bb494
1 <?php 1 <?php
2 // $Id: theme.inc,v 1.415.2.13 2008/10/16 13:50:59 dries Exp $ 2 // $Id: theme.inc,v 1.415.2.17 2008/12/10 21:09:05 goba Exp $
3 3
4 /** 4 /**
5 * @file 5 * @file
6 * The theme system, which controls the output of Drupal. 6 * The theme system, which controls the output of Drupal.
7 * 7 *
8 * The theme system allows for nearly all output of the Drupal system to be 8 * The theme system allows for nearly all output of the Drupal system to be
9 * customized by user themes. 9 * customized by user themes.
10 * 10 *
11 * @see <a href="http://drupal.org/node/171179">Theme guide</a> 11 * @ingroup themeable
12 * @see themeable
13 */ 12 */
14 13
15 /** 14 /**
16 * @name Content markers 15 * @name Content markers
17 * @{ 16 * @{
259 * cached preprocessors for the hook will not be merged with the newly set. 258 * cached preprocessors for the hook will not be merged with the newly set.
260 * This can be useful to themes and theme engines by giving them more control 259 * This can be useful to themes and theme engines by giving them more control
261 * over how and when the preprocess functions are run. 260 * over how and when the preprocess functions are run.
262 */ 261 */
263 function _theme_process_registry(&$cache, $name, $type, $theme, $path) { 262 function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
263 $result = array();
264 $function = $name .'_theme'; 264 $function = $name .'_theme';
265 if (function_exists($function)) { 265 if (function_exists($function)) {
266 $result = $function($cache, $type, $theme, $path); 266 $result = $function($cache, $type, $theme, $path);
267 267
268 foreach ($result as $hook => $info) { 268 foreach ($result as $hook => $info) {
355 $result[$hook]['preprocess functions'] = $info['preprocess functions']; 355 $result[$hook]['preprocess functions'] = $info['preprocess functions'];
356 } 356 }
357 357
358 // Merge the newly created theme hooks into the existing cache. 358 // Merge the newly created theme hooks into the existing cache.
359 $cache = array_merge($cache, $result); 359 $cache = array_merge($cache, $result);
360 }
361
362 // Let themes have preprocess functions even if they didn't register a template.
363 if ($type == 'theme' || $type == 'base_theme') {
364 foreach ($cache as $hook => $info) {
365 // Check only if it's a template and not registered by the theme or engine.
366 if (!empty($info['template']) && empty($result[$hook])) {
367 if (!isset($info['preprocess functions'])) {
368 $cache[$hook]['preprocess functions'] = array();
369 }
370 if (function_exists($name .'_preprocess')) {
371 $cache[$hook]['preprocess functions'][] = $name .'_preprocess';
372 }
373 if (function_exists($name .'_preprocess_'. $hook)) {
374 $cache[$hook]['preprocess functions'][] = $name .'_preprocess_'. $hook;
375 }
376 // Ensure uniqueness.
377 $cache[$hook]['preprocess functions'] = array_unique($cache[$hook]['preprocess functions']);
378 }
379 }
360 } 380 }
361 } 381 }
362 382
363 /** 383 /**
364 * Rebuild the hook theme_registry cache. 384 * Rebuild the hook theme_registry cache.
745 } 765 }
746 if (function_exists($prefix .'_'. $hook)) { 766 if (function_exists($prefix .'_'. $hook)) {
747 $templates[$hook] = array( 767 $templates[$hook] = array(
748 'function' => $prefix .'_'. $hook, 768 'function' => $prefix .'_'. $hook,
749 ); 769 );
770 // Ensure that the pattern is maintained from base themes to its sub-themes.
771 // Each sub-theme will have their functions scanned so the pattern must be
772 // held for subsequent runs.
773 if (isset($info['pattern'])) {
774 $templates[$hook]['pattern'] = $info['pattern'];
775 }
750 } 776 }
751 } 777 }
752 } 778 }
753 779
754 return $templates; 780 return $templates;
809 if (isset($cache[$hook])) { 835 if (isset($cache[$hook])) {
810 $templates[$hook] = array( 836 $templates[$hook] = array(
811 'template' => $template, 837 'template' => $template,
812 'path' => dirname($file->filename), 838 'path' => dirname($file->filename),
813 ); 839 );
840 }
841 // Ensure that the pattern is maintained from base themes to its sub-themes.
842 // Each sub-theme will have their templates scanned so the pattern must be
843 // held for subsequent runs.
844 if (isset($cache[$hook]['pattern'])) {
845 $templates[$hook]['pattern'] = $cache[$hook]['pattern'];
814 } 846 }
815 } 847 }
816 848
817 $patterns = array_keys($files); 849 $patterns = array_keys($files);
818 850
1407 * the array is used as the contents of the list item. If an item is an array 1439 * the array is used as the contents of the list item. If an item is an array
1408 * with a "children" element, those children are displayed in a nested list. 1440 * with a "children" element, those children are displayed in a nested list.
1409 * All other elements are treated as attributes of the list item element. 1441 * All other elements are treated as attributes of the list item element.
1410 * @param $title 1442 * @param $title
1411 * The title of the list. 1443 * The title of the list.
1444 * @param $type
1445 * The type of list to return (e.g. "ul", "ol")
1412 * @param $attributes 1446 * @param $attributes
1413 * The attributes applied to the list element. 1447 * The attributes applied to the list element.
1414 * @param $type
1415 * The type of list to return (e.g. "ul", "ol")
1416 * @return 1448 * @return
1417 * A string containing the list output. 1449 * A string containing the list output.
1418 */ 1450 */
1419 function theme_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) { 1451 function theme_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) {
1420 $output = '<div class="item-list">'; 1452 $output = '<div class="item-list">';