summaryrefslogtreecommitdiff
path: root/themes/xtemplate/xtemplate.theme
blob: 4ab3b7d745d2523c030d232d30783c673f023519 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php

class Theme_xtemplate extends BaseTheme {

  function system($field) {
    $system["name"] = "xtemplate";
    $system["description"] = "a template driven theme";

    return $system[$field];
  }

  function Theme_xtemplate() {
    include_once("themes/xtemplate/xtemplate.inc");

    $this->template = new XTemplate("themes/xtemplate/xtemplate.xtmpl");
    $this->template->SetNullBlock(" ");  // "" doesnt work!
  }

  function node($node, $main) {

    $this->template->assign(array (
       "title"     => ucfirst($node->title),
       "author"    => format_name($node),
       "date"      => format_date($node->created),
       "content"   => ($main && $node->teaser) ?
                      check_output($node->teaser) :
                      check_output($node->body)));

    if ($taxonomy = taxonomy_link("taxonomy terms", $node)) {
      $this->template->assign("taxonomy", $this->links($taxonomy));
    }

    if ($links = link_node($node, $main)) {
      $this->template->assign("links", $this->links($links));
    }

    $this->template->parse("node");
    print $this->template->text("node");
    $this->template->reset("node");
  }

  function comment($comment, $link = 0) {
    $this->template->assign(array (
        "title"     => ucfirst($comment->subject),
        "author"    => format_name($comment),
        "date"      => format_date($comment->timestamp),
        "content"   => check_output($comment->comment),
        "links"     => $link));

    if ($comment->new) {
      $this->template->parse("comment_new");
      print $this->template->text("comment_new");
      $this->template->reset("comment_new");
    }
    else {
      $this->template->parse("comment_old");
      print $this->template->text("comment_old");
      $this->template->reset("comment_old");
    }
  }

  function header($title = "") {
    $this->template->assign(array(
      "title" => ($title ? $title." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")),
      "head" => theme_head(),
      "links" => $this->links(link_page())
    ));

    if (!arg(0)) {
      $this->template->parse("header.message");
    }

    $this->template->parse("header");
    print $this->template->text("header");
  }

  function block($title, $content, $region = "main") {
    $this->template->assign(array(
      "subject" => $title,
      "content" => $content
    ));

    $this->template->parse("block");
    print $this->template->text("block");
    $this->template->reset("block");
  }

  function box($title, $content, $region = "main") {
    if ($title && $content) {
      $this->template->assign(array(
        "subject" => $title,
        "content" => $content));

      $this->template->parse("box");
      print $this->template->text("box");
      $this->template->reset("box");
    }
  }

  function footer() {
    // unfortunately, theme_blocks PRINTS the blocks instead of RETURNING them.
    // so we need some output buffering
    ob_start();
    theme_blocks("all");
    $this->template->assign("blocks", ob_get_contents());
    ob_end_clean();

    $this->template->parse("footer");
    print $this->template->text("footer");
  }
}
?>