summaryrefslogtreecommitdiff
path: root/themes/xtemplate/xtemplate.theme
blob: ad5389d10ef1f5dfed4194477e0fe444d371e717 (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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php

function xtemplate_settings() {
  $output = form_textarea("Message on front page", "xtemplate_message", variable_get("xtemplate_message", "edit message"), 70, 6, "This text will be displayed on the front page.  It can be used to display a mission statement, announcement or site description..");
  $output .= form_textarea("Primary links", "xtemplate_primary_links", variable_get("xtemplate_primary_links", l("edit primary links", "admin/system/themes/settings")), 70, 6, "The primary links.");
  $output .= form_textarea("Secondary links", "xtemplate_secondary_links", variable_get("xtemplate_secondary_links", l("edit secondary links", "admin/system/themes/settings")), 70, 6, "The secondary links.");
  $output .= form_select("Search box", "xtemplate_search_box", variable_get("xtemplate_search_box", 0), array(t("Disabled"), t("Enabled")), "Show a search box in the upper right corner.");
  return $output;
}

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 = "") {
    global $base_url;

    $this->template->assign(array(
      "title" => ($title ? $title." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")),
      "head" => theme_head(),
      "base" => "$base_url/",
      "primary_links" => variable_get("xtemplate_primary_links", l("edit primary links", "admin/system/themes/settings")),
      "secondary_links" => variable_get("xtemplate_secondary_links", l("edit secondary links", "admin/system/themes/settings"))
    ));
    if (variable_get("xtemplate_search_box", 1)) {
      $this->template->assign(array(
        //"search" => search_form(),
        "search_url" => url("search"),
        "search_button_text" => t("Search")
      ));
      $this->template->parse("header.search_box");
    }

    if (!arg(0)) {
      $this->template->assign("message", variable_get("xtemplate_message", l("edit message", "admin/system/themes/settings")));
      $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( array(
      "blocks" => ob_get_contents(),
      "footer" => variable_get("site_footer", "")
    ));
    ob_end_clean();

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