diff options
Diffstat (limited to 'themes')
-rw-r--r-- | themes/bluemarine/logo.png | bin | 0 -> 1767 bytes | |||
-rw-r--r-- | themes/bluemarine/screenshot.png | bin | 0 -> 4136 bytes | |||
-rw-r--r-- | themes/bluemarine/style.css (renamed from themes/xtemplate/default/xtemplate.css) | 690 | ||||
-rw-r--r-- | themes/bluemarine/xtemplate.xtmpl (renamed from themes/xtemplate/default/xtemplate.xtmpl) | 262 | ||||
-rw-r--r-- | themes/chameleon/background.png | bin | 0 -> 200 bytes | |||
-rw-r--r-- | themes/chameleon/chameleon.theme | 306 | ||||
-rw-r--r-- | themes/chameleon/common.css | 271 | ||||
-rw-r--r-- | themes/chameleon/logo.png | bin | 0 -> 1762 bytes | |||
-rw-r--r-- | themes/chameleon/marvin/logo.png | bin | 0 -> 1762 bytes | |||
-rw-r--r-- | themes/chameleon/marvin/screenshot.png | bin | 0 -> 2800 bytes | |||
-rw-r--r-- | themes/chameleon/marvin/style.css (renamed from themes/chameleon/marvin/chameleon.css) | 230 | ||||
-rw-r--r-- | themes/chameleon/pure/background.png | bin | 225 -> 0 bytes | |||
-rw-r--r-- | themes/chameleon/screenshot.png | bin | 0 -> 3450 bytes | |||
-rw-r--r-- | themes/chameleon/style.css (renamed from themes/chameleon/pure/chameleon.css) | 185 | ||||
-rw-r--r-- | themes/engines/xtemplate/xtemplate.engine (renamed from themes/xtemplate/xtemplate.theme) | 478 | ||||
-rw-r--r-- | themes/engines/xtemplate/xtemplate.inc (renamed from themes/xtemplate/xtemplate.inc) | 960 | ||||
-rw-r--r-- | themes/example/example.theme | 18 | ||||
-rw-r--r-- | themes/pushbutton/arrow-next-hover.png | bin | 0 -> 168 bytes | |||
-rw-r--r-- | themes/pushbutton/arrow-next.png | bin | 0 -> 168 bytes | |||
-rw-r--r-- | themes/pushbutton/arrow-prev-hover.png | bin | 0 -> 192 bytes | |||
-rw-r--r-- | themes/pushbutton/arrow-prev.png | bin | 0 -> 191 bytes | |||
-rw-r--r-- | themes/pushbutton/arrow-up-hover.png | bin | 0 -> 192 bytes | |||
-rw-r--r-- | themes/pushbutton/arrow-up.png | bin | 0 -> 191 bytes | |||
-rw-r--r-- | themes/pushbutton/background.png (renamed from themes/xtemplate/pushbutton/background.png) | bin | 2445 -> 2445 bytes | |||
-rw-r--r-- | themes/pushbutton/forum-container.jpg (renamed from themes/xtemplate/pushbutton/forum-container.jpg) | bin | 10722 -> 10722 bytes | |||
-rw-r--r-- | themes/pushbutton/forum-link.png (renamed from themes/xtemplate/pushbutton/forum-link.png) | bin | 711 -> 711 bytes | |||
-rw-r--r-- | themes/pushbutton/header-a.jpg (renamed from themes/xtemplate/pushbutton/header-a.jpg) | bin | 440 -> 440 bytes | |||
-rw-r--r-- | themes/pushbutton/header-b.jpg (renamed from themes/xtemplate/pushbutton/header-b.jpg) | bin | 5770 -> 5770 bytes | |||
-rw-r--r-- | themes/pushbutton/icon-block.png (renamed from themes/xtemplate/pushbutton/icon-block.png) | bin | 310 -> 310 bytes | |||
-rw-r--r-- | themes/pushbutton/icon-comment.png (renamed from themes/xtemplate/pushbutton/icon-comment.png) | bin | 317 -> 317 bytes | |||
-rw-r--r-- | themes/pushbutton/logo-active.jpg (renamed from themes/xtemplate/pushbutton/logo-active.jpg) | bin | 2466 -> 2466 bytes | |||
-rw-r--r-- | themes/pushbutton/logo-background.jpg (renamed from themes/xtemplate/pushbutton/logo-background.jpg) | bin | 950 -> 950 bytes | |||
-rw-r--r-- | themes/pushbutton/logo-hover.jpg (renamed from themes/xtemplate/pushbutton/logo-hover.jpg) | bin | 2712 -> 2712 bytes | |||
-rw-r--r-- | themes/pushbutton/logo.png (renamed from themes/xtemplate/pushbutton/logo.png) | bin | 103 -> 103 bytes | |||
-rw-r--r-- | themes/pushbutton/screenshot.png | bin | 0 -> 7594 bytes | |||
-rw-r--r-- | themes/pushbutton/style.css (renamed from themes/xtemplate/pushbutton/xtemplate.css) | 1059 | ||||
-rw-r--r-- | themes/pushbutton/xtemplate.xtmpl (renamed from themes/xtemplate/pushbutton/xtemplate.xtmpl) | 304 | ||||
-rw-r--r-- | themes/xtemplate/default/logo.png | bin | 2961 -> 0 bytes | |||
-rw-r--r-- | themes/xtemplate/pushbutton/arrow-next-hover.png | bin | 213 -> 0 bytes | |||
-rw-r--r-- | themes/xtemplate/pushbutton/arrow-next.png | bin | 213 -> 0 bytes | |||
-rw-r--r-- | themes/xtemplate/pushbutton/arrow-prev-hover.png | bin | 224 -> 0 bytes | |||
-rw-r--r-- | themes/xtemplate/pushbutton/arrow-prev.png | bin | 224 -> 0 bytes | |||
-rw-r--r-- | themes/xtemplate/pushbutton/arrow-up-hover.png | bin | 239 -> 0 bytes | |||
-rw-r--r-- | themes/xtemplate/pushbutton/arrow-up.png | bin | 239 -> 0 bytes |
44 files changed, 2418 insertions, 2345 deletions
diff --git a/themes/bluemarine/logo.png b/themes/bluemarine/logo.png Binary files differnew file mode 100644 index 000000000..e72da094e --- /dev/null +++ b/themes/bluemarine/logo.png diff --git a/themes/bluemarine/screenshot.png b/themes/bluemarine/screenshot.png Binary files differnew file mode 100644 index 000000000..9c6a9097d --- /dev/null +++ b/themes/bluemarine/screenshot.png diff --git a/themes/xtemplate/default/xtemplate.css b/themes/bluemarine/style.css index b165f3489..c72ee52d8 100644 --- a/themes/xtemplate/default/xtemplate.css +++ b/themes/bluemarine/style.css @@ -1,336 +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: 0em; -} -.comment .links { - margin-bottom: 0em; -} - -/* -** Page layout blocks / IDs -*/ -#header, #content { - width: 100%; -} -#header { - background-color: #69c; -} -#logo { - vertical-align: bottom; - border: 0; - font-weight: bold; - font-size: 1.9em; - color: #fff; -} -#logo img { - display: block; -} -#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; -} -#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 2em 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/xtemplate/default/xtemplate.xtmpl b/themes/bluemarine/xtemplate.xtmpl index b75d4812a..9de7b62a2 100644 --- a/themes/xtemplate/default/xtemplate.xtmpl +++ b/themes/bluemarine/xtemplate.xtmpl @@ -1,125 +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} - <link type="text/css" rel="stylesheet" href="{directory}/xtemplate.css" /> -</head> - -<body{onload_attributes}> - -<table border="0" cellpadding="0" cellspacing="0" id="header"> - <tr> - <td id="logo"> - <a href="./">{logo}</a> - </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/background.png b/themes/chameleon/background.png Binary files differnew file mode 100644 index 000000000..194588a3a --- /dev/null +++ b/themes/chameleon/background.png diff --git a/themes/chameleon/chameleon.theme b/themes/chameleon/chameleon.theme index 8af17edf0..955432532 100644 --- a/themes/chameleon/chameleon.theme +++ b/themes/chameleon/chameleon.theme @@ -1,153 +1,153 @@ -<?php -// $Id$ - -function chameleon_help($section) { - - $output = ''; - - switch ($section) { - case 'admin/themes#description': - $output = t('A fast PHP theme with different stylesheets.'); - break; - } - - return $output; -} - -function chameleon_settings() { - - /* - ** Compile a list of the available style sheets: - */ - - $fd = opendir('themes/chameleon'); - while ($file = readdir($fd)) { - if (is_dir("themes/chameleon/$file") && !in_array($file, array('.', '..', 'CVS'))) { - $files["themes/chameleon/$file/chameleon.css"] = "themes/chameleon/$file/chameleon.css"; - } - } - closedir($fd); - - $output = form_select(t('CSS stylesheet'), 'chameleon_stylesheet', variable_get('chameleon_stylesheet', 'themes/chameleon/pure/chameleon.css'), $files, t('Selecting a different stylesheet will change the look and feel of your site.')); - - return $output; -} - -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 .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"". variable_get("chameleon_stylesheet", "themes/chameleon/pure/chameleon.css") ."\" />\n"; - $output .= "</head>"; - $output .= "<body". theme_onload_attribute() .">\n"; - $output .= " <div id=\"header\">"; - $output .= " <h1 class=\"title\">". l(variable_get("site_name", "drupal"), ""). "</h1>"; - $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 = array(t("By %author at %date", array('%author' => format_name($node), '%date' => format_date($node->created, 'small')))); - - 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 7ed4e4ff8..057a0c15b 100644 --- a/themes/chameleon/common.css +++ b/themes/chameleon/common.css @@ -1,124 +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-family: arial, helvetica, sans-serif; - 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; - width: 60%; -} -#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; -} - -/* -** 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/logo.png b/themes/chameleon/logo.png Binary files differnew file mode 100644 index 000000000..320fa96ce --- /dev/null +++ b/themes/chameleon/logo.png diff --git a/themes/chameleon/marvin/logo.png b/themes/chameleon/marvin/logo.png Binary files differnew file mode 100644 index 000000000..320fa96ce --- /dev/null +++ b/themes/chameleon/marvin/logo.png diff --git a/themes/chameleon/marvin/screenshot.png b/themes/chameleon/marvin/screenshot.png Binary files differnew file mode 100644 index 000000000..b46b21cf5 --- /dev/null +++ b/themes/chameleon/marvin/screenshot.png diff --git a/themes/chameleon/marvin/chameleon.css b/themes/chameleon/marvin/style.css index e0c4a15a5..56587aef8 100644 --- a/themes/chameleon/marvin/chameleon.css +++ b/themes/chameleon/marvin/style.css @@ -1,114 +1,118 @@ -/* $Id$ */ - -/* -** HTML elements -*/ -body { - background: #fff url(druplicon-watermark.png) no-repeat top right; -} -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%; -} - -/* -** 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/pure/background.png b/themes/chameleon/pure/background.png Binary files differdeleted file mode 100644 index da99813fd..000000000 --- a/themes/chameleon/pure/background.png +++ /dev/null diff --git a/themes/chameleon/screenshot.png b/themes/chameleon/screenshot.png Binary files differnew file mode 100644 index 000000000..7c8bdee4f --- /dev/null +++ b/themes/chameleon/screenshot.png diff --git a/themes/chameleon/pure/chameleon.css b/themes/chameleon/style.css index c399944ab..9f65ccc82 100644 --- a/themes/chameleon/pure/chameleon.css +++ b/themes/chameleon/style.css @@ -1,90 +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; -} -#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; -} -.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/xtemplate/xtemplate.theme b/themes/engines/xtemplate/xtemplate.engine index 1ef3a591c..fa91aa954 100644 --- a/themes/xtemplate/xtemplate.theme +++ b/themes/engines/xtemplate/xtemplate.engine @@ -1,245 +1,233 @@ -<?php -// $Id$ - -if (!class_exists("XTemplate")) { - include_once("themes/xtemplate/xtemplate.inc"); -} -$template_directory = variable_get('xtemplate_template', 'default'); -$GLOBALS["xtemplate"]->template = new XTemplate('xtemplate.xtmpl', 'themes/xtemplate/' . $template_directory); -$GLOBALS["xtemplate"]->template->SetNullBlock(" "); // "" doesnt work! - -function xtemplate_settings() { - /* - ** Compile a list of the available style sheets: - */ - - $fd = opendir('themes/xtemplate'); - while ($file = readdir($fd)) { - if (is_dir("themes/xtemplate/$file") && !in_array($file, array('.', '..', 'CVS'))) { - $files[$file] = $file; - } - } - closedir($fd); - - $template_directory = variable_get('xtemplate_template', 'default'); - $group = form_select(t('Template'), 'xtemplate_template', variable_get('xtemplate_template', 'default'), $files, t('Selecting a different template will change the look and feel of your site. To create a new template, create a new directory under <code>themes/xtemplate</code> and copy the contents of an existing template (e.g. <code>themes/xtemplate/default</code>) into it. The new template will automatically become available in the selection menu and will be identified by its directory name.')); - $output = form_group(t('Template selection'), $group); - - $group = form_textarea(t('Logo'), 'xtemplate_logo', variable_get('xtemplate_logo', "<img src=\"themes/xtemplate/$template_directory/logo.png\" alt=\"Logo\" />"), 70, 4, t('The HTML code for displaying the logo.')); - $group .= form_textarea(t('Primary links'), 'xtemplate_primary_links', variable_get('xtemplate_primary_links', l('edit primary links', 'admin/themes/xtemplate')), 70, 8, t('The HTML code for the primary links.')); - $group .= form_textarea(t('Secondary links'), 'xtemplate_secondary_links', variable_get('xtemplate_secondary_links', l('edit secondary links', 'admin/themes/xtemplate')), 70, 8, t('The HTML code for the secondary links.')); - $group .= form_textarea(t('Message on front page'), 'xtemplate_mission', variable_get('xtemplate_mission', 'edit mission'), 70, 6, t('This text will be displayed on the front page. It can be used to display a mission statement, announcement or site description.')); - $group .= form_radios(t('Search box'), 'xtemplate_search_box', variable_get('xtemplate_search_box', 0), array(t('Disabled'), t('Enabled')), t('Show a search box in the upper right corner.')); - $output .= form_group(t('Header settings'), $group); - - $group = form_checkbox(t('Display pictures with posts'), 'xtemplate_picture_node', 1, variable_get('xtemplate_picture_node', 0), t('Display individualized pictures identifying users with posts they start.')); - $group .= form_checkbox(t('Display pictures with comments'), 'xtemplate_picture_comment', 1, variable_get('xtemplate_picture_comment', 0), t('Display individualized pictures identifying users with their comments.')); - $output .= form_group(t('Avatar settings'), $group); - - return $output; -} - -function xtemplate_help($section) { - - $output = ''; - - switch ($section) { - case 'admin/themes#description': - $output = t('A template driven theme'); - break; - } - - return $output; -} - -function xtemplate_node($node, $main = 0, $page = 0) { - global $xtemplate; - - $xtemplate->template->assign(array( - "submitted" => 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 ($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 ($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; - $template_directory = variable_get('xtemplate_template', 'default'); - - $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", "")), - "site" => variable_get("site_name", "drupal"), - "head" => drupal_get_html_head(), - "directory" => "themes/xtemplate/$template_directory", - "onload_attributes" => theme_onload_attribute(), - "logo" => variable_get('xtemplate_logo', "<img src=\"themes/xtemplate/$template_directory/logo.png\" alt=\"Logo\" />"), - "primary_links" => variable_get("xtemplate_primary_links", l("edit primary links", "admin/themes/xtemplate")), - "secondary_links" => variable_get("xtemplate_secondary_links", l("edit secondary links", "admin/themes/xtemplate")) - )); - - 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 (variable_get("xtemplate_search_box", 1)) { - $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") && ($mission = variable_get("xtemplate_mission", "edit 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/xtemplate/xtemplate.inc b/themes/engines/xtemplate/xtemplate.inc index 6c89be93d..611ec2c8c 100644 --- a/themes/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/example/example.theme b/themes/example/example.theme deleted file mode 100644 index d9a040f3e..000000000 --- a/themes/example/example.theme +++ /dev/null @@ -1,18 +0,0 @@ -<?php -// $Id$ - -function example_help($section) { - - $output = ""; - - switch ($section) { - case 'admin/themes#description': - $output = t("Internet explorer, Netscape, Opera, Lynx"); - break; - } - - return $output; -} - - -?> diff --git a/themes/pushbutton/arrow-next-hover.png b/themes/pushbutton/arrow-next-hover.png Binary files differnew file mode 100644 index 000000000..e134d942f --- /dev/null +++ b/themes/pushbutton/arrow-next-hover.png diff --git a/themes/pushbutton/arrow-next.png b/themes/pushbutton/arrow-next.png Binary files differnew file mode 100644 index 000000000..87bb67e50 --- /dev/null +++ b/themes/pushbutton/arrow-next.png diff --git a/themes/pushbutton/arrow-prev-hover.png b/themes/pushbutton/arrow-prev-hover.png Binary files differnew file mode 100644 index 000000000..2a3e05c4b --- /dev/null +++ b/themes/pushbutton/arrow-prev-hover.png diff --git a/themes/pushbutton/arrow-prev.png b/themes/pushbutton/arrow-prev.png Binary files differnew file mode 100644 index 000000000..96b3fe260 --- /dev/null +++ b/themes/pushbutton/arrow-prev.png diff --git a/themes/pushbutton/arrow-up-hover.png b/themes/pushbutton/arrow-up-hover.png Binary files differnew file mode 100644 index 000000000..daf013108 --- /dev/null +++ b/themes/pushbutton/arrow-up-hover.png diff --git a/themes/pushbutton/arrow-up.png b/themes/pushbutton/arrow-up.png Binary files differnew file mode 100644 index 000000000..fce29251d --- /dev/null +++ b/themes/pushbutton/arrow-up.png diff --git a/themes/xtemplate/pushbutton/background.png b/themes/pushbutton/background.png Binary files differindex 889e1cc9a..889e1cc9a 100644 --- a/themes/xtemplate/pushbutton/background.png +++ b/themes/pushbutton/background.png diff --git a/themes/xtemplate/pushbutton/forum-container.jpg b/themes/pushbutton/forum-container.jpg Binary files differindex 46ea78f2a..46ea78f2a 100644 --- a/themes/xtemplate/pushbutton/forum-container.jpg +++ b/themes/pushbutton/forum-container.jpg diff --git a/themes/xtemplate/pushbutton/forum-link.png b/themes/pushbutton/forum-link.png Binary files differindex 56c50b16e..56c50b16e 100644 --- a/themes/xtemplate/pushbutton/forum-link.png +++ b/themes/pushbutton/forum-link.png diff --git a/themes/xtemplate/pushbutton/header-a.jpg b/themes/pushbutton/header-a.jpg Binary files differindex 26b6c0122..26b6c0122 100644 --- a/themes/xtemplate/pushbutton/header-a.jpg +++ b/themes/pushbutton/header-a.jpg diff --git a/themes/xtemplate/pushbutton/header-b.jpg b/themes/pushbutton/header-b.jpg Binary files differindex 17ed8541c..17ed8541c 100644 --- a/themes/xtemplate/pushbutton/header-b.jpg +++ b/themes/pushbutton/header-b.jpg diff --git a/themes/xtemplate/pushbutton/icon-block.png b/themes/pushbutton/icon-block.png Binary files differindex c12933bef..c12933bef 100644 --- a/themes/xtemplate/pushbutton/icon-block.png +++ b/themes/pushbutton/icon-block.png diff --git a/themes/xtemplate/pushbutton/icon-comment.png b/themes/pushbutton/icon-comment.png Binary files differindex 9ef36deda..9ef36deda 100644 --- a/themes/xtemplate/pushbutton/icon-comment.png +++ b/themes/pushbutton/icon-comment.png diff --git a/themes/xtemplate/pushbutton/logo-active.jpg b/themes/pushbutton/logo-active.jpg Binary files differindex 67e89081c..67e89081c 100644 --- a/themes/xtemplate/pushbutton/logo-active.jpg +++ b/themes/pushbutton/logo-active.jpg diff --git a/themes/xtemplate/pushbutton/logo-background.jpg b/themes/pushbutton/logo-background.jpg Binary files differindex d47005fbb..d47005fbb 100644 --- a/themes/xtemplate/pushbutton/logo-background.jpg +++ b/themes/pushbutton/logo-background.jpg diff --git a/themes/xtemplate/pushbutton/logo-hover.jpg b/themes/pushbutton/logo-hover.jpg Binary files differindex 5e662f5df..5e662f5df 100644 --- a/themes/xtemplate/pushbutton/logo-hover.jpg +++ b/themes/pushbutton/logo-hover.jpg diff --git a/themes/xtemplate/pushbutton/logo.png b/themes/pushbutton/logo.png Binary files differindex 4d0a7e98d..4d0a7e98d 100644 --- a/themes/xtemplate/pushbutton/logo.png +++ b/themes/pushbutton/logo.png diff --git a/themes/pushbutton/screenshot.png b/themes/pushbutton/screenshot.png Binary files differnew file mode 100644 index 000000000..139e1a7db --- /dev/null +++ b/themes/pushbutton/screenshot.png diff --git a/themes/xtemplate/pushbutton/xtemplate.css b/themes/pushbutton/style.css index 0cb54e511..8888443fa 100644 --- a/themes/xtemplate/pushbutton/xtemplate.css +++ b/themes/pushbutton/style.css @@ -1,520 +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; -} -#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/xtemplate/pushbutton/xtemplate.xtmpl b/themes/pushbutton/xtemplate.xtmpl index 5e148eaac..a6e904332 100644 --- a/themes/xtemplate/pushbutton/xtemplate.xtmpl +++ b/themes/pushbutton/xtemplate.xtmpl @@ -1,141 +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} - <style type="text/css" media="all">@import "{directory}/xtemplate.css";</style> -</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%"><a href="./" title="Home"><img src="{directory}/logo.png" alt="Home" width="144" height="63" border="0" /></a></td> - <td class="primary-links" width="90%" 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 -->
diff --git a/themes/xtemplate/default/logo.png b/themes/xtemplate/default/logo.png Binary files differdeleted file mode 100644 index 9df6543ea..000000000 --- a/themes/xtemplate/default/logo.png +++ /dev/null diff --git a/themes/xtemplate/pushbutton/arrow-next-hover.png b/themes/xtemplate/pushbutton/arrow-next-hover.png Binary files differdeleted file mode 100644 index 63ee4b62c..000000000 --- a/themes/xtemplate/pushbutton/arrow-next-hover.png +++ /dev/null diff --git a/themes/xtemplate/pushbutton/arrow-next.png b/themes/xtemplate/pushbutton/arrow-next.png Binary files differdeleted file mode 100644 index 93586270d..000000000 --- a/themes/xtemplate/pushbutton/arrow-next.png +++ /dev/null diff --git a/themes/xtemplate/pushbutton/arrow-prev-hover.png b/themes/xtemplate/pushbutton/arrow-prev-hover.png Binary files differdeleted file mode 100644 index ad681de2c..000000000 --- a/themes/xtemplate/pushbutton/arrow-prev-hover.png +++ /dev/null diff --git a/themes/xtemplate/pushbutton/arrow-prev.png b/themes/xtemplate/pushbutton/arrow-prev.png Binary files differdeleted file mode 100644 index a808494ab..000000000 --- a/themes/xtemplate/pushbutton/arrow-prev.png +++ /dev/null diff --git a/themes/xtemplate/pushbutton/arrow-up-hover.png b/themes/xtemplate/pushbutton/arrow-up-hover.png Binary files differdeleted file mode 100644 index 5ee595f11..000000000 --- a/themes/xtemplate/pushbutton/arrow-up-hover.png +++ /dev/null diff --git a/themes/xtemplate/pushbutton/arrow-up.png b/themes/xtemplate/pushbutton/arrow-up.png Binary files differdeleted file mode 100644 index 80f005bb8..000000000 --- a/themes/xtemplate/pushbutton/arrow-up.png +++ /dev/null |