summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2007-08-02 20:08:53 +0000
committerDries Buytaert <dries@buytaert.net>2007-08-02 20:08:53 +0000
commitc70b19a91bfedbae40304cbfed7b5875c5aae342 (patch)
treeb237cd93f51090265af063ffb54b1730f9e33eec
parentbb7d1395bc0bc7eafc3a2ba5a410ed35978ba9a6 (diff)
downloadbrdo-c70b19a91bfedbae40304cbfed7b5875c5aae342.tar.gz
brdo-c70b19a91bfedbae40304cbfed7b5875c5aae342.tar.bz2
- Patch #163723 by Eaton and Frando: fix default page.tpl markup (and removed some whitespace).
-rw-r--r--INSTALL.txt6
-rw-r--r--includes/common.inc4
-rw-r--r--includes/theme.inc33
-rw-r--r--modules/node/node.module8
-rw-r--r--modules/poll/poll-results-block.tpl.php2
-rw-r--r--modules/poll/poll.module8
-rw-r--r--modules/system/page.tpl.php228
-rw-r--r--themes/engines/phptemplate/phptemplate.engine4
8 files changed, 226 insertions, 67 deletions
diff --git a/INSTALL.txt b/INSTALL.txt
index 8aeccbc09..a13fb00d6 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -102,6 +102,12 @@ INSTALLATION
administrator account with total control. Login as the administrator and
complete the initial configuration steps on the "Welcome" page.
+ If the default Drupal theme is not diplaying properly and links on the page
+ result in "Page Not Found" errors, try manually setting the $base_url variable
+ in the settings.php file if not already set. It's currently known that servers
+ running FastCGI can run into problems if the $base_url variable is left
+ commented out (see http://bugs.php.net/bug.php?id=19656).
+
Consider creating a "files" subdirectory in your Drupal installation
directory. This subdirectory stores files such as custom logos, user avatars,
and other media associated with your new site. The sub-directory requires
diff --git a/includes/common.inc b/includes/common.inc
index c07fc1bee..bd81a54bd 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -2650,10 +2650,6 @@ function drupal_common_themes() {
'help' => array(
'arguments' => array(),
),
- 'node' => array(
- 'arguments' => array('node' => NULL, 'teaser' => FALSE, 'page' => FALSE),
- 'file' => 'node',
- ),
'submenu' => array(
'arguments' => array('links' => NULL),
),
diff --git a/includes/theme.inc b/includes/theme.inc
index f778fe262..b4ef05708 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -1611,6 +1611,7 @@ function template_preprocess_page(&$variables) {
$variables['layout'] = $layout;
global $theme;
+ global $user;
// Populate the rest of the regions.
$regions = system_region_list($theme);
// Load all region content assigned via blocks.
@@ -1661,6 +1662,38 @@ function template_preprocess_page(&$variables) {
$variables['node'] = node_load(arg(1));
}
+ // Compile a list of classes that are going to be applied to the body element.
+ // This allows advanced theming based on context (home page, node of certain type, etc.).
+ $body_classes = array();
+ // Add a class that tells us whether we're on the front page or not.
+ $body_classes[] = (drupal_is_front_page()) ? 'front' : 'not-front';
+ // Add a class that tells us whether the page is viewed by an authenticated user or not.
+ $body_classes[] = ($user->uid > 0) ? 'logged-in' : 'not-logged-in';
+ // Add arg(0) to make it possible to theme the page depending on the current page
+ // type (e.g. node, admin, user, etc.). To avoid illegal characters in the class,
+ // we're removing everything disallowed. We are not using 'a-z' as that might leave
+ // in certain international characters (e.g. German umlauts).
+ $body_classes[] = preg_replace('![^abcdefghijklmnopqrstuvwxyz0-9-_]+!s', '', 'page-' . form_clean_id(drupal_strtolower(arg(0))));
+ // If on an individual node page, add the node type.
+ if (isset($variables['node']) && $variables['node']->type) {
+ $body_classes[] = 'node-type-'. form_clean_id($variables['node']->type);
+ }
+ // Add information about the number of sidebars.
+ if ($variables['sidebar_left'] && $variables['sidebar_right']) {
+ $body_classes[] = 'two-sidebars';
+ }
+ elseif ($variables['sidebar_left']) {
+ $body_classes[] = 'one-sidebar sidebar-left';
+ }
+ elseif ($variables['sidebar_right']) {
+ $body_classes[] = 'one-sidebar sidebar-right';
+ }
+ else {
+ $body_classes[] = 'no-sidebars';
+ }
+ // Implode with spaces.
+ $variables['body_classes'] = implode(' ', $body_classes);
+
// Build a list of suggested template files in order of specificity. One
// suggestion is made for every element of the current path, though
// numeric elements are not carried to subsequent suggestions. For example,
diff --git a/modules/node/node.module b/modules/node/node.module
index 2dd3735b5..4a6b45265 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -691,9 +691,9 @@ function node_save(&$node) {
// Split off revisions data to another structure
$revisions_table_values = array('nid' => &$node->nid,
- 'title' => $node->title, 'body' => $node->body,
+ 'title' => $node->title, 'body' => isset($node->body) ? $node->body : '',
'teaser' => $node->teaser, 'timestamp' => $node->changed,
- 'uid' => $user->uid, 'format' => $node->format);
+ 'uid' => $user->uid, 'format' => isset($node->format) ? $node->format : FILTER_FORMAT_DEFAULT);
$revisions_table_types = array('nid' => '%d',
'title' => "'%s'", 'body' => "'%s'",
'teaser' => "'%s'", 'timestamp' => '%d',
@@ -1166,7 +1166,7 @@ function node_link($type, $node = NULL, $teaser = FALSE) {
$links = array();
if ($type == 'node') {
- if ($teaser == 1 && $node->teaser && $node->readmore) {
+ if ($teaser == 1 && $node->teaser && !empty($node->readmore)) {
$links['node_read_more'] = array(
'title' => t('Read more'),
'href' => "node/$node->nid",
@@ -1966,7 +1966,7 @@ function node_feed($nids = array(), $channel = array()) {
break;
case 'teaser':
$item_text = $item->teaser;
- if ($item->readmore) {
+ if (!empty($item->readmore)) {
$item_text .= '<p>'. l(t('read more'), 'node/'. $item->nid, array('absolute' => TRUE)) .'</p>';
}
break;
diff --git a/modules/poll/poll-results-block.tpl.php b/modules/poll/poll-results-block.tpl.php
index d648e58d1..0d2d62d3f 100644
--- a/modules/poll/poll-results-block.tpl.php
+++ b/modules/poll/poll-results-block.tpl.php
@@ -11,7 +11,7 @@
* - $links: Links in the poll.
* - $nid: The nid of the poll
* - $cancel_form: A form to cancel the user's vote, if allowed.
- * - $raw_links: The raw array of links. Should be run through theme('links')
+ * - $raw_links: The raw array of links. Should be run through theme('links')
* if used.
* - $vote: The choice number of the current user's vote.
*
diff --git a/modules/poll/poll.module b/modules/poll/poll.module
index e6952e06a..325101bdf 100644
--- a/modules/poll/poll.module
+++ b/modules/poll/poll.module
@@ -427,7 +427,7 @@ function poll_page() {
}
/**
- * Creates a simple teaser that lists all the choices.
+ * Creates a simple teaser that lists all the choices.
*
* This is primarily used for RSS.
*/
@@ -460,9 +460,9 @@ function poll_view_voting(&$form_state, $node, $block) {
'#options' => $list,
);
}
-
+
$form['vote'] = array(
- '#type' => 'submit',
+ '#type' => 'submit',
'#value' => t('Vote'),
'#submit' => array('poll_vote'),
);
@@ -594,7 +594,7 @@ function poll_cancel_form(&$form_state, $nid) {
$form['#nid'] = $nid;
$form['submit'] = array(
- '#type' => 'submit',
+ '#type' => 'submit',
'#value' => t('Cancel your vote'),
'#submit' => array('poll_cancel')
);
diff --git a/modules/system/page.tpl.php b/modules/system/page.tpl.php
index 5bf9e423b..b70c46c51 100644
--- a/modules/system/page.tpl.php
+++ b/modules/system/page.tpl.php
@@ -1,60 +1,180 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language->language ?>" xml:lang="<?php print $language->language ?>">
+<?php
+// $Id$
+/**
+ * @file page.tpl.php
+ *
+ * Theme implementation to display a single Drupal page.
+ *
+ * Available variables:
+ *
+ * General utility variables:
+ * - $base_path: The base URL path of the Drupal installation. At the very
+ * least, this will always default to /.
+ * - $css: An array of CSS files for the current page.
+ * - $directory: The directory the theme is located in, e.g. themes/garland or
+ * themes/garland/minelli.
+ * - $is_front: TRUE if the current page is the front page.
+ * - $logged_in: TRUE if the user is registered and signed in.
+ * - $is_admin: TRUE if the user has permission to access administration pages.
+ *
+ * Page metadata:
+ * - $language: (object) The language the site is being displayed in.
+ * $language->language contains its textual representation.
+ * - $head_title: A modified version of the page title, for use in the TITLE tag.
+ * - $head: Markup for the HEAD section (including meta tags, keyword tags, and
+ * so on).
+ * - $styles: Style tags necessary to import all CSS files for the page.
+ * - $scripts: Script tags necessary to load the JavaScript files and settings
+ * for the page.
+ * - $body_classes: A set of CSS classes for the BODY tag. This contains flags
+ * indicating the current layout (multiple columns, single column), the current
+ * path, whether the user is logged in, and so on.
+ * - $is_front: True if the front page is currently being displayed. Used to
+ * toggle the mission.
+ *
+ * Site identity:
+ * - $logo: The path to the logo image, as defined in theme configuration.
+ * - $site_name: The name of the site, empty when display has been disabled
+ * in theme settings.
+ * - $site_slogan: The slogan of the site, empty when display has been disabled
+ * in theme settings.
+ * - $mission: The text of the site mission, empty when display has been disabled
+ * in theme settings.
+ *
+ * Navigation:
+ * - $search_box: HTML to display the search box, empty if search has been disabled.
+ * - $primary_links (array): An array containing primary navigation links for the
+ * site, if they have been configured.
+ * - $secondary_links (array): An array containing secondary navigation links for
+ * the site, if they have been configured.
+ *
+ * Page content (in order of occurrance in the default page.tpl.php):
+ * - $sidebar_left: The HTML for the left sidebar.
+ *
+ * - $breadcrumb: The breadcrumb trail for the current page.
+ * - $title: The page title, for use in the actual HTML content.
+ * - $help: Dynamic help text, mostly for admin pages.
+ * - $messages: HTML for status and error messages. Should be displayed prominently.
+ * - $tabs: Tabs linking to any sub-pages beneath the current page (e.g., the view
+ * and edit tabs when displaying a node).
+ *
+ * - $content: The main content of the current Drupal page.
+ *
+ * - $sidebar_right: The HTML for the right sidebar.
+ *
+ * Footer/closing data:
+ * - $feed_icons: A string of all feed icons for the current page.
+ * - $footer_message: The footer message as defined in the admin settings.
+ * - $closure: Final closing markup from any modules that have altered the page.
+ * This variable should always be output last, after all other dynamic content.
+ *
+ * @see template_preprocess_page()
+ * @see phptemplate_engine_preprocess()
+ */
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>">
<head>
- <title><?php print $head_title ?></title>
- <?php print $head ?>
- <?php print $styles ?>
- <?php print $scripts ?>
- <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyle Content in IE */ ?> </script>
+ <title><?php print $head_title; ?></title>
+ <?php print $head; ?>
+ <?php print $styles; ?>
+ <?php print $scripts; ?>
+ <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyled Content in IE */ ?> </script>
</head>
+<body class="<?php print $body_classes; ?>">
+ <div id="page">
+ <div id="header">
+ <div id="logo-title">
+
+ <?php if (!empty($logo)): ?>
+ <a href="<?php print $base_path; ?>" title="<?php print t('Home'); ?>" rel="home" id="logo">
+ <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" />
+ </a>
+ <?php endif; ?>
+
+ <div id="name-and-slogan">
+ <?php if (!empty($site_name)): ?>
+ <h1 id="site-name">
+ <a href="<?php print $base_path ?>" title="<?php print t('Home'); ?>" rel="home"><span><?php print $site_name; ?></span></a>
+ </h1>
+ <?php endif; ?>
+
+ <?php if (!empty($site_slogan)): ?>
+ <div id="site-slogan"><?php print $site_slogan; ?></div>
+ <?php endif; ?>
+ </div> <!-- /name-and-slogan -->
+ </div> <!-- /logo-title -->
+
+ <?php if (!empty($search_box)): ?>
+ <div id="search-box"><?php print $search_box; ?></div>
+ <?php endif; ?>
+
+ <div id="navigation" class="menu <?php if (!empty($primary_links)) { print "withprimary"; } if (!empty($secondary_links)) { print " withsecondary"; } ?> ">
+ <?php if (!empty($primary_links)): ?>
+ <div id="primary" class="clear-block">
+ <?php print theme('menu_links', $primary_links); ?>
+ </div>
+ <?php endif; ?>
+
+ <?php if (!empty($secondary_links)): ?>
+ <div id="secondary" class="clear-block">
+ <?php print theme('menu_links', $secondary_links); ?>
+ </div>
+ <?php endif; ?>
+ </div> <!-- /navigation -->
+
+ <?php if (!empty($header)): ?>
+ <div id="header-region">
+ <?php print $header; ?>
+ </div>
+ <?php endif; ?>
+
+ </div> <!-- /header -->
+
+ <div id="container" class="clear-block">
+
+ <?php if (!empty($sidebar_left)): ?>
+ <div id="sidebar-left" class="column sidebar">
+ <?php print $sidebar_left; ?>
+ </div> <!-- /sidebar-left -->
+ <?php endif; ?>
+
+ <div id="main" class="column"><div id="main-squeeze">
+ <?php if (!empty($breadcrumb)): ?><div id="breadcrumb"><?php print $breadcrumb; ?></div><?php endif; ?>
+ <?php if (!empty($mission)): ?><div id="mission"><?php print $mission; ?></div><?php endif; ?>
+
+ <div id="content">
+ <?php if (!empty($title)): ?><h1 class="title" id="page-title"><?php print $title; ?></h1><?php endif; ?>
+ <?php if (!empty($tabs)): ?><div class="tabs"><?php print $tabs; ?></div><?php endif; ?>
+ <?php if (!empty($messages)): print $messages; endif; ?>
+ <?php if (!empty($help)): print $help; endif; ?>
+ <div id="content-content" class="clear-block">
+ <?php print $content; ?>
+ </div> <!-- /content-content -->
+ <?php print $feed_icons; ?>
+ </div> <!-- /content -->
+
+ </div></div> <!-- /main-squeeze /main -->
+
+ <?php if (!empty($sidebar_right)): ?>
+ <div id="sidebar-right" class="column sidebar">
+ <?php print $sidebar_right; ?>
+ </div> <!-- /sidebar-right -->
+ <?php endif; ?>
+
+ </div> <!-- /container -->
+
+ <div id="footer-wrapper">
+ <div id="footer">
+ <?php print $footer_message; ?>
+ </div> <!-- /footer -->
+ </div> <!-- /footer-wrapper -->
+
+ <?php print $closure; ?>
+
+ </div> <!-- /page -->
-<body>
-
-<table border="0" cellpadding="0" cellspacing="0" id="header">
- <tr>
- <td id="logo">
- <?php if ($logo) { ?><a href="<?php print $base_path ?>" title="<?php print t('Home') ?>"><img src="<?php print $logo ?>" alt="<?php print t('Home') ?>" /></a><?php } ?>
- <?php if ($site_name) { ?><h1 class='site-name'><a href="<?php print $base_path ?>" title="<?php print t('Home') ?>"><?php print $site_name ?></a></h1><?php } ?>
- <?php if ($site_slogan) { ?><div class='site-slogan'><?php print $site_slogan ?></div><?php } ?>
- </td>
- <td id="menu">
- <?php if (isset($secondary_links)) { ?><?php print theme('links', $secondary_links, array('class' =>'links', 'id' => 'subnavlist')) ?><?php } ?>
- <?php if (isset($primary_links)) { ?><?php print theme('links', $primary_links, array('class' =>'links', 'id' => 'navlist')) ?><?php } ?>
- <?php print $search_box ?>
- </td>
- </tr>
- <tr>
- <td colspan="2"><div><?php print $header ?></div></td>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" id="content">
- <tr>
- <?php if ($sidebar_left) { ?><td id="sidebar-left">
- <?php print $sidebar_left ?>
- </td><?php } ?>
- <td valign="top">
- <?php if ($mission) { ?><div id="mission"><?php print $mission ?></div><?php } ?>
- <div id="main">
- <?php print $breadcrumb ?>
- <h1 class="title"><?php print $title ?></h1>
- <div class="tabs"><?php print $tabs ?></div>
- <?php print $help ?>
- <?php if ($show_messages) { print $messages; }?>
- <?php print $content; ?>
- <?php print $feed_icons; ?>
- </div>
- </td>
- <?php if ($sidebar_right) { ?><td id="sidebar-right">
- <?php print $sidebar_right ?>
- </td><?php } ?>
- </tr>
-</table>
-
-<div id="footer">
- <?php print $footer_message ?>
-</div>
-<?php print $closure ?>
</body>
</html>
diff --git a/themes/engines/phptemplate/phptemplate.engine b/themes/engines/phptemplate/phptemplate.engine
index 48f620838..007c7a735 100644
--- a/themes/engines/phptemplate/phptemplate.engine
+++ b/themes/engines/phptemplate/phptemplate.engine
@@ -36,6 +36,7 @@ function phptemplate_theme($existing, $type, $theme, $path) {
* The name of the theme function being executed.
*/
function phptemplate_engine_preprocess(&$variables, $hook) {
+ global $user;
static $count = array();
// Create variables so anything which is themed can be zebra striped automatically.
@@ -46,4 +47,7 @@ function phptemplate_engine_preprocess(&$variables, $hook) {
// Tell all templates where they are located.
$variables['directory'] = path_to_theme();
$variables['is_front'] = drupal_is_front_page();
+ // Tell all templates by which kind of user they're viewed.
+ $variables['logged_in'] = ($user->uid > 0);
+ $variables['is_admin'] = user_access('access administration pages');
}