Mercurial > defr > drupal > core
comparison includes/theme.inc @ 7:fff6d4c8c043 6.3
Drupal 6.3
| author | Franck Deroche <webmaster@defr.org> |
|---|---|
| date | Tue, 23 Dec 2008 14:30:28 +0100 |
| parents | 2427550111ae |
| children | 589fb7c02327 |
comparison
equal
deleted
inserted
replaced
| 6:2cfdc3c92142 | 7:fff6d4c8c043 |
|---|---|
| 1 <?php | 1 <?php |
| 2 // $Id: theme.inc,v 1.415.2.2 2008/03/25 11:55:08 goba Exp $ | 2 // $Id: theme.inc,v 1.415.2.9 2008/07/09 21:48:28 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 * |
| 328 | 328 |
| 329 foreach ($prefixes as $prefix) { | 329 foreach ($prefixes as $prefix) { |
| 330 if (function_exists($prefix .'_preprocess')) { | 330 if (function_exists($prefix .'_preprocess')) { |
| 331 $info['preprocess functions'][] = $prefix .'_preprocess'; | 331 $info['preprocess functions'][] = $prefix .'_preprocess'; |
| 332 } | 332 } |
| 333 | |
| 333 if (function_exists($prefix .'_preprocess_'. $hook)) { | 334 if (function_exists($prefix .'_preprocess_'. $hook)) { |
| 334 $info['preprocess functions'][] = $prefix .'_preprocess_'. $hook; | 335 $info['preprocess functions'][] = $prefix .'_preprocess_'. $hook; |
| 336 } | |
| 337 | |
| 338 if (!empty($info['original hook']) && function_exists($prefix .'_preprocess_'. $info['original hook'])) { | |
| 339 $info['preprocess functions'][] = $prefix .'_preprocess_'. $info['original hook']; | |
| 335 } | 340 } |
| 336 } | 341 } |
| 337 } | 342 } |
| 338 // Check for the override flag and prevent the cached preprocess functions from being used. | 343 // Check for the override flag and prevent the cached preprocess functions from being used. |
| 339 // This allows themes or theme engines to remove preprocessors set earlier in the registry build. | 344 // This allows themes or theme engines to remove preprocessors set earlier in the registry build. |
| 341 // Flag not needed inside the registry. | 346 // Flag not needed inside the registry. |
| 342 unset($result[$hook]['override preprocess functions']); | 347 unset($result[$hook]['override preprocess functions']); |
| 343 } | 348 } |
| 344 elseif (isset($cache[$hook]['preprocess functions']) && is_array($cache[$hook]['preprocess functions'])) { | 349 elseif (isset($cache[$hook]['preprocess functions']) && is_array($cache[$hook]['preprocess functions'])) { |
| 345 $info['preprocess functions'] = array_merge($cache[$hook]['preprocess functions'], $info['preprocess functions']); | 350 $info['preprocess functions'] = array_merge($cache[$hook]['preprocess functions'], $info['preprocess functions']); |
| 351 } | |
| 352 elseif (isset($info['original hook']) && isset($cache[$info['original hook']]['preprocess functions']) && is_array($cache[$info['original hook']]['preprocess functions'])) { | |
| 353 $info['preprocess functions'] = array_merge($cache[$info['original hook']]['preprocess functions'], $info['preprocess functions']); | |
| 346 } | 354 } |
| 347 $result[$hook]['preprocess functions'] = $info['preprocess functions']; | 355 $result[$hook]['preprocess functions'] = $info['preprocess functions']; |
| 348 } | 356 } |
| 349 | 357 |
| 350 // Merge the newly created theme hooks into the existing cache. | 358 // Merge the newly created theme hooks into the existing cache. |
| 432 } | 440 } |
| 433 | 441 |
| 434 foreach ($themes as $theme) { | 442 foreach ($themes as $theme) { |
| 435 foreach ($theme->info['stylesheets'] as $media => $stylesheets) { | 443 foreach ($theme->info['stylesheets'] as $media => $stylesheets) { |
| 436 foreach ($stylesheets as $stylesheet => $path) { | 444 foreach ($stylesheets as $stylesheet => $path) { |
| 437 if (file_exists($path)) { | 445 $theme->stylesheets[$media][$stylesheet] = $path; |
| 438 $theme->stylesheets[$media][$stylesheet] = $path; | |
| 439 } | |
| 440 } | 446 } |
| 441 } | 447 } |
| 442 foreach ($theme->info['scripts'] as $script => $path) { | 448 foreach ($theme->info['scripts'] as $script => $path) { |
| 443 if (file_exists($path)) { | 449 if (file_exists($path)) { |
| 444 $theme->scripts[$script] = $path; | 450 $theme->scripts[$script] = $path; |
| 723 foreach ($matches as $match) { | 729 foreach ($matches as $match) { |
| 724 $new_hook = str_replace($prefix .'_', '', $match); | 730 $new_hook = str_replace($prefix .'_', '', $match); |
| 725 $templates[$new_hook] = array( | 731 $templates[$new_hook] = array( |
| 726 'function' => $match, | 732 'function' => $match, |
| 727 'arguments' => $info['arguments'], | 733 'arguments' => $info['arguments'], |
| 734 'original hook' => $hook, | |
| 728 ); | 735 ); |
| 729 } | 736 } |
| 730 } | 737 } |
| 731 } | 738 } |
| 732 if (function_exists($prefix .'_'. $hook)) { | 739 if (function_exists($prefix .'_'. $hook)) { |
| 815 // Put the underscores back in for the hook name and register this pattern. | 822 // Put the underscores back in for the hook name and register this pattern. |
| 816 $templates[strtr($file, '-', '_')] = array( | 823 $templates[strtr($file, '-', '_')] = array( |
| 817 'template' => $file, | 824 'template' => $file, |
| 818 'path' => dirname($files[$match]->filename), | 825 'path' => dirname($files[$match]->filename), |
| 819 'arguments' => $info['arguments'], | 826 'arguments' => $info['arguments'], |
| 827 'original hook' => $hook, | |
| 820 ); | 828 ); |
| 821 } | 829 } |
| 822 } | 830 } |
| 823 } | 831 } |
| 824 } | 832 } |
| 997 * array of arrays with information about the hook. It describes the | 1005 * array of arrays with information about the hook. It describes the |
| 998 * arguments the function or template will need, and provides | 1006 * arguments the function or template will need, and provides |
| 999 * defaults for the template in case they are not filled in. If the default | 1007 * defaults for the template in case they are not filled in. If the default |
| 1000 * implementation is a function, by convention it is named theme_HOOK(). | 1008 * implementation is a function, by convention it is named theme_HOOK(). |
| 1001 * | 1009 * |
| 1002 * Each module should provide a default implementation for themes that | 1010 * Each module should provide a default implementation for theme_hooks that |
| 1003 * it registers. This implementation may be either a function or a template; | 1011 * it registers. This implementation may be either a function or a template; |
| 1004 * if it is a function it must be specified via hook_theme(). By convention, | 1012 * if it is a function it must be specified via hook_theme(). By convention, |
| 1005 * default implementations of theme hooks are named theme_HOOK. Default | 1013 * default implementations of theme hooks are named theme_HOOK. Default |
| 1006 * template implementations are stored in the module directory. | 1014 * template implementations are stored in the module directory. |
| 1007 * | 1015 * |
| 1104 $class .= ' last'; | 1112 $class .= ' last'; |
| 1105 } | 1113 } |
| 1106 if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))) { | 1114 if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))) { |
| 1107 $class .= ' active'; | 1115 $class .= ' active'; |
| 1108 } | 1116 } |
| 1109 $output .= '<li class="'. $class .'">'; | 1117 $output .= '<li'. drupal_attributes(array('class' => $class)) .'>'; |
| 1110 | 1118 |
| 1111 if (isset($link['href'])) { | 1119 if (isset($link['href'])) { |
| 1112 // Pass in $link as $options, they share the same keys. | 1120 // Pass in $link as $options, they share the same keys. |
| 1113 $output .= l($link['title'], $link['href'], $link); | 1121 $output .= l($link['title'], $link['href'], $link); |
| 1114 } | 1122 } |
| 1452 return '<div class="more-help-link">'. t('[<a href="@link">more help...</a>]', array('@link' => check_url($url))) .'</div>'; | 1460 return '<div class="more-help-link">'. t('[<a href="@link">more help...</a>]', array('@link' => check_url($url))) .'</div>'; |
| 1453 } | 1461 } |
| 1454 | 1462 |
| 1455 /** | 1463 /** |
| 1456 * Return code that emits an XML icon. | 1464 * Return code that emits an XML icon. |
| 1457 * | 1465 * |
| 1458 * For most use cases, this function has been superseded by theme_feed_icon(). | 1466 * For most use cases, this function has been superseded by theme_feed_icon(). |
| 1459 * | 1467 * |
| 1460 * @see theme_feed_icon() | 1468 * @see theme_feed_icon() |
| 1461 * @param $url | 1469 * @param $url |
| 1462 * The url of the feed. | 1470 * The url of the feed. |
| 1463 */ | 1471 */ |
| 1464 function theme_xml_icon($url) { | 1472 function theme_xml_icon($url) { |
| 1562 // Sometimes modules display content composed by people who are | 1570 // Sometimes modules display content composed by people who are |
| 1563 // not registered members of the site (e.g. mailing list or news | 1571 // not registered members of the site (e.g. mailing list or news |
| 1564 // aggregator modules). This clause enables modules to display | 1572 // aggregator modules). This clause enables modules to display |
| 1565 // the true author of the content. | 1573 // the true author of the content. |
| 1566 if (!empty($object->homepage)) { | 1574 if (!empty($object->homepage)) { |
| 1567 $output = l($object->name, $object->homepage, array('rel' => 'nofollow')); | 1575 $output = l($object->name, $object->homepage, array('attributes' => array('rel' => 'nofollow'))); |
| 1568 } | 1576 } |
| 1569 else { | 1577 else { |
| 1570 $output = check_plain($object->name); | 1578 $output = check_plain($object->name); |
| 1571 } | 1579 } |
| 1572 | 1580 |
