From c70b19a91bfedbae40304cbfed7b5875c5aae342 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Thu, 2 Aug 2007 20:08:53 +0000 Subject: - Patch #163723 by Eaton and Frando: fix default page.tpl markup (and removed some whitespace). --- INSTALL.txt | 6 + includes/common.inc | 4 - includes/theme.inc | 33 ++++ modules/node/node.module | 8 +- modules/poll/poll-results-block.tpl.php | 2 +- modules/poll/poll.module | 8 +- modules/system/page.tpl.php | 228 ++++++++++++++++++++------ themes/engines/phptemplate/phptemplate.engine | 4 + 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 .= '

'. l(t('read more'), 'node/'. $item->nid, array('absolute' => TRUE)) .'

'; } 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 @@ - - +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() + */ +?> + + - <?php print $head_title ?> - - - - + <?php print $head_title; ?> + + + + + +
+ + +
+ + + + + +
+ +
+ +
+

+
+ + +
+ +
+ +
+ +
+ + + + + +
+ + + + + +
- - - - - - - - - - - - - - - - - - -
-
-
- -

-
- - - - -
-
- - - 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'); } -- cgit v1.2.3