summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/theme.inc180
1 files changed, 99 insertions, 81 deletions
diff --git a/includes/theme.inc b/includes/theme.inc
index 6c9beb363..97ab463f4 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -6,106 +6,111 @@
*
* @package theme system
*/
-class BaseTheme {
- var $background = "#ffffff";
- var $foreground = "#000000";
-
- function system($field) {
- $system["name"] = "Basic theme";
- $system["author"] = "Drupal";
- $system["description"] = "Basic theme. Lynx friendly";
-
- return $system[$field];
- }
- function header($title = "") {
- global $base_url;
- $output = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
- $output .= "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
- $output .= "<head><title>". $title ? $title : variable_get(site_name, "drupal") ."</title>";
- $output .= theme_head($main);
- $output .= "</head><body style=\"background-color: $this->background; color: $this->foreground;\"". theme_onload_attribute(). "\">";
- $output .= "<table border=\"0\" cellspacing=\"4\" cellpadding=\"4\"><tr><td style=\"vertical-align: top; width: 170px;\">";
+function theme_help($section) {
- print $output;
- $this->box(t("Navigation"), @implode("<br />", link_page())); theme_blocks("all", $this);
- print "</td><td style=\"vertical-align: top;\">";
+ $ouptout = "";
+ switch ($section) {
+ case 'admin/system/themes#description':
+ $output = t("The base theme");
+ break;
}
- function links($links, $delimiter = " | ") {
- return implode($delimiter, $links);
- }
+ return $output;
+}
- function image($name) {
- return "misc/$name";
- }
+class BaseTheme {
+}
- function breadcrumb($breadcrumb) {
- print "<div class=\"breadcrumb\">". implode($breadcrumb, " &raquo; ") ."</div>";
- }
+function theme_header($title = "") {
+ global $base_url;
- function node($node, $main) {
- if (module_exist("taxonomy")) {
- $terms = taxonomy_link("taxonomy terms", $node);
- }
+ $output = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
+ $output .= "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
+ $output .= "<head><title>". $title ? $title : variable_get(site_name, "drupal") ."</title>";
+ $output .= theme_head($main);
+ $output .= "</head><body style=\"background-color: #fff; color: #000;\"". theme_onload_attribute(). "\">";
+ $output .= "<table border=\"0\" cellspacing=\"4\" cellpadding=\"4\"><tr><td style=\"vertical-align: top; width: 170px;\">";
+
+ print $output;
+ theme("box", t("Navigation"), @implode("<br />", link_page()));
+ theme_blocks("all", $this);
+ print "</td><td style=\"vertical-align: top;\">";
+}
- $output = "<h2>$node->title</h2> by ". format_name($node);
+function theme_links($links, $delimiter = " | ") {
+ return implode($delimiter, $links);
+}
- if (count($terms)) {
- $output .= "<small>(". $this->links($terms) .")</small><br />";
- }
+function theme_image($name) {
+ return "misc/$name";
+}
- if ($main && $node->teaser) {
- $output .= $node->teaser;
- }
- else {
- $output .= $node->body;
- }
- if ($links = link_node($node, $main)) {
- $output .= "<br />[ ". $this->links($links) ." ]";
- }
- $output .= "<hr />";
+function theme_breadcrumb($breadcrumb) {
+ print "<div class=\"breadcrumb\">". implode($breadcrumb, " &raquo; ") ."</div>";
+}
- print $output;
+function theme_node($node, $main) {
+ if (module_exist("taxonomy")) {
+ $terms = taxonomy_link("taxonomy terms", $node);
}
- function box($subject, $content, $region = "main") {
- $output = "<h2>$subject</h2><p>$content</p>";
- print $output;
+ $output = "<h2>$node->title</h2> by ". format_name($node);
+
+ if (count($terms)) {
+ $output .= " <small>(". theme("links", $terms) .")</small><br />";
}
- /**
- * Render a block.
- *
- * You can style your blocks by defining .block (all blocks),
- * .block-<i>module</i> (all blocks of module <i>module</i>),
- * and \#block-<i>module</i>-<i>delta</i> (specific block of
- * module <i>module</i> with delta <i>delta</i>) in your
- * theme's CSS.
- *
- * @param $block object "indexed with" fields from database
- * table 'blocks' ($block->module, $block->delta, $block->region,
- * ...) and fields returned by <i>module</i>_block("view")
- * ($block->subject, $block->content, ...).
- */
- function block($block) {
- $output = "<div class=\"block block-$block->module\" id=\"block-$block->module-$block->delta\">";
- $output .= " <h3>$block->subject</h3>";
- $output .= " <div class=\"content\">$block->content</div>";
- $output .= "</div>";
- print $output;
+ if ($main && $node->teaser) {
+ $output .= $node->teaser;
+ }
+ else {
+ $output .= $node->body;
}
- function footer() {
- $output = "</td></tr></table>";
- $output .= theme_footer();
- $output .= "</body></html>";
- print $output;
+ if ($links = link_node($node, $main)) {
+ $output .= "<br />[ ". theme("links", $links) ." ]";
}
+ $output .= "<hr />";
+
+ print $output;
+}
+
+function theme_box($subject, $content, $region = "main") {
+ $output = "<h2>$subject</h2><p>$content</p>";
+ print $output;
+}
+
+/**
+ * Render a block.
+ *
+ * You can style your blocks by defining .block (all blocks),
+ * .block-<i>module</i> (all blocks of module <i>module</i>),
+ * and \#block-<i>module</i>-<i>delta</i> (specific block of
+ * module <i>module</i> with delta <i>delta</i>) in your
+ * theme's CSS.
+ *
+ * @param $block object "indexed with" fields from database
+ * table 'blocks' ($block->module, $block->delta, $block->region,
+ * ...) and fields returned by <i>module</i>_block("view")
+ * ($block->subject, $block->content, ...).
+ */
+function theme_block($block) {
+ $output = "<div class=\"block block-$block->module\" id=\"block-$block->module-$block->delta\">";
+ $output .= " <h3>$block->subject</h3>";
+ $output .= " <div class=\"content\">$block->content</div>";
+ $output .= "</div>";
+ print $output;
+}
-} // End of BaseTheme class //
+function theme_footer() {
+ $output = "</td></tr></table>";
+ $output .= theme_footer();
+ $output .= "</body></html>";
+ print $output;
+}
/**
* Return a marker. Used to indicate new comments or required form
@@ -178,7 +183,7 @@ function theme_head($main = 0) {
* Execute hook _footer() which is run at the end of the page right
* before the </body> tag
*/
-function theme_footer($main = 0) {
+function theme_closure($main = 0) {
$footer = module_invoke_all("footer", $main);
return implode($footer, "\n");
}
@@ -199,6 +204,8 @@ function theme_init() {
$instance =& new BaseTheme;
}
+ $instance->theme = $name;
+
return $instance;
}
@@ -224,15 +231,26 @@ function theme_blocks($region) {
function theme() {
global $theme;
+
$args = func_get_args();
$function = array_shift($args);
- if (method_exists($theme, $function)) {
+ $name = $theme->theme;
+
+ if (function_exists($name ."_". $function)) {
+ return call_user_func_array($name ."_". $function, $args);
+ }
+ else if (method_exists($theme, $function)) {
return call_user_method_array($function, $theme, $args);
+ // temporary fall-back; can be removed as soon the $theme-object is no more
+ }
+ else if (function_exists("theme_". $function)) {
+ return call_user_func_array("theme_". $function, $args);
}
else {
return call_user_func_array($function, $args);
+ // temporary fall-back; can be removed as soon the $theme-object is no more
}
}