diff --git a/includes/theme.inc b/includes/theme.inc index 08b02bfcd0dfb150a0228e9f98f989db7f333bb9..af647fb91b35b9f8f5a3fd445196f10e2719bf36 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -78,7 +78,7 @@ function init_theme() { call_user_func($theme_engine .'_init', $themes[$theme]); } } - + return $theme; } @@ -192,7 +192,7 @@ function path_to_theme() { /** * Retrieve an associative array containing the settings for a theme. * - * The final settings are arrived at by merging the default settings, + * The final settings are arrived at by merging the default settings, * the site-wide settings, and the settings defined for the specific theme. * If no $key was specified, only the site-wide theme defaults are retrieved. * @@ -272,7 +272,7 @@ function drupal_get_theme_setting($setting_name, $refresh = FALSE) { if ($settings['toggle_logo']) { if ($settings['default_logo']) { - $settings['logo'] = dirname($theme_object->filename) .'/logo.png'; + $settings['logo'] = dirname($theme_object->filename) .'/logo.png'; } elseif ($settings['logo_path']) { $settings['logo'] = $settings['logo_path']; @@ -421,7 +421,7 @@ function theme_links($links, $delimiter = ' | ') { * @param $title * The title text is displayed when the image is hovered in some popular browsers. * @param $attr - * Attributes placed in the img tag. + * Attributes placed in the img tag. * @param $getsize * If set to true, the image's dimension are fetched and added as width/height attributes. * @return @@ -657,7 +657,7 @@ function theme_mark() { /** * Import a stylesheet using @import. - * + * * @param $stylesheet * The filename to point the link at. * diff --git a/themes/bluemarine/style.css b/themes/bluemarine/style.css index c72ee52d89c250a608a499ca02c03cde7663d0af..8d3372db21097941c99d680c3651726411a70214 100644 --- a/themes/bluemarine/style.css +++ b/themes/bluemarine/style.css @@ -1,354 +1,354 @@ -/* $Id$ */ - -/* -** HTML elements -*/ -body { - margin: 0; - padding: 0; - color: #000; - background-color: #fff; - font: 76% Verdana, Arial, Helvetica, sans-serif; -} -tr.dark td, tr.light td { - padding: 0.3em; -} -h1, h2, h3, h4, h5, h6 { - margin: 0.5; -} -h1 { - font-size: 1.3em; -} -h2 { - font-size: 1.2em; -} -h3, h4, h5, h6 { - font-size: 1.1em; -} -a { - text-decoration: none; - font-weight: bold; -} -a:link { - color: #39c; -} -a:visited { - color: #369; -} -a:hover { - color: #39c; - text-decoration: underline; -} -fieldset { - border: 1px solid #ccc; -} -pre { - background-color: #eee; - padding: 0.75em 1.5em; - font-size: 12px; - border: 1px solid #ddd; -} -table { - /* make <td> sizes relative to body size! */ - font-size: 1em; -} -.form-item label { - font-size: 1em; - color: #222; -} -.item-list .title { - font-size: 1em; - color: #222; -} -.links { - margin-bottom: 2em; -} -.comment .links { - margin-bottom: 0em; -} - -/* -** Page layout blocks / IDs -*/ -#header, #content { - width: 100%; -} -#header { - background-color: #69c; -} -#logo { - vertical-align: middle; - border: 0; -} -#logo img { - float: left; - padding: 0em 1.0em 0em 1em; -} -#menu { - padding: 0.5em 0.5em 0 0.5em; - text-align: right; - vertical-align: middle; -} -#primary { - font-size: 1.0em; - padding: 0em 0.8em 0.5em 0; - color: #9cf; -} -#primary a { - font-weight: bold; - color: #fff; -} -#secondary { - padding: 0 1em 0.5em 0; - font-size: 0.8em; - color: #9cf; -} -#secondary a { - font-weight: bold; - color: #9cf; -} -#search .form-text, #search .form-submit { - border: 1px solid #369; - font-size: 1.1em; -} -#search .form-text { - width: 8em; - height: 1.4em; - padding: 0 0.5em 0 0.5em; - margin: 0 0 0.5em 0; -} -#search .form-submit { - height: 1.5em; -} -#mission { - background-color: #369; - padding: 1.5em 2em; - color: #fff; -} -#mission a, #mission a:visited { - color: #9cf; - font-weight: bold; -} -.site-name { - margin: 0.6em 0em 0em 0em; - padding: 0em; - font-size: 2em; -} -.site-name a:link, .site-name a:visited { - color: #fff; -} -.site-name a:hover { - color: #369; - text-decoration: none; -} -.site-slogan { - font-size: 1em; - color: #eee; - display: block; - margin: 0em 0em 0em 0em; - font-style: italic; - font-weight: bold; -} -#main { - /* padding in px not ex because IE messes up 100% width tables otherwise */ - padding: 10px; -} -#mission, .node .content, .comment .content { - line-height: 1.4; -} -#help { - font-size: 0.9em; - margin-bottom: 1em; -} -.breadcrumb { - margin-bottom: .5em; -} -.messages { - background-color: #eee; - border: 1px solid #ccc; - padding: 0.3em; - margin-bottom: 1em; -} -.error { - border-color: red; -} -#sidebar-left, #sidebar-right { - background-color: #ddd; - width: 16em; - /* padding in px not ex because IE messes up 100% width tables otherwise */ - padding: 10px; - vertical-align: top; -} -#footer { - background-color: #eee; - padding: 1em; - font-size: 0.8em; -} - -/* -** Common declarations for child classes of node, comment, block, box, etc. -** If you want any of them styled differently for a specific parent, add -** additional rules /with only the differing properties!/ to .parent .class. -** See .comment .title for an example. -*/ -.title, .title a { - font-weight: bold; - font-size: 1.3em; - color: #777; - margin: 0 auto 0 auto; /* decrease default margins for h<x>.title */ -} -.submitted { - color: #999; - font-size: 0.8em; -} -.links { - color: #999; -} -.links a { - font-weight: bold; -} -.block, .box { - padding: 0 0 1.5em 0; -} -.block { - border-bottom: 1px solid #bbb; - padding-bottom: 0.75em; - margin-bottom: 1.5em; -} -.block .title { - margin-bottom: .25em; -} -.box .title { - font-size: 1.1em; -} -.node { - margin: .5em 0 1em 0; -} -.sticky { - padding: .5em; - background-color: #eee; - border: solid 1px #ddd; -} -.node .content, .comment .content { - margin: .5em 0 .5em 0; -} -.node .taxonomy { - color: #999; - font-size: 0.8em; - padding: 1.5em; -} -.node .picture { - border: 1px solid #ddd; - float: right; - margin: 0.5em; -} -.comment { - border: 1px solid #abc; - padding: .5em; - margin-bottom: 1em; -} -.comment .title a { - font-size: 1.1em; - font-weight: normal; -} -.comment .new { - text-align: right; - font-weight: bold; - font-size: 0.8em; - float: right; - color: red; -} -.comment .picture { - border: 1px solid #abc; - float: right; - margin: 0.5em; -} - -/* -** Module specific styles -*/ -#aggregator .feed { - background-color: #eee; - border: 1px solid #ccc; - padding: 1em; - margin: 1em 0 1em 0; -} -#aggregator .news-item .source, #aggregator .news-item .categories, #aggregator .source, #aggregator .age { - color: #999; - font-style: italic; - font-size: 0.9em; -} -#aggregator .title { - margin-bottom: 0.5em; - font-size: 1em; -} -#aggregator h3 { - margin-top: 1em; -} -#forum table { - width: 100%; -} -#forum td { - padding: 0.5em 0.5em 0.5em 0.5em; -} -#forum td.forum, #forum td.posts { - background-color: #eee; -} -#forum td.topics, #forum td.last-reply { - background-color: #ddd; -} -#forum td.container { - background-color: #ccc; -} -#forum td.container a { - color: #555; -} -#forum td.statistics, #forum td.settings, #forum td.pager { - height: 1.5em; - border: 1px solid #bbb; -} -#forum td .name { - color: #96c; -} -#forum td .links { - padding-top: 0.7em; - font-size: 0.9em; -} -#profile .profile { - clear: both; - border: 1px solid #abc; - padding: .5em; - margin: 1em 0em 1em 0em; -} -#profile .profile .name { - padding-bottom: 0.5em; -} -.block-forum h3 { - margin-bottom: .5em; -} -.calendar a { - text-decoration: none; -} -.calendar td, .calendar th { - padding: 0.4em 0; - border-color: #888; -} -.calendar .day-today { - background-color: #69c; -} -.calendar .day-today a { - color: #fff; -} -.calendar .day-selected { - background-color: #369; - color: #fff; -} -.calendar .header-week { - background-color: #ccc; -} -.calendar .day-blank { - background-color: #ccc; -} -.calendar .row-week td a:hover { - background-color: #fff; color: #000; -} +/* $Id$ */ + +/* +** HTML elements +*/ +body { + margin: 0; + padding: 0; + color: #000; + background-color: #fff; + font: 76% Verdana, Arial, Helvetica, sans-serif; +} +tr.dark td, tr.light td { + padding: 0.3em; +} +h1, h2, h3, h4, h5, h6 { + margin: 0.5; +} +h1 { + font-size: 1.3em; +} +h2 { + font-size: 1.2em; +} +h3, h4, h5, h6 { + font-size: 1.1em; +} +a { + text-decoration: none; + font-weight: bold; +} +a:link { + color: #39c; +} +a:visited { + color: #369; +} +a:hover { + color: #39c; + text-decoration: underline; +} +fieldset { + border: 1px solid #ccc; +} +pre { + background-color: #eee; + padding: 0.75em 1.5em; + font-size: 12px; + border: 1px solid #ddd; +} +table { + /* make <td> sizes relative to body size! */ + font-size: 1em; +} +.form-item label { + font-size: 1em; + color: #222; +} +.item-list .title { + font-size: 1em; + color: #222; +} +.links { + margin-bottom: 2em; +} +.comment .links { + margin-bottom: 0em; +} + +/* +** Page layout blocks / IDs +*/ +#header, #content { + width: 100%; +} +#header { + background-color: #69c; +} +#logo { + vertical-align: middle; + border: 0; +} +#logo img { + float: left; + padding: 0em 1.0em 0em 1em; +} +#menu { + padding: 0.5em 0.5em 0 0.5em; + text-align: right; + vertical-align: middle; +} +#primary { + font-size: 1.0em; + padding: 0em 0.8em 0.5em 0; + color: #9cf; +} +#primary a { + font-weight: bold; + color: #fff; +} +#secondary { + padding: 0 1em 0.5em 0; + font-size: 0.8em; + color: #9cf; +} +#secondary a { + font-weight: bold; + color: #9cf; +} +#search .form-text, #search .form-submit { + border: 1px solid #369; + font-size: 1.1em; +} +#search .form-text { + width: 8em; + height: 1.4em; + padding: 0 0.5em 0 0.5em; + margin: 0 0 0.5em 0; +} +#search .form-submit { + height: 1.5em; +} +#mission { + background-color: #369; + padding: 1.5em 2em; + color: #fff; +} +#mission a, #mission a:visited { + color: #9cf; + font-weight: bold; +} +.site-name { + margin: 0.6em 0em 0em 0em; + padding: 0em; + font-size: 2em; +} +.site-name a:link, .site-name a:visited { + color: #fff; +} +.site-name a:hover { + color: #369; + text-decoration: none; +} +.site-slogan { + font-size: 1em; + color: #eee; + display: block; + margin: 0em 0em 0em 0em; + font-style: italic; + font-weight: bold; +} +#main { + /* padding in px not ex because IE messes up 100% width tables otherwise */ + padding: 10px; +} +#mission, .node .content, .comment .content { + line-height: 1.4; +} +#help { + font-size: 0.9em; + margin-bottom: 1em; +} +.breadcrumb { + margin-bottom: .5em; +} +.messages { + background-color: #eee; + border: 1px solid #ccc; + padding: 0.3em; + margin-bottom: 1em; +} +.error { + border-color: red; +} +#sidebar-left, #sidebar-right { + background-color: #ddd; + width: 16em; + /* padding in px not ex because IE messes up 100% width tables otherwise */ + padding: 10px; + vertical-align: top; +} +#footer { + background-color: #eee; + padding: 1em; + font-size: 0.8em; +} + +/* +** Common declarations for child classes of node, comment, block, box, etc. +** If you want any of them styled differently for a specific parent, add +** additional rules /with only the differing properties!/ to .parent .class. +** See .comment .title for an example. +*/ +.title, .title a { + font-weight: bold; + font-size: 1.3em; + color: #777; + margin: 0 auto 0 auto; /* decrease default margins for h<x>.title */ +} +.submitted { + color: #999; + font-size: 0.8em; +} +.links { + color: #999; +} +.links a { + font-weight: bold; +} +.block, .box { + padding: 0 0 1.5em 0; +} +.block { + border-bottom: 1px solid #bbb; + padding-bottom: 0.75em; + margin-bottom: 1.5em; +} +.block .title { + margin-bottom: .25em; +} +.box .title { + font-size: 1.1em; +} +.node { + margin: .5em 0 1em 0; +} +.sticky { + padding: .5em; + background-color: #eee; + border: solid 1px #ddd; +} +.node .content, .comment .content { + margin: .5em 0 .5em 0; +} +.node .taxonomy { + color: #999; + font-size: 0.8em; + padding: 1.5em; +} +.node .picture { + border: 1px solid #ddd; + float: right; + margin: 0.5em; +} +.comment { + border: 1px solid #abc; + padding: .5em; + margin-bottom: 1em; +} +.comment .title a { + font-size: 1.1em; + font-weight: normal; +} +.comment .new { + text-align: right; + font-weight: bold; + font-size: 0.8em; + float: right; + color: red; +} +.comment .picture { + border: 1px solid #abc; + float: right; + margin: 0.5em; +} + +/* +** Module specific styles +*/ +#aggregator .feed { + background-color: #eee; + border: 1px solid #ccc; + padding: 1em; + margin: 1em 0 1em 0; +} +#aggregator .news-item .source, #aggregator .news-item .categories, #aggregator .source, #aggregator .age { + color: #999; + font-style: italic; + font-size: 0.9em; +} +#aggregator .title { + margin-bottom: 0.5em; + font-size: 1em; +} +#aggregator h3 { + margin-top: 1em; +} +#forum table { + width: 100%; +} +#forum td { + padding: 0.5em 0.5em 0.5em 0.5em; +} +#forum td.forum, #forum td.posts { + background-color: #eee; +} +#forum td.topics, #forum td.last-reply { + background-color: #ddd; +} +#forum td.container { + background-color: #ccc; +} +#forum td.container a { + color: #555; +} +#forum td.statistics, #forum td.settings, #forum td.pager { + height: 1.5em; + border: 1px solid #bbb; +} +#forum td .name { + color: #96c; +} +#forum td .links { + padding-top: 0.7em; + font-size: 0.9em; +} +#profile .profile { + clear: both; + border: 1px solid #abc; + padding: .5em; + margin: 1em 0em 1em 0em; +} +#profile .profile .name { + padding-bottom: 0.5em; +} +.block-forum h3 { + margin-bottom: .5em; +} +.calendar a { + text-decoration: none; +} +.calendar td, .calendar th { + padding: 0.4em 0; + border-color: #888; +} +.calendar .day-today { + background-color: #69c; +} +.calendar .day-today a { + color: #fff; +} +.calendar .day-selected { + background-color: #369; + color: #fff; +} +.calendar .header-week { + background-color: #ccc; +} +.calendar .day-blank { + background-color: #ccc; +} +.calendar .row-week td a:hover { + background-color: #fff; color: #000; +} diff --git a/themes/bluemarine/xtemplate.xtmpl b/themes/bluemarine/xtemplate.xtmpl index 9de7b62a2facfc733d2914911e008e7f8ce1a16f..a622be24f19969abe3581860ce795d0e73cd9e5a 100644 --- a/themes/bluemarine/xtemplate.xtmpl +++ b/themes/bluemarine/xtemplate.xtmpl @@ -1,137 +1,137 @@ -<!-- BEGIN: header --><!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="en" xml:lang="en"> - -<head> - <title>{head_title}</title> - {head} -</head> - -<body{onload_attributes}> - -<table border="0" cellpadding="0" cellspacing="0" id="header"> - <tr> - <td id="logo"> - - <!-- BEGIN: logo --> - <a href="./" title="Home"><img src="{logo}" alt="Home" border="0" /></a> - <!-- END: logo --> - - <!-- BEGIN: site_name --> - <h1 class='site-name'><a href="./" title="Home">{site_name}</a></h1> - <!-- END: site_name --> - - <!-- BEGIN: site_slogan --> - <div class='site-slogan'>{site_slogan}</div> - <!-- END: site_slogan --> - - - </td> - <td id="menu"> - <div id="secondary">{secondary_links}</div> - <div id="primary">{primary_links}</div> - <!-- BEGIN: search_box --> - <form action="{search_url}" method="post"> - <div id="search"> - <input class="form-text" type="text" size="15" value="" name="keys" alt="{search_description}" /> - <input class="form-submit" type="submit" value="{search_button_text}" /> - </div> - </form> - <!-- END: search_box --> - </td> - </tr> -</table> - -<table border="0" cellpadding="0" cellspacing="0" id="content"> - <tr> - <!-- BEGIN: blocks --> - <td id="sidebar-left"> - {blocks} - </td> - <!-- END: blocks --> - <td valign="top"> - <!-- BEGIN: mission --> - <div id="mission">{mission}</div> - <!-- END: mission --> - <div id="main"> - <!-- BEGIN: title --> - {breadcrumb} - <h1 class="title">{title}</h1> - <!-- BEGIN: tabs --> - <div class="tabs">{tabs}</div> - <!-- END: tabs --> - <!-- END: title --> - <!-- BEGIN: help --> - <div id="help">{help}</div> - <!-- END: help --> - <!-- BEGIN: message --> - {message} - <!-- END: message --> -<!-- END: header --> - -<!-- BEGIN: node --> - <div class="node {sticky}"> - <!-- BEGIN: picture --> - {picture} - <!-- END: picture --> - <!-- BEGIN: title --> - <h2 class="title"><a href="{link}">{title}</a></h2> - <!-- END: title --> - <span class="submitted">{submitted}</span> - <!-- BEGIN: taxonomy --> - <span class="taxonomy">{taxonomy}</span> - <!-- END: taxonomy --> - <div class="content">{content}</div> - <!-- BEGIN: links --> - <div class="links">» {links}</div> - <!-- END: links --> - </div> -<!-- END: node --> - -<!-- BEGIN: comment --> - <div class="comment"> - <!-- BEGIN: picture --> - {picture} - <!-- END: picture --> - <h3 class="title">{title}</h3><!-- BEGIN: new --><span class="new">{new}</span><!-- END: new --> - <div class="submitted">{submitted}</div> - <div class="content">{content}</div> - <!-- BEGIN: links --> - <div class="links">» {links}</div> - <!-- END: links --> - </div> -<!-- END: comment --> - -<!-- BEGIN: box --> - <div class="box"> - <h2 class="title">{title}</h2> - <div class="content">{content}</div> - </div> -<!-- END: box --> - -<!-- BEGIN: block --> - <div class="block block-{module}" id="block-{module}-{delta}"> - <h2 class="title">{title}</h2> - <div class="content">{content}</div> - </div> -<!-- END: block --> - -<!-- BEGIN: footer --> - </div><!-- main --> - </td> - <!-- BEGIN: blocks --> - <td id="sidebar-right"> - {blocks} - </td> - <!-- END: blocks --> - </tr> -</table> - -<!-- BEGIN: message --> -<div id="footer"> - {footer_message} -</div> -<!-- END: message --> -{footer} -</body> -</html> -<!-- END: footer --> +<!-- BEGIN: header --><!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="en" xml:lang="en"> + +<head> + <title>{head_title}</title> + {head} +</head> + +<body{onload_attributes}> + +<table border="0" cellpadding="0" cellspacing="0" id="header"> + <tr> + <td id="logo"> + + <!-- BEGIN: logo --> + <a href="./" title="Home"><img src="{logo}" alt="Home" border="0" /></a> + <!-- END: logo --> + + <!-- BEGIN: site_name --> + <h1 class='site-name'><a href="./" title="Home">{site_name}</a></h1> + <!-- END: site_name --> + + <!-- BEGIN: site_slogan --> + <div class='site-slogan'>{site_slogan}</div> + <!-- END: site_slogan --> + + + </td> + <td id="menu"> + <div id="secondary">{secondary_links}</div> + <div id="primary">{primary_links}</div> + <!-- BEGIN: search_box --> + <form action="{search_url}" method="post"> + <div id="search"> + <input class="form-text" type="text" size="15" value="" name="keys" alt="{search_description}" /> + <input class="form-submit" type="submit" value="{search_button_text}" /> + </div> + </form> + <!-- END: search_box --> + </td> + </tr> +</table> + +<table border="0" cellpadding="0" cellspacing="0" id="content"> + <tr> + <!-- BEGIN: blocks --> + <td id="sidebar-left"> + {blocks} + </td> + <!-- END: blocks --> + <td valign="top"> + <!-- BEGIN: mission --> + <div id="mission">{mission}</div> + <!-- END: mission --> + <div id="main"> + <!-- BEGIN: title --> + {breadcrumb} + <h1 class="title">{title}</h1> + <!-- BEGIN: tabs --> + <div class="tabs">{tabs}</div> + <!-- END: tabs --> + <!-- END: title --> + <!-- BEGIN: help --> + <div id="help">{help}</div> + <!-- END: help --> + <!-- BEGIN: message --> + {message} + <!-- END: message --> +<!-- END: header --> + +<!-- BEGIN: node --> + <div class="node {sticky}"> + <!-- BEGIN: picture --> + {picture} + <!-- END: picture --> + <!-- BEGIN: title --> + <h2 class="title"><a href="{link}">{title}</a></h2> + <!-- END: title --> + <span class="submitted">{submitted}</span> + <!-- BEGIN: taxonomy --> + <span class="taxonomy">{taxonomy}</span> + <!-- END: taxonomy --> + <div class="content">{content}</div> + <!-- BEGIN: links --> + <div class="links">» {links}</div> + <!-- END: links --> + </div> +<!-- END: node --> + +<!-- BEGIN: comment --> + <div class="comment"> + <!-- BEGIN: picture --> + {picture} + <!-- END: picture --> + <h3 class="title">{title}</h3><!-- BEGIN: new --><span class="new">{new}</span><!-- END: new --> + <div class="submitted">{submitted}</div> + <div class="content">{content}</div> + <!-- BEGIN: links --> + <div class="links">» {links}</div> + <!-- END: links --> + </div> +<!-- END: comment --> + +<!-- BEGIN: box --> + <div class="box"> + <h2 class="title">{title}</h2> + <div class="content">{content}</div> + </div> +<!-- END: box --> + +<!-- BEGIN: block --> + <div class="block block-{module}" id="block-{module}-{delta}"> + <h2 class="title">{title}</h2> + <div class="content">{content}</div> + </div> +<!-- END: block --> + +<!-- BEGIN: footer --> + </div><!-- main --> + </td> + <!-- BEGIN: blocks --> + <td id="sidebar-right"> + {blocks} + </td> + <!-- END: blocks --> + </tr> +</table> + +<!-- BEGIN: message --> +<div id="footer"> + {footer_message} +</div> +<!-- END: message --> +{footer} +</body> +</html> +<!-- END: footer --> diff --git a/themes/chameleon/chameleon.theme b/themes/chameleon/chameleon.theme index 9554325325d54ef0cd7884b3a6662c42457f7bf4..1889898f6733eef9f98960bd9eaa4e3a253427c6 100644 --- a/themes/chameleon/chameleon.theme +++ b/themes/chameleon/chameleon.theme @@ -1,153 +1,153 @@ -<?php -// $Id$ - -function chameleon_features() { - return array( - 'logo', - 'toggle_name', - 'toggle_search', - 'toggle_slogan', - 'toggle_primary_links', - 'toggle_secondary_links'); -} - -function chameleon_page($content, $title = NULL, $breadcrumb = NULL) { - if (isset($title)) { - drupal_set_title($title); - } - - if (isset($breadcrumb)) { - drupal_set_breadcrumb($breadcrumb); - } - - $output = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"; - $output .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">\n"; - $output .= "<head>\n"; - $output .= " <title>". ($title ? $title ." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")) ."</title>\n"; - $output .= drupal_get_html_head(); - $output .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"themes/chameleon/common.css\" />\n"; - $output .= "</head>"; - $output .= "<body". theme_onload_attribute() .">\n"; - $output .= " <div id=\"header\">"; - - if ($logo = drupal_get_theme_setting('logo')) { - $output .= " <a href=\"./\" title=\"Home\"><img src=\"$logo\" alt=\"Home\" /></a>"; - } - if (drupal_get_theme_setting('toggle_name')) { - $output .= " <h1 class=\"site-name title\">". l(variable_get('site_name', 'drupal'), ""). "</h1>"; - } - if (drupal_get_theme_setting('toggle_slogan')) { - $output .= " <div class=\"site-slogan\">". variable_get('site_slogan', '') ."</div>"; - } - - $output .= "</div>\n"; - - $primary_links = drupal_get_theme_setting('primary_links'); - $secondary_links = drupal_get_theme_setting('secondary_links'); - if ($primary_links || $secondary_links) { - $output .= ' <div class="navlinks">'; - if ($primary_links) { - $output .= '<div class="primary">'. $primary_links .'</div>'; - } - if ($secondary_links) { - $output .= '<div class="secondary">'. $secondary_links .'</div>'; - } - $output .= " </div>\n"; - } - - $output .= " <table>\n"; - $output .= " <tr>\n"; - - if ($blocks = theme_blocks("left")) { - $output .= " <td id=\"sidebar-left\">$blocks</td>\n"; - } - - $output .= " <td id=\"main\">\n"; - - if ($title = drupal_get_title()) { - $output .= theme("breadcrumb", drupal_get_breadcrumb()); - $output .= "<h2>$title</h2>"; - } - - if ($tabs = theme('menu_local_tasks')) { - $output .= $tabs; - } - - if ($help = menu_get_active_help()) { - $output .= "<div id=\"help\">$help</div><hr />"; - } - - $output .= theme_status_messages(); - - $output .= "\n<!-- begin content -->\n"; - $output .= $content; - $output .= "\n<!-- end content -->\n"; - - if ($footer = variable_get('site_footer', '')) { - $output .= " <div id=\"footer\">$footer</div>\n"; - } - - $output .= " </td>\n"; - - if ($blocks = theme_blocks("right")) { - $output .= " <td id=\"sidebar-right\">$blocks</td>\n"; - } - - $output .= " </tr>\n"; - $output .= " </table>\n"; - - $output .= theme_closure(); - $output .= " </body>\n"; - $output .= "</html>\n"; - - return $output; -} - -function chameleon_node($node, $main = 0, $page = 0) { - - $output = "<div class=\"node\">\n"; - - if (!$page) { - $output .= " <h2 class=\"title\">". ($main ? l($node->title, "node/$node->nid") : $node->title) ."</h2>\n"; - } - - $output .= " <div class=\"content\">\n"; - - if ($main && $node->teaser) { - $output .= $node->teaser; - } - else { - $output .= $node->body; - } - - $output .= " </div>\n"; - - $submitted = drupal_get_theme_setting("toggle_node_info_$node->type") ? array(t("By %author at %date", array('%author' => format_name($node), '%date' => format_date($node->created, 'small')))) : array(); - - if (module_exist('taxonomy')) { - $terms = taxonomy_link("taxonomy terms", $node); - } - - if ($links = link_node($node, $main)) { - $output .= " <div class=\"links\">". theme('links', array_merge($submitted, $terms, $links)) ."</div>\n"; - } - - $output .= "</div>\n"; - - return $output; -} - -function chameleon_comment($comment, $link = "") { - - $submitted = array(t('By %author at %date', array('%author' => format_name($comment), '%date' => format_date($comment->timestamp. 'small')))); - $links = array($link); - - $output = "<div class=\"comment\">\n"; - $output .= " <h3 class=\"title\">". l($comment->subject, $_GET['q'], NULL, NULL, "comment-$comment->cid") ."</h3>\n"; - $output .= " <div class=\"content\">". $comment->comment ."</div>\n"; - $output .= " <div class=\"links\">". theme('links', array_merge($submitted, $links)) ."</div>\n"; - $output .= "</div>\n"; - - return $output; -} -?> +<?php +// $Id$ + +function chameleon_features() { + return array( + 'logo', + 'toggle_name', + 'toggle_search', + 'toggle_slogan', + 'toggle_primary_links', + 'toggle_secondary_links'); +} + +function chameleon_page($content, $title = NULL, $breadcrumb = NULL) { + if (isset($title)) { + drupal_set_title($title); + } + + if (isset($breadcrumb)) { + drupal_set_breadcrumb($breadcrumb); + } + + $output = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"; + $output .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">\n"; + $output .= "<head>\n"; + $output .= " <title>". ($title ? $title ." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")) ."</title>\n"; + $output .= drupal_get_html_head(); + $output .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"themes/chameleon/common.css\" />\n"; + $output .= "</head>"; + $output .= "<body". theme_onload_attribute() .">\n"; + $output .= " <div id=\"header\">"; + + if ($logo = drupal_get_theme_setting('logo')) { + $output .= " <a href=\"./\" title=\"Home\"><img src=\"$logo\" alt=\"Home\" /></a>"; + } + if (drupal_get_theme_setting('toggle_name')) { + $output .= " <h1 class=\"site-name title\">". l(variable_get('site_name', 'drupal'), ""). "</h1>"; + } + if (drupal_get_theme_setting('toggle_slogan')) { + $output .= " <div class=\"site-slogan\">". variable_get('site_slogan', '') ."</div>"; + } + + $output .= "</div>\n"; + + $primary_links = drupal_get_theme_setting('primary_links'); + $secondary_links = drupal_get_theme_setting('secondary_links'); + if ($primary_links || $secondary_links) { + $output .= ' <div class="navlinks">'; + if ($primary_links) { + $output .= '<div class="primary">'. $primary_links .'</div>'; + } + if ($secondary_links) { + $output .= '<div class="secondary">'. $secondary_links .'</div>'; + } + $output .= " </div>\n"; + } + + $output .= " <table>\n"; + $output .= " <tr>\n"; + + if ($blocks = theme_blocks("left")) { + $output .= " <td id=\"sidebar-left\">$blocks</td>\n"; + } + + $output .= " <td id=\"main\">\n"; + + if ($title = drupal_get_title()) { + $output .= theme("breadcrumb", drupal_get_breadcrumb()); + $output .= "<h2>$title</h2>"; + } + + if ($tabs = theme('menu_local_tasks')) { + $output .= $tabs; + } + + if ($help = menu_get_active_help()) { + $output .= "<div id=\"help\">$help</div><hr />"; + } + + $output .= theme_status_messages(); + + $output .= "\n<!-- begin content -->\n"; + $output .= $content; + $output .= "\n<!-- end content -->\n"; + + if ($footer = variable_get('site_footer', '')) { + $output .= " <div id=\"footer\">$footer</div>\n"; + } + + $output .= " </td>\n"; + + if ($blocks = theme_blocks("right")) { + $output .= " <td id=\"sidebar-right\">$blocks</td>\n"; + } + + $output .= " </tr>\n"; + $output .= " </table>\n"; + + $output .= theme_closure(); + $output .= " </body>\n"; + $output .= "</html>\n"; + + return $output; +} + +function chameleon_node($node, $main = 0, $page = 0) { + + $output = "<div class=\"node\">\n"; + + if (!$page) { + $output .= " <h2 class=\"title\">". ($main ? l($node->title, "node/$node->nid") : $node->title) ."</h2>\n"; + } + + $output .= " <div class=\"content\">\n"; + + if ($main && $node->teaser) { + $output .= $node->teaser; + } + else { + $output .= $node->body; + } + + $output .= " </div>\n"; + + $submitted = drupal_get_theme_setting("toggle_node_info_$node->type") ? array(t("By %author at %date", array('%author' => format_name($node), '%date' => format_date($node->created, 'small')))) : array(); + + if (module_exist('taxonomy')) { + $terms = taxonomy_link("taxonomy terms", $node); + } + + if ($links = link_node($node, $main)) { + $output .= " <div class=\"links\">". theme('links', array_merge($submitted, $terms, $links)) ."</div>\n"; + } + + $output .= "</div>\n"; + + return $output; +} + +function chameleon_comment($comment, $link = "") { + + $submitted = array(t('By %author at %date', array('%author' => format_name($comment), '%date' => format_date($comment->timestamp. 'small')))); + $links = array($link); + + $output = "<div class=\"comment\">\n"; + $output .= " <h3 class=\"title\">". l($comment->subject, $_GET['q'], NULL, NULL, "comment-$comment->cid") ."</h3>\n"; + $output .= " <div class=\"content\">". $comment->comment ."</div>\n"; + $output .= " <div class=\"links\">". theme('links', array_merge($submitted, $links)) ."</div>\n"; + $output .= "</div>\n"; + + return $output; +} +?> diff --git a/themes/chameleon/common.css b/themes/chameleon/common.css index 057a0c15b389f7340854f333be555bd5dff94be6..cb88e4b1d3eee36b0d142047827b362fee72ff09 100644 --- a/themes/chameleon/common.css +++ b/themes/chameleon/common.css @@ -1,147 +1,147 @@ -/* $Id$ */ - -/* -** HTML elements -*/ -a, a:link, a:active { - font-weight: bold; - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -body { - margin: 0; - padding: 3em; - font-size: .9em; - line-height: 1.3em; -} -blockquote { - font-style: italic; -} -table { - margin: 0; - padding: .5em; - border-collapse: collapse; -} -code, pre { - font-size: 1em; -} -pre { - font-size: 0.8em; - padding: 1em; - background: #eee; -} -li { - padding-bottom: .3em; -} -h1, h2, h3, h4, h5, h6 { - margin-bottom: .25em; -} -h1 { - font-size: 1.3em; -} -h2 { - font-size: 1.2em; -} -h3 { - font-size: 1.1em; -} -h4, h5, h6 { - font-size: 1em; -} -p { - margin: 0 0 .5em 0; -} -br { - line-height: 0.6em; -} - -/* -** Page layout blocks / IDs -*/ -#header { - margin-bottom: 2em; -} -#help { - font-size: 0.8em; -} -#sidebar-left, #sidebar-right { - vertical-align: top; - padding: 10px; -} -#main { - padding-left: 1em; - padding-right: 1em; - vertical-align: top; -} -#footer { - font-size: 0.8em; - padding-top: 2em; - text-align: center; -} - -/* -** Common declarations for child classes of node, comment, block, box etc -*/ -.title { - margin: 0 0 .25em 0; -} -.content { - margin: 0 0 .5em 0; -} -.links { - font-size: 0.8em; - line-height: 1.25em; -} -.block { - width: 180px; -} -.messages { - padding: 0.3em; - margin: 0.5em 0em 0.5em 0em; -} -.status { - border: 1px solid #3a3; - color: #3a3; -} -.error, form-item input.error { - border: 1px solid red; - color: red; -} - -/* -** Common navigation links added on the admin/themes/settings page -*/ -.navlinks { - padding: 0em 0.5em 1.5em 0em; -} -.primary a { - font-size: 1.0em; - padding: 0em 0.5em 0em 0em; -} -.secondary a { - font-size: 0.9em; - padding: 0em 0.5em 0em 0em; -} - -/* -** Logo Image Positioning -*/ -#header img { - float: left; - padding: 0em 2em 0em 0em; -} -#header { - clear: both; -} -/* -** Module specific styles -*/ -.form-item textarea { - font-size: 1em; -} -#aggregator .feed { - border: 1px solid gray; - padding: 1em; -} +/* $Id$ */ + +/* +** HTML elements +*/ +a, a:link, a:active { + font-weight: bold; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +body { + margin: 0; + padding: 3em; + font-size: .9em; + line-height: 1.3em; +} +blockquote { + font-style: italic; +} +table { + margin: 0; + padding: .5em; + border-collapse: collapse; +} +code, pre { + font-size: 1em; +} +pre { + font-size: 0.8em; + padding: 1em; + background: #eee; +} +li { + padding-bottom: .3em; +} +h1, h2, h3, h4, h5, h6 { + margin-bottom: .25em; +} +h1 { + font-size: 1.3em; +} +h2 { + font-size: 1.2em; +} +h3 { + font-size: 1.1em; +} +h4, h5, h6 { + font-size: 1em; +} +p { + margin: 0 0 .5em 0; +} +br { + line-height: 0.6em; +} + +/* +** Page layout blocks / IDs +*/ +#header { + margin-bottom: 2em; +} +#help { + font-size: 0.8em; +} +#sidebar-left, #sidebar-right { + vertical-align: top; + padding: 10px; +} +#main { + padding-left: 1em; + padding-right: 1em; + vertical-align: top; +} +#footer { + font-size: 0.8em; + padding-top: 2em; + text-align: center; +} + +/* +** Common declarations for child classes of node, comment, block, box etc +*/ +.title { + margin: 0 0 .25em 0; +} +.content { + margin: 0 0 .5em 0; +} +.links { + font-size: 0.8em; + line-height: 1.25em; +} +.block { + width: 180px; +} +.messages { + padding: 0.3em; + margin: 0.5em 0em 0.5em 0em; +} +.status { + border: 1px solid #3a3; + color: #3a3; +} +.error, form-item input.error { + border: 1px solid red; + color: red; +} + +/* +** Common navigation links added on the admin/themes/settings page +*/ +.navlinks { + padding: 0em 0.5em 1.5em 0em; +} +.primary a { + font-size: 1.0em; + padding: 0em 0.5em 0em 0em; +} +.secondary a { + font-size: 0.9em; + padding: 0em 0.5em 0em 0em; +} + +/* +** Logo Image Positioning +*/ +#header img { + float: left; + padding: 0em 2em 0em 0em; +} +#header { + clear: both; +} +/* +** Module specific styles +*/ +.form-item textarea { + font-size: 1em; +} +#aggregator .feed { + border: 1px solid gray; + padding: 1em; +} diff --git a/themes/chameleon/marvin/style.css b/themes/chameleon/marvin/style.css index 56587aef8e0024ef3fd60c6a98040c905055d4bf..8fa57b3b5eee78a4eb450be5fb38ec456fb3af6e 100644 --- a/themes/chameleon/marvin/style.css +++ b/themes/chameleon/marvin/style.css @@ -1,118 +1,118 @@ -/* $Id$ */ - -/* -** HTML elements -*/ -body { - background: #fff url(druplicon-watermark.png) no-repeat top right; - font-family: arial, helvetica, sans-serif; -} -a:link { - color: #656 -} -a:visited { - color: #656 -} -a:active { - color: #ccc -} -h2 { - background-color: #eaeaea; - border: solid 1px #777; - font-size: 1.1em; - margin: 0.5em 0em 0.5em 0em; - padding: 0.5em; -} -h2.title { - background-color: #fff; - border: solid 1px #888; - margin-top: 1em; -} -p { - margin: 0 1em 1em 0; - padding: 0; -} -table { - font-size: 1em; -} - -/* -** Page layout blocks / IDs -*/ -#main { - width: 80%; -} -#header .title { - padding-top: .75em; -} - -/* -** Common declarations for child classes of node, comment, block, box etc -*/ -.node .submitted { - color: #7c7c7c; - font-size: 0.9em; - float: left; - padding: 0.5em 0em 0.5em 1em; -} -.node .taxonomy { - color: #7c7c7c; - font-size: 0.9em; - float: right; -} -.node .content { - clear: both; - padding-left: 1em; -} -.node .links { - padding: 1em; -} -.comment { - border: solid 1px #777; - margin: 0.5em 0 0.5em 0; - padding: 0.5em; -} -.block { - margin-bottom: 10px; - font-size: 0.9em; -} -.block .content { - border: solid 1px #888; - border-top: none; - margin: 0; - padding: 5px; -} -.block h2.title { - margin: 0; -} - -/* -** Module specific styles -*/ -.item-list ul li { - list-style-image: url(bullet.png); -} -.calendar .day-today { - background-color: #ccc; -} -.calendar .day-selected { - background-color: #bbb; -} -.calendar .header-month { - background-color: #ddd; -} -.calendar .header-week { - background-color: #ccc; -} -.calendar .day-blank { - background-color: #ddd; -} -.calendar .day-link a { - color: #000; -} -.calendar .row-week { - color: #aaa; -} -.path, .path a, .path a:visited { - color: #888; +/* $Id$ */ + +/* +** HTML elements +*/ +body { + background: #fff url(druplicon-watermark.png) no-repeat top right; + font-family: arial, helvetica, sans-serif; +} +a:link { + color: #656 +} +a:visited { + color: #656 +} +a:active { + color: #ccc +} +h2 { + background-color: #eaeaea; + border: solid 1px #777; + font-size: 1.1em; + margin: 0.5em 0em 0.5em 0em; + padding: 0.5em; +} +h2.title { + background-color: #fff; + border: solid 1px #888; + margin-top: 1em; +} +p { + margin: 0 1em 1em 0; + padding: 0; +} +table { + font-size: 1em; +} + +/* +** Page layout blocks / IDs +*/ +#main { + width: 80%; +} +#header .title { + padding-top: .75em; +} + +/* +** Common declarations for child classes of node, comment, block, box etc +*/ +.node .submitted { + color: #7c7c7c; + font-size: 0.9em; + float: left; + padding: 0.5em 0em 0.5em 1em; +} +.node .taxonomy { + color: #7c7c7c; + font-size: 0.9em; + float: right; +} +.node .content { + clear: both; + padding-left: 1em; +} +.node .links { + padding: 1em; +} +.comment { + border: solid 1px #777; + margin: 0.5em 0 0.5em 0; + padding: 0.5em; +} +.block { + margin-bottom: 10px; + font-size: 0.9em; +} +.block .content { + border: solid 1px #888; + border-top: none; + margin: 0; + padding: 5px; +} +.block h2.title { + margin: 0; +} + +/* +** Module specific styles +*/ +.item-list ul li { + list-style-image: url(bullet.png); +} +.calendar .day-today { + background-color: #ccc; +} +.calendar .day-selected { + background-color: #bbb; +} +.calendar .header-month { + background-color: #ddd; +} +.calendar .header-week { + background-color: #ccc; +} +.calendar .day-blank { + background-color: #ddd; +} +.calendar .day-link a { + color: #000; +} +.calendar .row-week { + color: #aaa; +} +.path, .path a, .path a:visited { + color: #888; } \ No newline at end of file diff --git a/themes/chameleon/style.css b/themes/chameleon/style.css index 9f65ccc82c21a49c3d779af94734155b8d2ad6f3..594c0cef733afd8633d5fc383dc35239ea21dd67 100644 --- a/themes/chameleon/style.css +++ b/themes/chameleon/style.css @@ -1,95 +1,95 @@ -/* $Id$ */ - -/* -** HTML elements -*/ -a, a:link, a:active { - color: #930; -} -a:visited { - color: #630; -} -body { - padding: 5em 0 0 3em; - background-image: url(background.png); - background-repeat: repeat-x; - font-family: trebuchet ms, tahoma, verdana, arial, helvetica; - border-top: 10px solid gray; -} -ul { - list-style-type: disc; -} - -/* -** Page layout blocks / IDs -*/ -#main { - width: 500px; -} -#sidebar-left { - border-right: 1px solid gray; -} -#sidebar-right { - border-left: 1px solid gray; -} - -/* -** Common declarations for child classes of node, comment, block, box etc -*/ -#header .title { - font-size: 2em; - font-weight: bold; - padding-top: .75em; -} -#header .title a, -#header .title a:link, -#header .title a:visited, -#header .title a:active { - text-decoration: none; - color: #aaa; -} -#header .title a:hover { - color: #930; -} -#header .site-slogan { - margin-top: -0.1em; - font-size: 0.8em; -} -.node .title { - font-size: 1.2em; -} -.node .title a, -.node .title a:link, -.node .title a:active, -.node .title a:visited { - text-decoration: none; - font-weight: normal; -} -.node .title a:hover { - text-decoration: underline; -} -.links { - margin: 1em 0 3em 0; - text-align: right; - } -.comment .content, .block .content, .menu { - font-size: 0.9em; -} -.block { - padding-bottom: 1em; -} -.block .title { - font-size: 1em; -} - -/* -** Module specific styles -*/ -.item-list ul li { - list-style: square; -} -#aggregator .source { - color: gray; - font-style: italic; - font-size: 0.9em; -} +/* $Id$ */ + +/* +** HTML elements +*/ +a, a:link, a:active { + color: #930; +} +a:visited { + color: #630; +} +body { + padding: 5em 0 0 3em; + background-image: url(background.png); + background-repeat: repeat-x; + font-family: trebuchet ms, tahoma, verdana, arial, helvetica; + border-top: 10px solid gray; +} +ul { + list-style-type: disc; +} + +/* +** Page layout blocks / IDs +*/ +#main { + width: 500px; +} +#sidebar-left { + border-right: 1px solid gray; +} +#sidebar-right { + border-left: 1px solid gray; +} + +/* +** Common declarations for child classes of node, comment, block, box etc +*/ +#header .title { + font-size: 2em; + font-weight: bold; + padding-top: .75em; +} +#header .title a, +#header .title a:link, +#header .title a:visited, +#header .title a:active { + text-decoration: none; + color: #aaa; +} +#header .title a:hover { + color: #930; +} +#header .site-slogan { + margin-top: -0.1em; + font-size: 0.8em; +} +.node .title { + font-size: 1.2em; +} +.node .title a, +.node .title a:link, +.node .title a:active, +.node .title a:visited { + text-decoration: none; + font-weight: normal; +} +.node .title a:hover { + text-decoration: underline; +} +.links { + margin: 1em 0 3em 0; + text-align: right; + } +.comment .content, .block .content, .menu { + font-size: 0.9em; +} +.block { + padding-bottom: 1em; +} +.block .title { + font-size: 1em; +} + +/* +** Module specific styles +*/ +.item-list ul li { + list-style: square; +} +#aggregator .source { + color: gray; + font-style: italic; + font-size: 0.9em; +} diff --git a/themes/engines/xtemplate/xtemplate.engine b/themes/engines/xtemplate/xtemplate.engine index fa91aa9545d9d322b7cb3e3f68bacb9af3ba5308..02f5cfba2f801903d6b4b8a00cf89f6fc90d8a82 100644 --- a/themes/engines/xtemplate/xtemplate.engine +++ b/themes/engines/xtemplate/xtemplate.engine @@ -1,233 +1,233 @@ -<?php -// $Id$ - -// Initialize the xtemplate engine. -function xtemplate_init($template) { - // We cannot use the theme() or path_to_theme() functions here - if (!class_exists('XTemplate')) { - include_once('themes/engines/xtemplate/xtemplate.inc'); - } - $GLOBALS['xtemplate']->template = new XTemplate(basename($template->filename), dirname($template->filename)); - $GLOBALS['xtemplate']->template->SetNullBlock(' '); // '' doesnt work! -} - -function xtemplate_templates($directory) { - return file_scan_directory($directory, 'xtemplate.xtmpl$'); -} - -function xtemplate_features() { - return array( - 'logo', - 'toggle_name', - 'toggle_search', - 'toggle_slogan', - 'toggle_mission', - 'toggle_primary_links', - 'toggle_secondary_links', - 'toggle_node_user_picture', - 'toggle_comment_user_picture'); -} - -function xtemplate_node($node, $main = 0, $page = 0) { - global $xtemplate; - - $xtemplate->template->assign(array( - "submitted" => drupal_get_theme_setting("toggle_node_info_$node->type") ? - t("Submitted by %a on %b.", - array("%a" => format_name($node), - "%b" => format_date($node->created))) : '', - "link" => url("node/$node->nid"), - "title" => $node->title, - "author" => format_name($node), - "date" => format_date($node->created), - "sticky" => ($main && $node->sticky) ? 'sticky' : '', - "content" => ($main && $node->teaser) ? $node->teaser : $node->body)); - - if ($page == 0) { - $xtemplate->template->parse("node.title"); - } - - if (drupal_get_theme_setting('toggle_node_user_picture') && $picture = theme('user_picture', $node)) { - $xtemplate->template->assign("picture", $picture); - $xtemplate->template->parse("node.picture"); - } - - if (module_exist("taxonomy") && ($taxonomy = taxonomy_link("taxonomy terms", $node))) { - $xtemplate->template->assign("taxonomy", theme_links($taxonomy)); - $xtemplate->template->parse("node.taxonomy"); - } - - if ($links = link_node($node, $main)) { - $xtemplate->template->assign("links", theme_links($links)); - $xtemplate->template->parse("node.links"); - } - - $xtemplate->template->parse("node"); - $output = $xtemplate->template->text("node"); - $xtemplate->template->reset("node"); - return $output; -} - -function xtemplate_comment($comment, $links = 0) { - global $xtemplate; - - $xtemplate->template->assign(array ( - "new" => t("new"), - "submitted" => t("Submitted by %a on %b.", - array("%a" => format_name($comment), - "%b" => format_date($comment->timestamp))), - "title" => l($comment->subject, $_GET['q'], NULL, NULL, "comment-$comment->cid"), - "author" => format_name($comment), - "date" => format_date($comment->timestamp), - "content" => $comment->comment - )); - - if ($comment->new) { - $xtemplate->template->parse("comment.new"); - } - - if (drupal_get_theme_setting('toggle_comment_user_picture') && $picture = theme('user_picture', $comment)) { - $xtemplate->template->assign("picture", $picture); - $xtemplate->template->parse("comment.picture"); - } - - if ($links) { - $xtemplate->template->assign("links", $links); - $xtemplate->template->parse("comment.links"); - } - - $xtemplate->template->parse("comment"); - $output = $xtemplate->template->text("comment"); - $xtemplate->template->reset("comment"); - - return $output; -} - -function xtemplate_page($content, $title = NULL, $breadcrumb = NULL) { - if (isset($title)) { - drupal_set_title($title); - } - if (isset($breadcrumb)) { - drupal_set_breadcrumb($breadcrumb); - } - - global $xtemplate; - - $xtemplate->template->assign(array( - "head_title" => (drupal_get_title() ? drupal_get_title() ." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")), - "head" => drupal_get_html_head(), - "onload_attributes" => theme_onload_attribute(), - "primary_links" => drupal_get_theme_setting('primary_links'), - "secondary_links" => drupal_get_theme_setting('secondary_links') - )); - - if ($logo = drupal_get_theme_setting('logo')) { - $xtemplate->template->assign('logo', $logo); - $xtemplate->template->parse('header.logo'); - } - - if (drupal_get_theme_setting('toggle_name')) { - $xtemplate->template->assign('site_name', variable_get('site_name', '')); - $xtemplate->template->parse('header.site_name'); - } - - if (drupal_get_theme_setting('toggle_slogan')) { - $xtemplate->template->assign('site_slogan', variable_get('site_slogan', '')); - $xtemplate->template->parse('header.site_slogan'); - } - - if ($tabs = theme('menu_local_tasks')) { - $xtemplate->template->assign("tabs", $tabs); - $xtemplate->template->parse("header.title.tabs"); - } - - if ($title = drupal_get_title()) { - $xtemplate->template->assign("title", $title); - $xtemplate->template->assign("breadcrumb", theme("breadcrumb", drupal_get_breadcrumb())); - $xtemplate->template->parse("header.title"); - } - - if ($help = menu_get_active_help()) { - $xtemplate->template->assign("help", $help); - $xtemplate->template->parse("header.help"); - } - - if ($message = theme_status_messages()) { - $xtemplate->template->assign("message", $message); - $xtemplate->template->parse("header.message"); - } - - if (drupal_get_theme_setting('toggle_search')) { - $xtemplate->template->assign(array( - //"search" => search_form(), - "search_url" => url("search"), - "search_button_text" => t("Search"), - "search_description" => t("Enter the terms you wish to search for.") - )); - $xtemplate->template->parse("header.search_box"); - } - - // only parse the mission block if we are on the frontpage ... - if ($_GET["q"] == variable_get("site_frontpage", "node") && drupal_get_theme_setting('toggle_mission') && ($mission = drupal_get_theme_setting('mission'))) { - $xtemplate->template->assign("mission", $mission); - $xtemplate->template->parse("header.mission"); - } - - if ($blocks = theme("blocks", "left")) { - $xtemplate->template->assign("blocks", $blocks); - $xtemplate->template->parse("header.blocks"); - } - - $xtemplate->template->parse("header"); - $output = $xtemplate->template->text("header"); - - $output .= "\n<!-- begin content -->\n"; - $output .= $content; - $output .= "\n<!-- end content -->\n"; - - if ($blocks = theme("blocks", "right")) { - $xtemplate->template->assign("blocks", $blocks); - $xtemplate->template->parse("footer.blocks"); - } - - // only parse the footer block if site_footer is set - if ($footer_message = variable_get("site_footer", FALSE)) { - $xtemplate->template->assign("footer_message", $footer_message); - $xtemplate->template->parse("footer.message"); - } - - $xtemplate->template->assign("footer", theme_closure()); - $xtemplate->template->parse("footer"); - - $output .= $xtemplate->template->text("footer"); - - return $output; -} - -function xtemplate_block(&$block) { - global $xtemplate; - - // create template variables for all block variables (module, delta, region, subject, content, ...) - foreach ($block as $key => $value) { - $xtemplate->template->assign($key == "subject" ? "title" : $key, $value); // TODO: standardize on 'title' (ie. rename all $block["subject"] to "title") - } - $xtemplate->template->parse("block"); - $output = $xtemplate->template->text("block"); - $xtemplate->template->reset("block"); - return $output; -} - -function xtemplate_box($title, $content, $region = "main") { - global $xtemplate; - - $xtemplate->template->assign(array( - "title" => $title, - "content" => $content)); - - $xtemplate->template->parse("box"); - $output = $xtemplate->template->text("box"); - $xtemplate->template->reset("box"); - return $output; -} - -?> +<?php +// $Id$ + +// Initialize the xtemplate engine. +function xtemplate_init($template) { + // We cannot use the theme() or path_to_theme() functions here + if (!class_exists('XTemplate')) { + include_once('themes/engines/xtemplate/xtemplate.inc'); + } + $GLOBALS['xtemplate']->template = new XTemplate(basename($template->filename), dirname($template->filename)); + $GLOBALS['xtemplate']->template->SetNullBlock(' '); // '' doesnt work! +} + +function xtemplate_templates($directory) { + return file_scan_directory($directory, 'xtemplate.xtmpl$'); +} + +function xtemplate_features() { + return array( + 'logo', + 'toggle_name', + 'toggle_search', + 'toggle_slogan', + 'toggle_mission', + 'toggle_primary_links', + 'toggle_secondary_links', + 'toggle_node_user_picture', + 'toggle_comment_user_picture'); +} + +function xtemplate_node($node, $main = 0, $page = 0) { + global $xtemplate; + + $xtemplate->template->assign(array( + "submitted" => drupal_get_theme_setting("toggle_node_info_$node->type") ? + t("Submitted by %a on %b.", + array("%a" => format_name($node), + "%b" => format_date($node->created))) : '', + "link" => url("node/$node->nid"), + "title" => $node->title, + "author" => format_name($node), + "date" => format_date($node->created), + "sticky" => ($main && $node->sticky) ? 'sticky' : '', + "content" => ($main && $node->teaser) ? $node->teaser : $node->body)); + + if ($page == 0) { + $xtemplate->template->parse("node.title"); + } + + if (drupal_get_theme_setting('toggle_node_user_picture') && $picture = theme('user_picture', $node)) { + $xtemplate->template->assign("picture", $picture); + $xtemplate->template->parse("node.picture"); + } + + if (module_exist("taxonomy") && ($taxonomy = taxonomy_link("taxonomy terms", $node))) { + $xtemplate->template->assign("taxonomy", theme_links($taxonomy)); + $xtemplate->template->parse("node.taxonomy"); + } + + if ($links = link_node($node, $main)) { + $xtemplate->template->assign("links", theme_links($links)); + $xtemplate->template->parse("node.links"); + } + + $xtemplate->template->parse("node"); + $output = $xtemplate->template->text("node"); + $xtemplate->template->reset("node"); + return $output; +} + +function xtemplate_comment($comment, $links = 0) { + global $xtemplate; + + $xtemplate->template->assign(array ( + "new" => t("new"), + "submitted" => t("Submitted by %a on %b.", + array("%a" => format_name($comment), + "%b" => format_date($comment->timestamp))), + "title" => l($comment->subject, $_GET['q'], NULL, NULL, "comment-$comment->cid"), + "author" => format_name($comment), + "date" => format_date($comment->timestamp), + "content" => $comment->comment + )); + + if ($comment->new) { + $xtemplate->template->parse("comment.new"); + } + + if (drupal_get_theme_setting('toggle_comment_user_picture') && $picture = theme('user_picture', $comment)) { + $xtemplate->template->assign("picture", $picture); + $xtemplate->template->parse("comment.picture"); + } + + if ($links) { + $xtemplate->template->assign("links", $links); + $xtemplate->template->parse("comment.links"); + } + + $xtemplate->template->parse("comment"); + $output = $xtemplate->template->text("comment"); + $xtemplate->template->reset("comment"); + + return $output; +} + +function xtemplate_page($content, $title = NULL, $breadcrumb = NULL) { + if (isset($title)) { + drupal_set_title($title); + } + if (isset($breadcrumb)) { + drupal_set_breadcrumb($breadcrumb); + } + + global $xtemplate; + + $xtemplate->template->assign(array( + "head_title" => (drupal_get_title() ? drupal_get_title() ." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")), + "head" => drupal_get_html_head(), + "onload_attributes" => theme_onload_attribute(), + "primary_links" => drupal_get_theme_setting('primary_links'), + "secondary_links" => drupal_get_theme_setting('secondary_links') + )); + + if ($logo = drupal_get_theme_setting('logo')) { + $xtemplate->template->assign('logo', $logo); + $xtemplate->template->parse('header.logo'); + } + + if (drupal_get_theme_setting('toggle_name')) { + $xtemplate->template->assign('site_name', variable_get('site_name', '')); + $xtemplate->template->parse('header.site_name'); + } + + if (drupal_get_theme_setting('toggle_slogan')) { + $xtemplate->template->assign('site_slogan', variable_get('site_slogan', '')); + $xtemplate->template->parse('header.site_slogan'); + } + + if ($tabs = theme('menu_local_tasks')) { + $xtemplate->template->assign("tabs", $tabs); + $xtemplate->template->parse("header.title.tabs"); + } + + if ($title = drupal_get_title()) { + $xtemplate->template->assign("title", $title); + $xtemplate->template->assign("breadcrumb", theme("breadcrumb", drupal_get_breadcrumb())); + $xtemplate->template->parse("header.title"); + } + + if ($help = menu_get_active_help()) { + $xtemplate->template->assign("help", $help); + $xtemplate->template->parse("header.help"); + } + + if ($message = theme_status_messages()) { + $xtemplate->template->assign("message", $message); + $xtemplate->template->parse("header.message"); + } + + if (drupal_get_theme_setting('toggle_search')) { + $xtemplate->template->assign(array( + //"search" => search_form(), + "search_url" => url("search"), + "search_button_text" => t("Search"), + "search_description" => t("Enter the terms you wish to search for.") + )); + $xtemplate->template->parse("header.search_box"); + } + + // only parse the mission block if we are on the frontpage ... + if ($_GET["q"] == variable_get("site_frontpage", "node") && drupal_get_theme_setting('toggle_mission') && ($mission = drupal_get_theme_setting('mission'))) { + $xtemplate->template->assign("mission", $mission); + $xtemplate->template->parse("header.mission"); + } + + if ($blocks = theme("blocks", "left")) { + $xtemplate->template->assign("blocks", $blocks); + $xtemplate->template->parse("header.blocks"); + } + + $xtemplate->template->parse("header"); + $output = $xtemplate->template->text("header"); + + $output .= "\n<!-- begin content -->\n"; + $output .= $content; + $output .= "\n<!-- end content -->\n"; + + if ($blocks = theme("blocks", "right")) { + $xtemplate->template->assign("blocks", $blocks); + $xtemplate->template->parse("footer.blocks"); + } + + // only parse the footer block if site_footer is set + if ($footer_message = variable_get("site_footer", FALSE)) { + $xtemplate->template->assign("footer_message", $footer_message); + $xtemplate->template->parse("footer.message"); + } + + $xtemplate->template->assign("footer", theme_closure()); + $xtemplate->template->parse("footer"); + + $output .= $xtemplate->template->text("footer"); + + return $output; +} + +function xtemplate_block(&$block) { + global $xtemplate; + + // create template variables for all block variables (module, delta, region, subject, content, ...) + foreach ($block as $key => $value) { + $xtemplate->template->assign($key == "subject" ? "title" : $key, $value); // TODO: standardize on 'title' (ie. rename all $block["subject"] to "title") + } + $xtemplate->template->parse("block"); + $output = $xtemplate->template->text("block"); + $xtemplate->template->reset("block"); + return $output; +} + +function xtemplate_box($title, $content, $region = "main") { + global $xtemplate; + + $xtemplate->template->assign(array( + "title" => $title, + "content" => $content)); + + $xtemplate->template->parse("box"); + $output = $xtemplate->template->text("box"); + $xtemplate->template->reset("box"); + return $output; +} + +?> diff --git a/themes/engines/xtemplate/xtemplate.inc b/themes/engines/xtemplate/xtemplate.inc index 611ec2c8c99c41bf7ee00b6fc89fcfde5a9548ee..6c89be93d25c2f86cac67aae67a82dcfe585d02a 100644 --- a/themes/engines/xtemplate/xtemplate.inc +++ b/themes/engines/xtemplate/xtemplate.inc @@ -1,480 +1,480 @@ -<?php - -class XTemplate { - -/* - xtemplate class 0.3pre - html generation with templates - fast & easy - copyright (c) 2000-2001 Barnabas Debreceni [cranx@users.sourceforge.net] - - contributors: - Ivar Smolin <okul@linux.ee> (14-march-2001) - - made some code optimizations - Bert Jandehoop <bert.jandehoop@users.info.wau.nl> (26-june-2001) - - new feature to substitute template files by other templates - - new method array_loop() - - !!! {FILE {VAR}} file variable interpolation may still be buggy !!! - - latest stable & CVS versions always available @ - http://sourceforge.net/projects/xtpl/ - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - version 2.1 as published by the Free Software Foundation. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details at - http://www.gnu.org/copyleft/lgpl.html - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - $Id$ - -*/ - -/***[ variables ]***********************************************************/ - -var $filecontents=""; /* raw contents of template file */ -var $blocks=array(); /* unparsed blocks */ -var $parsed_blocks=array(); /* parsed blocks */ -var $preparsed_blocks=array(); /* preparsed blocks, for file includes */ -var $block_parse_order=array(); /* block parsing order for recursive parsing (sometimes reverse:) */ -var $sub_blocks=array(); /* store sub-block names for fast resetting */ -var $VARS=array(); /* variables array */ -var $FILEVARS=array(); /* file variables array */ -var $filevar_parent=array(); /* filevars' parent block */ -var $filecache=array(); /* file caching */ - -var $tpldir=""; /* location of template files */ -var $FILES=null; /* file names lookup table */ - -var $file_delim="/\{FILE\s*\"([^\"]+)\"\s*\}/m"; /* regexp for file includes */ -var $filevar_delim="/\{FILE\s*\{([A-Za-z0-9\._]+?)\}\s*\}/m"; /* regexp for file includes */ -var $filevar_delim_nl="/^\s*\{FILE\s*\{([A-Za-z0-9\._]+?)\}\s*\}\s*\n/m"; /* regexp for file includes w/ newlines */ -var $block_start_delim="<!-- "; /* block start delimiter */ -var $block_end_delim="-->"; /* block end delimiter */ -var $block_start_word="BEGIN:"; /* block start word */ -var $block_end_word="END:"; /* block end word */ - -/* this makes the delimiters look like: <!-- BEGIN: block_name --> if you use my syntax. */ - -var $NULL_STRING=array(""=>""); /* null string for unassigned vars */ -var $NULL_BLOCK=array(""=>""); /* null string for unassigned blocks */ -var $mainblock="main"; -var $ERROR=""; -var $AUTORESET=1; /* auto-reset sub blocks */ - -/***[ constructor ]*********************************************************/ - - -function XTemplate ($file,$tpldir="",$files=null,$mainblock="main") { - $this->tpldir = $tpldir; - if (gettype($files)=="array") - $this->FILES = $files; - $this->mainblock=$mainblock; - $this->filecontents=$this->r_getfile($file); /* read in template file */ - $this->blocks=$this->maketree($this->filecontents,""); /* preprocess some stuff */ - $this->filevar_parent=$this->store_filevar_parents($this->blocks); - $this->scan_globals(); -} - - -/***************************************************************************/ -/***[ public stuff ]********************************************************/ -/***************************************************************************/ - -/***[ assign ]**************************************************************/ -/* - assign a variable -*/ - -function assign ($name,$val="") { - if (gettype($name)=="array") - foreach ($name as $k=>$v) - $this->VARS[$k]=$v; - else - $this->VARS[$name]=$val; -} - -/***[ assign_file ]*********************************************************/ -/* - assign a file variable -*/ - -function assign_file ($name,$val="") { - if (gettype($name)=="array") - foreach ($name as $k=>$v) - $this->assign_file_($k,$v); - else - $this->assign_file_($name,$val); -} - -function assign_file_ ($name,$val) { - if (isset($this->filevar_parent[$name])) { - if ($val!="") { - $val=$this->r_getfile($val); - foreach($this->filevar_parent[$name] as $parent) { - if (isset($this->preparsed_blocks[$parent]) and !isset($this->FILEVARS[$name])) - $copy=$this->preparsed_blocks[$parent]; - else if (isset($this->blocks[$parent])) - $copy=$this->blocks[$parent]; - preg_match_all($this->filevar_delim,$copy,$res,PREG_SET_ORDER); - foreach ($res as $v) { - $copy=preg_replace("/".preg_quote($v[0])."/","$val",$copy); - $this->preparsed_blocks=array_merge($this->preparsed_blocks,$this->maketree($copy,$parent)); - $this->filevar_parent=array_merge($this->filevar_parent,$this->store_filevar_parents($this->preparsed_blocks)); - } - } - } - } - $this->FILEVARS[$name]=$val; -} - -/***[ parse ]***************************************************************/ -/* - parse a block -*/ - -function parse ($bname) { - - if (isset($this->preparsed_blocks[$bname])) { - $copy=$this->preparsed_blocks[$bname]; - } - else if (isset($this->blocks[$bname])) - $copy=$this->blocks[$bname]; - else - $this->set_error ("parse: blockname [$bname] does not exist"); - - /* from there we should have no more {FILE } directives */ - $copy=preg_replace($this->filevar_delim_nl,"",$copy); - - /* find & replace variables+blocks */ - preg_match_all("/\{([A-Za-z0-9\._]+?)}/",$copy,$var_array); - $var_array=$var_array[1]; - foreach ($var_array as $k=>$v) { - $sub=explode(".",$v); - if ($sub[0]=="_BLOCK_") { - unset($sub[0]); - $bname2=implode(".",$sub); - $var=$this->parsed_blocks[$bname2]; - $nul=(!isset($this->NULL_BLOCK[$bname2])) ? $this->NULL_BLOCK[""] : $this->NULL_BLOCK[$bname2]; - if ($var=="") { - if ($nul=="") { - $copy=preg_replace("/^\s*\{".$v."\}\s*\n*/m","",$copy); - } else { - $copy=preg_replace("/\{".$v."\}/","$nul",$copy); - } - } else { - $var=trim($var); - $copy=str_replace("\{$v}","$var",$copy); - } - } else { - $var=$this->VARS; - foreach ($sub as $v1) - $var=$var[$v1]; - $nul=(!isset($this->NULL_STRING[$v])) ? ($this->NULL_STRING[""]) : ($this->NULL_STRING[$v]); - $var=(!isset($var))?$nul:$var; - if ($var=="") - $copy=preg_replace("/^\s*\{".$v."\}\s*\n/m","",$copy); - $copy=str_replace("\{$v}","$var",$copy); - } - } - if (empty($this->parsed_blocks[$bname])) $this->parsed_blocks[$bname] = null; // eliminates incremental assign error, when using E_ALL error reporting - $this->parsed_blocks[$bname].=$copy; - - /* reset sub-blocks */ - if ($this->AUTORESET && (!empty($this->sub_blocks[$bname]))) { - reset($this->sub_blocks[$bname]); - foreach ($this->sub_blocks[$bname] as $k=>$v) - $this->reset($v); - } -} - -/***[ rparse ]**************************************************************/ -/* - returns the parsed text for a block, including all sub-blocks. -*/ - -function rparse($bname) { - if (!empty($this->sub_blocks[$bname])) { - reset($this->sub_blocks[$bname]); - foreach ($this->sub_blocks[$bname] as $k=>$v) - if (!empty($v)) - $this->rparse($v); - } - $this->parse($bname); -} - -/***[ insert_loop ]*********************************************************/ -/* - inserts a loop ( call assign & parse ) -*/ - -function insert_loop($bname,$var,$value="") { - $this->assign($var,$value); - $this->parse($bname); -} - -/***[ array_loop ]*********************************************************/ -/* - parses a block for every set of data in the values array -*/ - -function array_loop($bname, $var, &$values) -{ - if (gettype($values)=="array") - { - foreach($values as $v) - { - $this->assign($var, $v); - $this->parse($bname); - } - } -} - -/***[ text ]****************************************************************/ -/* - returns the parsed text for a block -*/ - -function text($bname) { - return $this->parsed_blocks[isset($bname) ? $bname :$this->mainblock]; -} - -/***[ out ]*****************************************************************/ -/* - prints the parsed text -*/ - -function out ($bname) { - $length=strlen($this->text($bname)); - header("Content-Length: ".$length); - echo $this->text($bname); -} - -/***[ reset ]***************************************************************/ -/* - resets the parsed text -*/ - -function reset ($bname) { - $this->parsed_blocks[$bname]=""; -} - -/***[ parsed ]**************************************************************/ -/* - returns true if block was parsed, false if not -*/ - -function parsed ($bname) { - return (!empty($this->parsed_blocks[$bname])); -} - -/***[ SetNullString ]*******************************************************/ -/* - sets the string to replace in case the var was not assigned -*/ - -function SetNullString($str,$varname="") { - $this->NULL_STRING[$varname]=$str; -} - -/***[ SetNullBlock ]********************************************************/ -/* - sets the string to replace in case the block was not parsed -*/ - -function SetNullBlock($str,$bname="") { - $this->NULL_BLOCK[$bname]=$str; -} - -/***[ set_autoreset ]*******************************************************/ -/* - sets AUTORESET to 1. (default is 1) - if set to 1, parse() automatically resets the parsed blocks' sub blocks - (for multiple level blocks) -*/ - -function set_autoreset() { - $this->AUTORESET=1; -} - -/***[ clear_autoreset ]*****************************************************/ -/* - sets AUTORESET to 0. (default is 1) - if set to 1, parse() automatically resets the parsed blocks' sub blocks - (for multiple level blocks) -*/ - -function clear_autoreset() { - $this->AUTORESET=0; -} - -/***[ scan_globals ]********************************************************/ -/* - scans global variables -*/ - -function scan_globals() { - reset($GLOBALS); - foreach ($GLOBALS as $k=>$v) - $GLOB[$k]=$v; - $this->assign("PHP",$GLOB); /* access global variables as {PHP.HTTP_HOST} in your template! */ -} - -/****** - - WARNING - PUBLIC FUNCTIONS BELOW THIS LINE DIDN'T GET TESTED - -******/ - - -/***************************************************************************/ -/***[ private stuff ]*******************************************************/ -/***************************************************************************/ - -/***[ maketree ]************************************************************/ -/* - generates the array containing to-be-parsed stuff: - $blocks["main"],$blocks["main.table"],$blocks["main.table.row"], etc. - also builds the reverse parse order. -*/ - - -function maketree($con,$parentblock="") { - $blocks=array(); - $con2=explode($this->block_start_delim,$con); - if (!empty($parentblock)) { - $block_names=explode(".",$parentblock); - $level=sizeof($block_names); - } else { - $block_names=array(); - $level=0; - } - foreach ($con2 as $k=>$v) { - $patt="($this->block_start_word|$this->block_end_word)\s*(\w+)\s*$this->block_end_delim(.*)"; - if (preg_match_all("/$patt/ims",$v,$res,PREG_SET_ORDER)) { - // $res[0][1] = BEGIN or END - // $res[0][2] = block name - // $res[0][3] = kinda content - if ($res[0][1]==$this->block_start_word) { - $parent_name=implode(".",$block_names); - $block_names[++$level]=$res[0][2]; /* add one level - array("main","table","row")*/ - $cur_block_name=implode(".",$block_names); /* make block name (main.table.row) */ - $this->block_parse_order[]=$cur_block_name; /* build block parsing order (reverse) */ - if (empty($blocks[$cur_block_name])) $blocks[$cur_block_name] = null; // eliminates incremental assign error, when using E_ALL error reporting - $blocks[$cur_block_name].=$res[0][3]; /* add contents */ - $blocks[$parent_name].="{_BLOCK_.$cur_block_name}"; /* add {_BLOCK_.blockname} string to parent block */ - $this->sub_blocks[$parent_name][]=$cur_block_name; /* store sub block names for autoresetting and recursive parsing */ - $this->sub_blocks[$cur_block_name][]=""; /* store sub block names for autoresetting */ - } else if ($res[0][1]==$this->block_end_word) { - unset($block_names[$level--]); - $parent_name=implode(".",$block_names); - $blocks[$parent_name].=$res[0][3]; /* add rest of block to parent block */ - } - } else { /* no block delimiters found */ - if ($k) - $blocks[implode(".",$block_names)].=$this->block_start_delim; - if (empty($blocks[implode(".",$block_names)])) $blocks[implode(".",$block_names)] = null; // eliminates incremental assign error, when using E_ALL error reporting - $blocks[implode(".",$block_names)].=$v; - } - } - return $blocks; -} - -/***[ store_filevar_parents ]***********************************************/ -/* - store container block's name for file variables -*/ - -function store_filevar_parents($blocks){ - $parents=array(); - foreach ($blocks as $bname=>$con) { - preg_match_all($this->filevar_delim,$con,$res); - foreach ($res[1] as $k=>$v) - $parents[$v][]=$bname; - } - return $parents; -} - -/***[ error stuff ]*********************************************************/ -/* - sets and gets error -*/ - -function get_error() { - return ($this->ERROR=="")?0:$this->ERROR; -} - - -function set_error($str) { - $this->ERROR="<strong>[XTemplate]</strong> <i>".$str."</i>"; - trigger_error($this->get_error()); -} - -/***[ getfile ]*************************************************************/ -/* - returns the contents of a file -*/ - -function getfile($file) { - if (!isset($file)) { - $this->set_error("!isset file name!"); - return ""; - } - - // check if filename is mapped to other filename - if (isset($this->FILES)) - { - if (isset($this->FILES[$file])) - $file = $this->FILES[$file]; - } - // prepend template dir - if (!empty($this->tpldir)) - $file = $this->tpldir."/".$file; - - if (isset($this->filecache[$file])) - $file_text=$this->filecache[$file]; - else { - if (is_file($file)) { - if (!($fh=fopen($file,"r"))) { - $this->set_error("Cannot open file: $file"); - return ""; - } - - $file_text=fread($fh,filesize($file)); - fclose($fh); - } else { - $this->set_error("[$file] does not exist"); - $file_text="<strong>__XTemplate fatal error: file [$file] does not exist__</strong>"; - } - $this->filecache[$file]=$file_text; - } - return $file_text; -} - -/***[ r_getfile ]***********************************************************/ -/* - recursively gets the content of a file with {FILE "filename.tpl"} directives -*/ - - -function r_getfile($file) { - $text=$this->getfile($file); - while (preg_match($this->file_delim,$text,$res)) { - $text2=$this->getfile($res[1]); - $text=preg_replace("'".preg_quote($res[0])."'",$text2,$text); - } - - return $text; -} - - -} /* end of XTemplate class. */ -?> +<?php + +class XTemplate { + +/* + xtemplate class 0.3pre + html generation with templates - fast & easy + copyright (c) 2000-2001 Barnabas Debreceni [cranx@users.sourceforge.net] + + contributors: + Ivar Smolin <okul@linux.ee> (14-march-2001) + - made some code optimizations + Bert Jandehoop <bert.jandehoop@users.info.wau.nl> (26-june-2001) + - new feature to substitute template files by other templates + - new method array_loop() + + !!! {FILE {VAR}} file variable interpolation may still be buggy !!! + + latest stable & CVS versions always available @ + http://sourceforge.net/projects/xtpl/ + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details at + http://www.gnu.org/copyleft/lgpl.html + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + $Id$ + +*/ + +/***[ variables ]***********************************************************/ + +var $filecontents=""; /* raw contents of template file */ +var $blocks=array(); /* unparsed blocks */ +var $parsed_blocks=array(); /* parsed blocks */ +var $preparsed_blocks=array(); /* preparsed blocks, for file includes */ +var $block_parse_order=array(); /* block parsing order for recursive parsing (sometimes reverse:) */ +var $sub_blocks=array(); /* store sub-block names for fast resetting */ +var $VARS=array(); /* variables array */ +var $FILEVARS=array(); /* file variables array */ +var $filevar_parent=array(); /* filevars' parent block */ +var $filecache=array(); /* file caching */ + +var $tpldir=""; /* location of template files */ +var $FILES=null; /* file names lookup table */ + +var $file_delim="/\{FILE\s*\"([^\"]+)\"\s*\}/m"; /* regexp for file includes */ +var $filevar_delim="/\{FILE\s*\{([A-Za-z0-9\._]+?)\}\s*\}/m"; /* regexp for file includes */ +var $filevar_delim_nl="/^\s*\{FILE\s*\{([A-Za-z0-9\._]+?)\}\s*\}\s*\n/m"; /* regexp for file includes w/ newlines */ +var $block_start_delim="<!-- "; /* block start delimiter */ +var $block_end_delim="-->"; /* block end delimiter */ +var $block_start_word="BEGIN:"; /* block start word */ +var $block_end_word="END:"; /* block end word */ + +/* this makes the delimiters look like: <!-- BEGIN: block_name --> if you use my syntax. */ + +var $NULL_STRING=array(""=>""); /* null string for unassigned vars */ +var $NULL_BLOCK=array(""=>""); /* null string for unassigned blocks */ +var $mainblock="main"; +var $ERROR=""; +var $AUTORESET=1; /* auto-reset sub blocks */ + +/***[ constructor ]*********************************************************/ + + +function XTemplate ($file,$tpldir="",$files=null,$mainblock="main") { + $this->tpldir = $tpldir; + if (gettype($files)=="array") + $this->FILES = $files; + $this->mainblock=$mainblock; + $this->filecontents=$this->r_getfile($file); /* read in template file */ + $this->blocks=$this->maketree($this->filecontents,""); /* preprocess some stuff */ + $this->filevar_parent=$this->store_filevar_parents($this->blocks); + $this->scan_globals(); +} + + +/***************************************************************************/ +/***[ public stuff ]********************************************************/ +/***************************************************************************/ + +/***[ assign ]**************************************************************/ +/* + assign a variable +*/ + +function assign ($name,$val="") { + if (gettype($name)=="array") + foreach ($name as $k=>$v) + $this->VARS[$k]=$v; + else + $this->VARS[$name]=$val; +} + +/***[ assign_file ]*********************************************************/ +/* + assign a file variable +*/ + +function assign_file ($name,$val="") { + if (gettype($name)=="array") + foreach ($name as $k=>$v) + $this->assign_file_($k,$v); + else + $this->assign_file_($name,$val); +} + +function assign_file_ ($name,$val) { + if (isset($this->filevar_parent[$name])) { + if ($val!="") { + $val=$this->r_getfile($val); + foreach($this->filevar_parent[$name] as $parent) { + if (isset($this->preparsed_blocks[$parent]) and !isset($this->FILEVARS[$name])) + $copy=$this->preparsed_blocks[$parent]; + else if (isset($this->blocks[$parent])) + $copy=$this->blocks[$parent]; + preg_match_all($this->filevar_delim,$copy,$res,PREG_SET_ORDER); + foreach ($res as $v) { + $copy=preg_replace("/".preg_quote($v[0])."/","$val",$copy); + $this->preparsed_blocks=array_merge($this->preparsed_blocks,$this->maketree($copy,$parent)); + $this->filevar_parent=array_merge($this->filevar_parent,$this->store_filevar_parents($this->preparsed_blocks)); + } + } + } + } + $this->FILEVARS[$name]=$val; +} + +/***[ parse ]***************************************************************/ +/* + parse a block +*/ + +function parse ($bname) { + + if (isset($this->preparsed_blocks[$bname])) { + $copy=$this->preparsed_blocks[$bname]; + } + else if (isset($this->blocks[$bname])) + $copy=$this->blocks[$bname]; + else + $this->set_error ("parse: blockname [$bname] does not exist"); + + /* from there we should have no more {FILE } directives */ + $copy=preg_replace($this->filevar_delim_nl,"",$copy); + + /* find & replace variables+blocks */ + preg_match_all("/\{([A-Za-z0-9\._]+?)}/",$copy,$var_array); + $var_array=$var_array[1]; + foreach ($var_array as $k=>$v) { + $sub=explode(".",$v); + if ($sub[0]=="_BLOCK_") { + unset($sub[0]); + $bname2=implode(".",$sub); + $var=$this->parsed_blocks[$bname2]; + $nul=(!isset($this->NULL_BLOCK[$bname2])) ? $this->NULL_BLOCK[""] : $this->NULL_BLOCK[$bname2]; + if ($var=="") { + if ($nul=="") { + $copy=preg_replace("/^\s*\{".$v."\}\s*\n*/m","",$copy); + } else { + $copy=preg_replace("/\{".$v."\}/","$nul",$copy); + } + } else { + $var=trim($var); + $copy=str_replace("\{$v}","$var",$copy); + } + } else { + $var=$this->VARS; + foreach ($sub as $v1) + $var=$var[$v1]; + $nul=(!isset($this->NULL_STRING[$v])) ? ($this->NULL_STRING[""]) : ($this->NULL_STRING[$v]); + $var=(!isset($var))?$nul:$var; + if ($var=="") + $copy=preg_replace("/^\s*\{".$v."\}\s*\n/m","",$copy); + $copy=str_replace("\{$v}","$var",$copy); + } + } + if (empty($this->parsed_blocks[$bname])) $this->parsed_blocks[$bname] = null; // eliminates incremental assign error, when using E_ALL error reporting + $this->parsed_blocks[$bname].=$copy; + + /* reset sub-blocks */ + if ($this->AUTORESET && (!empty($this->sub_blocks[$bname]))) { + reset($this->sub_blocks[$bname]); + foreach ($this->sub_blocks[$bname] as $k=>$v) + $this->reset($v); + } +} + +/***[ rparse ]**************************************************************/ +/* + returns the parsed text for a block, including all sub-blocks. +*/ + +function rparse($bname) { + if (!empty($this->sub_blocks[$bname])) { + reset($this->sub_blocks[$bname]); + foreach ($this->sub_blocks[$bname] as $k=>$v) + if (!empty($v)) + $this->rparse($v); + } + $this->parse($bname); +} + +/***[ insert_loop ]*********************************************************/ +/* + inserts a loop ( call assign & parse ) +*/ + +function insert_loop($bname,$var,$value="") { + $this->assign($var,$value); + $this->parse($bname); +} + +/***[ array_loop ]*********************************************************/ +/* + parses a block for every set of data in the values array +*/ + +function array_loop($bname, $var, &$values) +{ + if (gettype($values)=="array") + { + foreach($values as $v) + { + $this->assign($var, $v); + $this->parse($bname); + } + } +} + +/***[ text ]****************************************************************/ +/* + returns the parsed text for a block +*/ + +function text($bname) { + return $this->parsed_blocks[isset($bname) ? $bname :$this->mainblock]; +} + +/***[ out ]*****************************************************************/ +/* + prints the parsed text +*/ + +function out ($bname) { + $length=strlen($this->text($bname)); + header("Content-Length: ".$length); + echo $this->text($bname); +} + +/***[ reset ]***************************************************************/ +/* + resets the parsed text +*/ + +function reset ($bname) { + $this->parsed_blocks[$bname]=""; +} + +/***[ parsed ]**************************************************************/ +/* + returns true if block was parsed, false if not +*/ + +function parsed ($bname) { + return (!empty($this->parsed_blocks[$bname])); +} + +/***[ SetNullString ]*******************************************************/ +/* + sets the string to replace in case the var was not assigned +*/ + +function SetNullString($str,$varname="") { + $this->NULL_STRING[$varname]=$str; +} + +/***[ SetNullBlock ]********************************************************/ +/* + sets the string to replace in case the block was not parsed +*/ + +function SetNullBlock($str,$bname="") { + $this->NULL_BLOCK[$bname]=$str; +} + +/***[ set_autoreset ]*******************************************************/ +/* + sets AUTORESET to 1. (default is 1) + if set to 1, parse() automatically resets the parsed blocks' sub blocks + (for multiple level blocks) +*/ + +function set_autoreset() { + $this->AUTORESET=1; +} + +/***[ clear_autoreset ]*****************************************************/ +/* + sets AUTORESET to 0. (default is 1) + if set to 1, parse() automatically resets the parsed blocks' sub blocks + (for multiple level blocks) +*/ + +function clear_autoreset() { + $this->AUTORESET=0; +} + +/***[ scan_globals ]********************************************************/ +/* + scans global variables +*/ + +function scan_globals() { + reset($GLOBALS); + foreach ($GLOBALS as $k=>$v) + $GLOB[$k]=$v; + $this->assign("PHP",$GLOB); /* access global variables as {PHP.HTTP_HOST} in your template! */ +} + +/****** + + WARNING + PUBLIC FUNCTIONS BELOW THIS LINE DIDN'T GET TESTED + +******/ + + +/***************************************************************************/ +/***[ private stuff ]*******************************************************/ +/***************************************************************************/ + +/***[ maketree ]************************************************************/ +/* + generates the array containing to-be-parsed stuff: + $blocks["main"],$blocks["main.table"],$blocks["main.table.row"], etc. + also builds the reverse parse order. +*/ + + +function maketree($con,$parentblock="") { + $blocks=array(); + $con2=explode($this->block_start_delim,$con); + if (!empty($parentblock)) { + $block_names=explode(".",$parentblock); + $level=sizeof($block_names); + } else { + $block_names=array(); + $level=0; + } + foreach ($con2 as $k=>$v) { + $patt="($this->block_start_word|$this->block_end_word)\s*(\w+)\s*$this->block_end_delim(.*)"; + if (preg_match_all("/$patt/ims",$v,$res,PREG_SET_ORDER)) { + // $res[0][1] = BEGIN or END + // $res[0][2] = block name + // $res[0][3] = kinda content + if ($res[0][1]==$this->block_start_word) { + $parent_name=implode(".",$block_names); + $block_names[++$level]=$res[0][2]; /* add one level - array("main","table","row")*/ + $cur_block_name=implode(".",$block_names); /* make block name (main.table.row) */ + $this->block_parse_order[]=$cur_block_name; /* build block parsing order (reverse) */ + if (empty($blocks[$cur_block_name])) $blocks[$cur_block_name] = null; // eliminates incremental assign error, when using E_ALL error reporting + $blocks[$cur_block_name].=$res[0][3]; /* add contents */ + $blocks[$parent_name].="{_BLOCK_.$cur_block_name}"; /* add {_BLOCK_.blockname} string to parent block */ + $this->sub_blocks[$parent_name][]=$cur_block_name; /* store sub block names for autoresetting and recursive parsing */ + $this->sub_blocks[$cur_block_name][]=""; /* store sub block names for autoresetting */ + } else if ($res[0][1]==$this->block_end_word) { + unset($block_names[$level--]); + $parent_name=implode(".",$block_names); + $blocks[$parent_name].=$res[0][3]; /* add rest of block to parent block */ + } + } else { /* no block delimiters found */ + if ($k) + $blocks[implode(".",$block_names)].=$this->block_start_delim; + if (empty($blocks[implode(".",$block_names)])) $blocks[implode(".",$block_names)] = null; // eliminates incremental assign error, when using E_ALL error reporting + $blocks[implode(".",$block_names)].=$v; + } + } + return $blocks; +} + +/***[ store_filevar_parents ]***********************************************/ +/* + store container block's name for file variables +*/ + +function store_filevar_parents($blocks){ + $parents=array(); + foreach ($blocks as $bname=>$con) { + preg_match_all($this->filevar_delim,$con,$res); + foreach ($res[1] as $k=>$v) + $parents[$v][]=$bname; + } + return $parents; +} + +/***[ error stuff ]*********************************************************/ +/* + sets and gets error +*/ + +function get_error() { + return ($this->ERROR=="")?0:$this->ERROR; +} + + +function set_error($str) { + $this->ERROR="<strong>[XTemplate]</strong> <i>".$str."</i>"; + trigger_error($this->get_error()); +} + +/***[ getfile ]*************************************************************/ +/* + returns the contents of a file +*/ + +function getfile($file) { + if (!isset($file)) { + $this->set_error("!isset file name!"); + return ""; + } + + // check if filename is mapped to other filename + if (isset($this->FILES)) + { + if (isset($this->FILES[$file])) + $file = $this->FILES[$file]; + } + // prepend template dir + if (!empty($this->tpldir)) + $file = $this->tpldir."/".$file; + + if (isset($this->filecache[$file])) + $file_text=$this->filecache[$file]; + else { + if (is_file($file)) { + if (!($fh=fopen($file,"r"))) { + $this->set_error("Cannot open file: $file"); + return ""; + } + + $file_text=fread($fh,filesize($file)); + fclose($fh); + } else { + $this->set_error("[$file] does not exist"); + $file_text="<strong>__XTemplate fatal error: file [$file] does not exist__</strong>"; + } + $this->filecache[$file]=$file_text; + } + return $file_text; +} + +/***[ r_getfile ]***********************************************************/ +/* + recursively gets the content of a file with {FILE "filename.tpl"} directives +*/ + + +function r_getfile($file) { + $text=$this->getfile($file); + while (preg_match($this->file_delim,$text,$res)) { + $text2=$this->getfile($res[1]); + $text=preg_replace("'".preg_quote($res[0])."'",$text2,$text); + } + + return $text; +} + + +} /* end of XTemplate class. */ +?> diff --git a/themes/pushbutton/style.css b/themes/pushbutton/style.css index 8888443fa6a80c094991cda4d680027e4ae15539..fe9ffcb013e177d4c02bf91c5e1a3da435da3247 100644 --- a/themes/pushbutton/style.css +++ b/themes/pushbutton/style.css @@ -1,539 +1,539 @@ -/* $Id$ */ - -/* -** HTML elements -*/ -body { - color: #000; - background-color: #fff; - margin: 0; - padding: 0; -} -body, p, td, li, ul, ol { - font-family: Verdana, Helvetica, Arial, sans-serif; -} -h1, h2, h3, h4, h5, h6 { - font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif; - margin: 0; -} -h1 { - color: #369; - font-size: 1.6em; -} -img { - display: block; - border: 0; -} -tr.dark td, tr.light td { - padding: 0.3em; -} -a:link { - text-decoration: none; - font-weight: bold; - color: #ff8c00; -} -a:visited { - text-decoration: none; - font-weight: bold; - color: #c96; -} -a:hover, a:active { - font-weight: bold; - color: #ff4500; - text-decoration: underline; -} -fieldset { - border: 1px solid #ccc; -} -p { - margin: 0 0 1.3em 0; - padding: 0; -} -blockquote { - border-left: 4px solid #69c; - padding: 0 15px 0 15px; - margin: 25px 100px 25px 50px; - color: #696969; - text-align: left; - font-size: 1.2em; - line-height: 1.3em; - font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif; -} -pre { - background-color: #eee; - padding: 0.75em 1.5em; - font-size: 1.2em; - border: 1px solid #ddd; -} -.form-item { - margin-top: 1em; -} -.form-item label { - color: #369; -} -.item-list .title { - color: #369; - font-size: 0.85em; -} - -/* -** Page layout blocks / IDs -*/ -#primary-menu { - background-color: #e0edfb; -} -#primary-menu tr { - background: transparent url(header-a.jpg) left bottom repeat; -} -td#home { - background: transparent url(logo-background.jpg) left top repeat; -} -td#home a:link img, td#home a:visited img { - background: transparent url(logo-active.jpg) repeat; - width: 144px; - height: 63px; -} -td#home a:hover img { - background: transparent url(logo-hover.jpg) repeat; - width: 144px; - height: 63px; -} -.primary-links, .primary-links a:link, .primary-links a:visited { - color: #369; -} -.primary-links a:hover { - color: #000; -} -#primary-menu .primary-links { - background: transparent url(header-b.jpg) left top no-repeat; - font-size: 0.79em; -} -#primary-menu .primary-links h1, #primary-menu .primary-links h2, #primary-menu .primary-links h3 { - font-size: 2.3em; - color: #369; -} -#secondary-menu { - background-color: #369; - border-top: 3px solid #69c; - border-bottom: 3px solid #69c; -} -.secondary-links, .secondary-links a:link, .secondary-links a:visited { - color: #e4e9eb; -} -.secondary-links a:hover { - color: #fff; - text-decoration: underline; -} -#secondary-menu .secondary-links { - font-size: 0.85em; -} -#content { - background-color: #fff; -} -#contentstart { - background-color: #fff; -} -#menu { - padding: 0.5em 0.5em 0 0.5em; - text-align: right; - vertical-align: middle; -} -#search .form-text, #search .form-submit { - border: 1px solid #369; - font-size: 0.85em; -} -#search .form-text { - width: 8em; - height: 1.4em; - padding: 0 0.5em 0 0.5em; - margin: 0 0 0.5em 0; -} -#search .form-submit { - height: 1.5em; -} -#mission { - background-color: #fff; - color: #696969; - border-top: 2px solid #dcdcdc; - border-bottom: 2px solid #dcdcdc; - padding: 10px 10px 10px 10px; - margin: 20px 35px 0px 35px; - font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif; - font-size: 1.1em; - font-weight: normal; -} -#site-info { - background-color: #bdd3ea; - background-image: none; - font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif; -} -.site-name { - font-size: 1.2em; -} -.site-name a:link, .site-name a:visited { - color: #fff; -} -.site-name a:hover { - color: #ff8c00; - text-decoration: none; -} -.site-slogan { - font-size: 0.8em; - font-weight: bold; -} -#main { - /* padding in px not ex because IE messes up 100% width tables otherwise */ - padding: 30px 35px 50px 35px; - background: transparent url(background.png) center center no-repeat; -} -#mission, .node .content, .comment .content { - line-height: 1.4; -} -#help { - font-size: 0.9em; - margin-bottom: 1em; -} -.breadcrumb { - margin-bottom: .5em; -} -.messages { - background-color: #eee; - border: 1px solid #ccc; - padding: 0.3em; - margin-bottom: 1em; -} -.error { - border-color: red; -} -.nav { - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; -} -#sidebar-left, #sidebar-right { - font-size: 0.75em; - width: 175px; - /* padding in px not ex because IE messes up 100% width tables otherwise */ - padding: 25px 10px 75px 10px; - vertical-align: top; - background: #FFFAF0; -} -#sidebar-left { - border-right: 3px solid #f5f5f5; -} -#sidebar-right { - border-left: 3px solid #f5f5f5; -} -#sidebar-left li, #sidebar-right li { - font-size: 1em; -} -.node .content { - text-align: left; - font-size: 0.85em; - line-height: 1.3; -} -.comment .content { - text-align: left; - font-size: 0.85em; - line-height: 1.3; -} -#footer-message { - padding: 15px 100px 30px 100px; - font-size: 0.85em; - text-align: center; - color: #aaa; -} -table#footer-menu { - border-top: 3px solid #6699cc; - border-bottom: 3px solid #6699cc; - background-color: #369; - color: #e4e9eb; -} -#footer-menu td { - padding: 5px; - font-size: 0.75em; -} -#footer-menu .primary-links, #footer-menu a:link, #footer-menu a:visited { - color: #e4e9eb; -} -#footer-menu a:hover { - color: #fff; - text-decoration: underline; -} -#footer-menu .primary-links h1, #footer-menu .primary-links h2, #footer-menu .primary-links h3 { - font-size: 1.3em; - color: #e4e9eb; -} -/* -** Common declarations for child classes of node, comment, block, box, etc. -** If you want any of them styled differently for a specific parent, add -** additional rules /with only the differing properties!/ to .parent .class. -** See .comment .title for an example. -*/ -#content .title, #content .title a { - color: #369; -} -.content h1 { - color: #369; - font-size: 1.9em; -} -.content h2 { - color: #58b; - font-size: 1.7em; -} -.content h3 { - color: #69c; - font-size: 1.5em; -} -.content h4 { - color: #8be; - font-size: 1.3em; -} -.content h5 { - color: #96c6f6; - font-size: 1.15em; -} -.submitted { - color: #999; - font-size: 0.79em; -} -.links { - color: #ff8c00; - font-size: 0.8em; - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; -} -.links a { - font-weight: bold; -} -.box { - padding: 0 0 1.5em 0; -} -.box { - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; -} -.box h2 { - font-size: 9px; -} -.block .title h3 { - border-bottom: 2px solid #6699cc; - color: #369; - font-size: 18px; - font-weight: bold; - padding: 10px 5px 10px 30px; - margin-bottom: .25em; - background: transparent url(icon-block.png) left center no-repeat; -} -.block .content { - padding: 5px 5px 5px 5px; -} -.block { - margin-bottom: 1.5em; -} -.box .title { - font-size: 1.1em; -} -.node { - margin: .5em 0 2.5em 0; -} -.node .content, .comment .content { - margin: .5em 0 .5em 0; -} -.node .taxonomy { - color: #999; - font-size: 0.83em; - padding: 1.5em; -} -.node .picture { - border: 1px solid #fff; - float: right; - margin: 0.5em; -} -.comment { - border: 1px solid #abc; - padding: .5em; - margin-bottom: 1em; -} -.comment .title { - font-size: 1em; - padding: 10px 0px 12px 19px; - background: transparent url(icon-comment.png) left center no-repeat; -} -.comment .new { - font-weight: bold; - font-size: 1em; - margin-left: 2px; - color: red; -} -.comment .picture { - border: 1px solid #fff; - float: right; - margin: 10px; -} -.links { - font-size: 0.75em; -} -.links .prev, .links .next, .links .up { - font-size: 1.15em; -} -.titles .prev, .titles .next { - font-size: 0.85em; - font-weight: bold; - color: #444; -} -.hide { - display: none -} -.nav .links .next a:link { - padding: 15px 15px 17px 0; - background: transparent url(arrow-next.png) right center no-repeat; -} -.nav .links .next a:hover { - padding: 15px 15px 17px 0; - background: transparent url(arrow-next-hover.png) right center no-repeat; -} -.nav .links .prev a:link { - padding: 15px 0 17px 15px; - background: transparent url(arrow-prev.png) left center no-repeat; -} -.nav .links .prev a:hover { - padding: 15px 0 17px 15px; - background: transparent url(arrow-prev-hover.png) left center no-repeat; -} -.nav .links .up a:link { - padding: 11px 0 15px 0; - background: transparent url(arrow-up.png) center top no-repeat; -} -.nav .links .up a:hover { - padding: 11px 0 15px 0; - background: transparent url(arrow-up-hover.png) center top no-repeat; -} - -/* -** Module specific styles -*/ -.content .active { - color: #369; -} -#aggregator .feed { - background-color: #eee; - border: 1px solid #ccc; - padding: 1em; - margin: 1em 0 1em 0; -} -#aggregator .news-item .source { - color: #999; - font-style: italic; - font-size: 0.85em; -} -#aggregator .title { - font-size: 1em; -} -#aggregator h3 { - margin-top: 1em; -} -#tracker th { - text-align: center; - background-color: #f5f5f5; - border-bottom: 1px solid #ddd; - border-right: 1px solid #ddd; - border-left: 1px solid #fafafa; -} -#tracker th img { - float: right; -} -#tracker tr.light, #tracker tr.dark { - background-color: #fff; -} -#tracker td { - vertical-align: top; - padding: 1em 1em 1em 0; - border-bottom: 1px solid #bbb; -} -#forum { - margin: 15px 0 15px 0; - background-color: #fff; -} -#forum table { - width: 100%; - border: 2px solid #69c; -} -#forum table tr th { - text-align: center; - background: #69c; - color: #fff; - font-size: 0.75em; - border-bottom: 1px solid #aaa; -} -#forum table tr th a { - color: #fff; - text-decoration: underline; -} -#forum table tr th img { - margin: 0; -} -#forum tr.dark { - background: #e0edfb; -} -#forum tr.light { - background: #fff; -} -#forum td { - padding: 0.5em 0.5em 0.5em 0.5em; -} -#forum td.container { - color: #000; - background: #369 url(forum-container.jpg) right top no-repeat; - border: 2px solid #69c; -} -#forum td.container a { - color: #e4e9eb; - padding: 20px 0 20px 35px; - background: transparent url(forum-link.png) left center no-repeat; -} -#forum td.container a:visited { - color: #e4e9eb; -} -#forum td.statistics, #forum td.settings, #forum td.pager { - height: 1.5em; - border: 1px solid #bbb; -} -#forum td .name { - color: #96c; -} -#forum td .links { - padding-top: 0.7em; - font-size: 0.9em; -} -.block-forum h3 { - margin-bottom: .5em; -} -.calendar a { - text-decoration: none; -} -.calendar td, .calendar th { - padding: 0.4em 0; - border-color: #888; -} -.calendar .row-week td a { - padding: 0.4em 0; -} -.calendar .day-today { - background-color: #69c; -} -.calendar .day-today a { - color: #fff; -} -.calendar .day-selected { - background-color: #369; - color: #fff; -} -.calendar .header-week { - background-color: #ccc; -} -.calendar .day-blank { - background-color: #ccc; -} -.calendar .row-week td a:hover { - background-color: #fff; color: #000; -} +/* $Id$ */ + +/* +** HTML elements +*/ +body { + color: #000; + background-color: #fff; + margin: 0; + padding: 0; +} +body, p, td, li, ul, ol { + font-family: Verdana, Helvetica, Arial, sans-serif; +} +h1, h2, h3, h4, h5, h6 { + font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif; + margin: 0; +} +h1 { + color: #369; + font-size: 1.6em; +} +img { + display: block; + border: 0; +} +tr.dark td, tr.light td { + padding: 0.3em; +} +a:link { + text-decoration: none; + font-weight: bold; + color: #ff8c00; +} +a:visited { + text-decoration: none; + font-weight: bold; + color: #c96; +} +a:hover, a:active { + font-weight: bold; + color: #ff4500; + text-decoration: underline; +} +fieldset { + border: 1px solid #ccc; +} +p { + margin: 0 0 1.3em 0; + padding: 0; +} +blockquote { + border-left: 4px solid #69c; + padding: 0 15px 0 15px; + margin: 25px 100px 25px 50px; + color: #696969; + text-align: left; + font-size: 1.2em; + line-height: 1.3em; + font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif; +} +pre { + background-color: #eee; + padding: 0.75em 1.5em; + font-size: 1.2em; + border: 1px solid #ddd; +} +.form-item { + margin-top: 1em; +} +.form-item label { + color: #369; +} +.item-list .title { + color: #369; + font-size: 0.85em; +} + +/* +** Page layout blocks / IDs +*/ +#primary-menu { + background-color: #e0edfb; +} +#primary-menu tr { + background: transparent url(header-a.jpg) left bottom repeat; +} +td#home { + background: transparent url(logo-background.jpg) left top repeat; +} +td#home a:link img, td#home a:visited img { + background: transparent url(logo-active.jpg) repeat; + width: 144px; + height: 63px; +} +td#home a:hover img { + background: transparent url(logo-hover.jpg) repeat; + width: 144px; + height: 63px; +} +.primary-links, .primary-links a:link, .primary-links a:visited { + color: #369; +} +.primary-links a:hover { + color: #000; +} +#primary-menu .primary-links { + background: transparent url(header-b.jpg) left top no-repeat; + font-size: 0.79em; +} +#primary-menu .primary-links h1, #primary-menu .primary-links h2, #primary-menu .primary-links h3 { + font-size: 2.3em; + color: #369; +} +#secondary-menu { + background-color: #369; + border-top: 3px solid #69c; + border-bottom: 3px solid #69c; +} +.secondary-links, .secondary-links a:link, .secondary-links a:visited { + color: #e4e9eb; +} +.secondary-links a:hover { + color: #fff; + text-decoration: underline; +} +#secondary-menu .secondary-links { + font-size: 0.85em; +} +#content { + background-color: #fff; +} +#contentstart { + background-color: #fff; +} +#menu { + padding: 0.5em 0.5em 0 0.5em; + text-align: right; + vertical-align: middle; +} +#search .form-text, #search .form-submit { + border: 1px solid #369; + font-size: 0.85em; +} +#search .form-text { + width: 8em; + height: 1.4em; + padding: 0 0.5em 0 0.5em; + margin: 0 0 0.5em 0; +} +#search .form-submit { + height: 1.5em; +} +#mission { + background-color: #fff; + color: #696969; + border-top: 2px solid #dcdcdc; + border-bottom: 2px solid #dcdcdc; + padding: 10px 10px 10px 10px; + margin: 20px 35px 0px 35px; + font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif; + font-size: 1.1em; + font-weight: normal; +} +#site-info { + background-color: #bdd3ea; + background-image: none; + font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif; +} +.site-name { + font-size: 1.2em; +} +.site-name a:link, .site-name a:visited { + color: #fff; +} +.site-name a:hover { + color: #ff8c00; + text-decoration: none; +} +.site-slogan { + font-size: 0.8em; + font-weight: bold; +} +#main { + /* padding in px not ex because IE messes up 100% width tables otherwise */ + padding: 30px 35px 50px 35px; + background: transparent url(background.png) center center no-repeat; +} +#mission, .node .content, .comment .content { + line-height: 1.4; +} +#help { + font-size: 0.9em; + margin-bottom: 1em; +} +.breadcrumb { + margin-bottom: .5em; +} +.messages { + background-color: #eee; + border: 1px solid #ccc; + padding: 0.3em; + margin-bottom: 1em; +} +.error { + border-color: red; +} +.nav { + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; +} +#sidebar-left, #sidebar-right { + font-size: 0.75em; + width: 175px; + /* padding in px not ex because IE messes up 100% width tables otherwise */ + padding: 25px 10px 75px 10px; + vertical-align: top; + background: #FFFAF0; +} +#sidebar-left { + border-right: 3px solid #f5f5f5; +} +#sidebar-right { + border-left: 3px solid #f5f5f5; +} +#sidebar-left li, #sidebar-right li { + font-size: 1em; +} +.node .content { + text-align: left; + font-size: 0.85em; + line-height: 1.3; +} +.comment .content { + text-align: left; + font-size: 0.85em; + line-height: 1.3; +} +#footer-message { + padding: 15px 100px 30px 100px; + font-size: 0.85em; + text-align: center; + color: #aaa; +} +table#footer-menu { + border-top: 3px solid #6699cc; + border-bottom: 3px solid #6699cc; + background-color: #369; + color: #e4e9eb; +} +#footer-menu td { + padding: 5px; + font-size: 0.75em; +} +#footer-menu .primary-links, #footer-menu a:link, #footer-menu a:visited { + color: #e4e9eb; +} +#footer-menu a:hover { + color: #fff; + text-decoration: underline; +} +#footer-menu .primary-links h1, #footer-menu .primary-links h2, #footer-menu .primary-links h3 { + font-size: 1.3em; + color: #e4e9eb; +} +/* +** Common declarations for child classes of node, comment, block, box, etc. +** If you want any of them styled differently for a specific parent, add +** additional rules /with only the differing properties!/ to .parent .class. +** See .comment .title for an example. +*/ +#content .title, #content .title a { + color: #369; +} +.content h1 { + color: #369; + font-size: 1.9em; +} +.content h2 { + color: #58b; + font-size: 1.7em; +} +.content h3 { + color: #69c; + font-size: 1.5em; +} +.content h4 { + color: #8be; + font-size: 1.3em; +} +.content h5 { + color: #96c6f6; + font-size: 1.15em; +} +.submitted { + color: #999; + font-size: 0.79em; +} +.links { + color: #ff8c00; + font-size: 0.8em; + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; +} +.links a { + font-weight: bold; +} +.box { + padding: 0 0 1.5em 0; +} +.box { + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; +} +.box h2 { + font-size: 9px; +} +.block .title h3 { + border-bottom: 2px solid #6699cc; + color: #369; + font-size: 18px; + font-weight: bold; + padding: 10px 5px 10px 30px; + margin-bottom: .25em; + background: transparent url(icon-block.png) left center no-repeat; +} +.block .content { + padding: 5px 5px 5px 5px; +} +.block { + margin-bottom: 1.5em; +} +.box .title { + font-size: 1.1em; +} +.node { + margin: .5em 0 2.5em 0; +} +.node .content, .comment .content { + margin: .5em 0 .5em 0; +} +.node .taxonomy { + color: #999; + font-size: 0.83em; + padding: 1.5em; +} +.node .picture { + border: 1px solid #fff; + float: right; + margin: 0.5em; +} +.comment { + border: 1px solid #abc; + padding: .5em; + margin-bottom: 1em; +} +.comment .title { + font-size: 1em; + padding: 10px 0px 12px 19px; + background: transparent url(icon-comment.png) left center no-repeat; +} +.comment .new { + font-weight: bold; + font-size: 1em; + margin-left: 2px; + color: red; +} +.comment .picture { + border: 1px solid #fff; + float: right; + margin: 10px; +} +.links { + font-size: 0.75em; +} +.links .prev, .links .next, .links .up { + font-size: 1.15em; +} +.titles .prev, .titles .next { + font-size: 0.85em; + font-weight: bold; + color: #444; +} +.hide { + display: none +} +.nav .links .next a:link { + padding: 15px 15px 17px 0; + background: transparent url(arrow-next.png) right center no-repeat; +} +.nav .links .next a:hover { + padding: 15px 15px 17px 0; + background: transparent url(arrow-next-hover.png) right center no-repeat; +} +.nav .links .prev a:link { + padding: 15px 0 17px 15px; + background: transparent url(arrow-prev.png) left center no-repeat; +} +.nav .links .prev a:hover { + padding: 15px 0 17px 15px; + background: transparent url(arrow-prev-hover.png) left center no-repeat; +} +.nav .links .up a:link { + padding: 11px 0 15px 0; + background: transparent url(arrow-up.png) center top no-repeat; +} +.nav .links .up a:hover { + padding: 11px 0 15px 0; + background: transparent url(arrow-up-hover.png) center top no-repeat; +} + +/* +** Module specific styles +*/ +.content .active { + color: #369; +} +#aggregator .feed { + background-color: #eee; + border: 1px solid #ccc; + padding: 1em; + margin: 1em 0 1em 0; +} +#aggregator .news-item .source { + color: #999; + font-style: italic; + font-size: 0.85em; +} +#aggregator .title { + font-size: 1em; +} +#aggregator h3 { + margin-top: 1em; +} +#tracker th { + text-align: center; + background-color: #f5f5f5; + border-bottom: 1px solid #ddd; + border-right: 1px solid #ddd; + border-left: 1px solid #fafafa; +} +#tracker th img { + float: right; +} +#tracker tr.light, #tracker tr.dark { + background-color: #fff; +} +#tracker td { + vertical-align: top; + padding: 1em 1em 1em 0; + border-bottom: 1px solid #bbb; +} +#forum { + margin: 15px 0 15px 0; + background-color: #fff; +} +#forum table { + width: 100%; + border: 2px solid #69c; +} +#forum table tr th { + text-align: center; + background: #69c; + color: #fff; + font-size: 0.75em; + border-bottom: 1px solid #aaa; +} +#forum table tr th a { + color: #fff; + text-decoration: underline; +} +#forum table tr th img { + margin: 0; +} +#forum tr.dark { + background: #e0edfb; +} +#forum tr.light { + background: #fff; +} +#forum td { + padding: 0.5em 0.5em 0.5em 0.5em; +} +#forum td.container { + color: #000; + background: #369 url(forum-container.jpg) right top no-repeat; + border: 2px solid #69c; +} +#forum td.container a { + color: #e4e9eb; + padding: 20px 0 20px 35px; + background: transparent url(forum-link.png) left center no-repeat; +} +#forum td.container a:visited { + color: #e4e9eb; +} +#forum td.statistics, #forum td.settings, #forum td.pager { + height: 1.5em; + border: 1px solid #bbb; +} +#forum td .name { + color: #96c; +} +#forum td .links { + padding-top: 0.7em; + font-size: 0.9em; +} +.block-forum h3 { + margin-bottom: .5em; +} +.calendar a { + text-decoration: none; +} +.calendar td, .calendar th { + padding: 0.4em 0; + border-color: #888; +} +.calendar .row-week td a { + padding: 0.4em 0; +} +.calendar .day-today { + background-color: #69c; +} +.calendar .day-today a { + color: #fff; +} +.calendar .day-selected { + background-color: #369; + color: #fff; +} +.calendar .header-week { + background-color: #ccc; +} +.calendar .day-blank { + background-color: #ccc; +} +.calendar .row-week td a:hover { + background-color: #fff; color: #000; +} diff --git a/themes/pushbutton/xtemplate.xtmpl b/themes/pushbutton/xtemplate.xtmpl index a6e9043323ec5572f764d841fa0769f69f7bc1b8..8239d463409a3a8b95af83a5c1b928a2566d4b09 100644 --- a/themes/pushbutton/xtemplate.xtmpl +++ b/themes/pushbutton/xtemplate.xtmpl @@ -1,163 +1,163 @@ -<!-- BEGIN: header --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>{head_title}</title> - {head} -</head> - -<body bgcolor="#ffffff" {onload_attributes}> - -<div class="hide"><a href="#content" title="Skip navigation." accesskey="2">Skip navigation</a>.</div> - -<table id="primary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr> - <td id="home" width="10%"> - - <!-- BEGIN: logo --> - <a href="./" title="Home"><img src="{logo}" alt="Home" width="144" height="63" border="0" /></a> - <!-- END: logo --> - - </td> - - <td id="site-info" width="20%"> - - <!-- BEGIN: site_name --> - <div class='site-name'><a href="./" title="Home">{site_name}</a></div> - <!-- END: site_name --> - - <!-- BEGIN: site_slogan --> - <div class='site-slogan'>{site_slogan}</div> - <!-- END: site_slogan --> - - </td> - - <td class="primary-links" width="70%" align="center" valign="middle"> - - {primary_links} - - </td> - </tr> -</table> - -<table id="secondary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr> - <td class="secondary-links" width="75%" align="center" valign="middle"> - {secondary_links} - </td> - <td width="25%" align="center" valign="middle"> - <!-- BEGIN: search_box --> - <form action="{search_url}" method="post"> - <div id="search"> - <input class="form-text" type="text" size="15" value="" name="keys" alt="{search_description}" /> - <input class="form-submit" type="submit" value="{search_button_text}" alt="submit" /> - </div> - </form> - <!-- END: search_box --> - </td> - </tr> -</table> - -<table id="content" border="0" cellpadding="15" cellspacing="0" width="100%"> - <tr> - <!-- BEGIN: blocks --> - <td id="sidebar-left"> - {blocks} - </td> - <!-- END: blocks --> - <td valign="top"> - <!-- BEGIN: mission --> - <div id="mission">{mission}</div> - <!-- END: mission --> - <div id="main"> - <!-- BEGIN: title --> - {breadcrumb} - <h1 class="title">{title}</h1> - <!-- BEGIN: tabs --> - <div class="tabs">{tabs}</div> - <!-- END: tabs --> - - <!-- END: title --> - <!-- BEGIN: help --> - <div id="help">{help}</div> - <!-- END: help --> - <!-- BEGIN: message --> - {message} - <!-- END: message --> -<!-- END: header --> - -<!-- BEGIN: node --> - <div class="node {sticky}"> - <!-- BEGIN: picture --> - {picture} - <!-- END: picture --> - <!-- BEGIN: title --> - <h1 class="title"><a href="{link}">{title}</a></h1> - <!-- END: title --> - <span class="submitted">{submitted}</span> - <!-- BEGIN: taxonomy --> - <span class="taxonomy">{taxonomy}</span> - <!-- END: taxonomy --> - <div class="content">{content}</div> - <!-- BEGIN: links --> - <div class="links">» {links}</div> - <!-- END: links --> - </div> -<!-- END: node --> - -<!-- BEGIN: comment --> - <div class="comment"> - <!-- BEGIN: picture --> - {picture} - <!-- END: picture --> - <h3 class="title">{title}</h3> - <div class="submitted">{submitted}<!-- BEGIN: new --><span class="new"> *{new}</span><!-- END: new --></div> - <div class="content">{content}</div> - <!-- BEGIN: links --> - <div class="links">» {links}</div> - <!-- END: links --> - </div> -<!-- END: comment --> - -<!-- BEGIN: box --> - <div class="box"> - <h2 class="title">{title}</h2> - <div class="content">{content}</div> - </div> -<!-- END: box --> - -<!-- BEGIN: block --> - <div class="block block-{module}" id="block-{module}-{delta}"> - <div class="title"><h3>{title}</h3></div> - <div class="content">{content}</div> - </div> -<!-- END: block --> - -<!-- BEGIN: footer --> - </div><!-- main --> - </td> - <!-- BEGIN: blocks --> - <td id="sidebar-right"> - {blocks} - </td> - <!-- END: blocks --> - </tr> -</table> - -<table id="footer-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr> - <td align="center" valign="middle"> - <div class="primary-links">{primary_links}</div> - <div class="secondary-links">{secondary_links}</div> - </td> - </tr> -</table> - -<!-- BEGIN: message --> -<div id="footer-message"> - {footer_message} -</div> -<!-- END: message --> -{footer} -</body> -</html> -<!-- END: footer --> +<!-- BEGIN: header --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>{head_title}</title> + {head} +</head> + +<body bgcolor="#ffffff" {onload_attributes}> + +<div class="hide"><a href="#content" title="Skip navigation." accesskey="2">Skip navigation</a>.</div> + +<table id="primary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%"> + <tr> + <td id="home" width="10%"> + + <!-- BEGIN: logo --> + <a href="./" title="Home"><img src="{logo}" alt="Home" width="144" height="63" border="0" /></a> + <!-- END: logo --> + + </td> + + <td id="site-info" width="20%"> + + <!-- BEGIN: site_name --> + <div class='site-name'><a href="./" title="Home">{site_name}</a></div> + <!-- END: site_name --> + + <!-- BEGIN: site_slogan --> + <div class='site-slogan'>{site_slogan}</div> + <!-- END: site_slogan --> + + </td> + + <td class="primary-links" width="70%" align="center" valign="middle"> + + {primary_links} + + </td> + </tr> +</table> + +<table id="secondary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%"> + <tr> + <td class="secondary-links" width="75%" align="center" valign="middle"> + {secondary_links} + </td> + <td width="25%" align="center" valign="middle"> + <!-- BEGIN: search_box --> + <form action="{search_url}" method="post"> + <div id="search"> + <input class="form-text" type="text" size="15" value="" name="keys" alt="{search_description}" /> + <input class="form-submit" type="submit" value="{search_button_text}" alt="submit" /> + </div> + </form> + <!-- END: search_box --> + </td> + </tr> +</table> + +<table id="content" border="0" cellpadding="15" cellspacing="0" width="100%"> + <tr> + <!-- BEGIN: blocks --> + <td id="sidebar-left"> + {blocks} + </td> + <!-- END: blocks --> + <td valign="top"> + <!-- BEGIN: mission --> + <div id="mission">{mission}</div> + <!-- END: mission --> + <div id="main"> + <!-- BEGIN: title --> + {breadcrumb} + <h1 class="title">{title}</h1> + <!-- BEGIN: tabs --> + <div class="tabs">{tabs}</div> + <!-- END: tabs --> + + <!-- END: title --> + <!-- BEGIN: help --> + <div id="help">{help}</div> + <!-- END: help --> + <!-- BEGIN: message --> + {message} + <!-- END: message --> +<!-- END: header --> + +<!-- BEGIN: node --> + <div class="node {sticky}"> + <!-- BEGIN: picture --> + {picture} + <!-- END: picture --> + <!-- BEGIN: title --> + <h1 class="title"><a href="{link}">{title}</a></h1> + <!-- END: title --> + <span class="submitted">{submitted}</span> + <!-- BEGIN: taxonomy --> + <span class="taxonomy">{taxonomy}</span> + <!-- END: taxonomy --> + <div class="content">{content}</div> + <!-- BEGIN: links --> + <div class="links">» {links}</div> + <!-- END: links --> + </div> +<!-- END: node --> + +<!-- BEGIN: comment --> + <div class="comment"> + <!-- BEGIN: picture --> + {picture} + <!-- END: picture --> + <h3 class="title">{title}</h3> + <div class="submitted">{submitted}<!-- BEGIN: new --><span class="new"> *{new}</span><!-- END: new --></div> + <div class="content">{content}</div> + <!-- BEGIN: links --> + <div class="links">» {links}</div> + <!-- END: links --> + </div> +<!-- END: comment --> + +<!-- BEGIN: box --> + <div class="box"> + <h2 class="title">{title}</h2> + <div class="content">{content}</div> + </div> +<!-- END: box --> + +<!-- BEGIN: block --> + <div class="block block-{module}" id="block-{module}-{delta}"> + <div class="title"><h3>{title}</h3></div> + <div class="content">{content}</div> + </div> +<!-- END: block --> + +<!-- BEGIN: footer --> + </div><!-- main --> + </td> + <!-- BEGIN: blocks --> + <td id="sidebar-right"> + {blocks} + </td> + <!-- END: blocks --> + </tr> +</table> + +<table id="footer-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%"> + <tr> + <td align="center" valign="middle"> + <div class="primary-links">{primary_links}</div> + <div class="secondary-links">{secondary_links}</div> + </td> + </tr> +</table> + +<!-- BEGIN: message --> +<div id="footer-message"> + {footer_message} +</div> +<!-- END: message --> +{footer} +</body> +</html> +<!-- END: footer -->